Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 


Progetti hardware

Basetta sperimentale per ESP8266

Assemblare la basetta sperimentale

Download dei dati necessari per la realizzazione della basetta sperimentale



Informazioni di base:

- Come installare la IDE di Arduino
- Configurazione e piedinatura
- Caricamento dei programmi
- Come caricare le librerie necessarie



Programmi vari

DHT11/DHT21/DHT22 e RELE'
- Temp. e umidità con un DHT11/21/22
- Temp. e umidità con due DHT11/21/22
- Controllo du un relè con DHT11/21/22


ESP8266 e Bluetooth
- controllo di più led e relè via Bluetooth
- controllo di un led a tre colori
- controllo vocale di più led/relè

Web server e ora esatta
- creare  più web server (3)
- ricevere data e ora esatta (2)

Controllare dei relè via WiFi
- controllo di 1/2/4/5 relè via WiFi (3)

Stazione meteorologica/qualità dell'aria
- staz. meteorologica con BMP280 (3)
- staz. meteorologica con BME280
- staz. meteorol. con OpenWeatherMap
- qualità dell'aria con BME680
- qualità dell'aria con SGP30




Programmi con Telegram

Verificare l'apertura di uno o più porte

Controllo di uno o più relè



Programmi con ThingSpeak

Una stazione meteorologica con BMP680

Monitorare la qualità dell'aria con GSP30



Programmi con il DB Firebase

Gestire alcuni led/relè

Gestire led/relè con Mit App Inventor 2



Programmi con MQTT (Mosquitto)

Inviare /ricevere dati per mezzo di MQTT



Programmi con scheda Bluetooth

Controllo led/relè via terminale

Controllo led/relè con switch

Controllo cromatico di un led

Controllo a mezzo vocale



Programmi con LittleFS





Link utili

Visualizzazione di link utili per ESPxxx





 















ESP8266 - ESP12E
Programmi per stazioni meteorologiche e monitoraggio della qualità dell'aria

I programmi presenti su questa pagina usano tutti dei sensori con lo stesso scopo, sebbene con caratteristiche leggermente diverse: la creazione di una stazione meteorologica e/o il monitoraggio della qualità dell'aria.

BME680
BMP/BME380



I programmi e le informazioni presenti in questa sezione:






La trasposizione dei programmi con protocollo I2C per ESP01 a ESP8266 (ESP12E)





In questa pagina troveremo una serie di programmi scritti per ESP01, che montando lo stesso processore di ESP8266, sono perfettamente compatibili. Sono forzatamente programmi semplici, perchè ESP01 ha solo due porte che possiamo sfruttare, ovvero GPIO0 e GPIO2, come si può vedere il questo programma:

gpio1

In questa porzione di programma si vede la dichiarazione delle porte usate per i relè, ovvero GPIO0 per RELAY1 e GPIO2 per RELAY2. Queste porte funzionano perfettamente anche su ESP8266, quindi non è necessario cambiare nulla nel programma, anche se potremmo sempre scegliere altre porte disponibili.

Purtroppo non sempre tutto è così semplice. ESP01 supporta anche il protocollo I2C, e questo è molto utile, perchè permette di collegare più periferiche che usano questo stesso protocollo sulle medesime porte, per esempio un BMP280 e un display SSD1306.
SDA (data) su ESP01 corrisponde a GPIO0, mentre SCL (clock) corrisponde a GPIO2, e come si vede nell'immagine a destra si vedono le due istruzioni necessarie per configurare correttamente una periferica, forzando l'uso delle due porte necessarie.


01i2c

Ma su ESP8266 le porte corrispondenti per il protocollo I2C sono diverse: GPIO5 per SCL e GPIO4 per SDA, che abitualmente sono già configurate nella libreria Adafruit_BMP280.h. Per cui il programma, per funzionare su ESP8266 usa la seguente sintassi:
Come si nota, non è necessario dichiarare le porte in Wire.begin() e manca l'istruzione Wire.pins()


i2c8266














Una stazione meteorologica con BMP280




BMP280 è un piccolo modulo, molto economico ma interessante, infattiè in grado di rilevare la temperatura e la pressione atmosferica, oltre che calcolare (anche se in modo abbastanza impreciso) l'altezza sul livello del mare.
I programmi sono abbastanza semplici, grazie alche alle librerie che s occupano della maggior parte dei calcoli.

bmp280













Il primo programma: una stazione meteorologica con pagina web




Il sensore BMP280  è un sensore che si connette al protocollo I2C, quindi anche con il piccolo ESP8266 può essere abbinato ad altri moduli che usino lo stesso protocollo e abbiano un indirizzo interno diverso, non ultimo un display OLED, per leggere direttamente le informazioni fornite.
In particolare, BMP280 registra la temperatura, la pressione atmosferica e fa un calcolo (approssimativo) dell'altezza sul livello del mare.

bmp280



schema

Il sensore BMP280 va collegato all'alimentazione a 3,3v.
Mentre "SCL" sarà collegata a GPIO5 (clock) e "SDA" si connetterà a GPIO4 (data).
Mentre gli ultimi pin non saranno usati in questo progetto.




basetta
La basetta sperimentale con il sensore BMP280 in scala 1:1.
BMP280 è connesso allo zoccoloI2C2, adatto al protocollo I2C.



Il programma



Il primo progetto che presentiamo, avvia un web server e mostra su di un qualsiasi browser di un PC, smartphone o tablet, la temperatura, la pressione e l'altezza approssimativa (slm) della propria località.
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


Adafruit_BusIO.h
Adafruit_sensor.h
Adafruit_BMP280.h



Di seguito, inserire la SSID (il nome esatto) della propria rete WiFi e la password di rete.
passw



L'altitudine è un parametro calcolato in base alla pressione atmosferica attuale presente a livello del mare, che varia costantemente. Spesso è necessario variare questo paramentro, affinchè l'altitudine mostrata sia compatibile con quella del luogo in cui si è.

altitude



Dopo aver caricato il programma, aprire il molitor seriale, attendere la connessione e prendere nota dell'indirizzo IP.
bmpip



Inserire il modulo BMP280 sul connettore I2C2 facendo attenzione alla polarità. Alimentare la basetta e dopo qualche secondo, dopo che il modulo si sarà collegato alla rete WiFi, aprire il browser inserendo il codice IP di cui si è preso nota.

E finalmente si aprirà la finestra con le informazioni, che verranno aggiornate con una certa frequenza.

Nel caso il sistema venga alimentato a batteria, inserire un ritardo nell'aggiornamento, in modo da consumare meno corrente.

Clicca qui per visualizzare il programma

Clicca qui per scaricarlo in formato ".zip"


ws













Il secondo programma: una stazione meteorologica con pagina web a colori




Questo secondo progetto è praticamente identico al precedente. L'unica piccola - ma simpatica - variazione è l'inserimento di tre iconcine relative alla temperatura, la pressione e l'altitudine calcolata.

Tutte le informazioni date per il primo programma sono valide anche per questo, quindi la loro duplicazione sarebbero del tutto inutili.

Ecco quindi l'immagine del secondo programma:



Clicca qui per visualizzare il programma

Clicca qui per scaricarlo in formato ".zip"


bmp_ic













Il terzo programma: una stazione meteorologicacon dispaly Oled




Questo terzo programma è ancora un'evoluzione dei precedenti: infatti ho inserito nel progetto una routine per gestire un display OLED SSD1306 128x64 dot, che mostra i dati di temperatura, pressione e altezza approssimativa direttamente sullo schermo.
In questo modo è possibile fruire delle informazioni anche in locale e in modo immediato, senza dover aprire un browser.
Per tutte le informazioni sul programma, vedi le istruzioni relative al primo programma per BMP280.


disp
Il display OLED



schema1

Sia BMP280 che il display SSD1306 usano il protocollo I2C, perciò si possono collegare sulle stesse porte, sempre che abbiano un indirizzo interno diverso.
Entrambi sono alimentati a +3,3v.



280_1306
La basetta sperimentale in formato 1:1
BMP280 è posto su I2C2, mentre il display Oled si colloca su I2C3.




dati


Per poter gestire il display OLED, sono necessarie due ulteriori librerie:
Adafruit_GFX.h
Adafruit_SSD1306.h


Naturalmente i dati possono sempre essere visualizzati anche sul proprio browser.

Clicca qui per visualizzare il programma

Clicca qui per scaricarlo in formato ".zip"




Ho trovato il video di questo progetto al seguente link(esterno a etichaldiy):
https://www.youtube.com/watch?v=w7q7StBe2YE














Una stazione meteorologica con BME280





Il sensore BME280  si connette al protocollo I2C, quindi anche con il piccolo ESP8266 può essere abbinato ad altri moduli che usino lo stesso protocollo e abbiano un indirizzo interno diverso, non ultimo un display OLED, per leggere direttamente le informazioni fornite.
E' molto facile confondere un BME280 con un BMP280. Essi sono molto simili, e spesso le sigle traggono in inganno. Quindi è necessario verificare con attenzione le caratteristiche, prima di acquistare.
Ricordo in breve le caratteristiche dei due sensori:


                               BME280:
                           - temperatura
                           - pressione
                              - umidità    
BMP280:
-temperatura
-pressione
- calcolo (apprssimativo) dell'altitudine





schema1


Il sensore BME280 va collegato all'alimentazione a 3,3v.
Mentre "SCL" sarà collegata a GPIO5 (clock) e "SDA" si connetterà a GPIO4 (data).
Il display Oled, anch'esso sotto protocollo I2C, utilizza le stesse porte.
Mentre gli ultimi pin non saranno usati in questo progetto.



280_1306
La basetta sperimentale con il sensore BME280 in scala 1:1.
BMP280 è connesso allo zoccoloI2C2, adatto al protocollo I2C,
e il display Oled sullo zoccolo I2C3



Le librerie necessarie:
Wire.h viene utilizzata per il protocollo I2C;
BME280I2C.h serve per la gestione del sensore BME280;
U8g2lib.h permette la gestione del display Oled.


BME280I2C.h
Wire.h
U8g2lib.h



La configurazione relativa al display Oled.
Come si vede, usa la porta GPIO5 per clock (SDL) e GPIO4 per data (SDA).

config



Le variabili temp, hum, pres, restituiscono i valori di temperatura, umidità e pressione. Però non possono essere passati direttamente ai comandi per il display. In questa routine dtosstrf  converte un valore a virgola mobile in stringa, che finalmente  può essere stampata sul display Oled.

 dtostrf



basetta
La basetta sperimentale in formato 1:1.
In basso, all'estrema sinistra, il display oled; alla sua destra il sensore BME280.




Clicca qui per visualizzare il programma

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















Una stazione meteorologica con BME680





BME680 è molto simile al BMP280, però rispetto a quest'ultimo gestisce un parametro in più, fornendo le informazioni tipici di una vecchia stazione meteorologica: ovvero temperatura, umidità e pressione. Anche questo sensore è molto piccolo ed economico.

bme280



380

Il sensore BME680 utilizza il protocollo I2C, per cui SCL andrà collegato sulla porta GPIO5 (clock) e SDA si collegherà a GPIO4 (data).



680_bs
La basetta sperimentale nel formato reale.
Il sensore BMP680  è inserito sullo zoccolo I2C2




Lo sketch e la configurazione



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 (sketch/include library/manage library).
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.


Wire.h
Adafruit_Sensor.h
Adafruit_BME680.h
ESPAsyncWebServer.h




Questo programma è abbastanza semplice nella sua implementazione. Come sempre quando ci si deve collegare alla rete WiFi, e quello di inserire il nome e la password di rete.

net





Dopo aver caricato il programma su ESP8266, aprire il monitor seriale e prendere nota dell'indirizzo IP che il router gli avrà attribuito e prenderne nota. Es.: 192.168.1.51, come si vede nel riquadro bordato di roisso.

Dopo qualche secondo, anche sul monitor seriale appaiono i dati rilevati dal sensore


ip




vis


Inserire nel campo di ricerca del proprio brower (Chrome, Firebird, ecc.) l'indirizzo Ip di cui si è preso nota.
Ecco come si presenta la visualizzazione dei dati rilevati dal sensore BMP680.

Nel caso si visualizzassero da cellulare, i dati invece di essere due per colonna, saranno visualizzati in verticale , su di una singola colonna.



Clicca qui per visualizzare il programma

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




Si possono trovare informazioni dettagliate su questo progetto alla seguente pagina del sito "randomnerdtutorials": https://randomnerdtutorials.com/esp8266-nodemcu-bme680-web-server-arduino/
Ringrazio come sempre randomnerdtutorials per la qualità e la cura dei progetti presentati.
N.b.: il link sopra elencato conduce a una pagina esterna al nostro sito.














Monitoraggio della qualità dell'aria con SGP30





Questo programma, basato principalmente su di un minuscolo ma interessantissimo SGP30, oltre che un familiare DHT11 e un display Oled, fornisce una notevole gamma di informazioni sulla qualità dell'aria: non solo temperatura e umidità, ma anche le percentuali di Anidride carbonica (CO2), di idrogeno (H2), di etanolo (EtOH) e Composti organici volatili totali (TVOC).

sgp30
SGP30



SC_SGP30

Lo schema elettrico del nostro progetto: SGP30 e il dispaly SSD1306 utilizzano il protocollo I2C, e quindi sono collegati sulle stesse porte dati, GPIO4 (data) e GPIO5 (clock).
DHP11 invece si collega su GPIO0.
Tutte le periferiche sono alimentate a +3,3v.



sgp30_bs
La basetta sperimentale in formato reale.
Il sensore di temperatura e umidità è posto su DG1;
SPG30 (qualità dell'aria) è collegato a I2C2;
Il display Oled SSD1306 è inserito su I2C3.



Il programma



Come sempre, è necessario di avere tutte le librerie necessarie; inn casonegativo verificare se è possibile scaricarle con la IDE di Arduino (sketch/#include libreria/gestione librerie), oppure cercarle su internet; o scaricarle dalla finestra di destra.

Wire.h
Adafruit_SGP30.h
DHT.h
Adafruit_GFX.h
Adafruit_SSD1306.h



IL programma non presenta particolari difficoltà: vengono inizializzate la varie periferiche e ogni secondo vengono interrogati i due sensori (DHT11 e SGP30). Sia sul monitor seriale che sul display SSD1306 vengono stampate le misurazioni, ovvero:
- la temperatura;
- l'umidità;
- la concentrazione di CO2 (anidrede carbonica);
- la concentrazione di H2 (idrogeno);
- la concentrazione di EtHO (etanolo)
- la concentrazione di TVOC (composti organici volatili totali).

air_qual














Una stazione meteorologica con OpenWeatherMap




Questo progetto è diverso dal solito, perché prende le informazioni direttamente da Internet, ma molto interessante, perché su di un dispaly OLED SSD1306 128 x 64 mostra in sequenza su tre schermate l'ora esatta, le previsioni meteo per tre giorni e infine la temperatura della propria località.
I dati vengono recuperati da un sito in cui va inserita - il più esattamente possibile - le coordinate in modo grafico) della località prescelta.


bmp680



meteo:sc


Il display Oled SSD1306 utilizza il protocollo I2C, per cui SCL andrà collegato sulla porta GPIO5 (clock) e SDA si collegherà a GPIO4 (data).



meteo_bs
La basetta sperimentale in formato reale.
Il display alloggia sullo zoccoloI2C3.



Lo sketch e la configurazione



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 (sketch/include library/manage library).
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


Json Streaming Parser

ESP 8266 and 32 OLED

ESP 8266 weather station




Il programma è quello standard che si trova tra gli esempi della libreria ESP8266 weather station (se si desidera, lo si trova da File/examples/ESP8266 weather station/WeatherStationDemo). Esso richiede alcune personalizzazioni. La prima, come sempre quando ci si deve collegare alla rete WiFi, e quello di inserire il nome e la password di rete.

Successivamente, è necessario definire il nostro fuso orario TZ (+1 rispetto a Greenwich) e l'ora legale (DST_MN = 60 per la stagione estiva. (riquadro blu).
E inoltre inserire ogni quanti minuti si desidera l'aggiornamento dei dati 20 * 60, perché il calcolo è effettuato in secondi (riquadro verde).




rete







time



Le righe contenute in questa finestra sono relative alle porte a cui il dispolay Oled deve essere collegato.
Sono contenute le informazioni per tre tipi di scheda:
- ESP01
- ESP8266
- ESP8266 con display Oled integrato.
Il base alla propria scheda, togliere le barre "//" di commento dove necessario (ricordarsi di commentare le altre).
In questo esempio, stiamo usando una scheda ESP8266.

I2c




Successivamente, è necessario inserire alcune informazioni, per ottenere le informazioni del tempo. Bisogna aprire il sito https://openweathermap.org/
eseguire il login (oppure se si accede per la prima volta registrarsi) e selezionare "My Api Key" e copiare la Api key ottenuta, che andrà inserita nel programma alla voce "OPEN_WEATHER_MAP_APP_ID".


owpapiid




E finalmente, è necessario ottenere il codice della propria città , sempre sul sito https://openweathermap.org/
Nel campo di ricerca, inserire la città per cui vuoi ottenere le informazioni, e salvare il codice numerico(per esempio, 3171058 per Piacenza) che appare nel campo contenente l'indirizzo del sito


zone




Inserire il codice numerico nella linea evidenziata in rosso.



Se si desidera, selezionare la lingua italiana, inserendo "it" nella linea individuata dalla linea blu.


dove




Ora si può compilare il programma e caricarlo sul nostro ESP8266, collegarlo al display OLED e verificare il funzionamento dello sketch, che trovo interessante e piacevole.
Di seguito si possono vedere le tre schermate, che si susseguolo fluidamente sul display a distanza di qualche secondo.

Clicca qui per visualizzare il programma

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


1

2

3




Ho trovato questo programma facendo ricerche su Youtube. Ecco il link al video che ho utilizzato per creare questa pagina: https://www.youtube.com/watch?v=s-djfoLxZKI
Ringrazio colui che lo ha realizzato.

















Per contatti: info@ethicaldiy.org