WiFi ESP8266 – Bien choisir son serveur d impression
L'aventure ESP8266 a commencé en 2014 et le module a rapidement gagné en popularité. Il existe maintenant de nombreuses cartes basées sur le processeur ESP8266. Leurs caractéristiques diffèrent notamment en termes de nombre de ports d'entrée-sortie ou de taille de la mémoire flash.
Ces circuits ont beaucoup évolué depuis et de nombreuses informations peuvent être trouvées sur le web pour la plus grande satisfaction des utilisateurs. Malheureusement, la plupart de ces informations sont désormais obsolètes ou tout simplement fausses.
Il m'a donc fallu un certain temps pour obtenir un premier résultat exploitable! D'autres ont eu plus de chance, mais le bon fonctionnement de ce module a été un vrai défi. À tel point que parfois, je pensais même avoir détruit le module avant de le relancer à force de persévérance dans mes recherches.
J'ai enfin apprivoisé la bête qui s'avère plus facile à utiliser que je ne l'imaginais au départ. Après avoir rassemblé toutes les informations utiles, je vous suggère de les résumer dans ce tutoriel. J'espère que vous commencerez rapidement et obtiendrez les fonctionnalités de base dont vous avez besoin.
Dans ce tutoriel, le module utilisé est un ESP-01, mais l'approche décrite doit être identique à la plupart des modules basés sur le processeur ESP8266 (sinon tous).
ESP8266 en bref:
- Prend en charge les protocoles 802.11 b / g / n;
- Se connecte à votre routeur et fonctionne en tant que client ou en tant que point d'accès ou même les deux en même temps!
- Peut fonctionner comme un serveur Web avec sa propre adresse IP;
- Le module ESP-01 comprend deux broches numériques qui peuvent être configurées en entrée ou en sortie (pour piloter des LED, des relais, etc.). Ces broches peuvent être utilisées pour générer un signal modulé en largeur d'impulsion (PWM). D'autres versions du module ont plus de broches d'entrée-sortie (l'ESP-12 par exemple), mais elles sont toutes programmées de manière similaire;
- Possède une entrée analogique (ADC / ALL), mais qui n'est pas câblée sur l'ESP-01;
- Peut fonctionner en communiquant avec une carte Arduino ou être programmé pour fonctionner indépendamment;
- Possède de nombreux outils et environnements de développement (EDI) pour le programmer;
- Et plein d'autres choses…
Dans la démonstration suivante, l'ESP8266 est configuré comme un serveur Web générant une page Web accessible à l'utilisateur par connexion WiFi. Vous pourrez ensuite vous inspirer de cette démonstration pour développer votre propre projet domotique et piloter vos objets connectés.
Si vous souhaitez programmer l'ESP8266 avec votre propre code, ce que nous proposons de faire dans ce tutoriel, vous n'aurez plus besoin du firmware d'origine. Votre code est le firmware. Pour revenir en arrière et flasher une version de firmware mise à jour dans l'ESP8266: Chargement d'un nouveau firmware sur un ESP8266.
Nous utiliserons l'IDE Arduino comme outil de développement, mais vous n'avez pas non plus besoin d'une carte Arduino. L'ESP8266 est lui-même un microcontrôleur.
Après avoir téléchargé votre propre code sur l'ESP8266, il ne répondra plus aux commandes AT car votre code a remplacé le firmware d'origine. Développer votre propre code à l'aide de la bibliothèque ESP8266 dans l'IDE Arduino vous offre de nombreuses possibilités. Voir la documentation: bibliothèque ESP8266WiFi.
Vous pouvez restaurer le firmware ESP8266 d'origine à tout moment et reprendre le contrôle avec le jeu de commandes AT si vous le souhaitez. Voir Chargement d'un nouveau micrologiciel sur un ESP8266.
Le module ESP8266 est alimenté en 3,3 V, et non 5 V. Même si l'ESP-01 est plutôt tolérant, il est fortement recommandé d'adapter le niveau de tension si l'alimentation provient d'une source 5 V. Sans cette précaution, vous risquez simplement d'endommager voire de détruire le module!
Équipement |
Description et commentaires |
|
|
|
|
|
|
|
|
|
Il existe de nombreux assemblages sur le Net avec une sortie 5 V du programmateur ou de l'Arduino directement connectée à l'entrée Rx à 3,3 V de l'ESP. Comme dit précédemment, l'ESP-01 est assez tolérant, c'est à vous de décider si vous prenez le risque … |
Le programmateur FTDI est le circuit en rouge en haut du schéma, l'ESP8266-01 en bas. Seuls trois fils du programmateur FTDI sont connectés: le retour à la terre GND et les broches de communication Rx et Tx connectées respectivement aux Tx et Rx de l'ESP. À gauche du schéma, le module d'alimentation est normalement directement branché sur la plaque de câblage.
Encore une fois, la qualité nécessaire de l'alimentation PSE est soulignée. Si vous constatez un fonctionnement erratique du système, il s'agit probablement d'un problème d'alimentation. Notez le condensateur de découplage entre les lignes 3,3 V et la masse GND afin de compenser les chutes de tension dues aux pics de courant demandés par l'ESP.
Quelques remarques sur le câblage:
- La broche 0 du GPIO doit être mise à la terre (GND) pendant le téléchargement du code. Il doit être déconnecté si vous supprimez le FTDI et que l'ESP est en mode d'exécution normal;
- la broche CH_PD doit toujours être maintenue haute;
- la goupille RESET est tirée haut avec une résistance de remonter 10 kΩ, et est connecté à la masse GND en appuyant sur le bouton RESET lorsque l'ESP doit être redémarré. Appuyez sur le bouton RESET à chaque fois avant de télécharger le code, et chaque fois que vous connectez ou déconnectez la broche GPIO 0. Ce bouton RESET vous fera économiser beaucoup de tracas.
Lorsque vous mettez le circuit sous tension, la LED rouge de l'ESP-01 devrait s'allumer et la LED bleue devrait s'allumer brièvement. Plus tard, lorsque vous téléchargez le code sur ESP, la LED bleue devrait clignoter pendant le processus. Toute autre combinaison dans l'éclairage LED suggère un dysfonctionnement.
Si vous souhaitez supprimer le programmateur série et démarrer l'ESP en mode d'exécution normal, assurez-vous d'avoir déconnecté la broche GPIO 0 de la masse GND et appuyez sur le bouton RESET, sinon l'ESP risque de ne pas fonctionner correctement.
Au lieu de votre programmateur USB-série, vous pouvez utiliser votre carte Arduino.
Quelques commentaires:
- Sur une carte Arduino fonctionnant à 5 V (comme l'Arduino UNO classique), les sorties logiques auront un potentiel de 5 V (logique TTL), et vous risquez d'endommager votre ESP8266 en les connectant directement. Vous devez donc utiliser une carte Arduino fonctionnant à 3,3 V ou ajouter un convertisseur de niveau logique 3,3 V-5 V bidirectionnel (convertisseur de niveau logique bidirectionnel) entre Arduino et ESP;
- La sortie 3,3 V de votre carte Arduino est insuffisante pour alimenter l'ESP qui nécessite un courant élevé. Encore une fois, pour éviter un comportement erratique et pour protéger les composants, utilisez une alimentation externe de 3,3 V pouvant fournir 0,5 A;
- Il est recommandé de télécharger un programme vierge sur l'Arduino avant d'y connecter des composants, pour éviter des résultats imprévisibles. Par programme "vierge", on entend un code ne comportant qu'un installer () et une boucle boucle () vide;
- L'Arduino UNO ne comprend qu'un seul port série matériel (connecteurs Rx et Tx). Pour communiquer avec l'ESP8266 et votre ordinateur via le moniteur série, vous devrez passer par un port série logiciel et utiliser la bibliothèque de logiciels série. Un port série logiciel présente nécessairement certaines limites, mais la communication devrait théoriquement se dérouler normalement à une vitesse pouvant atteindre 115 200 bauds. L'avantage d'une carte Arduino Mega est d'avoir des ports série matériels supplémentaires;
- Enfin, le piège … Lorsque vous utilisez l'Arduino en tant que programmeur série pour un autre appareil comme ESP, les données (notamment les commandes AT tapées dans le moniteur série de l'Arduino IDE) provenant de votre ordinateur connecté à l'Arduino via un câble USB arrivent sur le port Rx du Arduino (l'Arduino reçoit bien les données). Et ces données doivent atteindre la broche Rx de l'appareil qui doit également les recevoir. Dans ce cas, vous ne devez plus croiser Rx et Tx, vous devez connecter le Rx de l'Arduino au Rx de l'appareil et le Tx de l'Arduino au Tx de l'appareil.
Sommaire
VIA. Installation du gestionnaire
Il existe de nombreux outils pour programmer l'ESP8266, mais l'IDE Arduino (Integrated Development Environment) est sans aucun doute le moyen le plus simple de le faire.
Vous aurez besoin de la dernière version de l'IDE Arduino et y ajouterez la prise en charge de l'ESP8266. Notez à nouveau que même si vous passez par l'IDE Arduino, vous n'avez pas besoin de posséder une carte Arduino.
Dans le menu Préférences de l'IDE Arduino, vous devez saisir une URL pour gérer les cartes supplémentaires:
Ici, vous devez entrer l'URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json.
Plus de détails sur le site Web ESP8266 Arduino Core.
Sélectionnez ensuite le Gestionnaire de cartes ((Gestionnaire des conseils):
Dans le gestionnaire, sélectionnez le package esp8266 :
Vous pouvez maintenant choisir la cible Module ESP8266 générique :
Des options supplémentaires apparaissent si vous revenez au menu Outils :
VI-B. Communiquez avec l'ESP8266 à l'aide des commandes AT
Une fois l'ESP connecté à votre poste, sélectionnez le port COM correspondant (menu Outils / Port…).
Si le firmware d'origine est toujours présent dans l'ESP8266, vous pouvez communiquer avec lui via le moniteur série:
- Ouvrez le moniteur série (Moniteur série);
- Sélectionnez le débit en bauds, normalement 115 200 bauds (débit en bauds), mais en fonction du micrologiciel, il peut être inférieur;
- Sélectionnez " NL et CR "(NL et CR), pour envoyer un Nouvelle ligne et Retour chariot à chaque envoi (bouton Envoyer);
- Tapez (sans les guillemets) la commande "AT", puis cliquez sur le bouton "Envoyer". L'ESP devrait retourner "OK" au moniteur série. Sinon, appuyez sur le bouton RESET ou essayez à nouveau en redémarrant après avoir débranché le câble USB. Vérifiez également que vous avez sélectionné le bon port COM. Si l'ESP ne répond toujours pas, le micrologiciel "standard" n'est peut-être pas installé et il ne comprend pas les commandes AT. Dans ce cas, ce n'est pas vraiment un problème car vous allez réécrire le firmware avec votre propre code;
- Tapez "AT + GMR". L'ESP renvoie le numéro de version du firmware.
VI-C. Le code ▲
Copiez et collez le code ci-dessous dans la fenêtre d'édition de l'IDE Arduino. Les variables doivent être modifiées SSID et mot de passe pour que l'ESP se connecte à votre routeur.
A noter que la LED est connectée à la broche GPIO 2 de l'ESP, d'où l'initialisation de la variable int
pinGPIO2 =
2
;.
Veuillez sélectionner
1.
2.
3.
4.
5.
6.
7.
8.
9.
dix.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
#comprendre
Code de chaîne Version =
"Version 1.0 août 2016 par TonesB"
;
const
réservoir
*
SSID =
"YourSSID"
;
const
réservoir
*
mot de passe =
"Votre mot de passe"
;
int
pinGPIO2 =
2
;
int
ledStatus =
0
;
WiFiServer WebServer (80
);
Client WiFiClient;
néant
installer ()
Serial.begin (115200
);
retard (dix
);
Serial.println ();
Serial.println ();
Serial.println (codeVersion);
pinMode (pinGPIO2, SORTIE);
digitalWrite (pinGPIO2, LOW);
ledStatus =
0
;
Serial.println ();
WiFi.disconnect ();
WiFi.mode (WIFI_STA);
Serial.print ("Connexion à"
);
Serial.println (SSID);
WiFi.begin (SSID, mot de passe);
tandis que
(WiFi.status () ! =
WL_CONNECTED)
retard (500
);
Serial.print ("."
);
Serial.println (""
);
Serial.println ("Connecté au WiFi"
);
WebServer.begin ();
Serial.println ("Le serveur Web a démarré"
);
Serial.print ("Vous pouvez vous connecter à l'ESP8266 à cette URL:"
);
Serial.print ("http: //"
);
Serial.print (WiFi.localIP ());
Serial.println ("/"
);
néant
boucle ()
client =
WebServer.available ();
si
((!
client)
revenir
;
Serial.println ("Nouvel utilisateur"
);
tandis que
((!
client.available ())
retard (1
);
Demande de chaîne =
client.readStringUntil (& # 39; & # 39;
r n
& # 39; & # 39;
);
Serial.println (demande);
client.flush ();
si
(request.indexOf ("/ LED = ON"
) ! =
-
1
)
analogWrite (pinGPIO2, 1023
);
ledStatus =
1
;
si
(request.indexOf ("/ LED = OFF"
) ! =
-
1
)
analogWrite (pinGPIO2, 0
);
ledStatus =
0
;
si
(request.indexOf ("/ LED = DIM"
) ! =
-
1
)
analogWrite (pinGPIO2, 512
);
ledStatus =
2
;
client.println ("HTTP / 1.1 200 OK"
);
client.println ("Content-Type: text / html; charset = UTF-8"
);
client.println (""
);
client.println (""
);
client.println (""
);
client.println (""
);
client.println ("ESP8266 Demo "
);
client.println (""
);
client.println (""
);
client.println ("<a href =
"
/
"
> Actualiser le statut"
);
client.println (""
);
si
(ledStatus ==
0
)
client.print ("La LED est éteinte"
);
client.println ("Tournez la LED <a href =
"
/ LED = ON
"
> ON"
);
client.println ("Réglez la LED sur <a href =
"
/ LED = DIM
"
> DIM"
);
autre
si
(ledStatus ==
1
)
client.print ("La LED est allumée"
);
client.println ("Tournez la LED <a href =
"
/ LED = OFF
"
> OFF"
);
client.println ("Réglez la LED sur <a href =
"
/ LED = DIM
"
> DIM"
);
autre
si
(ledStatus ==
2
)
client.print ("La LED est grisée"
);
client.println ("Tournez la LED <a href =
"
/ LED = OFF
"
> OFF"
);
client.println ("Tournez la LED <a href =
"
/ LED = ON
"
> ON"
);
client.println (""
);
client.println ("<a href =
"
http://www.instructables.com/id/ESP8266-WiFi-Module-for-Dummies/
"
cible =
"
_Vide
"
> Voir la page Instructables: Module WiFi ESP8266 pour les nuls"
);
client.println ("<a href =
"
http://www.instructables.com/id/The-Simple-Guide-to-Flashing-Your-ESP8266-Firmware/
"
cible =
"
_Vide
"
> Voir la page Instructables: Le guide simple pour flasher votre firmware ESP8266"
);
client.println (""
);
client.println (""
);
client.println (""
);
retard (1
);
Serial.println ("Utilisateur déconnecté"
);
Serial.println (""
);
Vérifiez la dernière fois que votre assemblage est prêt et connectez votre câble USB au programmateur série.
VI-D. Télécharger le code sur ESP8266 ▲
Lorsque vous téléchargez le code, la broche GPIO 0 doit être connectée à la masse GND. Vous pouvez retirer le fil de câblage correspondant après le téléchargement. Appuyez sur le bouton RESET avant de télécharger. Si le téléchargement échoue, déconnectez et reconnectez le câble USB et réessayez. En dernier recours, redémarrez votre PC, il arrive parfois que le port COM perde du terrain.
La progression du téléchargement est affichée dans la fenêtre de notification IDE comme ci-dessous:
La LED ESP bleue devrait clignoter pendant le téléchargement.
Lorsque vous supprimez le programmateur série une fois le code téléchargé, vous devrez retirer le câble reliant la broche GPIO 0 à la masse, puis appuyer sur le bouton RESET pour que l'ESP démarre correctement.
LA VIE. ESP8266, serveur Web ▲
Ouvrez le moniteur série, vous devriez voir l'adresse IP prise par l'ESP. Vous pouvez également consulter l'interface d'administration de votre routeur pour découvrir les périphériques qui y sont connectés. L'ESP devrait apparaître dans la liste avec un nom comme: ESP_1A64CA. Tant que vous y êtes, vous pouvez réserver une adresse fixe pour l'ESP et configurer le port (redirection de port) pour pouvoir se connecter à ESP hors de votre domicile sur Internet.
Ouvrez maintenant votre navigateur et entrez l'adresse IP de l'ESP:
Testez le bon fonctionnement en cliquant sur les liens ON ou OFF pour allumer ou éteindre la LED. En cliquant sur le lien DIM, la LED devrait s'allumer, mais avec une luminosité plus faible.
ESP8266
Commandes AT
Gestionnaire de cartes Arduino (
Gestionnaire de cartes Arduino
)
Commentaires
Laisser un commentaire