Il existe aujourd'hui plusieurs modules utilisant l'ESP8266 et permettant de monter des projets DIY communiquant en TCP/IP wifi.
Ce module présente une particularité, il peut être relié directement à un sensor pour recevoir ou envoyer des données
Il peut être à la fois client et serveur Web..
Le module peut envoyer des commandes HTTP (POST et GET) et donc s'interfacer avec des pages HTML ou du PHP.
Pour les besoins du projet, je vais utiliser 2 déclinaisons différentes :
- L'ESP8266- SP01
- Le shield Wemos D1
Je ne vous cache pas que j'ai eu du mal à les faire fonctionner.
Les premiers tuto n'expliquait pas la préparation de l'IDE arduino pour pouvoir programmer ces modules..
Autres points, La commande AT pour valider le fonctionnement du module ne fonctionnait pas, alors que les commandes suivantes étaient passantes....je ne vous explique pas le tirage de cheveux !!!
on va commencer gentillement par le datasheet
Prix : 1,50 euros le module
ESP8266 Features
Compléments :
L’écartement des pins et leurs dispositions ne permet pas de brancher ce module sur une breadboard, il faut soit bricoler un adaptateur, soit le brancher à l'aide de câbles.
toute la partie concernant le Wemos D1 est à descendre en dessous des commandes AT, mais c'est chiant à faire
Introduction :
Je ne crois pas revenir..
Et comme je pense qu'il faut partager ses erreurs aussi bien que ses réussites, je laisse ce chapitre.
En fait j'avais acheté ce module il y a quelques mois, et il était resté dans un coin.. un achat rapide compte tenu du prix et....
et bien j'aurais du me renseigner un peu plus.
Il ne s'agit d'un arduino auquel on a rajouté un module ESP8266 intégré, mais d'un ESP8266 qui s'est pris pour un arduino.
Conclusion :
Ca a l'air d'un arduino, ca a la couleur d'un arduino, mais ce n'est pas un arduino.
Ce truc n'est pas compatible avec toutes les librairies arduino disponibles et tous les ports ne sont pas disponibles...exemple les ports analogiques, il n'en reste qu'un seul
donc si je veux l'utiliser, je dois tester toutes les bibliotheques....
Je ferais ça uniquement si je n'arrive pas à m'en sortir avec le module externe.
Prix : 9 euros
Le module dispose de son propre firmware, qu'il peut etre nécessaire de mettre à jour pour corriger des bugs ou ajouter de nouvelles fonctionnalités.
Là je passe mon tour pour l'instant
Le cablage
Specifité du module, le cablage est différent en mode "programmation" et un mode "autonome".
Ci contre le câblage en mode programmation
Attention. Ne dépassez pas 3.3 Volts pour alimenter la carte sur la broche 3V sont peine de détruire la carte
Et le RX du module se connecte au RX de l'arduino !
Parametrage de l'Ide Arduino
La Wemos D1 Mini s’utilise comme toutes les cartes ESP8266. Commencez par configurer l’IDE Arduino. Ouvrez les Préférences et ajoutez le dépôt vers la librairie esp8266.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
SPECIFICATIONS:
PINS:
Board Pin | Function | ESP8266 Pin |
---|---|---|
TX | TXD | TXD |
RX | RXD | RXD |
A0 | Analog input | A0 |
D0 | I/O | GPIO16 |
D1 | I/O, SCL | GPIO5 |
D2 | I/O, SDA | GPIO4 |
D3 | I/O, 10k pull-up | GPIO0 |
D4 | I/O, 10k pull-up, BUILTIN_LED | GPIO2 |
D5 | I/O, SCK | GPIO14 |
D6 | I/O, MISO | GPIO12 |
D7 | I/O, MOSI | GPIO13 |
D8 | I/O, 10k pull-down, SS | GPIO15 |
GND | Ground | GND |
5V | 5V | |
3V3 | 3.3V | 3.3V |
RST | Reset | RST |
All of the I/O pins have interrupt/PWM/I2C/one-wire capability, except for D0
il y a une autre liste ci dessous
PinFunctionESP-8266 Pin
A0Analog InputA0D0 | RX | GPIO3 | D1 | TX | GPIO1 | D2 | IO | GPIO16 | D3(D15) | IO,SCL | GPIO5 | D4(D14) | IO,SDA | GPIO4 | D5(D13) | IO,SCK | GPIO14 | D6(D12) | IO,MISO | GPIO12 | D7(D11) | IO,MOSI | GPIO13 | D8 | IO,Pull-up | GPIO0 | D9 | IO,pull-up, BUILTIN_LED | GPIO2 | D10 | IO,pull-down,SS | GPIO15 |
Allez dans le gestionnaire de carte et cherchez esp8266, puis cliquez sur installer.
Dans la liste des cartes, choisissez WeMos D1 R2 & Mini dans la liste ESP8266 Modules.
Pour ma part j’ai du opter pour une vitesse d’upload de 115200 bauds. Si vous rencontrez des problèmes, voici quelques pistes :
Cette carte est livrée avec un série d’exemples que vous pouvez télécharger sur github ici. Placez le répertoire dans votre dossier Arduino et relancez l’IDE pour actualiser la liste des exemples. Une section est dédiée aux shields :
Selectionner "Gestionnaire de carte"
Tapez "ESP8266" dans la fenetre de recherche
et installer le module
Selectionnez "Outils / Type de carte"
descendez vers le bas et selectionnez "Generic Esp8266 Module"
Introduction
il y a plusieurs moyen d'attaquer la programmation de ce module, l'utilisation des commandes AT ne nécessite pas de changer la configuration de l'IDE Arduino. On conserve comme type de carte l'arduino uno
Le tutoriel :
Voir la vidéo a gauche et surtout respecter les étapes PAS à PAS
doucement
Extrait du site :
http://les-electroniciens.com/videos/arduino-ep16-installation-du-module-wifi-esp8266
Le seul problème est que le schéma du site est faux :
Les cables verts et jaunes doivent être inversées.
La vitesse de l'IDE du com doit être passée à 150200
Après lecture des commentaires sous Youtube, c'est confirmé :
(!) Le fabriquant a créé plusieurs versions hard sans en changer la référence... Du coup il est possible que sur certains modèles il N'est PAS nécessaire de croiser la liaison série. (Oui vous avez bien lu...) Il est également possible que le baudrate soit par défaut de 115200 au lieu de 9600.
comme quoi il faut tout lire...
Voir schéma à droite
Résultat des commandes AT via le moniteur série
Modification du câblage pour charger le programme via la bibliotheque SoftwareSerial.h
mais cette fois ci - le jaune reste en 10, et le vert en 11
et bien sur modification du code pour tenir compte de la vitesse du module
ca donne :
SoftwareSerial ESP8266(10, 11);
String NomduReseauWifi = "*****"; // Garder les guillements
String MotDePasse = "****"; // Garder les guillements
void setup()
{
Serial.begin(115200);
ESP8266.begin(115200);
......
Résultat sur le moniteur Série
ce n'est pas jolie
mais à l'aide d'un scanner IP, on voit que le module à récupéré une adresse IP
ANNEXE : Exemples de commandes AT
Maintenant je comprends mieux pourquoi ce putain de module ne voulait pas fonctionner en suivant les tuto et qu'il m'a donné tant de mal !
Introduction :
Je ne crois pas revenir..
Et comme je pense qu'il faut partager ses erreurs aussi bien que ses réussites, je laisse ce chapitre.
En fait j'avais acheté ce module il y a quelques mois, et il était resté dans un coin.. un achat rapide compte tenu du prix et....
et bien j'aurais du me renseigner un peu plus.
Il ne s'agit d'un arduino auquel on a rajouté un module ESP8266 intégré, mais d'un ESP8266 qui s'est pris pour un arduino.
Conclusion :
Ca a l'air d'un arduino, ca a la couleur d'un arduino, mais ce n'est pas un arduino.
Ce truc n'est pas compatible avec toutes les librairies arduino disponibles et tous les ports ne sont pas disponibles...exemple les ports analogiques, il n'en reste qu'un seul
donc si je veux l'utiliser, je dois tester toutes les bibliotheques....
Je ferais ça uniquement si je n'arrive pas à m'en sortir avec le module externe.
Prix : 9 euros
Une fois la carte correctement déclarée dans l'IDE arduino, on a automatiquement accés à 2 choses :
- tous les exemples de l'ESP8266
-la fameuse bibliothèque ESP8266WIFI.h ( en majuscule)
Test 1 : Vérifier le port COM utilisé
Sélectionnez "Outils"/ "Port" et Sélectionner le port
Test 2 : vérifier la connectivité entre l'arduino et l'ESP8266
-> Faire clignoter la led sur l'eSP
Charger l'exemple "Blank".
Celui ci va faire clignoter la LED sur le module arduino afin de valider la communication entre l'arduino et le module
(voir vidéo à droite si besoin)
Une fois la programmation effectuée, il est possible de débrancher un des ports pour obtenir le schéma ci dessous.
Message :
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed
Alors là commence un grand moment de sollitude encore une fois...mais j'ai la solution pour ma carte...a priori en fonction des cartes ca va différer
L'idée générale de ce message ,c'est que l'IDE n'arrive pas à téléverser le programme
contrôle du port COM
on va commencer par vérifier que le port COM est correctement reconnu dans Windows
si ce n'est pas le cas, il faut installer les drivers pour USB
disponible sur :
https://files.elektroda.pl/813347,ch34x_install_windows_v3_4.html
Fichier : CH34x_Install_Windows_v3_4.zip ou exe
on installe, reboot le Pc par précaution et on retourne verifier les propriétés du matériel. Si c'est Ok, on peut continuer
choix de la carte dans l'IDE
On reste motivé, et on verifie le choix de la carte dans l'ide Arduino.
Etes vous sur de votre modele Wemos D1, ou Wemos D1 R2, ou générique Esp8266
On charge le programme blink, on choisit une des cartes, et on televerse.. vous avez essayé les 3 et c'est toujours KO...
bienvenue dans mon monde....
Le Reset du port GPIO0
Je vous rassure pour moi, c’était la solution, mais en fonction de votre carte, le GPI00 va se trouver sur différents ports.
Si vous reprenez la documentations ci dessus, vous trouverez que
soit il est en D3, soit il est en D8.
Quoiqu'il arrive, tapez sous google Wemos D1 gpio0 et vous trouverez l'information en fonction de votre carte.
Une fois identifié le port, il suffit de le relier au ground et de téléverser..Miracle !!!
Archiving built core (caching) in:
C:\Users\poker\AppData\Local\Temp\arduino_cache_107442\core\core_esp8266_esp8266_d1_CpuFrequency_80,UploadSpeed_921600,FlashSize_4M3M_643904e3213f00fcdcdea0f345c9fa6e.a
Le croquis utilise 222201 octets (21%) de l'espace de stockage de programmes. Le maximum est de 1044464 octets.
Les variables globales utilisent 31576 octets (38%) de mémoire dynamique, ce qui laisse 50344 octets pour les variables locales. Le maximum est de 81920 octets.
Uploading 226352 bytes from C:\Users\poker\AppData\Local\Temp\arduino_build_326718/Blink.ino.bin to flash at 0x00000000
................................................................................ [ 36% ]
................................................................................ [ 72% ]
.............................................................. [ 100%
]
Est ce que je vais devoir faire cela pour chaque téléversement ?
la réponse est NNNOOOOONNN
une fois ce lock résolu, ça semble marcher correctement pour les téléchargement suivant.
Une grande question, mais je ne sais pas si c'est sa place dans cette section
Comment apprendre rapidement il faut trouver le bon tutoriel et reproduire les étapes.
Une fois n'est pas coutume, le meilleur que j'ai trouvé est en...espagnol...mais qu'est ce qu'il est bon.
20 minutes de pure apprentissage pour moi.
Configuration en serveur local :
Configuration en serveur externe
En russe pour changer un peu....
Intégration d'un lecteur MFRC522 ( RFID) au moduel Wemos D1
il faut adapter le cablage et le code pour faire une transco des branchements selon la table ci dessous
RFC522 | Wemos D1 |
RX/SDA/SS | D8 |
SCK | D5 |
MOSI | D7 |
SCK | D6 |
inutilisé | |
IRQ | GND |
RST | D9 |
VCC | 3,3v |