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






 
Programmi con in Db Firebase





ESP01: controllare uno/due relè con Telegram

telegram
Usando Telegram, si possono controllare due relè da qualsiasi parte del mondo, in pochi secondi e gratuitamente!
Il precedente programma con l'apporto di Telegram permettva di ricevere sul proprio smartphone informazioni sullo stato di apertura/chiusura di porte e finestre della propria casa. Nei due programmi che verranno presentati su questa pagina ci si troverà nella situazione opposta: non di ricevere informazioni, quanto piuttosto di inviare dei segnali per accendere o spegnere dei relè e quindi di agire su apparecchi collegati alla rete elettrica, quali luci, condizionatori, caldaie, stufe o ventilatori... anche in questo caso dipende solamente dalla propria fantasia. Il primo progetto agirà su un solo relé; il secondo su due, grazie alle due porte disponibili su ESP01. Gli stessi programmi, trasportati su ESP8266 o ESP32, permetteranni di gestire quattro a nche più apparati contemporaneamente.
Perché usare Telegram? Telegram permette, oltre agli scambi di messaggi tra persone, anche di inviare dei segnali al proprio microcontroller, dal nostro account personale. E noi useremo proprio questa opportunità.

In questa pagina si trovano ben quattro programmi:
  • Il primo programma gestisce un unico relè, che può essere attivato/disattivato digitando alcuni comandi;
  • il secondo programma gestisce un singolo relè, che può essere attivato/disattivato sia digitando dei comandi che premendo alcuni pulsanti; il relè può anche essere attivato per un certo tempo;
  • Il terzo programma gestisce due relè, che possono essere attivati/disattivati sia indipendentemente che insieme, digitando alcuni comandi;
  • il quarto programma gestisce due relè, che possono essere attivati/disattivati sia indipendentemente che insieme,  sia con dei comandi che premendo dei pulsanti; i relè possono anche essere attivati per un certo tempo.




La configurazione di Telegram





Naturalmente, prima di tutto, è necessario avere installato Telegram, operazione che diamo per scontata. Questa prima operazione è comune a tutti i programmi che presenteremo. Aprire Telegram e inserisci nello spazio di ricerca "BotFather".




Si aprirà una finestra simile a questa:
Nello spazio inferiore, quello dedicato ai messaggi, digitare: "/newbot". Verrà chiesto il nome. In questo test., l'ho chiamato "door_control"

Ora dobbiamo inserire il nome per l'utente che utilizzerà questo bot. E' necessario che il nome sia formalmente esatto e libero. A volte sarà neceasario qualche tentativo. Ho usato "rele_24".


Poi si chiede di inserire un utente per questo bot. 
Ho scelto "RicxRele24Bot".





Abbiamo trovato un nome formalmente corretto e disponibile e il bot è stato creato.
Salvare  con cura il token API evidenziato nel riquadro rosso. Dovrà essere inserito nel programma per poter accedere al proprio bot.






botf L'icona di "BotFather"

rele24



Come inviare un messaggio al proprio Bot






Il prossimo passaggio è molto importante, non tralasciarlo! Altrimenti il progetto non funzionerà!


E' necessario inviare un messaggio al tuo Bot dal tuo account Telegram, prima che esso possa inviare a te i messaggi automatici.







Tornare alla schermata iniziale di telegram, e nel campo di ricerca, inserire il nome del proprio utente per il bot appena creato, dare invio e premere il tasto START.
 



init

Inserire il nome del proprio utente per il bot

***

st1


Come ottenere il proprio "user ID"



Per inviare del messaggi automatici  al proprio account Telegram, è necessario conoscere il proprio "user ID".
Nel proprio account Telegram, inserire "myidbot" nel campo di ricerca di Telegram.
Selezionare l'icona corrispondente a "IDBot".



Nella nuova finestra che si apre, digitare "/getid".
Salvare il proprio userId, servirà nella compilazione del programma.


myid
Digitare "myidbot"

id
Salvare il proprio "user ID"


Si possono trovare informazioni ancora più dettagliate sulla configurazione dei "bot" di Telegram alla seguente pagina (esterna al sito): https://randomnerdtutorials.com/esp8266-nodemcu-door-status-telegram/







Il problema dei comandi  per l'accensione/spegnimento delle periferiche




1 rele
Il modulo con un relè...





2rele
... e quello con due

Ho riscontrato che ci può essere un problema sui comandi relativi all'accensione e spegnimento delle periferiche. Abitualmente un relè o un led si attivano/accendono quando la porta viene portata a livello "HIGH" e disattivano/spengono quando essa ritorna a livello "LOW", e questo vale anche per la nostra basetta sperimentale.
Però ho notato che utilizzando il modulo commerciale con un relè (immagine in alto a sinistra), tutto funziona alla rovescia, per cui quando si dà il comando di accensione, si spegne il led o il relè, e quando si invia il comando di spegnimento, esso si attiva!

Questo comportamento del programma non è corretto, per cui ho inserito una routine che risolve il problema in modo semplice. All'inizio di ogni programma si troverà la variabile "changeVal": se ha valore "1", i relè si accenderanno se "relayon" è uguale a "1"(ovvero HIGH); se il valore di "changeVal" è un qualsiasi valore numerico intero diveso da "1", per esempio "0"), i relè si attiveranno quando "relayon" prende il valore "LOW"
          ***
Lo stesso avviene con i programmi che attivano due relè; semplicemente le righe da attivare/disattivare saranno quattro invece che due.

changeVal 
La variabile numerica changeVal

Per la gestione di un solo relè:

relay1H
Se changeVal = 1 il relè si attiva se il suo valore è "HIGH";
change0
se changeVal è diverso da 1, il relè si attiva se il suo valore è "LOW".

e per la gestione di due relè:

changeval2

ecco la routine completa, simile alla precedente, ma aggiornata per gestire due relè.

Di dalault il valore di  "changeVal "
è posto a "1".




Il primo progetto




Il primo progetto permette di controllare un relè, inviando un segnale dal nostro account di Telegram. Dopo aver creato un "bot" adeguato, potremo inviare un messaggio che accenderà o spegnerà il relè - che per i test potrà essere sostituito da un led - e quindi potremo controllare una nostra periferica da qualunque luogo, per mezzo di Internet . Il vantaggio di questa applicazione che non invieremo semplicemente un segnale, ma dopo alcuni secondi riceveremo anche la segnalazione che il comando è stato eseguito!
Nota: la reattività di Telegram non è particolarmente brillante. In base alla fascia oraria, potremmo attendere che il comando venga eseguito da qualche secondo fino a un minuto.
Ci vuole pazienza...

rele
Un relè KY-019



Lo schema elettrico



rele1
Questo è lo schema elettrico per il collegamento tra ESP01 e il relè KY-019, che d si comporta come un interruttore, o meglio, come un deviatore, avendo un filo comune,  un "nc" (normalmente chiuso) e un terzo "na" (normalmente aperto). Nello schema, per semplicità ne ho considerato solo una coppia. Il relè ha tre piedini: quello di segnale di controllo "S", il negativo "-" e il positivo "+". ESP01 deve essere alimentato a 3,3v. Ho notato che il relè non si eccita a questa tensione, quindi ho preferito di alimentarlo a +5v. Nei miei test, anche prolungati, questo schema non ha dato alcun problema all'ESP01.



Questo invece è lo stesso schema di collegamento, però adattato  per la nostra  basetta sperimentale. Come si vede, il cavo di segnale, contrassegnato con "S", andrà collegato sullo zoccolo "DG2", relato alla porta di ingresso "GPIO0" di ESP01.
Se si vuole semplicemente testare il programma senza utilizzare il relè, si potrà ponticellare il jumper "JP4", nascoosto dal relè, e il led "Led3"si accenderà/spegnerà in base ai messaggi inviati da Telegram.

1rele
Il collegamento del relè sulla scheda in formato 1:1.
Per semplicità il relè appare in orizzontale.



telepcb1
Il pulsante KY-004 è evidenziato nel riquadro colorato.

Ed infine, il collegamento sulla scheda sperimentale "reale". Il relè è inserito sullo zoccolo "DG1" (connesso alla porta GPIO0 di ESP01)



Il programma



Come prima cosa, è necessario verificare se si sono installate tutte le librerie necessarie. Verificando o lanciando la compilazione del programma, verranno visualizzate quelle eventualmente mancanti. In questo caso, provare prima di tutto a scaricarle attraverso la Ide di Arduino. Nel caso non si trovassero tutte, scaricarle dalla finestra che appare sulla destra.
Nel caso di dubbio, controllare la pagina relativa alla gestione delle librerie

ESP8266WiFi.h
UniversalTelegramBot.h
WiFiClientSecure.h




bot10

bot_id

I dati da inserire nel programma.

Nel programma è necessario inserire alcune informazioni:le prime sono comuni ai programmi presentati in queste pagine: ovvero il nome della rete WiFi e la password relativa.
Ma sono necessarie anche altre due informazioni, che abbiamo salvato nella configurazione di Telegram, ovvero il token API (riquadro verde) e lo userID (riquadro blu).
Più avanti nel programma, inserire il proprio ID(riquadro violetto).



I comandi disponibili
I comandi che si possono utlilizzare sono i seguenti:
/start         per avviare il collegamento;
/status      per verificare lo stato della periferica;
/ledon - relayon     per accendere il led/relè
/ledoff  - relayoff    per spegne il led/relè

com1

Il test del programma su Telegram

Per attivare una periferica, collegheremo il relè alla porta digitale GPIO0 di ESP01,
corrispondente allo zoccolo "DG2".

Dopo aver caricato il programma,in pochi secondi ESP01 si connetterà alla nostra rete WiFi. In questo caso, non è necessario di registrare l'indirizzo IP.

Digitando "/start" o premendo il tasto, se si è appena attivata la chat, viene mostrata la lista dei comandi disponibili.

Digitando /"ledon" il relè si attiva (o si accende il led) e appare la conferma dell'attivazione. Digitando "/ledoff"  di disattiva il relè o si spegne il led e appare la scritta di conerma dello spegnimento.


test_1




Clicca qui per visualizzare il programma

Clicca qui per scaricare il programma in formato ".zip"

Link al video di Brian Lough che spiega nel dettaglio questo primo programma:

https://www.youtube.com/watch?v=-IC-Z78aTOs






Il secondo progetto




Questo secondo progetto ha molte similitudini con quello appena proposto, ma ho pensato di inserirlo, proprio per le sue interessanti variazioni, ovvero la possibilità di attivare/disattivare il relè premendo un pulsante, invece che scrivere un comando, e la possibilità di effettuare un'attivazione per un tempo definito.
La disposizione dei componenti sulla basetta è la stessa a quella proposta per il primo programma; è stata  pure utilizzata la stessa configurazione del "bot" di Telegram.



Rispetto al primo programma, è necessario installare, oltre a quelle già indicate, una libreria ulteriore: ArduinoJson.h.
Nota: relativamente a questa libreria, è necessario installare la versione 5.x.x, perchè non funziona con la versione 6.x.x.
Nel caso di dubbio, controllare la pagina relativa alla gestione delle librerie

ESP8266WiFi.h
UniversalTelegramBot.h
WiFiClientSecure.h
ArduinoJson.h




bot10
E' necessario inserire il nome della proria rete Wifi e la sua password.
Inoltre è richiesto l'inserimento del token Api ottenuto durante la configurazione del "bot" di Telegram.



I comandi disponibili:
anche in questo programma i comandi potrebbero essere lanciati manualmente, ma è molto più pratico utilizzare i punsanti.
Quando si preme "/start", appaiono due opzioni: "/options", per attivare la tastiera virtuale di telegram, che mostra cinque pulsanti, e "/status", che in qualunque momento mostra lo stato del relè.


led1c
I due comandi che appaiono all'avvio del programma



Nel riquadro superiore si sono mostrate le opzioni disponibili all'avvio; digitando "/options", appaiono cinque pulsanti.
"ON"         attiva il relè
"OFF"       disattiva il relè
"15 Min."  attiva il relè per 15 minuti
"30 Min"   attiva il relè per 30 minuti
"1 ora"      attiva il relè per un ora

Nota: anche quando si è attivato il relè a tempo, è sempre possibile disattivarlo con il pulsante "OFF".


com2
I comandi disponibili



com3a
Se si preme il tasto "ON" (immagine a sinistra), dopo qualche secondo verrà attivato il relè; quando si preme il tasto "OFF", simmetri-camente, il relè si spegnerà. Appariranno automaticamente le comunicazioni di accensione/spegnimento. Tuttavia, se si desidera rivedere autonomamente lo stato del relè, è sufficiente digitare "/status" e apparirà il messaggio che ne indica lo stato attuale.
com4a



4b

Con questo programma si  può anche gestire la durata dell'accensione. In questo caso si sono definiti tre periodi, che possono essere facilmente modificati. All'avvio, appare un messaggio automatico che indica l'accensione, mentre per vedere se e quando è il tempo è terminato, è necessario digitare "/status". Naturalmente premendo il tasto "OFF", si può terminare l'accensione del relè in qualsiasi momento.
4d



Come si vede nell'immagine del riquadro superiore, ci sono due file di pulsanti, la prima ne contiene due, la seconda tre. Naturalmente è possibile inserirne di più per ogni riga, e aumentare anche il numero di righe, però senza esagerare, perché dovranno essere visualizzate sullo schermo di un telefonino.
Vediamo insieme le linee di programma che permettono di ottenere questa grafica accattivante.

pulsPurtroppo l'immagine è stata ridotta per rientrare nella pagina, ma spero sia comunque intellegibile.
La prima riga contiene le informazioni relative ai due pulsanti. I loro nomi appaiono nei riquadri blu, mentre le variabili corrispondenti appaiono in quelli rossi. Come si vede, nome e variabile in questo caso corrispondono:
"ON" e "OFF".
La seconda riga genererà tre pulsanti. quindi si può capire istintivamente come procedere se si volesse variare il numero dei pulsanti e delle righe. In questa seconda linea il nome del pulsante e la variabile sono diversi, seppure siano legati logicamente. Per esempio, il primo punsante ha nome "15 Min.", mentre la variabile corrispondente è "TIME15". E' evidente che se creassimo una variante "Time5", corrisponderà a un intervallo di attivazione del relè di cinque minuti; una variabile "TIME120" produrrà un intervallo di due ore, e così via.
E' necessario essere assolutamente precisi nella composizione delle righe, pena errori di compilazione o malfunzionamenti del programma.

Ma le variabili devono essere interpretate dal programma, e quindi dovranno essere riportate in altre linee dello sketch:

puls2













In questa routine verifichiamo ciò che accade quando viene passata una variabile che inizia con "TIME", per esempio "TIME15": nella seconda linea, "TIME" viene sostituito con nulla, ovvero cancellato; per cui viene passata solo l'informazione numerica. Perciò riamarrà "15", che verrà moltiplicato per 1000 (il tempo si calcola in millisecondi, perciò un secondo) e ancora per 60 (quanti secondi ci sono in un minuto. Perciò 15 minuti, come desideravamo!

Clicca qui per visualizzare il programma

Clicca qui per scaricarlo in formato ".zip"







Il terzo progetto




Il terzo programma è simile al primo, per cui molte delle informazioni sono comuni; semplicemente si potrà agire indipendentemente su due relè, raddoppiando le possibilità di intervento.
Come nel primo programma, l'attivazione/disattivazione del programma si otterrà digitando una serie di comandi da tastiera.


2rele
Un modulo commerciale



Lo schema elettrico



2 re

Ecco lo schema elettrico generale per il collegamento di due relè a un ESP01. Il primo relè sarà collegato alla porta digitale GPIO2 /DG1); il secondo relè alla porta  GPIO0.(DG2).



Lo schema elettrico del collegamento dei due relè sulla basetta sperimentale. Il collegamento del secondo relè è del tutto simmetrico al primo e si collega su DG2.
Come per il primo programma, per i test i due relè possono essere sostituiti dai led presenti sulla basetta. E' sufficiente ponticellare i jumper  "JP3" e "JP4" per poterli vedere accendere/spegnere in base ai comandi lanciati da Telegram.
P.s.: i due jumper sono coperti dalle immagini dei due relè.

pcb2



tele2pcb
La basetta sperimentale con i due relè.

Ed infine la foto del collegamento sulla basetta effettiva. Si vedono i due jumper LP3 e JP4 sono stati ponticellati. In questo modo, quando arriva l'impulso, si attivano contemporaneamente i led e i relè.
Naturalmente per i test si possono usare per praticità solo i led, che funzionano perfettamente anche a +3,3v.



Per quel che riguarda la descrizione del programma, vedere le informazioni (quali anche le librerie necessarie) relative al primo programma.




Ecco la lista dei comandi disponibili:
/ledon     avvia entrambi i led/relè
/ledoff     spegne entrambi i led/relè
/led1on   avvia il primo led/relè
/led1off   spegne il primo led/relè
/led2on   avvia il secondo led/relè
/led2off   spegne il secondo led/relè
/status    mostra lo stato dei led/relè

com3
la routine che mostra i comandi



Il test del programma su Telegram



Ecco il test dei comandi possibili con questo programma.

Il primo comando da digitare è "/start", oppure si può cliccare sul tasto "avvio" se siamo entrati per la prima volta nella chat, oppure se abbiamo cancellato la cronologia.

"/ledon" avvia entrambi i relé (o accende i due led), ed appaiono dopo pochi secondi i messaggi di conferma.

"/ledoff" spegne /disattiva in rapida sequenza le due periferiche, e appare la conferma dell'avvenuta operazione.

"/led1on" accende il led o attiava il relè collegato sullo zoccolo "DG1" (porta "GPIO2"). Segue la conferma

"/led1off" spegne/disattiva la periferica connessa a GPIO2.

"/led2on" e "/led2off" eseguono le stesse operazioni sulla periferica collegata alla porta GPIO0, stampando ovviamente la conferma dell'avvenuta operazione.

"/status" mostra in ogni momento lo stato di entrambi i led/relè.

test3



Clicca qui per visualizzare il programma

Clicca qui per scaricarlo in formato ".zip"




Il quarto progetto




Il quarto progetto dal punto di vistra dello schema elettrico è del tutto identico a quello precedente. Due relè verranno inseriti sulla basetta sugli zoccoli DG1 e DG2; se invece si connetteranno direttamente al nostro ESP01, lo schema sarà identico a quello del progetto precedente.
Dal punto di vista del programma invece, è simile a quello presentato nel secondo progetto; semplicemente ci saranno più pulsanti, per poter gestire entrambi i relè.
Anche per le librerie, vale la stessa regola: sono le stesse necessarie per il secondo programma.
Come per i precedenti progetti, è possibile utilizzare lo stesso "bot" anche per questo programma; naturalmente in questo caso si potrà usare un solo sketch per volta.
Questo è il più completo dei programmi, in quanto usa due relè che possono essere attivati/disattivati sia singolarmente che insieme e anche essere attivati a tempo e disattivati automaticamente allo scadere del periodo prefissato.




led1c
I primi comandi da usare sono:
"/start"        per avviare il programma;
"/options"  per accedere alla tastiera virtuale;
"/status"     per verificare lo stato dei relè/led.




Dopo aver digitato "/start" e poi "/options", appare in tutta la sua bellezza una tastiera con ben 12 tasti, con i quali si possono ottenere tutte le combinazioni dei due relè.

key1



2b

I comandi, piuttosto intuitivi, si dividono in due gruppi, suddivisi  su due file:
I primi due pulsanti, in alto a sinistra,rispettivamente "ON" e "OFF", accendono e spengono contemporaneamente entrambi i relè; di seguito, "ON_1" e "OFF_1", accendono o spengono il primo relè, quello che va su "DG1" relativo alla porta  "GPIO2".
L'ultimo gruppo della prima fila, "ON_2" e "OFF_2", accendono/spengono il secondo relè, quello che va sullo zoccolo "DG2" e corrisponde alla porta "GPIO0" dell'ESP01.
Il primo gruppo di tre pulsanti della seconda fila, "15_1", "30_1", "60_1", attivano il primo relè rispettivamente per 15, 30 o 60 minuti. Il secondo gruppo, simmetricamente, attiva il secondo relè per 45, 90 o 120 minuti.
Lo spegnimento dei relè avviena automaticamente, allo scadere del tempo prefissato. Naturalmente è sempre possibile disattivarli manualmente, prima del termine, premendo "OFF_1", "OFF_2" oppure "OFF".

Nota 1: si ricorda che c'è una certo ritardo tra la pressione di un pulsante e il suo effetto, che varia da pochi secondi a quasi un minuto, in base al traffico verso Telegram. Normalmente è comunque accettabile, avendo effetto da qualsiasi luogo del mondo!
Nota 2: se si desidera variare la programmazione della durata dell'accensione a tempo dei relè, vedere le istruzioni date per il secondo programma. Semplicemente la riga di istruzioni sarà un pò più lunga, perché ci saranno le istruzioni per gestire sei tasti invece di tre.





Clicca qui per visualizzare il programma

Clicca qui per scaricarlo in formato ".zip"









Ho preso lo spunto (e molto di più!) da un video e da un repository github di Brian Lough, verso cui sono grato, pur non conoscendolo. Ecco i link:
https://github.com/witnessmenow/Universal-Arduino-Telegram-Bot/tree/master/examples/ESP8266   per il primo e terzo progetto, tratto da "FlashLED"  
https://www.youtube.com/watch?v=-IC-Z78aTOs   8266 con telegram      relativo al secondo e quarto progetto





Per contatti: info@ethicaldiy.org