Le module Wifi ESP8266

Page en cours de reamenagement

Le matériel

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 !!!

 


Le module ESP8266-sp01


on va commencer gentillement par le datasheet

Télécharger
esp8266 datasheet
esp8266-datasheet.pdf
Document Adobe Acrobat 846.6 KB

Prix : 1,50 euros le module

ESP8266 Features

  • 802.11 b/g/n protocol
  • Wi-Fi Direct (P2P), soft-AP
  • Integrated TCP/IP protocol stack
  • Integrated TR switch, balun, LNA, power amplifier and matching network
  • Integrated PLL, regulators, and power management units
  • +19.5dBm output power in 802.11b mode
  • Integrated temperature sensor
  • Supports antenna diversity
  • Power down leakage current of < 10uA
  • Integrated low power 32-bit CPU could be used as application processor
  • SDIO 2.0, SPI, UART - ca c'est important, ca limite le nombre de port. certains recommande l'esp8266-sp12 qui disposent de 4 ports Gpio possibles
  • STBC, 1×1 MIMO, 2×1 MIMO
  • A-MPDU & A-MSDU aggregation & 0.4µs guard interval
  • Wake up and transmit packets in < 2ms
  • Standby power consumption of < 1.0mW (DTIM3)
  • 3,3V en input

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

Le Wemos D1 R2..est ce que je reviens en D2 ?

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

 

 

 



Mise à jour du Firmware

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

La préparation avant la programmation

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:

  • Microcontroller: ESP8266EX
  • Operating Voltage: 3.3V
  • Digital I/O Pins: 11 (all I/O pins have interrupt/pwm/I2C/one-wire capability, except for D0)
  • Analog Input Pins: 1
  • Flash Memory: 4MB
  • On-Board Switching Power Supply:
    • Input Voltage Range: 9V to 12V
    • Output: 5V at 1A Max
  • Board Dimensions: 68.6mm x 53.4mm (2.701" x 2.102") / Long x Wide
  • Weight: 21.8g (0.769oz)

 

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 InputA0
D0 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 :

  • Faites un Reset,
  • Débranchez puis rebranchez la carte,
  • Retirez la carte du montage (surtout à la première utilisation).

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"

 

 



Installer le module pour des commandes en mode AT

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

 

Télécharger
ESP8266 - resultat des commandes AT
esp8266-resultat commandes AT.pdf
Document Adobe Acrobat 76.9 KB

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 !


Le Module Wemos D1


Le Wemos D1 R2..est ce que je reviens en D2 ?

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

 


tester le module

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)

 

Passer le module en mode autonome

Une fois la programmation effectuée, il est possible de débrancher un des ports pour obtenir le schéma ci dessous.



Erreur lors du téléversement

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.

 

 



DHCP, DHCP via@MAC, IP fixe ?

Une grande question, mais je ne sais pas si c'est sa place dans cette section


Connecter le module a un serveur Web



Connecter le module a un serveur WEB, PHP, MySql

Le tutoriel

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


Un exemple de plusieurs modules

En russe pour changer un peu....



LET'S GO

Intégration

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