Comunicazione seriale tra Arduino e ESP8266 – Prima parte
Questo articolo contiene una serie di considerazioni che hanno dato spunto a diversi progetti basati sulla comunicazione tra Arduino (mini) e ESP8266 (01) il cui punto centrale era costruire sistemi che funzionassero a batteria e che costassero il meno possibile. Sebbene adesso questa configurazione sia stata superata da progetti che fanno direttamente uso delle versioni più avanzate di ESP, è ancora interessante per il basso costo rispetto alla relativa potenza che garantisce.
La comunicazione tra Arduino e ESP è seriale e fa uso dei comandi AT.
La connessione tra ESP e Arduino va fatta nel modo seguente (credit)
Tutti gli esp sono alimentati a 3.3 V. Sebbene Arduino sia in grado di fornire direttamente questo voltaggio è bene alimentare esp con una fonte esterna essendo sensibile alle variazioni di alimentazione.
Un possibile circuito con un’alimentazione esterna è la seguente .
I comandi vengono inviati mediante un semplice codice che invia dati sulla comunicazione seriale e stampa a video la risposta.
#include <SoftwareSerial.h> //Canale di comunicazione seriale //NB Serial è non dichiarato ed è il monitor seriale SoftwareSerial softSerial(3, 2); // TX, RX void setup() { uint32_t baud = 9600; Serial.begin(9600); softSerial.begin(9600); Serial.print("SETUP!! @"); Serial.println(baud); delay(2000); } void loop() { //Verifico la risposta sul canale seriale e lo trasferisco al monitor seriale while(softSerial.available() > 0) { char a = softSerial.read(); if(a == '\0') continue; if(a != '\r' && a != '\n' && (a < 32)) continue; Serial.print(a); } //VErifico se scrivo comandi sulla tastiera e li trasferisco al canale seriale while(Serial.available() > 0) { char a = Serial.read(); softSerial.write(a); } }
Notiamo che la comunicazione avviene a priori a 9600. In realtà nei nuovi ESP la comunicazione si avvia a 115200, ma ci sono alcuni casi in cui è meglio abbassarla a 9600.
Un volta caricato lo scketch dovremo aprire il monitor seriale in cui inserire i comandi. Normalmente questo è preconfigurato a 115.200bps, ma in realtà dipende dalla versione di firmware che è installata sul vostro modulo per cui nel caso non funzionasse provate anche i 57.600 ed i 9.600.
Bisogna impostare la modalità di invio dei comandi poichè il modulo prevede la presenza dei caratteri (CarriageReturn) e (LineFeed) che nel monitor seriale dell’IDE è identificato come “Entrambi (NL & CR)” (vicino al baud rate).
Nell’articolo successivo analizzeremo i principali comandi.