Apr 242019
 

Bene ragazzi, dopo aver finalmente allestito il McLab è ora di riprendere tutti i progetti restati in arretrato. Visto che è mia intenzione utilizzare in maniera intensiva i moduli ESP-01 di cui abbiamo parlato in precedenti articoli, vi presento questo breve riassunto pratico che mostra le fasi necessarie per la sua programmazione. Dato che è un’operazione che svolgerò spesso, ho creato un piccolo circuito che mi permette di agevolare la programmazione del modulo senza dover ogni volta perdere tempo in noiosi cablaggi. Intendiamoci, esistono in commercio adattatori già pronti all’uso che costano pochi euro, ma basta davvero poco per fare tutto in casa.

Hardware

I moduli ESP-01, basati sul chip ESP8266, sono dei piccoli moduli che permettono con un costo di pochi euro, di aggiungere connettività WiFi ai nostri progetti. La prima cosa da ricordare è che l’ESP-01 è alimentato a 3.3V e questo è un limite in alcuni progetti se utilizziamo vecchie schede come Arduino UNO che funzionano a 5V. In fondo a questo articolo vi ho mostrato un semplice modo per collegare il pin RX del modulo e di Arduino UNO andando ad utilizzare un semplice transistor al posto dei comuni convertitori che potete trovare in commercio. Vi lascio comunque qui sotto l’immagine con lo schema per maggior comodità. 

L’altro limite è dovuto all’assorbimento di picco di corrente del modulo stesso che può arivare a 250-300mA, dato che non è compatibile con tutti i regolatori di tensione in commercio. Per questo oltre al classico condensatore da 100nF in stretta vicinanza al pin di alimentazione, vi consiglio di usare, specie se notate instabilità del sistema, l’uso di un condensatore addizionale di maggiori dimensioni per assorbire i picchi di consumo, ad esempio un elettrolitico da 470uF.

Detto ciò vediamo subito il pinout del modulo.

 

I collegamenti da fare sono: 3.3V sul pin VCC e su CH_PD, massa su GND e per finire TX e RX che vanno collegati alla relativa scheda di controllo. Fate sempre attenzione a questo passaggio: viene spontaneo pensare che il TX del modulo (trasmissione) finirà sull’RX (ricezione) della nostra scheda di controllo e ciò è in gran parte vero. MA, se come su arduino UNO la porta seriale è connessa alla porta USB, TX ed RX si intendono “rispetto alla porta USB” per cui ilt TX scritto su Arduino UNO indica che trasmette VERSO la porta USB e quindi riceve dal modulo ESP per cui per farla breve dobbiamo collegare TX con TX ed RX con RX. In definitiva fate attenzione perchè a seconda della scheda potreste avere indicazioni RX e TX differenti per cui se non vi funziona nulla la prima cosa da verificare è che non vi sia l’inversione delle linee di comunicazione. Vediamo qui sotto lo schema di collegamento generale:

Nello schema qui sopra ho utilizzato i due resistori ed il transistor per convertire la linea di trasmissione da Arduino al modulo ESP dai 5 ai 3.3V. Se usate una scheda che funziona già di base a 3.3V dovete eliminare questi componenti e fare un collegamento diretto. 

Ora dobbiamo ricordare una cosa importante. Per sostituire il firmware del modulo dobbiamo metterlo in modalità programmazione, cosa che viene effettuata mettendo il pin GPIO0 a massa durante l’accensione del modulo stesso. Una volta messo in modalità programmazione il collegamento può essere rimosso per cui dopo la programmazione riavviamo il modulo per farlo partire in “modalità esecuzione”. 

Per velocizzare tutti questi passaggi ho creato un piccolo circuitino che mi permette di risparmiare un sacco di tempo nel rifare ogni volta tutti i cablaggi. 

Ho utilizzato un alimentatore da breadboard in modo da avere una fonte di alimentazione affidabile sempre pronta. Poi ho creato due alloggiamenti, uno per il mio convertitore USB-UART ed uno per il modulo ESP. Sul circuito ho messo anche i relativi condensatori. Ho poi aggiunto un piccolo pulsante che mi permette di connettere il pin GPIO0 a massa quando premuto, in questo modo posso portare l’ESP in modalità di programmazione senza dover perdere tempo a connettere e disconnettere i relativi collegamenti. Per completezza avrei potuto anche inserire un circuito di “auto reset”, ma avrei complicato il circuito per ottenerne un beneficio abbastanza relativo. 

Per rendermi la vita più facile, ho aggiunto anche dei pin esterni che mi replicano i pin RX / TX ed i due GPIO, in questo modo posso usare il mio circuitino per testare il modulo direttamente in situ senza doverlo estrarre e montare da altre parti. In questo modo posso banalmente usare lo stesso circuito per usare il mio convertitore USB-Seriale che malauguratamente non ha stampato il significato delle varie uscite per cui ogni volta mi devo guardare lo schema per capire dove collegare i vari pin con ampi rischi di errore. 

Notate che anche se prelevo l’alimentazione dal modulo di alimentazione per breadboard e non dal convertitore USB, la massa fra i due deve essere messa in comune.

Software

Ora non ci resta che programmare il modulo e vedere se tutto funziona a dovere. Senza aggiungere ulteriore hardware, mi accontenterò di utilizzare la porta seriale per comunicare con il modulo. Per comodità vi riporto un estratto di un mio articolo in cui spiegavo come preparare l’IDE per la programmazione dei moduli.

Se non l’avete ancora fatto, dovete predisporre l’IDE di Arduino andando a scaricare l’ambiente Wiring per i moduli ESP. Per farlo andate su File -> Impostazioni. Vi troverete una finestra simile a quella qui sotto:

Come potete notare vi ho evidenziato con un cerchio rosso la voce “URL aggiuntive per il gestore schede”, nel cui campo dovrete scrivere:

https://arduino.esp8266.com/stable/package_esp8266com_index.json

Ora andate su strumenti->Scheda->Gestore schede come nella figura qui sotto.

Ora nella finestra del gestore scorrete fino a trovare la voce ESP, premeteci sopra e premete sul pulsante di installazione che nel frattempo sarà comparso.

A questo punto dovrete avere unl po’ di pazienza perchè deve essere scaricato tutto il necessario per programmare questi moduli in ambiente Wiring e rendere perciò la programmazione molto similare a quella a cui siamo abituati con Arduino. Non appena l’installazione sarà completata, nella lista delle schede troverete tutta una serie di nuovi  prodotti basati sull’esp8266. Ora nella scelta della scheda utilizzate “Generic ESP8266” ed operate come fareste con un qualunque Arduino.

Prepariamo un semplice sketch che stampa un banale messaggio attraverso la porta USB.

void setup() {
Serial.begin(115200);
Serial.print("Starting up..");
delay(1000);
}

void loop()
{
Serial.println("OK...I'm working...");
delay(1000);
}

Ora nella scelta della scheda utilizzate “Generic ESP8266” ed operate come fareste con un qualunque Arduino. Ora attivate il collegamento fra GPIO0 e massa, indipendentemente che abbiate usato un pulsante o un filo volante ed alimentate il sistema. A questo punto l’ESP si trova in modalità programmazione e potete compilare ed inviare lo sketch come su qualunque scheda Arduino. Se tutto è andato a buon fine sul monitor seriale (impostato a 115200 baud) verrà stampata la scritta “OK…I’m working…”.

Semplice vero? Bene non mi resta che lasciarvi con un video riassuntivo. Buona visione!

 




Salva