Pour qui ne s'intéresse pas au descriptif technique, passez directement au paragraphe: Circuits d'application ESP-01
Description des microcontrôleurs ESP 8266
12 broches au maximum sont disponibles (inclus la broche ADC), la plupart de celles-ci ont des particularités qu'il faut connaître; ci-dessous un tableau qui recense les broches utilisables, avec l'exemple d'un ESP-07, compatible broche à broche avec un ESP-12:
- L'ESP8266 est un microcontrôleur qui fonctionne avec une tension de 3,3 V, donc ses E/S fonctionnent également à 3,3 V. Les broches ne sont pas tolérantes à 5 V, l'application d'une tension supérieure à 3,6 V sur n'importe quelle broche risque de détruire la puce ;
- Le courant maximum pouvant être utilisé sur une seule broche GPIO est de 12 mA ;
- Les GPIO 1 et 3 sont utilisés comme TX et RX du port série matériel (UART), donc dans la plupart des cas, elles ne sont pas utilisables comme E/S normales lors de l'envoi / réception de données série, il est cependant possible, avec une ligne de programme particulière, d'utiliser ces broches en E/S digitales ;
- GPIO 15 est toujours tiré bas (GND), vous ne pouvez donc pas utiliser la résistance de rappel interne. Vous devez garder cela à l'esprit lorsque vous utilisez GPIO15 comme entrée pour lire un commutateur ou le connecter à un périphérique avec une sortie à collecteur ouvert (ou à drain ouvert), comme I²C par exemple ;
- GPIO 0 est tiré haut (3,3 V) pendant le fonctionnement normal, vous ne pouvez donc pas l'utiliser comme une entrée Hi-Z ;
- GPIO 2 ne peut pas être au niveau bas (GND) au démarrage, vous ne pouvez donc pas y connecter un commutateur ;
- Les GPIO 0-15 ont tous une résistance de rappel intégrée, tout comme dans un Arduino. GPIO16 a une résistance pull-down intégrée ;
- Contrairement à la plupart des puces Atmel (Arduino), l'ESP8266 ne prend pas en charge le PWM matériel, cependant, le PWM logiciel est pris en charge sur toutes les broches numériques. La plage PWM par défaut est de 10 bits à 1 kHz, mais cela peut être modifié (jusqu'à> 14 bits à 1 kHz) ;
- L'ESP8266 dispose d'une seule entrée analogique, avec une plage d'entrée de 0 à 1,0 V. Si vous fournissez 3,3V, par exemple, vous endommagerez la puce. Certaines cartes ont un diviseur de tension résistif intégré, pour obtenir une plage plus universelle de 0 à 3,3 V. L'ADC (convertisseur analogique-numérique) a une résolution de 10 bits ;
- L'ESP8266 n'a pas de TWI (Two Wire Interface) matériel, mais il est implémenté dans le logiciel. Cela signifie que vous pouvez, en principe, utiliser toutes les broches numériques (sauf GPIO16). Par défaut, la bibliothèque I²C utilise la broche 4 comme SDA et la broche 5 comme SCL, alors que La fiche technique spécifie GPIO2 comme SDA et GPIO14 comme SCL. La vitesse maximale est d'environ 450 kHz ;
- L'ESP8266 dispose d'une connexion SPI disponible pour l'utilisateur, appelée HSPI. Il utilise GPIO14 comme CLK, 12 comme MISO, 13 comme MOSI et 15 comme Slave Select (SS). Il peut être utilisé à la fois en mode esclave et maître (par le logiciel) ;
- La plupart des fonctionnalités du microcontrôleur utilisent exactement la même syntaxe qu'un Arduino normal, ce qui facilite grandement la programmation ;
- Tout comme avec un Arduino ordinaire, vous pouvez définir la fonction d'une broche en utilisant pinMode(pin, mode);où pin est le numéro GPIO , et mode peut être soit INPUT ou OUTPUT, soit INPUT_PULLUP pour activer les résistances de tirage intégrées pour GPIO 0-15 . Pour activer la résistance pull-down pour GPIO16, INPUT_PULLDOWN_16 ;
- Une chose à garder à l'esprit lors de l'écriture de programmes pour l'ESP8266 est que le programme doit partager des ressources (temps processeur et mémoire) avec les piles Wi-Fi et TCP (le logiciel qui s'exécute en arrière-plan et gère le Wi-Fi et les connexions IP). Si le code prend trop de temps à s'exécuter et ne laisse pas les piles TCP faire leur travail, il risque de planter ou de perdre des données. Il est préférable de garder le temps d'exécution des boucles avec quelques centaines de millisecondes. Si une boucle prend plus de temps, il faut explicitement donner du temps CPU aux piles Wi-Fi / TCP, en utilisant delay(0);ou yield(), sinon la communication réseau ne fonctionnera pas correctement, et si elle dure plus de 3 secondes, le logiciel WDT (Watch Dog Timer) réinitialisera l'ESP. Si le soft WDT est désactivé, après un peu plus de 8 secondes, le matériel WDT réinitialisera la puce ;
- Pour activer le mode "programmation", il suffit de mettre la broche GPIO 0 au niveau bas. l'UART branché au PC avec un adaptateur USB permettra alors le téléchargement du programme par l'IDE Arduino ou Visual studio code. Certains adaptateurs activent le mode programmation de manière automatique.
Comportement des broches durant le démarrage (boot)
Pendant la phase de démarrage, l’ESP8266 génère des niveaux haut ou bas sur certaines broches pouvant produire des comportements inattendus des périphériques branchés sur ces dernières (claquement de relais, allumage de LEDs, etc.), voir ce site pour plus de détail.
- Pins au niveau HAUT durant le boot : GPIO16, GPIO14, GPIO12, GPIO13
- Pins avec alternance de niveaux logiques : GPIO0, GPIO2, GPIO3, GPIO1
- Pins au niveau BAS durant le boot : GPIO5, GPIO4, GPIO15
Les pins les plus sécurisées pour utiliser des relais sont les GPIO5 et GPIO4.
Utilisation des broches GPIO dans le cadre des réalisations SIGECC et SIGED
Dans le cadre des réalisations, les broches GPIO sont utilisées pour trois applications :
- En tant qu'entrée / sortie digitale ou analogique pour acquérir une information (présence ou absence d'une tension) ou pour piloter un dispositif (moteur, lumière etc.).
- En tant que bus I2C pour communiquer avec des capteurs et autres circuits.
- En tant que bus OneWire pour communiquer avec des capteurs.
Circuits développés pour les réalisations SIGECC et SIGED
En tenant compte de toutes ces informations, j'ai retenu quatre modèles d'ESP826 pour les réalisations SIGECC et SIGED, pour lesquels j'ai développé des circuits d'applications; les modèles retenus sont:
ESP-01, ESP-07, ESP-12 et ESP WeMos D1
Circuits d'application ESP-01 (alimentation 12 VDC ou 220 VAC)
Le circuit d'application ESP-01 se compose de deux modèles développés avec le logiciel Kicad, les fichiers Kicad sont disponibles en téléchargement, les PCB et produits finis peuvent être acquis au magasin pour qui ne veut pas se lancer dans la fabrication. La différence entre les deux modèles réside dans l'alimentation, un modèle est alimenté en 12 VDC et est ainsi adapté aux réalisations SIGECC alors que le deuxième modèle est alimenté en 220 VAC et s'adapte aux réalisations SIGED. Les deux modèles sont équipés des mêmes connecteurs et utilisent les mêmes broches GPIO, les programmes sont ainsi parfaitement compatibles pour les deux modèles.
Les connecteurs permettent les raccordements suivants :
- J1: Alimentation du module, 12 VDC ou 220 VAC; attention à la polarité du branchement 12 VDC, le positif sur la broche 2 du connecteur (voir schéma).
- J2: Alimentations 5 VDC, 3,3 VDC et GND disponibles pour l'alimentation des capteurs / actionneurs ou autre dispositifs.
- J3: Connection aux bus OneWire (OW) et I2C (SCL, SDA).
- La LED n'est pas toujours nécessaire, on peut ne pas la monter; si le circuit reste dans un boitier, elle est inutile et représente une consommation d'énergie non négligeable dépendant de la quantité de module utilisé, d'autant que l'ESP-01 et le régulateur de tension disposent déjà de LED.
Le téléchargement du programme avec l'IDE Arduino ou Visual studio code se fera sur l'ESP-01 avant de le placer sur son connecteur.
Composants
Les composants principaux proviennent d'Aliexpress, je vous donne ci-dessous les liens (je ne dispose d'aucun avantage) ces liens vous permettront de connaître les caractéristiques (dimensions etc.) afin de pouvoir les commander où bon vous semble:
Articles | Liens | Remarques |
ESP-01S | lien | Choisir le modèle ESP-01S |
Abaisseur de tension 12 -> 5 VDC | lien | Tension de sortie réglable par potentiomètre |
AC-DC abaisseur de tension 220 VAC à 5 VDC | lien | Attention choisir le modèle 5 V / 700 mA |
Régulateur de tension AMS1117-3.3 LDO 800MA | lien |
Fournit 3,3 VDC au microcontrôleur et aux circuits connectés |
Module USB pour le téléchargement automatique de programme |
lien |
Utilisable avec IDE Arduino et Visual studio code |
Circuits d'application ESP-07 / 12
Ce PCB peut être utilisé pour exploiter un microcontrôleur ESP-07 (07S) ou ESP-12 (F) car ils sont compatibles broche à broche; le choix de l'un ou de l'autre dépendra des exigences du montage (sensibilité, antenne, mémoire flash etc.). On remarque que les résistances RA et RB ne sont pas montées, les valeurs de celles-ci dépendra de la tension max. à mesurer avec le CAN (convertisseur analogique-numérique). Le montage de la LED est aussi à la discrétion de l'utilisateur; si le montage est prévu d'être placé dans un boitier, elle n'est pas nécessaire.
Articles | Liens | Remarques |
ESP-07 (S) | lien | Les 2 modèles (07 et 07S) sont compatibles avec le module. |
ESP-12 (F) | lien | L'ESP-12 F dispose d'une meilleure sensibilité, l'antenne a été améliorée. |
Abaisseur de tension 12 -> 5 VDC | lien | Tension de sortie réglable par potentiomètre. |
AC-DC abaisseur de tension 220 VAC à 5 VDC | lien | Attention choisir le modèle 5 V / 700 mA. |
Régulateur de tension AMS1117-3.3 LDO 800MA | lien | Fournit 3,3 VDC au microcontrôleur et aux circuits connectés. |
Adaptateur TTL-USB | lien | Connections selon images ci-dessous |
Au niveau des composants particuliers, la liste est semblable à la liste pour l'ESP-01, à l'exception du module USB pour le téléchargement automatique de programme; pour le téléchargement de programmes on utilisera plutôt un adaptateur universel de ce type :
Ci-dessus le branchement à effectuer pour programmer un module ESP-07 / 12, la prise USB étant branchée au PC.
ATTENTION : Le module ne doit jamais être connecté à deux sources d'alimentation différentes, soit il est connecté et alimenté par le PC (pin 3,3V connecté à l'adaptateur), soit il est autonome auquel cas la broche 3,3V n'est pas connectée.
Pour démarrer la puce en mode normal une fois le téléchargement terminé, enlever le pont "FLASH", la communication sérielle avec le PC s'effectue alors normalement.
Circuits d'application WEMOS D1
J'ai longtemps hésité avant de me décider à développer ce circuit, il est bien adapté pour le développement et pour la mise au point de système complexe nécessitant des modifications fréquentes du programme et/ou du câblage, tout en étant compatible avec les ESP-01 /07 et 12 au niveau des broches et des fonctions.
les résistances RA1 et RA2 sont montés en série de manière à pouvoir cumuler des valeurs pour atteindre la valeur désirée; en effet, contrairement aux ESP-07 et 12, le WEMOS dispose d'un pont diviseur interne qui permet d'appliquer une tension de 3,3 V sur la broche CAN.
ATTENTION: Le connecteur J8 est utilisé comme RESET et non pour le mode FLASH à l'image des autres modules utilisés.
Pour ce qui est des composants, les tableaux déjà élaborés peuvent être repris, le WEMOS quant à lui peut être commandé selon ce lien.
Conclusion
Avec cette panoplie de modules, on trouve facilement une solution pour chaque situation; le module le plus utilisé est l'ESP-01 qui s'intègre facilement pour l'utilisation de capteurs I2C et OneWire. Le module ESP-07/12 s'adapte à toute autre situation nécessitant plus de broches et le module WEMOS est incontournable pour le développement, sa connection directe au PC et son alimentation intégrée le rend particulièrement bien adapté pour le développement confortable de programme.