Module WiFi ESP8266 : guide de configuration et de projet

L'ESP8266 est un module Wi-Fi adapté aux projets IoT et domotiques. Il vous permet de contrôler les entrées et sorties comme vous le feriez avec une carte de la série Arduino, mais avec le Wi-Fi. Il est donc parfaitement adapté aux applications domotiques/IoT.

Comparé aux autres solutions Wi-Fi disponibles sur le marché, l'ESP8266 est un excellent choix pour la plupart des projets « Internet des objets ». Dans cet article, nous vous présenterons les concepts de base de la carte ESP8266, son brochage et des exemples de programmation.

Introduction à l'ESP8266

L'ESP8266 est un microcontrôleur Wi-Fi puissant et polyvalent qui a gagné en popularité dans le monde de l'électronique et de l'IoT (Internet des objets). Développé par Espressif Systems, l'ESP8266 offre une solution économique pour connecter des appareils à Internet et leur permettre de communiquer entre eux. Il dispose d'un module Wi-Fi intégré, d'un processeur puissant et de broches GPIO pour connecter des composants externes. L'ESP8266 peut être programmé à l'aide de différents langages de programmation, ce qui le rend accessible aussi bien aux débutants qu'aux développeurs expérimentés. Sa faible consommation d'énergie et sa taille compacte le rendent idéal pour une large gamme d'applications, notamment la domotique, les réseaux de capteurs sans fil et les appareils intelligents. Par exemple, l'ESP8266 peut être utilisé pour créer un thermostat intelligent qui permet aux utilisateurs de contrôler à distance la température de leur maison.

Brochage ESP8266

ESP8266 Pinout
Brochage de l’ESP8266

Dans le schéma des broches, certaines broches ont d'autres utilisations que le GPIO. Par exemple, la broche D1 n'est pas seulement GPIO5, mais aussi une interface SCL, qui peut être connectée à la broche SCL correspondante de l'écran LCD.

Le tableau suivant montre la correspondance entre les étiquettes sur l'identification embarquée et les numéros GPIO, et indique quelles broches sont les mieux adaptées aux projets et lesquelles nécessitent une certaine prudence. Les broches surlignées en vert sont prêtes à l'emploi. Celles surlignées en jaune peuvent être utilisées, mais nécessitent une certaine attention car elles peuvent avoir un comportement inattendu, principalement au démarrage. Les broches surlignées en rouge ne sont pas recommandées pour une utilisation en tant qu'entrées ou sorties.

Repère de la carteGPIOEntréeSortieRemarques
D0GPIO16Numérique ; sans interruption GPIO dans ESP8266 Arduino coreNumérique ; PWM logicielle dans Arduino corePour sortir du sommeil profond, relier GPIO16 à RST ; vérifier le câblage de la carte.
D1GPIO5NumériqueNumériqueAffectation courante de l’horloge I2C dans Arduino core ; configurable par logiciel.
D2GPIO4NumériqueNumériqueAffectation courante des données I2C dans Arduino core ; configurable par logiciel.
D3GPIO0Maintenir HIGH au reset pour démarrer sur FlashNumérique après démarrageLOW au reset sélectionne le téléchargement UART ; vérifier le bouton FLASH de la carte.
D4GPIO2Maintenir HIGH au resetNumérique après démarrageConnexion de la LED selon la carte ; ne pas relier GPIO2 directement à VCC.
D5GPIO14NumériqueNumériqueHorloge HSPI (SCLK) lorsque la broche est affectée au SPI.
D6GPIO12NumériqueNumériqueEntrée de données HSPI (MISO) lorsque la broche est affectée au SPI.
D7GPIO13NumériqueNumériqueSortie de données HSPI (MOSI) lorsque la broche est affectée au SPI.
D8GPIO15Maintenir LOW au resetNumérique après démarrageSélection de composant HSPI (CS) ; éviter une résistance de rappel au positif pendant le reset.
RXGPIO3UART0 RX ou entrée numériqueNumérique si non utilisée par UARTPeut partager le pont USB-UART ; ne sélectionne pas le mode de démarrage.
TXGPIO1Numérique si non utilisée par UARTUART0 TX ou sortie numériqueÉmet les messages de démarrage ; ne sélectionne pas le mode de démarrage.
A0ADC0Entrée analogiqueIndisponiblePlage ADC du circuit : 0–1,0 V ; le diviseur A0 de la carte peut modifier la plage admissible. Vérifier son schéma.

Câblage et mise en service de l’ESP8266 avec un microcontrôleur

Pour relier un module Wi-Fi ESP8266 à un microcontrôleur ou à une carte de type Arduino, contrôlez séparément alimentation, niveaux logiques et straps de démarrage. De nombreux défauts attribués à l’UART ou au firmware proviennent d’une chute d’alimentation ou d’un état de boot invalide. Vérifiez le schéma du module exact, certaines cartes intégrant déjà régulateur et résistances de rappel.

  • Fournir 3,3 V stables : dimensionner régulateur et pistes pour les pointes du Wi-Fi, en réservant généralement au moins 500 mA en transitoire, avec condensateurs réservoir et HF près du module.
  • Protéger les entrées : employer des signaux compatibles 3,3 V et adapter le niveau d’une sortie hôte 5 V avant l’ESP8266 ; relier les masses par une référence de faible impédance.
  • Câbler l’UART : croiser TX hôte vers RX module et RX vers TX, fixer un débit connu et éviter LED ou rappels forts sur les lignes série.
  • Régler les straps : sur un matériel courant de classe ESP-12, maintenir EN et GPIO2 hauts, GPIO15 bas, et placer GPIO0 haut pour démarrer ou bas pendant reset pour flasher.
  • Procéder par étapes : mesurer le rail 3,3 V et reset, capturer le journal de boot, identifier firmware AT ou personnalisé, puis tester une commande ou un paquet avant les capteurs.

Comment programmer l'ESP8266 avec l'IDE Arduino ?

Il existe plusieurs façons de programmer l'ESP8266 :

  1. Utilisez l'IDE Arduino pour développer, suivez le style de développement d'Arduino, facile à utiliser ;
  2. Utilisez le SDK officiel ESP8266 pour le développement ;
  3. Utilisez MicroPython pour développer, en suivant le style de programmation Python (cette méthode nécessite d'abord de graver un micrologiciel spécial pour la carte) ;

Ici, nous choisissons la première option, car la programmation Arduino est simple et facile à utiliser.

Étape 1 : Installez l'IDE Arduino

Téléchargez l'IDE depuis le site officiel d'Arduino : https://www.arduino.cc/en/software. La version que j'utilise actuellement est Arduino IDE 1.8.3. (À noter que la dernière version d'Arduino IDE 2.1.1 ne permet pas d'installer le pack de ressources ESP8266 en ligne.)

Install Arduino IDE 1.8.3
Installer Arduino IDE 1.8.3

Étape 2 : Installer le paquet ESP8266

Comme l'IDE Arduino est utilisé par défaut pour la carte de développement Arduino, seules les ressources de développement pertinentes pour la carte de développement Arduino sont disponibles par défaut. Pour utiliser l'ESP8266 dans l'IDE Arduino, nous devons installer manuellement le package de développement ESP8266. Il existe deux méthodes d'installation : l'installation en ligne et l'installation hors ligne du package. Nous choisissons ici la première.

Tout d'abord, recherchez « Fichier -> Préférences » dans le menu de l'IDE Arduino : 

Open Preferences in Arduino IDE
Ouvrir les préférences dans Arduino IDE

Ensuite, entrez le lien ci-dessous dans les « URL supplémentaires du gestionnaire de tableaux » :

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Setting Additional boards manager URLs in Preferences
Définir les URL supplémentaires du gestionnaire de cartes dans les préférences

Ensuite, cliquez pour ouvrir : Outils -> Tableau -> Gestionnaire de tableau.

Open Boards Manager in Arduino
Ouvrir le gestionnaire de cartes dans Arduino

Dans le champ, saisissez et recherchez « esp8266 ». Vous verrez alors apparaître un paquet esp8266. Cliquez sur « Installer » pour lancer l'installation en ligne.

Search and Install the ESP8266 Board
Rechercher et installer la carte ESP8266
Installing ESP8266 packages
Installation des paquets ESP8266

Une fois l'installation terminée, vous trouverez toutes les ressources relatives à la carte esp8266 dans le menu « Outils->Carte ».

ESP8266 Boards Resource (3.1.2 Version)
Ressources pour les cartes ESP8266 (version 3.1.2)

Étape 3 : Programmation de l'ESP8266

Nous écrivons ici un programme simple de test de connexion réseau pour la carte ESP8266. Le code du programme est le suivant :

				
					void setup() {
  Serial.begin(9600);
  Serial.println("esp8266 test");
  initWiFi();

}

void loop() {
  Serial.println("hello esp8266");
  delay(1000);

}

#include <ESP8266WiFi.h>

constchar ssid[] = "xxxxx";      //WiFi Name
constchar pass[] = "xxxxx";       //WiFi Password

WiFiClient client;

//Initialize WIFI
void initWiFi()
{
   Serial.print("Connecting WiFi...");
   WiFi.mode(WIFI_STA); //Configure WIFI as Station mode
   WiFi.begin(ssid, pass); //Incoming ssid and password of WIFI hotspot
   while (WiFi.status() != WL_CONNECTED) //Waiting for successful connection
   {
     delay(500);
     Serial. print(".");
   }

   Serial.println("");
   Serial.println("WiFi connected");
   Serial.println("IP address: ");
   Serial.println(WiFi.localIP()); //print your own IP address
}
				
			

Remarques :
La fonction setup est utilisée pour l'initialisation du port série. Par exemple, « Serial.begin(9600) ; » signifie que le débit en bauds initial du port série est de 9600.

La fonction loop est similaire à while(1){} dans la fonction principale du développement d'un micro-ordinateur monopuce, où nous pouvons écrire des codes logiques de programme.

Pour utiliser la fonction WIFI, vous devez inclure le fichier d'en-tête « ESP8266WiFi.h ».

Le processus d'initialisation du WIFI comprend 3 étapes :

  1. Configurer le WIFI en mode Station, c'est-à-dire que notre ESP8266 est utilisé comme un périphérique WIFI ;
  2. Transmettre le ssid et le mot de passe du hotspot WIFI, afin que l'ESP8266 puisse se connecter au hotspot ;
  3. Lire l'état de la connexion WIFI et attendre que la connexion soit établie.

Sélectionnez le modèle et le numéro de port série de votre carte de développement ESP8266 :

Choose Board NodeMCU 1.0 (ESP-12E Module)
Choisir la carte NodeMCU 1.0 (module ESP-12E)

Nous pouvons maintenant compiler et graver le code sur la carte ESP8266WiFi.

Compile and Upload the code to ESP8266 WiFi Module
Compiler et téléverser le code vers le module WiFi ESP8266

Part à:

Défiler vers le haut

Instant Quote

Devis Immédiat