Projets:Perso:2015:LedTube:ESP12Q

From Electrolab
Jump to: navigation, search

Module ESP-12-Q

Ce module porte, dans un boitier métallique faisant office de blindage, un chip WIFI ESP8266 de "Espressif Systems" (chinois)

Ce module est exceptionnel pour ce qu'il permet de faire à son prix. Il a une bonne portée.

Il peut par exemple créer un hotspot wifi (soft access point), et permettre à jusqu'à 4 devices de s'y connecter simultanément (marche au moins avec android, win).

Il y a du firmware dans le ESP8266. Il peut-être mis à jour.

Ce chip ESP8266 peut être utilisé de plusieurs façons.

  • Soit on dialogue avec le module par la liaison série (typiquement à 115200 bauds) en envoyant des commandes AT. Mais cela suppose d'avoir flashé dans le module le firmware AT de Espressif, ou un de ses dérivés
  • Soit on développe sois même du firmware, on le compile, on le flashe dans le module. Ca permet de faire une solution WIFI sans processeur externe.

Les modules dans le distributeur sont flashés avec un firmware type "internet of things" qui permet de se connecter directement avec un browser internet au module. J'ai pas perdu de temps avec ça. Pour les geeks.

En ce qui concerne le projet LedTube, je l'ai utilisé en mode AT.

J'ai donc reflashé le module, avec le firmware AT officiel de Espressif.

Ce qu'on appelle des commandes AT : c'est juste un protocole où on envoie vers le module des commandes par la liaison série en ASCII et on obtient des réponses. On peut ainsi par exemple depuis un PC, avec un simple logiciel terminal (terraterm par exemple) dialoguer "à la main" avec le module, envoyer des trames TCP, UDP, recevoir des trames. C'est pratique pour le debuggage. Ensuite dans le circuit final, votre processeur fait la même chose.

Selon le niveau électrique sur des broches en sortie de RESET, le module va booter normalement, ou bien passer en mode re-flashage. Voir plus bas

Voici les images utiles pour réaliser un schéma électronique



Le brochage

Définition des broches


Le module dans son sachet

ESP12Q top.jpg ESP12Q bottom.jpg


Le schéma interne du module

Important :

  • On voit qu'il y a une pull up sur le RESET. Pour bloquer en RESET, mettre cette broche à 0V.
  • La broche ENABLE est active à 3.3V.
  • On voit que le GPIO2 est connecté au + par LED + résistance. Si bien qu'il n'est pas requis de le contrôler en sortie de RESET car il aura le bon niveau (Haut).

ESP12Q schematic esp-12e.png Schéma interne au module


Comment je l'ai intégré dans mon schéma

Projets perso 2015 ledtube esp-12-q-module.png

Selon le niveau électrique sur des broches en sortie de RESET, le module va passer en mode normal (flash boot mode), ou bien re-flashage (Uart download mode). Dans le schéma,

  • UART Download Mode est le mode re-flashage
  • Flash Boot mode est le mode de fonctionnement normal, le processeur exécute son application

Librairie Eagle pour l'intégrer à votre schéma : ESP12Q.lbr

Choses à télécharger sur le site web espressif

Documents Essentiels

Logiciels Essentiels

Le flashage se fait par les broches TX, RX, sans contrôle de flux.

Terminal pour vérifier que le flashage a bien marché.

Pour les essais avec tera term, il faut changer setup>terminal>New-Line>Transmit>CR+LF

Et setup>terminal> cocher local echo est pratique.

Config de l'appli pour le flashage

Voici la config qui a marché pour moi, ce n'est surement pas la config optimale, mais elle fait le job

ESP12Q flash config.png


Vu sur ma carte shield pour Nucleo64

Projets perso 2015 ledtube shield.jpg

Exemple de dialogue exact

Pour une réception UDP transparente sur port 5125. Après ça, le module ressort sur sa liaison série tout ce qu'il reçoit en UDP de ceux qui se sont connectés sur le port 5125.

Cf 4A-ESP8266__AT Instruction Set__EN_v1.4.pdf

Cet exemple est précieux car il montre des choses non documentées par espressif : en particulier combien de \r\n il se met à répondre...


String envoyées (on doit rajouter"\r\n" à la fin de chaque chaîne)

char *wifiS[NB_WF_CMD_STARTUP] = {
"ATE0", // do not echo, just reply !
"AT+CWMODE_CUR=2", // soft ap
"AT+CIPMUX=0", //
"AT+CWSAP_CUR=\"LEDTUBE\",\"\",5,0",
"AT+CWDHCP_CUR=0,1", // softAP DHCP enable 
"AT+CIPAP_CUR=\"192.168.1.0\",\"192.168.1.0\",\"255.255.255.0\"",
"AT+CIPSTART=\"UDP\",\"192.168.1.1\",5125,5125,0", //response : CONNECT\r\nOK\r\n
"AT+CIPMODE=1"	
};

Ce qui est répondu exactement

char *expectedWifiReplieS[] = {
"ATE0\r\r\n\r\nOK\r\n",
"\r\nOK\r\n",
"\r\nOK\r\n",
"\r\nOK\r\n",
"\r\nOK\r\n",
"\r\nOK\r\n",
"CONNECT\r\n\r\nOK\r\n",
"\r\nOK\r\n"
};