esp32.md | Last modified: 1754873171 | Edit | Home

Je me suis déniché un microcontrôleur ESP32 de la marque Whadda [??] anciennement Velleman [Ah, ok, les trucs en kit: toute ma jeunesse ;-)] dans la boutique au coin de la rue.

Fiche produit: Whadda ESP32 Development Board.

Nous avons là un chipset ESPRESSIF ESP-WROOM-32 avec un microprocesseur Xtensa double cœur 32bits LX6, fonctionnant à 160 ou 240MHz et jusqu’à 600DMIPS, 520Lo de SRAM et 448Ko de ROM, du Wi-Fi: 802.11 b/g/n, du Bluetooth et BLE.

La plaquette, excepté sa couleur, ressemble comme deux gouttes d'eau au ESP32_DevKitC d'Espressif. Peut-être le mien est un clône... ou le fruit de l'électronique open-source, je sais pas. Bon, je suppose que c'est compatible, voyons ça:

esp-idf - l'official framework d'Espressif

Prenons la méthode du producteur de l'ESP32.

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

... Francement, c'est ch|@n7 !

IDE Arduino

Ca a l'air beaucoup plus simple et intuitif, et pas besoin du esp-idf :-)

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

Tommy fini par utiliser une autre interface. Ca a l'air un peu usine à gaz, je vais rester sous l'IDE Arduino.

Installation sous Linux (Debian 12)

Lors de la première utilisation de L'API Arduino, j'ai reçu deux messages d'erreur:

Du coup, l'installation sous Linux (Debian 12) ressemble à:

1er test:

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 le supprime en tapant: Ctrl + Shift + p puis Arduino: Stop Language Server (à effectuer à chaque ouverture de l'IDE) → Peut-être qu'un jour cette option sera désactivée par défaut.

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

Pour allumer une LED, il faut initialiser un pin en output pinMode(<numero du pin>, OUTPUT); puis on va écrire dedans: digitalWrite(<numero du pin>, HIGH) ou LOW pour l'éteindre.

Suite illogique des pins GPIO sur la carte à corriger par software.

GPIO-1 en OUTPUT → conflit avec sortie serial → on prend un autre.

#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);
  }
}

Bien entendu, on peut aussi faire des choses utiles :-)

To be contiuned....