Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 


Progetti hardware
Basetta sperimentale per ESP01

Dati costruttivi della basetta sperimentale

Download dei file necessari per la realizzazione della basetta sperimentale



Informazioni di base

Come installate la IDE di Arduino

Configurazione di ESP01

Caricamento dei programmi

Le librerie necessarie



Programmi vari

Creare un Web server

Temperatura e umidità con
DHT11/DHT/21/DHT22


Controllo di 1/2 relè via WiFi

DHT11/DHT21/DHT22 + 1 relè

Una stazione meteorologica con BMP280

Ricevere la data e l'ora esatta

Una stazione meteorologica con OpenWeatherMap

Monitorare la qualità dell'aria con BMP680



Programmi con Telegram

Verifica l'apertura di uno/due vani

Controllo di due relè



Programmi con ThingSpeak




 
Programmi con in Db Firebase




Programmi con Mosquitto (MQTT)












Una basetta sperimentale per ESP01

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
ESP01


progrAdattatore seriale per ESP01

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.

ver1Immagine della seconda versione della basetta in formato 1:1



La basetta nella sua versione definitiva

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

I vantaggi che verranno spiegati dettagliatamente in seguito , sono principalmente questi:
  • non è mai necessario scollegare ESP01 o il programmatore dalla basetta durante i test;
  • il modulo può essere alimentato esternamente con una tensione compresa tra i 5 e i 9/10 volt;
  • sulla basetta stessa possono essere collegati nativamente (senza l'uso di ulteriori cavi) una vasta gamma di moduli;
  • la basetta può essere connessa contemporaneamente alla presta USB del computer e all'alimentazione esterna;
  • dopo aver caricato lo sketch, e possibile verificarne direttamente il funzionamento sul monitor seriale della IDE di Arduino.



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.

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

espdg

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.

i2c
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).

dc
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. 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)









Per contatti: info@ethicaldiy.org