ESP8266 arduino comandi AT

Qualche ordine fa ho acquistato dei moduli ESP8266 da usare con arduino per qualche interessante progetto wifi a basso consumo e costo.

ESP8266 WiFi Serial Transceiver Module

L’ESP8266 è un modulo WiFi molto economico, meno di 10 euro, che ti offre la possibilità di essere connesso facilmente ad un micro controllore, come arduino, mediante 2 pin seriali Tx ed Rx ed interagire con lo sketch mediante comandi AT.

Prima di avventurarmi in progetti con un componente nuovo eseguo sempre qualche test semplice, come quello che ti ripropongo, e nel quale oltre a verificare la facilità di utilizzo del componente eseguo anche un piccolo test funzionale per comprendere l’ambito nel quale posso impiegarlo e con quali limiti / rischi.

Caratteristiche dell’ESP8266

Cercando in internet ho trovato alcuni link che descrivono le caratteristiche di questo componente:

  • GitHub ho trovato una wiki interessante in cui sono riportati versioni, formati e pin presenti sui differenti modelli di ESP8266 che puoi trovare in commercio;
  • ESP8266 Community Forum raccoglie tantissima documentazione ed esempi di utilizzo
  • Iteadstudio ha pubblicato una guida completa ai comandi AT.

Questo solo per citare alcuni dei link in cui puoi trovare informazioni.

ESP8266 caracteristics

I comandi AT

Giusto per accennare ai comandi AT parto dalla definizione presa su wikipedia:

“La maggior parte dei modem fonici utilizza i comandi AT Hayes, uno specifico insieme di comandi originalmente sviluppato per il modem Hayes Smartmodem da 300 baud.

La stringa di inizializzazione consiste di una serie di comandi che prepara il modem per la comunicazione, impostando caratteristiche come il tipo di connessione, i tempi di attesa, la rilevazione delsegnale di occupato eccetera. Nei modelli di modem più recenti l’inizializzazione viene gestita da programmi con una qualche interfaccia grafica, in modo che l’utente non debba digitare questi comandi e neanche conoscerne l’esistenza.”

Per il mio test ho utilizzato alcuni dei comandi AT disponibili e supportati dall’ESP8266 prendendo come riferimento i comandi riportati in uno dei link suggeriti al paragrafo precedente.

Colleghiamo l’ESP 8266 ad arduino

il collegamento del modulo è molto semplice e puoi applicarlo sia alla versione uno del modulo sia alla versione 2 che differiscono per la presenza, o assenza, dei pin CH_PD,RST, GPIO0 e GPIO2 e per l’interfaccia di comunicazione seriale in quanto nella versione 1 ( sinistra ) l’interfaccia è di tipo RX/Tx nella versione 2 ( destra ) l’interfaccia è di tipo U0Rx/U0Tx ossia ( UART0 ):

ESP8266 connection pinout

io ho realizzato uno schema di connessione diretta ai pin 0 ed 1 di arduino in modo da utilizzare quest’ultimo come semplice passacarte verso l’ESP8266:

ESP8266 schema

 

Upload sketch to arduino

lo sketch che ho utilizzato è il più semplice di tutti, lo sketch vuoto:

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

la sua funzione è semplicemente permettere ad arduino di non far nulla e non interferire con la comunicazione seriale che transita direttamente al modulo.

Il primo test dell’ESP8266

Per il primo test devi utilizzare, come detto, i comandi AT in modo da comprendere quali operazioni potrai fare con il tuo ESP8266 direttamente connesso ad Arduino.

Inizia con aprire il monitor seriale dell’IDE, dopo aver collegato arduino al computer ed al modulo ESP8266 come descritto sopra.

Il monitor seriale devi configurarlo in modo che ad ogni invio di stringa seriale aggiunga al termine sia il carattere di fine riga sia quello di ritorno a capo, come in figura:

ESP8266 Serial Monitor Settings

inoltre è necessario che la velocità di comunicazione ( baud ) sia la medesima tra il modulo ed il monitor seriale.

Le velocità possibili per questo modulo sono 3: 9600, 57600 e 115200, ancora non mi è chiarissimo come distinguere quale velocità vada impostata per ciascun modello, posso dirti che dopo 2 prove la terza è quella che mi ha dato esito positivo e quindi ho impostato la comunicazione a 115200:

ESP8266 Serial Monitor Settings baud

trovata la giusta impostazione di comunicazione, in termini di baud, puoi inviare un reset al modulo con il comando AT+RST:

ESP8266 AT+RST result

a cui seguono una serie di informazioni restituite direttamente sul monitor seriale.

Puoi interrogare il modulo per farti restituire alcune informazioni quali la versione del firmware ( AT+GMR ):

ESP8266 AT+GMR firmware version

e successivamente ho chiesto al modulo di impostare la modalità operativa:

  • 1 Sta ( Station – CLient )
  • 2 AP ( Access Point )
  • 3 Both ( Entrambe )

usando il comando AT+CWMODE?, che permette sia di eseguire richieste di questo tipo sia di impostare la modalità desiderata, ho richiesto di visualizzarmi la modalità impostata:

ESP8266 AT+CWMODEora sia che la modallità in cui sta operando è Client ( 1 ) puoi passare a verificare quali reti WiFi ci sono nei paraggi e sono captate dal modulo, per farlo usi il comando AT+CWLAP:

ESP8266 AT+CWLAP scan wifi network

e scopri sia le reti disponibili sia i Mac Address delle interfacce che espongono le reti wifi.

Ora puoi chiedere al tuo modulo di eseguire la Join alla rete wifi:

ESP8266 AT+CWJAP join Access Point

con il comando AT+CWJAP che accetta come primo parametro l’SSID e come secondo parametro la password di accesso.

Infine per verificare che la join sia avvenuta correttamente ho chiesto al modulo di restituirmi l’Ip ricevuto dal router con il comando AT+CIFSR e poi ho confrontato il risultato, che vedi nella schermata precedente, con quanto presente sul router:

ESP8266 on router

Buona sperimentazione !!!

 

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/esp8266-arduino-comandi-at.html

202 pings

Skip to comment form

  1. […] Per programmare i micro controllori a 3,3v tipo ESP8266 ho in passato usato l’arduino uno ( leggi: esp8266 arduino comandi at ). […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.