samedi 26 février 2022

ESP32 : Prototypage (suite)


ESP32 : Prototypage (suite)


Nous avons déjà vu dans un article précédent comment utiliser une carte ESP32 minimaliste :

ESP32 : prototypage

Aujourd'hui nous allons aller un peu plus loin.

1. Le but

Comme dit précédemment, le but est de pouvoir développer des montages de taille et consommation réduites, à l'aide de modules ESP32 nus :

Bien entendu, ce module sera soudé sur un PCB maison, en compagnie de quelques composants (alimentation, capteurs, connecteurs, etc.). Un PCB maison a de multiples avantages par rapport à un assemblage de cartes toutes faites :

  • compacité
  • réduction du nombre de fils
  • facteur de forme adapté à ses besoins
  • etc.

La production d'un PCB de ce type aura tout intérêt à être confiée à un fabricant comme JLCPCB.

Mais avant d'étudier un PCB maison, l'idéal est, comme dit dans l'article précédent, de pouvoir bâtir un prototype à l'aide d'une carte minimaliste :

Après la phase de prototypage, si tout s'est passé comme prévu, on pourra passer à la phase d'étude du PCB.

Pendant la phase de prototypage, la carte minimaliste peut certes être alimentée à l'aide d'une breadboard équipée d'une batterie LIPO ou d'une alimentation, d'un régulateur 3.3V, et chargée à l'aide d'un convertisseur FT232RL. Mais il serait plus pratique de réunir tout ce petit monde sur une petite carte.

2. Alternative : la FireBeetle

Si l'on dispose de suffisamment de place, la FireBeetle est une carte qui a fait ses preuves d'un point de vue consommation :

Sa consommation en veille est inférieure à 10µA.

Il est possible également de mettre au point un prototype à l'aide de cette carte, et ensuite réaliser un PCB maison pour la version définitive.

Il faudra tout de même prévoir un moyen de chargement du logiciel sur le PCB maison. La carte étudiée ici a donc également son utilité dans ce cas.

2. Le schéma

Ce schéma est réalisé à l'aide de Kicad 5.1 :

Outre les composants cités plus haut la carte comporte quelques suppléments :

  • 2 résistances R1 et R2 permettent de mesurer la tension de la batterie, avec un petit condensateur de filtrage
  • 2 transistors 2N2222 pour automatiser le chargement du logiciel sans appuyer sur des boutons
  • 2 connecteurs J4 et J5 pour alimenter des modules ou capteurs 3.3V
  • un connecteur J3 pour brancher un milliampèremètre
  • un interrupteur ON/OFF
  • un connecteur J2 pour le raccordement de l'ESP32
La carte minimaliste ESP32 est donc raccordée au connecteur J2 par 7 fils au maximum :
  • VCC + GND
  • une entrée analogique (si l'on désire mesurer la tension de la batterie)
  • RX + TX
  • EN et IO0

3. Répartition des composants

Pour l'instant la majorité des composants se trouvent sur la carte prototype. Mais qu'allons nous implanter sur le PCB maison ?

Je verrais les choses comme suit :

  • le module ESP32
  • une batterie LIPO ou LITHIUM-ION, ou une alimentation secteur miniature
  • un régulateur 3.3V
  • un connecteur de chargement du logiciel
  • un connecteur de mesure du courant (avec un cavalier)
  • un ou des capteurs
  • les deux résistances de mesure de la tension batterie
  • un chargeur de batterie (si l'on a suffisamment de place)

Pour ma part je pense qu'il n'y a aucune raison d'implanter le convertisseur FT232RL et les deux transistors sur une carte ESP32, car ils sont encombrants, et ces composants ne servent que pour le chargement du logiciel. Il en va de même pour les deux boutons poussoirs RESET et IO0.

La carte prototype servira donc au chargement du logiciel dans les deux cas :

  • carte minimaliste de prototypage
  • PCB maison

Le connecteur de chargement du logiciel sur le PCB maison aura donc seulement 5 broches (GND, TX, RX, EN, IO0).

4. Interrupteur ON/OFF

Il existe divers types d'inverseurs DIP :

L'interrupteur ON/OFF est utilisé pour court-circuiter le milliampèremètre pendant la phase de démarrage, comme expliqué dans l'article précédent : 3.2.3. La consommation en mode veille

Il peut être utilisé également comme interrupteur ON/OFF si le milliampèremètre n'est pas branché.

Je conseille de placer un point de couleur (vernis à ongle ?) du côté ON (tout dépend dans quel sens il est soudé sur la carte), afin de ne pas l'oublier dans un tiroir en position ON. La batterie n'y survivrait pas, à moins que l'ESP32 soit débranché ou en mode veille.

5. Convertisseur FT232RL

Le modèle utilisé est celui-ci, très courant :

Le module est enfiché sur deux barrettes femelles 9 broches, afin de pouvoir le changer en cas d'accident. Le cavalier jaune doit être positionné sur 3.3V bien entendu.

6. Régulateur

Le choix en matière de régulateurs LDO 500mA utilisables avec une batterie LIPO est assez limité :

  • ME6211
  • RT9013
  • RT9080
  • etc.
Afin de laisser le choix du régulateur à utiliser, et pouvoir tester différents modèles, celui-ci est implanté sur une petite carte enfichable :

Il est nécessaire de consulter la datasheet de chaque régulateur afin de connaître le type et la valeur des condensateurs à employer.

Pour un RT9080, les condensateurs choisis sont les suivants :

  • 1µF : céramique MLCC
  • 2x10µF tantale ou 22µF ou 47µF électrolytique

7. Charge de la batterie

Le module chargeur TP4056 est légèrement modifié. La résistance Rprog R3 est remplacée pour limiter le courant de charge, ceci afin de ne pas endommager la petite batterie de 1000mAH dont le courant de charge ne peut excéder 500mA :

Résistance Rprog

Si la batterie a une capacité supérieure à 2000mAH cette modification est inutile.

8. Photos

Voici quelques photos du montage :

Vue de dessus

En haut de gauche à droite :

  • le chargeur TP4056 (LED rouge allumée, car la batterie est en charge)
  • les deux résistances bleues à 1% de mesure de la tension batterie
  • les deux transistors 2N2222
  • le module FT232RL

En bas de gauche à droite :

  • le connecteur milliampèremètre
  • l'interrupteur
  • les 2 connecteurs 3.3V et le connecteur ESP32
Vue de dessous

Le connecteur de la batterie est soudé en dessous. La batterie est collée au ruban adhésif double face.

Carte régulateur 3.3V

9. Essais

Il convient avant tout de vérifier que la tension présente sur les broches 1 (GND) et 2 (VCC) du connecteur à 7 broches soit bien de 3.3V lorsque l'interrupteur est sur ON.

Après avoir raccordé la carte :

L'interrupteur est basculé sur ON.

9.1. Serveur

L'exemple HelloServer est chargé : HelloServer.ino

Remplacer ssid et password par ceux de votre box, et compiler.

Contrairement à ce qui se passait dans l'article précédent, les boutons RESET et BOOT n'ont plus aucune utilité. Il suffit de téléverser le sketch.

Le moniteur série affiche ceci :

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4

.....
Connected to SSID-ABCDEF
IP address: 192.168.1.49
MDNS responder started
HTTP server started

Et si l'adresse IP affichée est entrée dans un navigateur :

hello from esp32!

9.2. La consommation en mode veille

L'exemple deep-sleep est chargé : deep-sleep.ino

Remplacer ssid et password par ceux de votre box, et compiler.

Le moniteur série affiche ceci :

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4
.....
WiFi Connected
IP: 192.168.1.49
DEEP-SLEEP

Après avoir branché le multimètre en position µA sur le connecteur prévu, l'interrupteur est basculé sur OFF.

Celui-ci affiche 70µA. Ce n'est pas vraiment ce qui était prévu. Après analyse il s'avère que les consommations sont les suivantes :

  • ESP32 : 4.3µA
  • pont diviseur : 2µA
  • module régulateur : 64µA

Le module régulateur devrait consommer 2µA ! Il va falloir investiguer pour trouver la cause de cette consommation anormale. Soit le régulateur acheté en chine est hors spécifications, soit il y a erreur sur le modèle, soit les condensateurs sont de mauvaise qualité.

Après avoir fabriqué un deuxième module régulateur, avec un condensateur MLCC de meilleure qualité (X7R) et un électrolytique 47µF en sortie, le résultat est le même. Il faudra acheter d'autre régulateurs chez un fournisseur différent.

Cela dit, une consommation de 70µA sur une batterie de 1000mAH réserve tout de même une belle autonomie : 14000 heures, soit 19 mois ! Il y a fort à parier que le courant d'auto-décharge de la batterie viendra à bout de celle-ci bien avant.

10. Téléchargement

Pour télécharger le projet :

https://bitbucket.org/henri_bachetti/esp32-board

Cette page donne toutes les informations nécessaires :

https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

11. Conclusion

Cette première expérimentation est assez concluante, mis à part la petite déconvenue à propos du régulateur RT9080.

La prochaine étape sera l'étude d'une carte ESP32 alimenté sur batterie, et pouvant accueillir un capteur de température et d'humidité, de pression, ou autre.


Cordialement

Henri


1 commentaire: