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

Comme mentionné dans l'article "Accueil",  je vous invite à visiter ce site pour faire connaissance avec cette famille de microcontrôleur.

Cet article se concentre sur les particularités de ces microcontrôleurs et sur les solutions développées dans le cadre de leur mise en oeuvre pour les réalisations SIGECC et SIGED.

L'ESP8266 se distingue par une grande variété de modèles développés pour faire face à des utilisations spécifiques, mais ils sont tous équipés du même microcontrôleur, les modèles se distinguent par la disponibilité de certaines broches du microcontrôleur, de l'alimentation et de l'antenne WiFi. 

Quelques modèles ESP8266

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, quatre modèles d'ESP8266 ont été retenus 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

Caractéristiques

Circuits d'application ESP-01 (alimentation 12 VDC ou 220 VAC)

Schema de principe du module d'interface pour l'ESP-01
Dessin PCB  effectué avec Kicad                                                  Alimentation 12 VDC                                                                                                               Alimentation 220 VAC
PCB sans les composants
PCB avec composants montés prêt à l'emploi

Le circuit d'application ESP-01 se compose de deux modèles développés avec le logiciel Kicad, les fichiers sont disponibles au 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 (sketch) 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
 
Module USB pour le téléchargement automatique de programme
 lien
 Utilisable avec IDE Arduino et Visual studio code

 

Module USB pour le téléchargement automatique de programme (sketch)

Circuits d'application ESP-07 / 12

Schema de principe du module d'interface pour l'ESP-07/12
Dessin des PCB réalisé avec Kicad                                                   Alimentation 12 VDC                                                                                                     Alimentation 220 VAC
PCB sans composants