Premiers pas avec ESP32

Rédigé par Bruno Aucun commentaire
Classé dans : Non classé Mots clés : microcontrôleur, esp32, arduino

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

Écrire un commentaire

Quel est le deuxième caractère du mot vusey9h ?