uPesy ESP32C3 Basic
(Mis à jour le 12/10/2023)
Sélectionnez la version de votre carte mentionnée au verso: Rev x.y
Voici la documentation technique de la carte uPesy ESP32C3 Basic Low Power DevKit. Il s’agit d’une carte basée sur le nouveau module ESP32-C3, spécialement optimisée pour minimiser la consommation de courant lorsque l’ESP32C3 est en mode Deep Sleep (en veille profonde).
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 ESP32C3, très récent qui se base sur l’écosystème de l’ESP32 classique.
Caractéristiques techniques
Quelques caractéristiques de l’ESP32-C3
L’ESP32-C3 possède une architecture relativement différente de l’ESP32 classique et des ESP32-S2/S3. Il fonctionne avec un microprocesseur mono-coeur basé sur l’architecture Open Source RISC-V.
Voici une liste de quelques caractéristiques techniques pertinentes :
Microprocesseur RISC-V cadencé à 160MHz
4Mo de Flash et 400Ko de RAM
Interface USB → Série intégrée
Un mode Deep Sleep à 5µA et un mode LightSleep à seulement 150µA
Débogage par JTAG via l’USB
Connectivité WiFi et BLE 5.0
Note
La carte uPesy ESP32C3 Basic utilise le module ESP32-C3-WROOM-02-N4.
Pour plus d’informations sur le module C3, vous pouvez consulter la datasheet de la puce :
Les caractéristiques techniques de la carte uPesy ESP32C3
Voici les caractéristiques clés de la carte de développement uPesy basée sur l’ESP32C3 :
Carte basée sur le module ESP32-C3-WROOM-02-N4
Connecteur USB-C
Plusieurs modes d’alimentation possibles très faible consommation
Connecteur batterie JST 2.0mm (polarité positive à gauche)
Comprendre les broches de l’ESP32-C3
Les numérotations des broches de l’ESP32-C3 sont complètement différentes de l’ESP32 classique. Il y a beaucoup moins de broches disponibles et elles ont moins de fonctionnalités. Par exemple, il n’y a pas de capteurs capacitifs, ni de DAC (pas très important car le DAC de l’ESP32 classique de 8bits n’est pas terrible). L’avantage est de pouvoir proposer une carte compacte et avoir plus de place sur une breadboard (2 rangées de chaque côté).
Le schéma des broches - ESP32-C3 Pinout
Il y a 12 broches GPIO disponibles sur la carte uPesy ESP32C3 Basic. Elles peuvent être toutes utilisée aussi bien en entrées qu’en sorties.
Note
Comme sur l’ESP32 classique, on peut router les périphériques I2C, I2S, SPI, UART sur n’importe quelles broches.
Périphériques de l’ESP32C3 - Fonctionnalitées des broches
En termes de périphériques disponibles, ils sont les suivant :
PWM sur n’importe quelles broches.
5 broches analogiques de l’ADC1 (Il y a également un ADC2 qui est utilisé pour le Wi-Fi).
1x
I2C
1x
SPI
1x
I2S
(pour échanger de l’audio)2x
UART
: Puisque la carte utilise l’USB sur les brochesGPIO18
etGPIO19
(non exposée), on gagne un UART supplémentaire (UART0
). L’UART de base est sur les brochesGPIO20
etGPIO21
. L’autre port série,UART1
peut être utilisé sur n’importe quelle broches.
Quelques broches spéciales
La broche
RESET
permet de rebooter l’ESP32C3 si elle est mise à la masse. Elle est également reliée au boutonEN
à gauche. Il intervient dans la manipulation manuelle pour mettre l’ESP32C3 en mode “Téléversement d’un nouveau programme”.-
La broche
GPIO9
intervient également lors d’un téléversement d’un nouveau programme. Elle est reliée au boutonBOOT
.Note
C’est l’équivalent de la broche
GPIO0
de l’ESP32 classique. Les broches
GPIO8
etGPIO2
ont des résistances de tirages vers le haut (pull-up) pour configurer le mode BOOT de l’ESP32. Ce sont des strapping pins.-
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. La consommation dans ce mode est de seulement 6.5µA en moyenne.Note
En imposant une tension de 0V sur la broche
OFF
, la carte est éteinte. Les broches
GPIO18
etGPIO19
sont utilisés par l’USB. Il ne faut pas les utiliser depuis votre programme pour ne pas perturber la communication. C’est pour cela qu’elles ne sont pas exposées.La broche
GPIO0
(non exposée) est utilisée par la carte pour mesurer la tension d’alimentation.
Note
Comme sur les autres cartes Low Power, il n’y a pas de LED reliée à une broche particulière.
Note
Quand l’ESP32C3 est en Deep Sleep et alimenté par batterie, la LED rouge d’alimentation s’éteint automatiquement.
Alimentation de la carte ESP32C3 Basic
Les modes d’alimentations
Il y a 2 façons d’alimenter la carte ESP32C3 Basic, dont une est optimisée pour la consommation de courant :
Via USB (\(V_{BUS}\) ) : On connecte la carte via son connecteur USB-C à un ordinateur ou à un chargeur de téléphone adéquat. Une LED rouge s’allume dès la mise sous tension. Ce mode d’alimentation n’est pas optimisé pour la consommation de courant.
Via une alimentation externe (\(V_{IN}\) ) : On connecte sur la broche \(V_{IN}\) de la carte ESP32 une alimentation externe avec une tension comprise entre 3.5V et 6.5V maximum . Si votre alimentation externe est une batterie LiPo avec la bonne connectique, vous pouvez la brancher directement dans le connecteur prévu. Ce mode d’alimentation est optimisé pour la consommation de courant : autour de 15µA en Deep Sleep.
Avertissement
Le connecteur JST de batterie et la broche \(V_{IN}\) sont reliés.
La version ESP32C3 Basic n’intègre pas de circuit de charge pour une batterie LiPo/Lithium-ion. Ainsi vous pouvez y brancher n’importe quel type de sources d’alimentation (comprise entre 3.5 et 6.5V) :
Une batterie LiPo ou Lithium
3 piles AAA en série
La sortie d’un chargeur d’un panneau solaire
Une alimentation stabilisée
Note
Il est techniquement possible d’alimenter également la carte directement en 3.3V sur la broche 3V3
, même si cela est déconseillé. Des connaissances approfondies et une lecture du schéma est nécessaire avant d’utiliser cette option.
Il serait possible de brancher directement une batterie LiFePO4 sur le rail 3.3V.
Le danger, c’est qu’il n’y a aucune sécurité particulière si la carte est alimentée en même temps par USB : la batterie LiFePO4 recevra directement une tension entrante de 3.3V provenant du régulateur. Ainsi vous devez prendre beaucoup de précautions avant de choisir cette méthode.
Fonctionnement des modes d’alimentation
L’ESP32 est alimenté en 3.3V régulé par un régulateur de tension.
-
Dès que l’on alimente la carte par USB, une éventuelle alimentation externe qui serait branchée sur le connecteur ou la broche \(V_{IN}\) sera désactivée. L’énergie électrique vient uniquement de l’USB.
Astuce
On peut avoir en toute sécurité, la carte alimentée par USB tout en ayant une batterie de branchée.
Note
Notez qu’il y a une tension de 5V sur la broche
5V
de la carte uniquement lorsque la carte est branchée par USB. -
Le connecteur JST est directement relié à la broche \(V_{IN}\) , par conséquent, si vous branchez une batterie, la tension de la batterie sera aussi disponible sur la broche \(V_{IN}\) pour alimenter un éventuel montage.
Avertissement
Il faut donc jamais brancher en même temps 2 types d’alimentation différente sur le connecteur JST et la broche \(V_{IN}\) .
Si le mode
OFF
est activé, c’est-à-dire la brocheOFF
mise à la masse, le régulateur est désactivé. Tout le rail 3.3V est éteint. On utilise ce mode lorsqu’on veut que l’ESP32 soit éteint la majeure partie du temps et s’allume juste suite à un éventement externe déclenché en mode tout ou rien. Un circuit additionnel avec un transistor Mosfet est nécessaire. C’est ce qu’on appelle du “Soft latching” en anglais. Vous pouvez regarder cette vidéo pour mieux comprendre l’intérêt de mode : https://www.youtube.com/watch?v=r3ggKO34lIM
Le type de batterie à utiliser
Sur cette carte, il y a beaucoup plus de flexibilité possible concernant le type d’accumulateur que l’on peut utiliser. Puisqu’il n’y a pas de chargeur intégré, la carte n’attend pas un type de batterie particulier, tant que la plage de tension est respectée : entre 3.5V et 6.5V.
Avertissement
Par exemple, vous ne pouvez pas utiliser de batterie 9V.
Cependant une batterie Li-Ion/Li-Polymer rechargeable composée d’une seule cellule de 3.7V (ou 4.2V lorsque la batterie est complètement chargée) est conseillé.
Astuce
Pour ceux qui font du modélisme, cela correspond à un accu Lipo 1S.
La capacité de la batterie à choisir dépendra de l’autonomie souhaitée. Une capacité autour de 1000mAh sera suffisante dans la plupart des cas.
Note
Vous devriez posséder un chargeur externe de batterie LiPo pour recharger la batterie.
Vous pouvez aussi utiliser plusieurs piles AAA, LR3, LR6 (qui peuvent être rechargeables) à la place. En partant du principe que vous utilisez une pile avec une tension nominale de 1.5V, vous pouvez en mettre trois en série pour obtenir une tension de 4.5V.
Note
La capacité globale des piles doit aussi être du même ordre de grandeur que si vous utilisiez une batterie LiPo. Par exemple, une pile bouton de 3.3V sera très rapidement vide.
Connaître le déchargement de la batterie depuis un programme
Avec une batterie Li-Ion/Li-Polymer, on peut estimer sa capacité restante en se basant sur sa tension. La carte intègre un pont diviseur de tension, relié à la broche GPIO0
, qui divise la tension \(V_{DC}\) par un ratio.
Avertissement
Cette méthode fonctionne uniquement quand la carte est alimentée par batterie. La tension renvoyée sera erronée si l’USB est branché en même temps pour recharger la batterie.
On peut donc connaître soit la tension de la batterie \(V_{BAT}\) , soit d’une alimentation externe \(V_{IN}\) , voir celle de l’USB \(V_{BUS}\) avec la formule suivante :
Le ratio est de \(2\) . Le code Arduino suivant permet de mesurer la tension de la batterie :
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);
}
Avec l’USB de branché, vous devriez obtenir une tension d’environ 4.74V.
Mesures de consommation
L’ESP32C3, tout comme l’ESP32 classique possède différents modes de fonctionnement pour limiter la consommation d’énergie. Pour limiter la consommation, les fonctionnalités de l’ESP32-C3 sont progressivement désactivées. Le mode Deep Sleep, le plus connu est celui qui consomme le moins, car le CPU principal de l’ESP32C3 est complètement éteint.
Voici quelques mesures réalisées avec la carte ESP32-C3 dans différentes applications.
Note
D’une carte à l’autre, les mesures peuvent légèrement varier de quelques µA.
Carte ESP32C3 éteinte (OFF
mis à la masse)
Lorsqu’un circuit de “Soft Latch” est utilisé, c’est-à-dire l’auto-maintien du circuit d’alimentation par l’ESP32C3, on obtient la consommation la plus faible.
Carte ESP32C3 en Deep Sleep
Lorsque la carte est mise en Deep Sleep, sa consommation se situe autour de 15µA. C’est le mode à privilégier lorsqu’on veut réveille l’ESP32C3 toutes les x secondes pour envoyer des données par Wi-Fi.
Pics de courant dû à l’émission de paquets Wi-Fi
La réception et surtout l’émission de paquets Wi-Fi créer des pics de courants pouvant facilement dépasser la centaine de mA.
Quelques précautions à garder en tête
Tolérance en tension des pins
L’ESP32C3 est un microcontrôleur qui fonctionne en 3.3V. C’est-à-dire que la tension en sortie des pins GPIO est de 3.3V et la tension en entrée ne doit pas excéder 3.3V. Les pins GPIO ne sont pas prévus pour avoir des niveaux logiques de 5V sur le long terme .
La tension mesurée par le convertisseur analogique numérique ne doit pas non plus excéder 3.3V (et pas non plus négative bien sûr). La plage de l’ADC est limitée à 2.5V.
Protections intégrées
La carte uPesy ESP32-C3 possède plusieurs sécurités en cas de mauvaises manipulations :
Sur le rail de l’USB (\(V_{BUS}\) ), il y a un fusible thermique auto-réarmable de 750mA. Il s’active et se désactive automatiquement (c’est une résistance qui varie avec la température appelée polyfuse en anglais).
Inversion de polarité batterie : La carte possède une protection si vous branchez la batterie dans le mauvais sens au niveau du connecteur JST. Cette protection fonctionne également si vous branchez une alimentation dans le mauvais sens sur la broche
VIN
.
Note
À noter que les cartes ESP32C3 “génériques” d’autres fabricants ne disposent pas de ce genre de protections.
Fichiers mis à disposition
Modèle 3D (au format
.wrl
) : https://github.com/uPesy/kicad_lib_upesy/blob/master/assets/step_model/upesy_esp32c3_basic.wrlModèle 3D (au format
.step
) : https://github.com/uPesy/kicad_lib_upesy/blob/master/assets/step_model/upesy_esp32c3_basic.stepPlan avec les dimensions : https://github.com/uPesy/kicad_lib_upesy/blob/master/assets/drawing/upesy_esp32c3_basic_dimension.pdf
Schéma électrique : https://cdn.shopify.com/s/files/1/0609/6011/2892/files/sch_upesy_esp32c3_basic.pdf?v=1689865421
Changelog | Historique des modifications
v0.1 (Juillet 2023)
Première version