Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 

Progetti hardware


ESP01

ESP01/01S è il "piccolo" della famiglia delle schede ESP, anche nelle dimensioni: infatti misura solo 25 x 14 mm. Ma non per questo difetta di potenza o di utilità.
Infatti  ha un processore da 80 MHz, 36 Kb di memoria RAM, e 1 Mb di memoria per i programmi. Nativamente si collega alle rete WiFi a 2,4 GHz e supporta i protocolli 802.11 b/g/n.
Possiede inoltre due porte digitali di input/output, GPIO0, e GPIO2.
Condivide tutti i programmi e sketch con la scheda NodeMCUESP8266, naturalmente quando non si usino più di due porte di input/output.


esp01
ESP01



Quanti moduli si possono collegare a un ESP01?
La risposta sembra scontata: avendo solo due porte di input/output, si possono collegare ad esso o due moduli digitali che utilizzino una sola porta, come il sensore di temperatura/umidità DHT11 o un relè tipo KY-019.
Ma la realtà, per nostra fortuna, è più articolata. Oltre che al fatto che esistono decine e decine di moduli che hanno queste caratteristiche, ci sono anche altre possibilità.
Ci sono per esempio dei moduli digitali per la misura della temperatura che si basano su 18B20 (KY-001 - HW-506), che possiedono all'interno un indirizzo univoco; quindi sulla stessa porta se ne possono collegare vari in parallelo, per misurare per esempio le temperature di vari locali adiacenti, lasciando comunque libera una seconda porta per ulteriori periferiche.
Inoltre ESP01 supporta anche il protocollo I2C: infatti GPIO0 corrisponde a SDA (data) e GPIO2 a SCL (clock). Perciò si potrebbe collegare in parallelo anche un certo numero di moduli, a patto che abbiano indirizzi interni diversi e nella memoria di ESP01 ci sia abbastanza spazio per le linee di programma e per le variabili utilizzate.
Spesso i moduli I2C svolgono anche delle funzioni complesse, quindi si possono strutturare dei programmi interessanti che restituiscono un ricco insieme di informazioni, quali una completa stazione meteorologica, i cui dati possono anche essere visualizzati su di un piccolo schermo OLED!

18b20
il sensore KY-001

bmp680BMP680
...............................
oled
il display Oled 128x64




Ha senso usare un ESP01 per dei programmi che funzionano localmente (non via WiFi)?




essiccatoreUn essiccatore solare
Da un punto di vista logico sembrerebbe inutile utilizzare un ESP01 per dei programmi che non sfruttano le potenzialità del WiFi, però ci sono dei casi che varrebbe la pena di valutare.
  • Immaginiamo di dover progettare un sistema abbastanza semplice, che abbia bisogno di un modulo di piccole dimensioni e di consumo irrisorio, perché alimentato a batteria o a celle solari, come per esempio un piccolo essiccatore per vegetali, per ottenere pomodorini o mele secche. In questo caso, sarebbe sufficiente un sensore di temperatura e un relè per comandare le ventole di raffreddamento. Se si ponesse l'essiccatore lontano da una rete WiFi, il suo uso sarebbe del tutto inutile, e complicherebbe notevolmente lo sketch.
  • Oppure dobbiamo testare un modulo, o una combinazione di più periferiche, di cui non siamo sicuri dell'esito finale. In questo caso potrebbe essere utile testare il programma nel modo più semplice possibile, e solo in un secondo tempo implementare la connessione WiFi. Per alcuni progetti abbiamo proceduto proprio in questo modo.

Entriamo nel merito...




progr_esp01


ESP01non possiede un connettore USB, quindi non può essere collegato direttamente al computer per ricevere la programmazione con la IDE di Arduino. Perciò  si può scegliere se usare un'interfaccia che permetta di connetterlo a una presa USB del computer (come quello mostrato in figura), oppure di collegarlo  a un Arduino di qualsiasi tipo per poter essere programmato attraverso di esso, seppure con qualche complessità in più.
E' opportuno collegare un piccolo switch alla schedina, per permettere alla ESP01 di entrare in modalità di programmazione (verrà spiegato diffusamente più avanti come procedere).
 Il modulo ESP01 è estremamente economico: da Ali Express si trova a meno di 3 euro; a 5,5 euro per cinque pezzi e il programmatore alla stessa cifra, tutti comprensivi di spedizione. Se si spende più di 10 euro in totale, il costo scende ulteriormente. Da Amazon cinque pezzi costano circa 13,5 euro, ma si ha il vantaggio di una consegna molto rapida.





Con una spesa veramente irrisoria si può acquistare una scheda come quella indicata nell'immagine, che permette di rilevare a distanza la temperatura e l'umidità di un luogo. E' sufficiente alimentarlo (a 3,3v!), caricare il programma, connetterlo alla rete WiFi, e il gioco è fatto!
L'unico problema di questa scheda è che il sensore di temperatura è alloggiato sotto la ESP01, quindi se essa si scaldasse leggermente, potrebbe falsare la lettura della temperatura.
Per evitare il problema è sufficiente spostare di qualche centimetro il sensore.
 

dht11_esp01
rele_esp01

Questa seconda scheda trasforma il nostro ESP01 in un attuatore, collegandolo a un relè. In questo modo si può comandare qualsiasi apparecchio che funzioni a una tensione e un assorbimento che non è compatibile con il microprocessore. E' possibile comandare una presa, una lampada, un condizionatore, una caldaia, una  stufa elettrica...

N.b.: tutte le schedine illustrate in questa pagina possono essere acquistate dai soliti fornitori, quali Amazon, Bangood, Ali Express o altri.



Piedinatura e programmazione di ESP01

In questa immagine si vede la scheda dall'alto, in cui sono indicati i suoi otto piedini e il loro utilizzo.

Verifichiamoli nel dettaglio la fila più a sinistra:
- GPI01 permette di trasmettere (TX) i dati durante la programmazione, per esempio controllando il funzionamento attraverso il monitor seriale
- CH_PD/EN raramente utilizzato. A volte viene collegato anch'esso ai 3,3v.
- RST esegue un reset hardware collegando questo piedino alla massa (GND) per un secondo circa.
- 3,3 V il pin di alimentazione della scheda. Attenzione NON alimentare con 5v, pena il danneggiamento del processore.

Ed ora la fila dei piedini posti a destra dell'immagine:
- GND il collegamento alla massa
- GPIO2 una delle porte di input/output. Nel protocollo I2C corrisponde a SCL/SCK (clock)
- GPIO0 l'altra porta di
input/output. Nel protocollo I2C corrisponde aSDA/SDI (data)
- GPIO3 la porta che durante la programmazione riceve i dati dal computer.

Abitualmente la ESP01 è in "operating mode", ovvero in modalità operativa. Per entrare in "programming mode" o "flashing mode", è necessario collegare il pin GPIO0 e GND, connettere la scheda al computer e mantenere il collegamento per qualche secondo, poi caricare il programma. Per tornare nella modalità operativa, disconnettere e riconnettere la scheda al computer (ovviamente senza collegare GPIO0 a GND).
Se non si usa la basetta sperimentale, il metodo migliore è quello di saldare un pulsante sull'adattatore seriale.
..
esp01_pinout
Piedinatura di ESP01


flashing_esp01
Per entrarre in modalità di programmazione, connettere GPIO0 a GND, collegare al computer e dopo un paio di secondi sconnettere GPIO0 da GND.



adatt
Il pulsante saldato sull'adattatore seriale per poter entrare in "programming mode". Guardando l'adattatore, si deve saldare il pulsante rispettivamente alla fila di sinistra dei connettori, rispettivamente il primo e il terzo partendo dall'alto.

Ecco il link a una pagina esterna al sito di EtichalDiy che mostra un ottimo video che illustrai primi passi per programmare il nostro ESP01, di cui ringrazio Emanuele Frisoni:
https://www.youtube.com/watch?v=_qDvhGHjTJ8





La basetta sperimentale per ESP01

Per semplificare i test dei programmi per ESP01, ho progettato una semplice basetta che permette di collegare direttamente un buon numero di  moduli digitali, come sensori, relè, ecc., e una serie di periferiche I2C, che  rendono i progetti decisamente vari e interessanti, portando alcuni vantaggi non secondari nel trasferimento dei programmi e nei test degli stessi, riducendone sensibilmente i tempi e i passaggi necessari.

Clicca qui per la pagina relativa alla basetta sperimentale

pcb
La basetta sperimentale in scala 1:1







Per contatti: info@ethicaldiy.org