L’ESP32 est un microcontrôleur 32 bits d’Espressif Systems intégrant le Wi-Fi et le Bluetooth, ainsi que des interfaces pour capteurs et périphériques externes. Dans FizziQ, il sert de capteur déporté pour enregistrer des mesures à distance.
Observer expérimentalement avec une carte ESP32
FizziQ enregistre dans le cahier d’expériences les données transmises par un ESP32, qui sert de capteur déporté. Sa liaison Wi-Fi ou Bluetooth permet de mesurer à distance, sans fil entre la carte et le téléphone.
Étapes :
- Câbler le capteur sur une entrée analogique de l’ESP32, en vérifiant que la tension délivrée ne dépasse jamais 3,3 V : contrairement à l’Arduino Uno, la carte n’accepte pas 5 V sur ses entrées.
- Programmer la carte depuis l’IDE Arduino ou en MicroPython pour lire l’entrée et convertir la valeur brute (0 à 4095) en grandeur physique.
- Activer la liaison sans fil et appairer la carte, puis vérifier que les valeurs arrivent bien avant de lancer l’acquisition.
- Placer la carte à l’endroit à mesurer - dans une enceinte, sur un mobile, à l’extérieur - et enregistrer la série de mesures dans FizziQ.
- Tracer la courbe obtenue et l’exporter, puis discuter du pas de quantification de la mesure au vu de l’amplitude du signal observé.
En savoir plus
Caractéristiques et histoire
L’ESP32 repose sur un processeur dual-core Tensilica Xtensa LX6 et 4 Mo de mémoire flash. Il embarque de nombreuses interfaces (ports série, I2C, SPI, PWM, ADC, DAC) et prend en charge le Wi-Fi 802.11 b/g/n et le Bluetooth 4.2 (BR/EDR/BLE). Annoncé en 2016, il s’est rapidement imposé par ses fonctionnalités avancées, sa faible consommation et son coût abordable, et sert aujourd’hui dans la robotique, la domotique, l’Internet des objets (IoT) et la création musicale.
Un microcontrôleur qui mesure là où le smartphone ne va pas
L’ESP32 sert à déporter la mesure. Un smartphone ne peut pas être immergé, chauffé, laissé dehors une nuit entière, ni fixé sur un mobile lancé. Une carte à quelques euros, elle, le peut. Le Wi-Fi et le Bluetooth intégrés permettent en plus de recevoir les données à distance pendant que la manipulation se déroule, sans avoir à récupérer la carte.
Le convertisseur analogique-numérique sur 12 bits
L’ESP32 numérise les tensions sur 12 bits, soit 4096 niveaux, sur une plage de 0 à 3,3 V. Le pas de quantification vaut donc environ 0,81 mV, contre 4,9 mV pour un Arduino Uno sur 0-5 V. C’est un gain d’un facteur six sur la résolution. Attention toutefois : ce convertisseur est connu pour sa non-linéarité, particulièrement près de 0 V et au-dessus de 3 V. Une résolution fine ne garantit pas une bonne justesse ; il faut étalonner.
Erreur fréquente : confondre résolution et précision
Un affichage à quatre chiffres après la virgule ne rend pas une mesure exacte. La résolution dit seulement quelle est la plus petite variation détectable. La précision dépend de l’étalonnage du capteur, de la stabilité de l’alimentation et du bruit électrique. Sur un ESP32, le bruit de l’alimentation quand le Wi-Fi émet est souvent la principale source de dispersion des mesures.
Ordres de grandeur
Pas de quantification : 0,81 mV sur 0-3,3 V. Fréquence d’horloge : jusqu’à 240 MHz. Mémoire vive : 520 ko. Fréquence d’échantillonnage utilisable en pratique pour une acquisition continue : de quelques hertz à quelques kilohertz selon le traitement. Consommation en veille profonde : de l’ordre de 10 µA, ce qui autorise des campagnes de mesure de plusieurs jours sur pile.
Formule
L’ESP32 n’obéit à aucune loi physique propre. Les relations utiles sont celles de la numérisation d’un signal.
Pas de quantification du convertisseur :
q = U_ref / 2^n
où :
- q : plus petite variation de tension distinguable (V)
- U_ref : tension de pleine échelle, 3,3 V sur un ESP32 (V)
- n : résolution du convertisseur, 12 bits sur un ESP32
Application numérique : q = 3,3 / 4096 ≈ 8,1 × 10⁻⁴ V, soit environ 0,81 mV.
Conversion de la valeur brute en tension :
U = N × U_ref / (2^n − 1)
où :
- U : tension présente sur l’entrée analogique (V)
- N : valeur entière lue, comprise entre 0 et 4095
Condition sur la fréquence d’échantillonnage, d’après le critère de Shannon :
f_e > 2 × f_max
où :
- f_e : fréquence d’échantillonnage de l’acquisition (Hz)
- f_max : plus haute fréquence présente dans le signal mesuré (Hz)
Exemples d’application
-
Relever la température extérieure toutes les minutes pendant une nuit entière et tracer la courbe de refroidissement : impossible avec un smartphone, dont l’autonomie et la fragilité l’interdisent.
-
Mesurer l’éclairement à l’intérieur d’une serre pendant une semaine grâce à la veille profonde et à une alimentation par pile.
-
Suivre la pression dans une enceinte fermée et transmettre les valeurs en Bluetooth au smartphone resté à l’extérieur.
-
Numériser une décharge de condensateur : avec un pas de 0,81 mV, on suit la décroissance sur près de quatre constantes de temps avant que le bruit ne domine.
-
Embarquer la carte sur un mobile en rotation et transmettre les mesures en Wi-Fi, le fil de liaison étant ici impossible.
-
Constituer un petit réseau de plusieurs cartes mesurant la température en différents points d’une salle, pour cartographier un gradient thermique.
FAQ
Q : Quelle différence entre un ESP32 et un Arduino Uno ? R : L’ESP32 intègre le Wi-Fi et le Bluetooth, tourne à 240 MHz et numérise sur 12 bits ; l’Arduino Uno n’a pas de liaison sans fil, tourne à 16 MHz et numérise sur 10 bits. En revanche l’Arduino accepte 5 V sur ses entrées et reste plus simple à mettre en œuvre et mieux documenté.
Q : Peut-on brancher un capteur prévu pour 5 V sur un ESP32 ? R : Pas directement. Les entrées de l’ESP32 sont limitées à 3,3 V et une tension supérieure endommage la carte. Il faut intercaler un pont diviseur ou un adaptateur de niveau logique.
Q : Une résolution de 12 bits garantit-elle une mesure plus juste ? R : Non. Elle garantit seulement de distinguer des variations plus fines. Le convertisseur de l’ESP32 est notoirement non linéaire aux extrémités de sa plage, et sans étalonnage la valeur obtenue peut s’écarter sensiblement de la tension réelle.
Q : L’ESP32 possède-t-il des capteurs intégrés ? R : Non, pas de capteur exploitable en physique. Contrairement au micro:bit, il faut lui brancher tous les capteurs dont on a besoin. C’est une interface d’acquisition, pas un instrument de mesure.
Q : Le Wi-Fi perturbe-t-il les mesures ? R : Il peut le faire. L’émission radio provoque des appels de courant qui font varier l’alimentation et bruitent les entrées analogiques. Sur une mesure fine, mieux vaut acquérir puis émettre, plutôt qu’émettre pendant l’acquisition.
Concepts liés
Microcontrôleur - Arduino - Micro:bit - Convertisseur analogique-numérique - Résolution - Fréquence d’échantillonnage - Étalonnage - Capteur - Acquisition de données