Comunicazione seriale tra Arduino e ESP8266 – Prima parte

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)
Arduino-to-ESP8266-584x474

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 sensorePIR_schem.

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.