Premiers pas avec la carte uPesy ESP32C3 LP Basic
(Mis à jour le 11/09/2023)
Ce guide va vous aider pour vos premières utilisations de votre uPesy ESP32C3 Low Power Basic : une carte faite pour remplacer l’ESP8266 dans vos projets de domotique DIY avec une très faible consommation en Deep Sleep (~15µA).
Note
Comme les autres cartes ESP32, MicroPython est déjà installé dessus.
Avertissement
Si c’est la première fois que vous touchez à une carte ESP32, je vous conseille de commencer par une carte basée sur le module ESP32 Wroom classique, au lieu du modèle très récent ESP32C3. Il y a largement moins de ressources sur Internet et les outils sont encore en développement.
Communiquer avec l’ordinateur en utilisant l’USB intégré de l’ESP32C3
L’ESP32C3 possède une interface USB CDC
qui permet d’émuler une interface série UART. Cela évite de rajouter un convertisseur USB-UART supplémentaire. En fonction des cartes ESP32-C3, certaines utilisent uniquement l’interface USB CDC intégrée (par exemple celle d’uPesy) ou d’autres utilisent toujours un convertisseur (le CP2102, CH340…). Le fait de ne pas utiliser le convertisseur permet de réduire la taille de la carte et surtout son prix !
Mode Téléchargement DOWNLOAD
Au début, pour utiliser ce mode USB, il faut mettre l’ESP32C3 en mode DOWNLOAD
, pour qu’il soit détecté par l’ordinateur. Cette étape doit être faite manuellement avec les 2 boutons.
Note
C’est la même manipulation qu’avec l’ESP32 classique quand on veut le mettre manuellement en mode DOWNLOAD
.
Pour ce faire, il suffit de :
Brancher l’ESP32C3 à l’ordinateur par USB (avec un câble qui laisse transiter les données).
Presser le bouton
BOOT
(à droite)Appuyer et relâcher le bouton
EN
(à gauche), tout en maintenant appuyé le boutonBOOT
.Relâcher le bouton
BOOT
L’ESP32C3 doit maintenant être reconnu par l’ordinateur :
Avertissement
Si vous branchez l’ESP32-C3 sans que le mode DOWNLOAD
soit configuré, le port de la carte sera en boucle activé puis désactivé sur l’ordinateur.
Heureusement, on n’aura pas besoin de faire cette étape à chaque fois que l’on voudra télécharger un programme sur l’ESP32. Elle devra être refaite de temps en temps en fonction des cas .
Comment programmer facilement l’ESP32C3 ?
La programmation de l’ESP32C3 se fait avec les mêmes outils qu’un module ESP32 classique. Vous devez juste vous assurer d’avoir une version récente du portage Arduino , qui intègre les nouveaux modèles. Il existe également un firmware MicroPython pour l’ESP32C3.
Programmer l’ESP32C3 avec du code Arduino dans l’IDE
Si vous partez de zéro, le lien vers le tutoriel pour installer et programmer l’ESP32 dans l’application Arduino IDE . Si vous déjà les outils d’installés, je vous recommande d’utiliser la dernière version disponible :
Note
La carte doit préalablement être mise en mode Download
pour être détectée et prête à recevoir un programme.
Ensuite, vous pouvez choisir comme carte, le type générique ESP32C3 Dev Module
tant que la carte uPesy ESP32C3 n’est pas dans la liste.
Voici la configuration que vous devez mettre pour que la carte fonctionne correctement via l’USB :
Avertissement
Vous devez activer le mode CDC depuis les paramètres de la carte pour communiquer avec la carte via USB.
Ensuite, vous pouvez réutiliser des programmes existants élaborés avec l’ESP32 classique en adaptant les broches si l’ESP32C3 supporte les fonctionnalités hardwares utilisées dans votre programme.
Avertissement
Lors de la première fois, vous devrez manuellement appuyer sur bouton RESET
pour que l’ESP32-C3 prenne en compte le nouveau programme.
Programmer l’ESP32C3 avec MicroPython
MicroPython supporte l’ESP32-C3. Vous pouvez télécharger l’image MicroPython pour l’ESP32C3 sur le site officiel : https://micropython.org/download/esp32c3-usb/ .
Note
La carte uPesy est livrée avec MicroPython installé.
Pour téléverser MicroPython sur l’ESP32C3, je vous conseille la méthode manuelle en commande avec esptool
. En effet, en fonction de la version de Thonny IDE, le téléversement ne peut ne pas fonctionner. (Même si on a l’impression que cela fonctionne, une fois qu’on lance le programme, on obtient une erreur invalid header: 0xffffffff
, avec la version 3.3.13
). Si vous voulez utiliser Thonny, pensez bien à mettre la dernière version.
Pour une installation manuelle, voici la commande à utiliser :
esptool.py.exe --chip esp32c3 --port COM71 --baud 115200 --before default_reset --after hard_reset --no-stub write_flash --flash_mode dio --flash_freq 80m 0x0 .\esp32c3-usb-20230426-v1.20.0.bin
Et le résultat de la commande :
PS C:\Users\Alexis\Downloads> esptool.py.exe --chip esp32c3 --port COM71 --baud 115200 --before default_reset --after hard_reset --no-stub write_flash --flash_mode dio --flash_freq 80m 0x0 .\esp32c3-usb-20230426-v1.20.0.bin
esptool.py v4.5.1
Serial port COM71
Connecting...
Chip is ESP32-C3 (revision v0.3)
Features: WiFi, BLE
Crystal is 40MHz
MAC: 58:cf:79:1a:54:50
Enabling default SPI flash mode...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00164fff...
Erasing flash...
Took 5.32s to erase flash block
Wrote 1461248 bytes at 0x00000000 in 27.1 seconds (431.1 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
PS C:\Users\Alexis\Downloads>
On peut ensuite utiliser Thonny IDE en choisissant ESP32
comme type d’interpréteur.
Avertissement
Quand le fichier est enregistré sur l’ESP32C3 et qu’il y a un script en cours. On ne peut pas enregistrer le nouveau fichier. Il faut attendre que le script soit complètement exécuté. Cela n’est pas forcément pratique quand il y a des boucles infinies.
Si le fichier python est sauvegardé sur l’ordinateur il n’y a plus ce problème, mais l’entièreté du script sera envoyée à la volée sur la carte, donc ça sera un peu plus long pour lancer le script sur des gros fichiers.
ESP32-C3 Pinout : Comprendre les broches de l’ESP32-C3
Le schéma des broches
Les numérotations des broches de l’ESP32-C3 sont complètement différentes de l’ESP32 classique. Les broches ont également moins de fonctionnalités. Par exemple, il n’y a pas de capteurs capacitifs, ni de DAC (le DAC de l’ESP32 classique de 8bits n’est pas terrible).
Quelques broches particulières
-
La broche
OFF
permet de complètement désactiver l’alimentation de la carte via un signal extérieur. Ce mode consomme encore moins que le Deep Sleep de l’ESP32C3, car toute l’alimentation est désactivée. Cela peut être pratique lorsqu’on veut que l’ESP32C3 s’allume pour envoyer des données suite à un événement physique rapporté par un capteur en mode tout ou rien. Par exemple avec un interrupteur mécanique, magnétique, un capteur de présence. La consommation dans ce mode est de seulement 6.5µA.Note
En imposant une tension de 0V sur la broche
OFF
, la carte est éteinte. La broche
RESET
permet de rebooter l’ESP32C3 si elle est mise à la masse.La broche
VIN
est directement reliée au connecteur JST 2.0mmLes broches avec la fonction
STRAP
, sont des strappings pins qui ont un comportement particulier lors du boot de l’ESP32-C3.
Mesurer la tension de l’alimentation externe
La carte possède un pont diviseur intégré de ratio 1/2 pour mesurer la tension de l’accumulateur branché sur la broche VIN ou sur le connecteur JST. Il est relié à la broche GPIO0
, non exposée. La broche GPIO0 est également une entrée analogique de l’ADC : ADC1_CH0
. Pour mesurer la tension de la batterie, voici un code tout prêt :
void setup() {
pinMode(0, INPUT); // Il faut déclarer le pin en entrée
Serial.begin(115200);
}
void loop() {
float v_mes = analogRead(0);
float v_dc = 2*(v_mes/4095)*2.5;
Serial.println(v_dc);
delay(100);
}
Quelques différences entre l’ESP32 classique et l’ESP32C3
Voici quelques différences notables entre les 2 modèles :
-
Le mode de communication pour téléverser un programme : Sur l’ESP32 classique, on peut téléverser un programme et recevoir des messages uniquement par UART. Un convertisseur additionnel est rajouté pour faire l’interprète entre l’USB et l’UART. Sur l’ESP32-C3, on peut en plus utiliser en plus un mode USB pour communiquer directement avec l’ordinateur.
Note
Le mode UART reste toujours le mode prioritaire qui fonctionnera dans tous les cas.
En effet, le bloc USB de l’ESP32-C3 fonctionne uniquement si le microprocesseur est allumé. Par conséquent, lorsque l’ESP32-C3 est mis en Deep Sleep, la communication USB est désactivée. En pratique, cela peut être gênant car dès qu’un programme mettra l’ESP en veille profonde, on ne pourra plus recevoir des messages avec la carte et on sera obligé de remettre manuellement la carte en mode
DOWNLOAD
pour recevoir un nouveau programme.Note
Lors de vos tests de programmation, il est préférable de désactiver la mise en Deep Sleep, pour éviter d’effectuer la manipulation avec les boutons à chaque fois.
Redémarrage automatique : Avec l’ESP32-C3 programmé en USB, la carte est censée redémarrer automatiquement après le téléversement d’un programme.
Connectivité sans-fils: L’ESP32-C3 supporte le Wi-Fi à 2.4GHz et le Bluetooth Low Energy v5. Il ne supporte pas le Bluetooth Classic.
-
La plage de l’ADC : Sur l’ESP32-C3, la plage de l’ADC est encore plus limitée que sur l’ESP32 : entre 0V et 2.5V au maximum avec une atténuation de 11dB.
Note
Il semblerait que si la tension ne dépasse pas 3.3V, l’ADC ne sera pas endommagé. La mesure sera juste écrêtée à 2.5V.
Le microprocesseur : Même si en apparence, l’ESP32-C3 est similaire à l’ESP32, au niveau du microprocesseur c’est complètement différent. Le C3 utilise un CPU avec une architecture RISC-V Open Source alors que l’ESP32 utilise un CPU propriétaire de Tensilica (qui appartient à Cadence), le Xtensa LX6.
La consommation : Même si la consommation en Deep Sleep est globalement la même, la différence se fait en mode normal et lors de l’émission/réception d’ondes radio. L’ESP32-C3 est beaucoup plus économe que l’ESP32 classique. Le C3 possède un CPU à 1 cœur cadencé au maximum à 160MHz.
Note
Compte tenu de ces différences, l’ESP32-C3 doit être vu comme un ESP8266 sous stéroïdes. La carte uPesy ESP32-C3 sera parfaite pour les projets IoT qui utilisent des capteurs.
FAQ - Questions fréquentes
Voici la réponse à des questions que vous vous poserez probablement.
Ma LED rouge ne s’allume pas quand la carte est alimentée par batterie
C’est tout à fait normal, la LED rouge est allumée uniquement lorsque la carte ESP32C3 est alimentée par USB. Une simple LED consomme quelques mA, ce qui est beaucoup trop pour être alimenté en permanence via une batterie.
Est-ce qu’il y a un chargeur de batterie intégré ?
Non, sur le modèle Basic, il n’y a pas de chargeur intégré. Il n’est disponible que sur la version Pro.
Note
L’avantage est d’avoir beaucoup plus de choix sur le type de batterie : cela peut être n’importe quel type d’accumulateurs : des piles AAA, une batterie LiPo, un panneau solaire. Il faut juste s’assurer que la tension soit comprise entre 3.5V et 6.5V.
Sur cette carte, la gestion de l’alimentation doit être faite en dehors.
Est-ce que l’ESP32-C3 peut être utilisé comme un périphérique USB dans un projet ?
Non, l’ESP32-C3 ne peut pas être utilisé comme un périphérique HID, MIDI ou MSC. Il ne peut pas se faire passer comme un clavier ou une souris. L’interface USB du C3 offre uniquement une émulation d’une interface série. Pour ce genre d’application, utilisez plutôt un ESP32S3 à la place.