« Poste de DEV ESP32 sur PI » : différence entre les versions
mAucun résumé des modifications |
m version 1 |
||
| Ligne 101 : | Ligne 101 : | ||
|Cette partie doit se faire ''connecté à internet'' la première fois puisque, comme vu plus haut, c'est là que l'on va chercher les éléments de la ''toolchain'' manquants. | |Cette partie doit se faire ''connecté à internet'' la première fois puisque, comme vu plus haut, c'est là que l'on va chercher les éléments de la ''toolchain'' manquants. | ||
|} | |} | ||
On a successivement les infos suivantes | On a successivement les infos suivantes : | ||
[[Fichier:ESP32-rasp-02.png|sans_cadre|300x300px]] [[Fichier:ESP32-rasp-01.png|sans_cadre|296x296px]] [[Fichier:ESP32-rasp-03.png|sans_cadre]] [[Fichier:ESP32-rasp-04.png|sans_cadre|296x296px]] | |||
A la fin (moi ca a pris 15 min mais je suis loin du Point D'acces Wifi) on a un beau projet : | |||
[[Fichier:Default-esp32-project.png|sans_cadre]] | |||
Le code de "main.cpp" est par défaut :<syntaxhighlight lang="c"> | |||
#include <Arduino.h> | |||
// put function declarations here: | |||
int myFunction(int, int); | |||
void setup() { | |||
// put your setup code here, to run once: | |||
int result = myFunction(2, 3); | |||
} | |||
void loop() { | |||
// put your main code here, to run repeatedly: | |||
} | |||
// put function definitions here: | |||
int myFunction(int x, int y) { | |||
return x + y; | |||
} | |||
</syntaxhighlight> | |||
== Connectivité USB == | |||
En fonction de la carte (voir ci dessus) on a un "device" que le système crée au branchement :<syntaxhighlight lang="text"> | |||
crw-rw----+ 1 root plugdev 166, 0 22 mars 18:49 /dev/ttyACM0 # C'est mou cas | |||
crw-rw----+ 1 root dialout 166, 0 22 mars 18:49 /dev/ttyUSB01 # Ca pourait être ça | |||
</syntaxhighlight>Il faut vérifier que l'utilisateur que vous utilisez pour le dev soit bien membre du groupe (<code>plugdev</code> ou <code>dialout</code>) <syntaxhighlight lang="text"> | |||
uid=.... gid=.... groupes=20(dialout),24(cdrom),29(audio),44(video),46(plugdev),60(games),100(users),102(netdev),986(gpio),992(render),996(input) | |||
</syntaxhighlight>Moi je suis bien : <code>plugdev</code> donc ça va marcher sinon un petit :<syntaxhighlight lang="bash"> | |||
sudo usermod -aG dialout $USER | |||
sudo usermod -aG plugdev $USER | |||
</syntaxhighlight>et ça marche! | |||
== Compiler et flasher == | |||
On arrive au cœur du sujet! | |||
Moi j'ai du modifier platformio.ini:<syntaxhighlight lang="ini"> | |||
; PlatformIO Project Configuration File | |||
; | |||
; Build options: build flags, source filter | |||
; Upload options: custom upload port, speed and extra flags | |||
; Library options: dependencies, extra library storages | |||
; Advanced options: extra scripting | |||
; | |||
; Please visit documentation for the other options and examples | |||
; https://docs.platformio.org/page/projectconf.html | |||
[env:esp32-c3-devkitc-02] | |||
platform = espressif32 | |||
board = esp32-c3-devkitc-02 | |||
framework = arduino | |||
upload_protocol = esptool | |||
upload_port = /dev/ttyACM0 | |||
monitor_port = /dev/ttyACM0 | |||
monitor_speed = 115200 | |||
debug_tool = custom | |||
debug_server = | |||
</syntaxhighlight>On sauvegarde et ensuite, sur la petite barre du bas: | |||
[[Fichier:Visualstudio-lower-bar.png|sans_cadre|709x709px]] | |||
On clique sur la coche pour compiler: Ce doit se terminer par un beau SUCCESS en vert. | |||
On clique ensuite sur le flèche (entre la coche et la poubelle) : On voit les logs de esptool :<syntaxhighlight lang="text"> | |||
Compressed 228800 bytes to 128556... | |||
Writing at 0x00010000... (12 %) | |||
Writing at 0x0001aa3d... (25 %) | |||
Writing at 0x0002180e... (37 %) | |||
Writing at 0x00027993... (50 %) | |||
Writing at 0x0002df5c... (62 %) | |||
Writing at 0x00033c3b... (75 %) | |||
Writing at 0x0003b93d... (87 %) | |||
Writing at 0x00042705... (100 %) | |||
Wrote 228800 bytes (128556 compressed) at 0x00010000 in 0.8 seconds (effective 2163.5 kbit/s)... | |||
Hash of data verified. | |||
</syntaxhighlight>Et aussi un beau SUCCESS en vert. | |||
C'est fait on a flashé avec un beau programme... qui fait rien. | |||
Version du 22 mars 2026 à 18:26
ttyACM0: USB ACM deviceUne fois n'est pas coutume je vais utiliser un Raspberry PI en mode graphique. Un bel écran HDMI branché sur HDMI N°1.
Une installation simple avec toutes les valeurs de bases et seulement un ou deux delta:
- Suppression de l'outil graphique PackageKit qui empèche les sudo apt install normeaux.
- Mettre a jour avec
sudo apt update
sudo apt upgrade
sudo apt full-upgrade
sudo apt install gnome-screenshot #C'est pas necessaire mais pour enrichier ce wiki je mets ca sur tous mes postes de dev
- Passer Chromium en français pour pouvoir éditer ce site tranquilement.
Préparer le Raspberry Pi
Normalement c'est inutile sur une installation par défaut mais au cas ou...
sudo apt install python3 python3-pip python3-venv git build-essential
Installer Visual Studio Code (version ARM64/ARMHF)
Visual studio code n'est pas dans les repo par défaut. Il fout faire toute le sequence suivante:
sudo apt install wget gpg # Pour moi sur une insall par défaut ça n'a rien fait
# On télécharge la clé gpg de microsoft
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
# On installe cette clé
sudo install -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/
# On ajoute une source pour apt
sudo sh -c 'echo "deb [arch=arm64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/code stable main" > /etc/apt/sources.list.d/vscode.list'
# On synchronise
sudo apt update
# On installe (c'est que ca fait le boulot)
sudo apt install code
Installer PlatformIO dans VS Code
On ouvre Visual Studio Code sagement avec le menu "Framboise | Programmation | Visual Studio Code".
Aller dans "extension" : Icone
On recherche platformIO
Et on installe. (Si ça demande si on y crois "Trust" on dit oui)
Ça prend quelques minutes et ça affiche la page de garde PlatformIO.
Installer les toolchains ESP32 (automatique)
Il n'y a rien a installer en tant que tel. Ça se fait à la création du projet. On passe donc à la suite.
Créer un projet ESP32 avec PlatformIO
On clique sur l'icône Platform IO dans la barre d'icône de gauche:
On attends un moment (surtout le première fois)...
Et dans la fenêtre : PlatformIO:
On clique sur Create new Project.
On clique sur "+ New Project"
Choisir la "carte".
La il faut savoir quelle carte on a et surtout quelle est son interface.
Si on branche la carte sur le PI et que l'on examine dmesg.
[ 6757.122196] usb 1-1.1: new full-speed USB device number 10 using xhci_hcd
[ 6757.217480] usb 1-1.1: New USB device found, idVendor=303a, idProduct=1001, bcdDevice= 1.01
[ 6757.217498] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 6757.217503] usb 1-1.1: Product: USB JTAG/serial debug unit
[ 6757.217508] usb 1-1.1: Manufacturer: Espressif
[ 6757.217512] usb 1-1.1: SerialNumber: AC:A7:04:83:55:70
[ 6757.226869] cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
Ici j'ai une interface en ttyACM0. J'aurais pu avoir :
[ 6757.226869] usb 1-1.3: ch341-uart converter now attached to ttyUSB0
On choisit la carte en fonction de ça :
| dmesg | carte |
|---|---|
cdc_acm 1-1.1:1.0: ttyACM0: USB ACM device
|
esp32-c3-devkitc-02
|
usb 1-1.3: ch341-uart converter now attached to ttyUSB0
|
esp32-c3-devkitm-1
|
| Doit y en avoir d'autres | ... |
Donc pour moi :
Dans un premier temps le framework Arduino c'est plus simple.
On clique sur Finish et on attends...
| Cette partie doit se faire connecté à internet la première fois puisque, comme vu plus haut, c'est là que l'on va chercher les éléments de la toolchain manquants. |
On a successivement les infos suivantes :
A la fin (moi ca a pris 15 min mais je suis loin du Point D'acces Wifi) on a un beau projet :
Le code de "main.cpp" est par défaut :
#include <Arduino.h>
// put function declarations here:
int myFunction(int, int);
void setup() {
// put your setup code here, to run once:
int result = myFunction(2, 3);
}
void loop() {
// put your main code here, to run repeatedly:
}
// put function definitions here:
int myFunction(int x, int y) {
return x + y;
}
Connectivité USB
En fonction de la carte (voir ci dessus) on a un "device" que le système crée au branchement :
crw-rw----+ 1 root plugdev 166, 0 22 mars 18:49 /dev/ttyACM0 # C'est mou cas
crw-rw----+ 1 root dialout 166, 0 22 mars 18:49 /dev/ttyUSB01 # Ca pourait être ça
Il faut vérifier que l'utilisateur que vous utilisez pour le dev soit bien membre du groupe (plugdev ou dialout)
uid=.... gid=.... groupes=20(dialout),24(cdrom),29(audio),44(video),46(plugdev),60(games),100(users),102(netdev),986(gpio),992(render),996(input)
Moi je suis bien : plugdev donc ça va marcher sinon un petit :
sudo usermod -aG dialout $USER
sudo usermod -aG plugdev $USER
et ça marche!
Compiler et flasher
On arrive au cœur du sujet!
Moi j'ai du modifier platformio.ini:
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:esp32-c3-devkitc-02]
platform = espressif32
board = esp32-c3-devkitc-02
framework = arduino
upload_protocol = esptool
upload_port = /dev/ttyACM0
monitor_port = /dev/ttyACM0
monitor_speed = 115200
debug_tool = custom
debug_server =
On sauvegarde et ensuite, sur la petite barre du bas:
On clique sur la coche pour compiler: Ce doit se terminer par un beau SUCCESS en vert.
On clique ensuite sur le flèche (entre la coche et la poubelle) : On voit les logs de esptool :
Compressed 228800 bytes to 128556...
Writing at 0x00010000... (12 %)
Writing at 0x0001aa3d... (25 %)
Writing at 0x0002180e... (37 %)
Writing at 0x00027993... (50 %)
Writing at 0x0002df5c... (62 %)
Writing at 0x00033c3b... (75 %)
Writing at 0x0003b93d... (87 %)
Writing at 0x00042705... (100 %)
Wrote 228800 bytes (128556 compressed) at 0x00010000 in 0.8 seconds (effective 2163.5 kbit/s)...
Hash of data verified.
Et aussi un beau SUCCESS en vert.
C'est fait on a flashé avec un beau programme... qui fait rien.




