ESP01
è un modulo eccellente, che in pochissimi centimetri
quadrati contiene tutto il necessario per agganciarsi alla
propria rete WiFi, e da essa collegarsi con il mondo intero,
permettertedo di inviare e ricevere dati da vari sensori e
attuatori. Per precise scelte costruttive che sono assolutamente corrette e condivisibili, allo scopo di mantenere una spinta miniutizzazione e un costo modesto, manca di alcune facilitazioni, presenti nei "fratelli maggiori" ESP8266 e ESP32. Ovvero non presenta l'interfaccia seriale che permetterebbe di collegarlo direttamente alla presa USB del proprio computer per la programmazione e richiede pertanto un interfaccia esterna. Inoltre non possiede l'ingresso "VIN": non è inserito a bordo un regolatore di tensione, ma deve essere necessariamente alimentato a 3,3v, pena il danneggiamento del modulo stesso. Questo non è un problema quando si deve semplicemente caricare un programma preconfezionato con pochi componenti accessori; mentre rende lento e macchinoso il processo qualora si sta costruendo o modificando un programma che necessita di essere testato più volte durante la programmazione o il debugging. Infatti bisogna collegare ESP01 al programmatore, premere un pulsante (non integrato nel programmatore stesso e che quindi bisogna saldare su di esso); tenendo premuto il pulsante inserire il programmatore nella presa USB del computer e infine caricare il programma. Se poi lo sketch prevede l'uso di componenti, per esempio un DHT11, non è possibile visualizzare immediatamente i dati sul monitor seriale, perché il programmatore non prevede il collegamento esterno ad alcun modulo. Perciò si deve scollegare ESP01, collegarlo alla basetta con i componenti, alimentarlo e verificare "alla cieca" se tutto funziona. In caso negativo è necessario ripetere il processo più e più volte (provato per esperienza diretta). |
ESP01 Adattatore seriale per ESP01 |
La
licenza |
I
file (png, pdf, gerber, ecc.) necessari per la realizzazione
di questa basetta didattica e sperimentale, sono rilasciati sotto licenza Creative Common 4.0. Ecco una piccola sintesi della licenza, che non si sostitiusce ad essa. Sei tenuto a leggerla nel suo formato originale ed attenerti esclusivamente ad essa. Sei libero di copiare, utilizzare, modificare questo materiale, sotto la stessa licenza e come l'originale. Devi però mantenere l'attribuzione al proprietario (Riccardo Grosso), fornire il collegamento alla licenza e indicare se sono state effettuate delle modifiche, senza suggerire che il licenziante approvi te o l'uso che ne fai. Non sono date alcune garanzie rispetto al progetto qui condiviso. Leggi qui il contenuto della licenza. |
Una
soluzione personale al problema: costruire una basetta ad
hoc. |
Ho
pensato quindi di progettare una basetta sperimentale e
didattica per ESP01, sulla falsariga di quella costruita per
Arduino Nano. Come sempre ho iniziato "mettendoci le mani":
ho eseguito con un programma grafico alcuni modelli di
basetta, realizzandola artigianalmente; verificatone il
funzionamento, ho pensato a una realizzazioni più
professionale, ma anche alla portata di coloro che non sono
molto esperti nell'uso di seghetti, acidi e trapani. |
Immagine
della seconda versione della basetta in formato 1:1 |
La
basetta nella sua versione definitiva |
La
basetta terza versione, nelle reali dimensioni 1:1
|
Ed
ecco la basetta nel formato definitivo realizzata con il
programma "Easy Eda". La disposizione dei componenti si è mantenuta abbastanza simile alla versione "artigianale", seppure con alcuni miglioramenti. Questa basetta è stata realizzata sotto licenza "Creative common 4.0", per cui è possibile copiarla, modificarla, realizzarla e distribuirla liberamente. Clicca qui per andare alla pagina relativa all'assemblaggio dei componenti sulla scheda. |
I
vantaggi che verranno spiegati dettagliatamente in seguito ,
sono principalmente questi:
|
Ecco
il rendering della basetta sperimentale per ESP01 assemblata
con i componenti... Come si vede, nell'alloggiamento per l'ESP01, è necessario saldare superficialmente la schedina per ridurre la tensione a 3,3v. |
...e
con l'adattatore seriale ed ESP01 inseriti sulla basetta
stessa. Entrambe sono in formato reale. |
Lo
schema elettrico |
Questo
è lo schema elettrico del progetto della basetta
sperimentale per ESP01.
Clicca qui per scaricarla in formato "pdf" |
L'utilizzo della basetta nel dettaglio |
Il
collegamento di ESP01 e del modulo seriale sulla basetta Sulla sinistra della basetta, nel riquadro verde chiaro verrà inserito l'adattatore seriale che ho utilizzato per questo progetto. Davanti ad esso c'è un foro, a cui si potrà avvitare un supporto per l'adattatore stesso, che potrà essere connesso stabilmente alla basetta. Sulla destra verrà inserito l'ESP01 (riquadro rosso) da programmare e da testare.In alto, nel riquadro rosa, è saldato un pulsante, che servirà per far entrare l'ESP01 nella modalità di programmazione. In basso (riquadro azzurro), sono inseriti una serie di jumper J1, J2, J3 che servono per passare dalla modalità programmazione a quella di esecuzione del programma e per cambiare la modalità di alimentazione di ESP01, passando da quella che si riceve dall'adattatore seriale, a quella esterna, che rende la nostra basetta del tutto indipendente dal computer che l'ha programmata. |
I
moduli necessari per la programmazione
|
Dettaglio
della procedura di programmazione e di test Prima di tutto, è necessario comprendere a fondo l'uso dei jumper del riquadro denominato "Power mode". Sono presenti tre file da cinque pin maschi ciascuno. Utilizzeremo una serie di cinque ponticelli mobili, del tipo di quelli che si usano per le scelte sulle schede madri dei PC (che potremmo incollare tra loro, per utilizzarli in un unico blocco), per connettere J2 (ESP01), con J1 (l'adattatore seriale e l'alimentazione da PC), oppure collegheremo J2 con J3, ovvero all'alimentazione esterna e ci isoleremo del tutto dal nostro PC. A questo punto, dopo aver inserito l'ESP01 gli eventuali moduli digitali o I2C e l'adattatore seriale alla basetta, e collegato quest'ultimo al cavo USB del nostro computer, potremo finalmente iniziare. Tenendo premuto il tasto "progr. mode" (BT1), connettiamo i 5 piedini di J1 rispettivamente ai 5 piedini corrispondenti di J2, alimentando il sistema. Dopo un paio di secondi, lasciare la pressione del tasto BT1, e inviamo il programma all'ESP01 attraverso la IDE di Arduino, dopo averlo opportunamente settato per il nostro modulo. Vedremo avanzare la percentuale di trasferimento del programma e quando arriverà al 100%, apparirà la scritta "Leaving... Hard resetting via RTS pin...". Ora sarà necessario resettare l'ESP01 per lanciare il programma. Per fare ciò, scollegare per un paio di secondi i jumper del "power mode" e ricollegarli nella stessa sequenza. Ora se lo desideriamo, potremmo aprire il monitor seriale (abitualmente settato a 115.200 bts) per verificare il funzionamento dello sketch, nel caso sia previsto dal programma, per esempio verificando la temperatura e l'umidità registrata da un sensore DHT11. Questa opzione è impossibile se colleghiamo direttamente l'ESP01 all'adattatore seriale, perché non permette il collegamento con i vari moduli accessori. Se il risultato non è quello che ci saremmo aspettati, potremo modificare il programma e ripetere la procedura, fino a quando risponderà alle nostre aspettative. A questo punto, potremo cambiare il settaggio del "power mode", connettendo J2 (il nostro ESP01) a J3 (l'alimentazione esterna), naturalmente se avremo collegato la nostra basetta a un alimentatore esterno attraverso al connettore standard PW1, con un'alimentazione compresa tra i 6 e i 9/10 volt. Se fosse assolutamente necessario, potremo spostare JP1 e/o JP2 verso i +5v, tenendo conto che questa tensione potrebbe danneggiare ESP01. A questo punto, il nostro sistema è del tutto indipendente dal Pc che l'ha programmato e alimentato, pur lasciando collegato il cavetto USB all'adattatore seriale. In questo modo potremmo eseguire i nostri test senza scollegare e spostare continuamente i nostri componenti. Sembrerebbe una procedura complessa, ma si esegue in pochi secondi. Un video apposito illustrerà la procedura passo passo. |
Video
esplicativo per la programmazione del modulo |
|
Le
porte di ingresso per moduli digitali:
ESP01
non ha porte analogiche. Sulla basetta sono stati inseriti
tre zoccoli per moduli digitali. DG1 e DG2 hanno ingressi
simmetrici, che però si collegano su due porte diverse di
ESP01: rispettivamente GPIO2 (DG1) e GPIO0 (DG2). Pertanto
si possono collegare contemporaneamente due moduli, che non
vanno in conflitto tra loro; per esempio due relè KY-019,
oppure un relè e un DHT11, ecc.; naturalmente questi sono
solo esempi. DG3 invece è uno zoccolo con una diversa
disposizione dei piedini, e si connette su GPIO0, quindi non
può essere usato contemporaneamente a DG2, perché entrambi
sono collegati sulla stessa porta. Su DG3 si può connettere,
per esempio, un sensore PIR SR-501. |
Le porte per moduli digitali |
Sotto
lo zoccolo DG1, si vede una resistenza (R2), un led (Led2) e
un jumper (JP3). Il led può essere collegato, inserendo un
ponticello che cortocircuita i contatti di JP3, alla porta
GPIO2 dello zoccolo DG1. In questo caso, quando GPIO2 è
"high", si accende il led; viceversa quando è "low"il led si
spegne. Questo serve per simulare, per esempio, la presenza
di un relè sullo zoccolo e la verifica del suo
funzionamento. Un circuito analogo è connesso allo zoccolo
DG3. JP2 è un jumper e viene usato come un deviatore, che permette di alimentare contemporaneamente DG1, DG2, DG3 a +3,3v oppure a + 5v. Nei test mi sono reso conto che i relè non funzionano correttamente se alimentati a 3,3v, per cui ho predisposto anche l'alimentazione a +5v, ed ho verificato che non provocano danni a ESP01, neppure se usati per tempi lunghi. Nota 1: in ogni caso usare prudenza; l'alimentazione a +5v è sconsigliata e la useremo sotto la nostra responsabilità. Nota 2: i +5v sono disponibili sulla basetta solamente se essa è connessa a un alimentatore esterno. Nota 3: puoi consultare una lista più esaustiva dei moduli digitali che si possono collegare a questa basetta, cliccando qui. |
Le
porte di ingresso per i moduli I2C Se le due porte di ESP01 supportassero solo moduli digitali, non ci sarebbe molto da sperimentare; le combinazioni sarebbero abbastanza limitate: o due moduli digitali che usano una singola porta, o uno che le utilizza entrambe. Fortunatamente ESP01 permette anche di utilizzare periferiche che seguono il protocollo I2C. Teoricamente si potrebbero collegare fino a 128 moduli in parallelo sullo stesso bus! Infatti con un indirizzamento a 7 bit si potrebbero indirizzare 128 periferiche. Naturalmente ci sono dei limiti dovuti alla corrente erogata, alle dimensioni dei programmi e delle variabili, allo spazio necessario... però non è raro collegare tre o più moduli a un singolo ESP01. Proprio per questo motivo ho predisposto tre zoccoli per questo protocollo: I2C1, I2C2, I2C3. La disposizione dei pin è diverso per ognuno di essi, in modo da poter gestire una buona gamma di periferiche. Inoltre i moduli che utilizzano questo protocollo in genere forniscono delle informazioni piu complesse dei semplici sensori digitali. Lo zoccolo I2C1 può accogliere un sensore SGP30, che controlla la qualità dell'aria; su I2C2 si possono collegare svariati moduli, tra cui un BMP280; su I2C3 su possono inserire dei display OLED SSD1306, da 64x32 pixel oppure 128x64 pixel. |
Gli
zoccoli per moduli I2C
|
JP1
permette di alimentare questi moduli a +3v o a +5v. Valgono
le stesse note e cautele richieste per i moduli digitali.
Normalmente le periferiche I2C funzionano perfettamente a
+3,3v. Nota 1: puoi consultare una lista più esaustiva dei moduli I2C che si possono collegare a questa basetta, cliccando qui. Nota 2: naturalmente si potrebbero collegare altre periferiche I2C che non hanno la piedinatura prevista per questi zoccoli, utilizzando un cavetto a quattro poli seguendo la giusta sequenza di collegamento. Come si potrebbero collegare ulteriori periferiche I2C alla basetta inserendo anche in questo caso un cavetto su DG1/DG2, sapendo che GPIO0 corrisponde a SDA, mentre GPIO2 equivale a SCL/SCK. |
L'alimentazione
della basetta sperimentale La basetta sperimentale, durante la fase di programmazione, verrà alimentata attraverso l'adattatore seriale, connesso al nostro PC, quando quando i jumper di J2 sono collegati con quelli di J1. Naturalmente anche dopo la progarmmazione di ESP01 si potrà continuare in questo modo, ma si può passare ancha a un funzionamento autonomo, quando si ha la necessità di spostarsi lontano dal computer o per altri motivi, collegando i jumper di J2 con quelli di J3 (vedi la sezione della programmazione). |
Iniziamo
l'analisi con ordine. Il semiconduttore U3 (riquadro bianco)
è un L7805, che riduce la tensione in ingresso a +5v; mentre
quello indicato nel riquadro violetto è una piccola scheda
che riduce la tensione a +3v, che verrà saldata
superficialmente sulla basetta. Verificare
attentamente come posizionarlo sulla pagina dei dati
costruttivi. Quindi in questo modo riusciamo ad avere
le due tensioni necessarie per la nostra scheda. Su di essa
ci sono due ingressi di tensioni esterne: la prima, "PW1"
(riquadro rosa)ha un connettore coassiale standard, a cui si
può collegare un alimentatore che fornisca una tensione
compresa tra +6 e +9/10 volt; mentre PW2 (riquadro violetto)
accetta solamente +5v (per esempio quella che può fornire un
alimentatore di telefonino). I due condensatori e il diodo
(riquadro verdino), sono legati a L7805, per stabilizzare la
tensione ed evitare flussi errati. Il led (riquadro
giallino) si accende per indicare che la scheda è
alimentata. I connettori maschi denominati "power mode"
(riquadro rosso), come già indicato stabiliscono se ESP01
collegato a J2, verrà collegato alla tensione (e ai dati)
prelevati dal PC attraverso l'adattatore seriale,
connettendoli a J1, oppure all'alimentazione esterna
abbinandolo a J3, affrancandolo completamente
dall'adattatore seriale e quindi dal PC. |
I
dati costruttivi e il download del progetto e dei file
Gerber Clicca qui per la
pagina relativa all'assemblaggio della basetta
sperimentale
Clicca qui per il
download del progetto e dei file Gerber (per la
costruzione o l'acquisto della basetta sperimentale)
Nota:
questa basetta è stata rilasciatasono con
licenza Creative Common 4.0
|