Carte ESP32 |
Maj : 27/08/24
Abstract :
Résumé : |
Le dynamique constructeur Expressif a sorti les remarquables cartes ESP32, basées sur leur chip WROOM-32. C’est un produit très puissant qui surclasse les anciennes cartes Arduino historiques, pour un prix dérisoire, et comprend en standard le Wi-Fi et le Bluetooth ce qui ouvre tous les possibles. Cette page n’a pas l’ambition de décrire les performances de ce chip, il faut se plonger dans les très bons documents du constructeur Expressif pour s’étonner de tout ce qu’il contient et se dire qu’il va y avoir du travail pour en exploiter une partie pour nos petits besoins, et mettre le doigt ans l’IOT (Internet Of Things <des Objets>). Heureusement pour nous, Expressif a développé un pont qui permet d’utiliser l’ESP32 comme les autres cartes Arduino, en utilisant l’IDE classique Arduino, plus restrictif mais plus abordable. Tous les autres outils, Eclipse, Visual Studio, PlatformIO, etc. sont aussi utilisables. J’ai abandonné les DUE que j’utilisais depuis des années sur mes automates pour laisser la place aux ESP32S3, quitte à perdre tout le hardware précédent qui tournait très bien et à repartir sur un tout nouveau design pour l’intégrer. Le chapitre suivant se contente de reprendre une fiche constructeur pour se faire une idée sur ce produit.
Résumé de la fiche constructeur de l'ESP32
Expressif offre un environnement ESP-IDF ayant bien plus de possibilités que l’IDE de base d’Arduino, mais qui demande un délicat apprentissage de cet outil puissant pour celui qui veut exploiter à fond l’ESP32. Pour des ambitions de programmation plus modestes, il sera plus simple de se contenter de l’IDE basique Arduino ou mieux, Eclipse, ou mieux, Visual Studio Community. La puissance du ESP32 et de l’IOT Autant le développement du Nextion semble mort, autant celui d’Expressif est explosif !
Carte universelle ESP32 ou STM32 vers Nextion
Ces deux familles existent en divers brochages, au maximum 42 pins, et en deux largeurs, 600 mils pour les STM32 (15.24 mm = 6 * pas de 2.54 mm ) et 1000 mils (25.4 mm = 10 * pas de 2.54 mm) pour les ESP32. Cela implique obligatoirement qu’aucune liaison (ports et alimentations) ne peut être câblée en dur vers le support de la carte choisie, chaque variante ayant des brochages différents ! Les alimentations seront strappées sous les supports vers des rails communs. Cette carte contient les multiples prises et composants annexes, comme pour mes anciennes cartes DUE, il n’y a pas de problème d’implantation, sauf pour les alimentations. Les caractéristiques impressionnantes de l'ESP32 m’ont conduit à développer des cartes qui exploitent toutes les entrées-sorties et communiquent vers le Nextion en 2 fils (+alimentation), mais les dernieres versions câblent en dur seulement le S3. En plus des nombreuses prises pour les éléments extérieurs (en SPI, I2C, One Wire pour DS18SB20 , commande "blackout", etc.), les cartes incorporent divers périphériques : Un récepteur et un émetteur (simple led) infrarouge pour d’autres applications. En externe sur les prises i2C et SPI :
Le jack d’entrée est classique comme pour la famille Arduino en 5.5 / 2.1 mm, accepte entre 8 et 30 Volts pour fournir les alimentations sur la carte. Un 3.3 V permanent pour les microcontrôleurs d'une centaine de milliampères (généralement la consommation sera plus faible). J'ai validé ma carte avec tous ses périphériques et connecteurs en laissant le plus possible de zones banalisées avec des trous au pas de 2.54 mm |
Version 2 de la carte
Avec l’expérience acquise sur cette première implantation imparfaite, une version 2 améliorée incorpore les alimentations.
C’est chaque fois le même problème, pendant que l’on monte la première carte qui vient d’arriver, toute une série de modifications et d’améliorations apparaissent, et la version suivante est plus aboutie.
Cela n’est pas un gros investissement, les chinois produisent une dizaine de cartes d’excellente fabrication pour moins de 20 Euros tout compris, livrées dans la semaine, à ce prix-là, on à le droit de se tromper…
J’ai cherché à faire le plus petit possible, la première version était au format 10*8 cm
Cela s’est avéré être une erreur, les suivantes sont au format de 10*10 cm (limite de taille pour rester dans le premier prix de fabrication).
Ces deux cm de plus permettent de moins tasser et de rajouter les deux alimentations et d’autres prises.
Mais les dernieres versions câblent en dur seulement le S3.
Programmes utilitaires « atomes » de tests
Pour chacune de mes cartes j’associe dans une directorie toute une série de tests qui permettent de vérifier un a un chaque composant au fur à mesure de l’installation.
Pendant ces tests le courant d’alimentation est toujours contrôlé. Ces petits outils de tests sont les plus simples possible et n’utilisent aucune bibliothèque personelle.
Ils permettent de débugger le hardware (pistes coupées, soudures baveuses…).
Certains sont simplement dérivés d’un exemple arduino, voici les premiers pour cette carte :
Liste adresses I2c
Mise à l’heure RTC DS3231
Affiche RTC DS3231
EEPROM 24c512 (32 kO)
PCF8574 + leds et boutons
BMP280 HP buzzer
Commande Mosfets
Créneaux programmables sur pins de sortie
OneWire
Diverses mises en sommeil
Etc..
Il est en effet inutile de persister à débuger son programme si la carte à des problèmes de hardware.
Le logiciel est maintenant en conformité avec les nouveaux standards du C++, en créant une collection de classes de tailles raisonnables et leurs outils de tests afin de réduire au minimum le .ino de base.
Pour information, ma vieille version qui tournait sur les DUE est autour des 4000 lignes. La partie Nextion, rajoute 2000 lignes, ce gros tas devient confus et était impossible à maintenir.
Remarque sur les leds CMS Ces nouvelles leds CMS au format 1206 (pas de 0.1 pouce) ont un rendement surprenant et sont mêmes visibles avec quelques dizaines de microAmpères. Résultat des tests, alimentation à 3.3 V, résistance série de 3.3 kOhms puis 10 kOhms : Il est intéressant de comparer ces leds simples aux leds programmables, voir la page WS2812 |
|
||||||||||||||||||||||||||||||||||||||||||
Il faut remarquer les tensions très variables des leds (de 0.7 à 1.5 V) et les courants extrêmement faibles pour des visibilités très correctes (de 0.2 à 0.5 mA avec 3.3k, le tiers avec 10k) !
Les 5 leds et les 3 poussoirs sont branchés sur les 8 ports du circuit I2C PCF8574 en CMS (qui supporte 20 mA par I/O, il y a de la marge).
Toutes les lignes ouvertes sont tirées au + par une dizaine de kOhms pour éviter les déclenchements intempestifs d’interruption par des parasites. Deux poussoirs supplémentaires SW& et SW2 sont rajoutés pour réveiller lors d’un sommeil profond par action directe sur deux entrées GPIO. Remarques sur le GPS En option, un GPS NEO6M trouvait sa place sous la carte. Il a été supprimé pour minimiser le taille du circuit, mais pourra se retrouver en piggy-back. |
|||||||||||||||||||||||||||||||||||||||||||
Remarques sur l'alimentation L’alimentation est protégée par une diode en inverse et un fusible en série, cela évite de mettre une diode série qui fait perdre 0.7 V et plombe le rendement de conversion. Les condensateurs réservoirs et filtrages ne sont pas oubliés, ils sont sur la carte annexe d’alimentation, qui comprend aussi un Mosfet pout éteindre le Nextion trop gourmand en mode blackout. (à droite, le petit haut-parleur buzzer pour la musique d’ambiance). Conversion 5 V vers 3.3 V Attention les entrées du ESP32 ne supportent pas le 5 Volt, comme par exemple la sortie TX du Nextion !
|
|||||||||||||||||||||||||||||||||||||||||||
Remarques sur les prises I2C Quatre prises I2C banalisées reçoivent de nombreux accessoires dont le capteur de pression BMP280 flottant au bout de quelques centimètres de câble, et de nombreux autres périphérique sur cartes externes (qui dupliquent les prises) suivant les besoins.
Remarques sur les prises OneWire Plusieurs prises sont prévues pour les entrées OneWire des multiples capteurs de température DS18B20 en divers endroits. En principe une seule ligne OneWire peut gérer tous les capteurs en étoile, mais il a été prévu des signaux séparés car les lignes très longues plantent de manière aléatoire les autres capteurs, malgré des filtrages d’alimentation soignés en bouts de lignes. La prise vers le capteur de la chaudière a un fil de plus pour commander l’activation par un Mosfet P. Il est simple de couper un dispositif par le négatif avec un Mosfet P, mais couper par le point chaud est plus délicat car il faut fournir une tension élevée (non disponible basiquement) sur la gate d'uv Mosfet N. Une autre ligne OneWire récupère l’information de l’activité solaire plus girouette et anémomètre. |
|||||||||||||||||||||||||||||||||||||||||||
Les supports universels Les implantations sont au pas de 2.54, avec les espacements comme représentés. Pour un ESP32, supports en J01 et J11 (10 * pas de 2.54 mm ).
|
|||||||||||||||||||||||||||||||||||||||||||
La carte finale équipée Carte montée version 1908 sans les alimentations. Le format est de 10*8 cm C’est une variante ESP32 en 36 pins Comme déjà signalé, aucune liaison (ports et alimentations) ne peut être câblée en dur vers le support de la carte choisie, ce qui explique l’obligation du wrapping pour relier l’ESP32. La carte a été profondément testée et n’a aucun problème connu. Ces cuivres nus, avec éventuellement les éléments critiques spécifiques (PCF8574, poussoirs…), sont disponibles pour qui en fera la demande. Tous mes documents sont aussi disponibles sous Eagle. |
|||||||||||||||||||||||||||||||||||||||||||
Les fausses alimentations Pour mes premières cartes, j’ai commandé sur eBay une dizaine de cartes d’alimentation (down converters), basées sur l’excellent MP1584EN pour 5€ les dix, prix semblant imbattable. Vrai : Vin pin 7, Self (SW) pin 5, GND pin 5… Il semble n’exister aucun chip connu de convertisseur qui réponde à ce brochage farfelu. C’est de la tromperie, produit pas cher mais inexploitable. Ces vrais modèles consomment 0.24 mA à vide soit 100 fois moins. Encore une fois : <Attention aux lamentables contrefaçons> |
|||||||||||||||||||||||||||||||||||||||||||
Les liaisons en wrapping
|
//////// Wrapping pins for model : DOIT ESP32 DEVKIT V1 /////////// #define LED_BUILTIN 2 // Native blue led // Wrapping pins #define BUZZER 12 // Small loudspeaker (Violet 7 G) |
Le programme qui ne se charge pas
Les ESP32 sont pleins de surprises, les platines sont toujours basées sur une des multiples variantes de l’excellent WROOM-32 d’Expressif, mais chaque intégrateur fait son adaptation ensuite.
Sur certaines platines après la compilation, le transfert est bloqué : Connecting ….____....____....____
Il faut alors faire un long appui (cinq secondes) sur le poussoir <Enable> pour lancer le transfert.
Sur d’autres, mieux conçues, c’est inutile, le reset se fait tout seul, que le terminal soit ou non activé.
Ce n’est pas simple de transposer des dizaines de gros programmes tournant sur une configuration éprouvée (à base de DUE), vers un nouvel environnement (à base d’ESP32), en s’adaptant à l’IOT (Internet des Objets), mais il faut savoir évoluer pour survivre dans un monde des microcontrôleurs en mutation permanente.
Je regrette simplement d'avoir basculé sur le STM32 et l’ESP32 aussi tard, en ayant été resté figé sur la DUE.
Je n’utilise plus qu’exclusivement les |
Vous trouverez en pages <électronique>, les détails sur l’utilisation de cette carte avec le Nextion