Premiers pas avec ESP32
Je suis suis déniché un microcontrôleur ESP32 de la marque Whadda (??) anciennement Velleman (Ah, ok, toute ma jeunesse ;-) dans la boutique au coin de la rue.
Fiche produit: Whadda ESP32 Development Board
ESP-IDF - l'official framework d'Espressif
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
mkdir -p ~/esp
cd ~/esp
git clone -b v5.4.1 --recursive https://github.com/espressif/esp-idf.git
cd ~/esp/esp-idf/
./install.sh all
. ./export.sh
cd ..
cp -r $IDF_PATH/examples/get-started/hello_world/ .
cd hello_world/
idf.py set-target esp32
# idf.py menuconfig # Component config ---> ESP System Settings ---> Channel for console output (Default: UART0) ---> (X) USB CDC save quit
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor # ctrl-] to quit
C'est un peu galère, quand même...
IDE Arduino
Initiation à l'ESP32 grâce aux vidéos de Tommy Desrochers: d'abord ESP32 #1, puis ESP32 #2, ensuite ESP32 #3, et encore ESP32 #4, pour finir par ESP32 #5
Ca a l'air beaucoup plus simple et intuitif, et pas besoin du esp-idf :-)
Installation sous Linux
Lors du premier test de téléversement depuis l'API Aduino vers le micorcontrôleur, j'ai reçu deux messages d'erreur:
-
ModuleNotFoundError: No module named 'serial': L'API ne trouve pas le module Serial (pour l'affichage de messages du microcontrôleur vers l'API). On va devoir installer le module Serial de Python (Pourquoi Python ??). -
Failed uploading: no upload port provided: Faute de droit d'écriture sur le port, l'API ne peux écrire pas sur le microcontrôleur. Il faudra donner accès à /dev/ttyUSB0 en ajoutant l’utilisateur au groupe dialout.
Du coup, l'installation sous Linux (Debian 12):
- Download module Serial de Python
# apt install python3-serial - Ajout de l'utilisateur au groupe dialout:
# /sbin/usermod -aG dialout+ reboot. - Download Aduino IDE: https://www.arduino.cc/en/software
- Unzip:
$ unzip arduino[…] - Launch:
$ cd arduino[…], suivi de$ ./arduino-ide - Menu File → Preferences → Additional boards manager URLs: https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
- Menu Tools → Board → Board Manager… → recherche par mot clef ESP32, sélection de la version la plus récente de ESP32 by Espressif Systems, puis Install
- Menu Tools → Board → Esp32 → ESP32 Dev Module
- Menu Tools → Port → /dev/ttyUSB0
1er test:
- Menu File → example → ESP32 → ChipID → GetChipID
- Téléversement vers l'ESP32: Menu Sketch → Upload
- Menu Tools → Serial Monitor
- Change to 115200 Baud
Résultat:
ESP32 Chip model = ESP32-D0WDQ6 Rev 101 This chip has 2 cores Chip ID: 11493932
Stop language server
L'appli fait continuellement appel au "language server" pour l'aide à la programmation (autocomplétion), ce qui ralenti considérablement l'IDE → On supprime: Ctrl + Shift + p puis Arduino: Stop Language Server (à effectuer à chaque ouverture de l'IDE
https://forum.arduino.cc/t/how-to-disable-language-server-in-arduino-ide-2-3-2/1291420/2
Serial Output
void setup() {
Serial.begin(115200);
while (!Serial) continue;
Serial.println("Ready.");
}
void loop() {
}
GPIO
[26/09/2014]
Suite illogique des pins GPIO

GPIO-1 en OUTPUT -> conflit avec sortie serial
#include <math.h>
const float pi = 3.14159;
const int ledPin[7] = {5,18,19,21,3,22,23};
void setup() {
for (int i=0; i<7; i++) {
pinMode (ledPin[i], OUTPUT);
}
}
void loop() {
for (float ang=-pi; ang<pi; ang=ang+(2*pi/700)) {
int led = (1+std::sin(ang))*7/2;
digitalWrite (ledPin[led], HIGH);
delay(1);
digitalWrite (ledPin[led], LOW);
}
}