Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 


Progetti hardware

Home di ESP01

Basetta sperimentale per ESP01

Dati costruttivi della basetta sperimentale

Download dei file necessari per la realizzazione della basetta sperimentale




Informazioni di base:

- Come installare la IDE di Arduino
- Configurazione della IDE 
- Caricamento dei programmi
- Il problema dei permessi sulle porte seriali con Linux
-Procedura con la basetta sperimentale per ESP01
- Come caricare le librerie necessarie
- Piedinatura di ESP01
- Piedinatura di ESP8266

I sensori/attuatori compatibili con ESP01
I sensori/attuatori compatibili con ESP8266



Programmi vari

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:
programmi con Thing speak




In questa pagina potrai trovare:





ThingSpeak



ThingSpeak è un servizio di piattaforma di analisi IoT che consente di aggregare, visualizzare e analizzare flussi di dati live nel cloud. È possibile inviare dati a ThingSpeak da vari dispositivi, creare visualizzazioni istantanee di dati live e inviare avvisi.
Le informazioni inviate a
ThingSpeak possono essere visualizzate in ogni parte del mondo, collegandosi al Web. E, dulcis in fundus, ci si può iscrivere gratuitamente!



Per iniziare.


Andare alla pagina iniziale di ThingSpeak e cliccare su "Inizia gratuitamente".


Se ci si è già registrati, inserire la propria mail e la password che si è selezionata; altrimenti cliccare su "Create one!"


Quando si sceglie di creare un nuovo acconto, inserire:
  • la propria e-mail;
  • la zona in cui si vive,
  • il proprio nome;
  • il proprio cognome.


Completate queste informazioni, si riceverà una mail di conferma.

Ricevuta la e-mail, cliccare su "Verifica email".
Fatto questo, si sceglierà la propria password e si riceverà una ulteriore e-mail di conferma.


Ora si può cominciare a utilizzare il servizio


inizia

______________________________

thing_2
_____________________________

thing_3



Creare un nuovo canale.


Per prima cosa, è necessario creare un nuovo canale. Selezionare "Channels", "My Channels" e infine "New Channel".




Si apre una nuova finestra, in cui si può inserire:
  • "Name": il nome del proprio canale;
  • "Description": una breve descrizione del canale;
  • Field 1/./Field 8: si possono inserire fino a otto campi, che corrispondono alle tabelle che verranno create e corrispondono alle informazioni che verranno trasmesse dal programmascritto per ESP8266.

Ci sono poi altri campi in cui si possono inserire tutta una serie di interessanti informazioni (tuttavia non indispensabili), comprese longitudine, latitudine, altezza, ecc.


4
---------------------------------------------------------------------

5



Le caratteristiche del nuovo canale.
Dopo aver creato il canale, si possono decidere alcune caratteristiche:
  • Il canale può essere privato (Private) o pubblico (Public);
  • in "Settings" ci sono delle informazioni fondamentali, quali il codice del canale (vedi immagine "Channel Settings), che deve essere inserito nel nostro programma, oltre che le informazioni inserite  durante la creazione del nuovo canale;
  • in "sharing", si può selezionare se mantenere privato il canale o se condividerlo;
  • in "API Keys" si trovano altre informazioni fondamentali, quali il "Write Key", che deve essere inserito nel programma che si sta creando;

6
_________________________________________

7
____________________________________________
8



La visualizzazione dei dati.

Se si è selezionato di mantenere privati i dati, in "Private View" si potranno visualizzare i dati sottoforma di tabelle; naturalmente se si è deciso di rendere pubblico il canale, i dati si troveranno in "Pubblic View".
Ecco uno stralcio delle possibili visualizzazioni sotto forma di grafici:

grafici







Monitorare la qualità dell'aria con SGP30



SGP30 è un sensore molto interessante, perchè rileva alcune qualità dell'aria che difficilmente misurano altri sensori del genere. Ecco infatti le sue specifiche di misurazione:
- concentrazione di anidride carbonica (CO2);
- concentrazione di idrogeno (H2);
- concentrazione di Etanolo;
- concentrazione di TVOC (componenti organici volatili totali).

sgp30SGP30



Lo schema elettrico



sgp30_sc

Il sensore SGP30 segue il protocollo I2C,
per cui SCL si connette su GPIO2
e SDA su GPIO0



Attenzione: SGP30 è prodotto in due versioni, in cui i piedini "SDA" e "SCL" sono invertiti!
Fare attenzione sia al collegamento diretto che il posizionamento sulla basetta sperimentale: La versione "1" va collegata sullo zoccolo "I2C2", mentre la versione "2" deve essere connessa su I2C1.
Fortunatamente se si inseriranno su uno zoccolo invece che sull'altro, il sensore non verrà danneggiato, ma non verrà riconosciuto dal programma. In questo caso è sufficinte posizionarlo sullo zoccolo corretto.
In questa realizzazione è stata usata la versione che alloggia su I2C2.


2 ver




esp_30
Il rendering della basetta sperimentale in scala 1:1.
SGP30 si connette sullo zoccolo I2C2. Fare attenzione a connetterlo correttamente.




Il progetto



Come sempre, per prima cosa, è necessario essere certi di aver installato le librerie necessarie.
Sulla destra si legge l'elenco. Il loro utilizzo è piuttosto intuitivo:

ESP8266WiFi.h è relativo alla connessione WiFi; ThingSpeak.h è relativo al programma ThingSpeak; Adafruit_Sensor gestisce la connessione con le periferiche Adafruit; Wire.h serve a connettere al protocollo I2C; Adafruit_SGP30.h è relativo a SGP30.

ESP8266WiFi.h
ThingSpeak.h
Adafruit_Sensor.h
Wire.h
Adafruit_SGP30.h



ts10
Come sempre un progetto WiFi, è necessario inserire il nome della propria rete (SSID) e la password relativa (riquadro rosso).
In "myChannelNumber" è necessario inserire il codice del proprio canale; mentre in "myWriteAPIKey" il codice di scrittura per questo specifico progetto.



wire

Nella routine "void setup" è necessario inserire l'istruzione  "Wire.begin(0, 2)", perchè le porte che gestiscono SDA e SCL, utilizzate dal protocollo I2C, sono diverse tra ESP01 ed ESP8266; questa istruzione indica al programma come instradare queste informazioni.



timer
La linea "timeDelay" stabilisce ogni quanto tempo aggiornare la lettura dai sensori.
Poichè la misura è in millisecondi, il refresh avverr ogni 30 secondi (30.000/1.000)



4

Queste linee sono del tutto cruciali, perchè collegano i valori registrati nel programma da SGP30 +DHT11 e quanto visualizzato da ThingSpeak, per cui è fondamentale che la corrispondenza tra i numeri progressivi  (in questo caso tra 1 e 6) e il nome dei campi che si sono attribuiti in "Channel setting" di ThingSpeak (vedi immagine a sinistra) siano coerenti, altrimenti le letture non corrisponderanno a quanto rilevato dai sensori.



4ts

In questa immagine si vedono i dati inseriti in "Channel settings" del mio progetto su ThingSpeak.
Come si nota, i dati inseriti nello sketch di ESP8266 (immagine precedente) corrispondono a quanto inserito in ThingSpeak.



E dopo aver inserito il programma su ESP01, collegato i sensori, aperta la pagina su ThingSpeak, se tutto è stato fatto a regola d'arte....

v2
... appariranno i nostri grafici in tutto il loro splendore, aggiornati in base alle nostre richieste!



Clicca qui per visualizzare il progetto

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

Link di riferimento: https://randomnerdtutorials.com/esp8266-nodemcu-thingspeak-publish-arduino/
Ho utilizzato la struttura del programma da quanto presentato nella pagina indicata; ho modificato lo sketch per poter utilizzare SGP30 e può essere utilizzato di base per molti altri programmi.
Ringrazio come sempre i curatori di "randomnerdstutorial" per il numero, e specialmente per la qualità, del loro lavoro.





Una stazione meteorologica con BME680



BME680 è un sensore molto interessante perchè rivela diverse caratteristiche dell'aria: temperatura, umidità, pressione (e questo lo rende simile a una stazione barometrica) e in più indica la quantità di componenti volatili nell’aria e può essere utilizzato come mezzo indiretto per misurare la qualità dell’aria.  Il sensore fornirà solamente un valore di resistenza, relativo al contenuto complessivo di VOC, ma non può differenziare gas o alcoli.
Si consiglia, per misure accurate di lasciare in funzione il sensore per almeno 48 ore quando lo si utilizza la prima volta per eliminare residui sul sensore.
Per i successivi utilizzi, sempre che sia coinvolgano la lettura relativa ai gas il periodo di preriscaldo potrà essere limitata a 30 minuti.
BME680  può essere alimentato con una tensione compresa tra 3,3 V cc e 5 V cc, mentre i dati in uscita sono disponibili sia su I2C sia su SPI.

bme680
Il sensore  ingrandito



Lo schema elettrico



nopcb
Ed ecco lo schema di collegamento del sensore BMP680 con ESP01, nel caso non si utilizzi la basetta sperimentale.
SDA va collegato su GPIO2, mentre SCL si collegherà GPIO0.



bds_680
La basetta sperimentale in formato 1:1.
Il sensore BME680 si connette sullo zoccolo I2C2.








Il programma



Le librerie necessarie:
ESP8266WiFi.h
ThingSpeak.h
Adafruit_Sensor.h
Wire.h
Adafruit_BME680.h



ts10
Come sempre un progetto WiFi, è necessario inserire il nome della propria rete (SSID) e la password relativa (riquadro rosso).
In "myChannelNumber" è necessario inserire il codice del proprio canale;  in "myWriteAPIKey" il codice di scrittura per questo specifico progetto.



timer
La linea "timeDelay" stabilisce ogni quanto tempo aggiornare la lettura dai sensori.
Poichè la misura è in millisecondi, il refresh avverr ogni 30 secondi (30.000/1.000)



wire

Nella routine "void setup" è necessario inserire l'istruzione  "Wire.begin(0, 2)", perchè le porte che gestiscono SDA e SCL, utilizzate dal protocollo I2C, sono diverse tra ESP01 ed ESP8266; questa istruzione indica al programma come instradare queste informazioni.



data
Queste linee sono del tutto cruciali, perchè collegano i valori letti da BME680 dal programma e la rappresentazione grafica su ThingSpeak, per cui è fondamentale che la corrispondenza tra i numeri progressivi  (in questo caso tra 1 e 4) e il nome dei campi che si sono attribuiti in "Channel setting" di ThingSpeak (vedi immagine a sinistra) siano coerenti, altrimenti le letture non corrisponderanno a quanto rilevato dai sensori.



ts_data
In questa immagine si vedono i dati inseriti in "Channel settings" del mio progetto su ThingSpeak.
Come si vede i dati inseriti nello sketch di ESP8266 (immagine precedente) corrispondono a quanto inserito in ThingSpeak.



Ed ecco il risultato dei nostri sforzi:

gas
E li possiamo vedere gratuitamente, da ogni parte del mondo, collegandoci al web!



Clicca qui per visualizzare il programma.

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

Link di riferimento: https://randomnerdtutorials.com/esp8266-nodemcu-thingspeak-publish-arduino/
Ho utilizzato la struttura del programma da quanto presentato nella pagina indicata; ho modificato lo sketch per poter utilizzare BME680 e può essere utilizzato di base per molti altri programmi.
Ringrazio come sempre i curatori di "randomnerdstutorial" per il numero, e specialmente per la qualità, del loro lavoro.







Una stazione meteorologica + controllo della qualità dell'aria



ESP01 è piccolo e ha solo due porte digitali per l'utente, ma nulla ci vieta di collegare in parallelo più sensori che usino il protocollo I2C. Nulla ci impedisce perciò di fondere insieme i due programmi precedenti, e utilizzando un BME680 + un SGP30, ottenere un completo monitoraggio delle consizioni e della qualità dell'aria? Monitoreremo ben otto parametri, utilizzando quindi a fondo tutte le potenzialità offerte da ThingSpeak, che ci mette a disposizione proprio otto finestre di monitoraggio dei dati!

Quanto esposto per i singoli programmi è valido per quest'ultimo, che semplicemente assomma le righe di programma indispensabili per gestire i singoli sensori, oltre naturalmente a quelli necessari per attivare i collegamenti con la rete WiFi e Thingspeak.
Perciò verranno riportati in questo paragrafo solo le differenze rispetto a quanto già illustrato per i singoli programmi.


bme680
BME680

sgp30SGP30



Attenzione: SGP30 è prodotto in due versioni, in cui i piedini "SDA" e "SCL" sono invertiti!
Fare attenzione sia al collegamento diretto che il posizionamento sulla basetta sperimentale: La versione "1" va collegata sullo zoccolo "I2C2", mentre la versione "2" deve essere connessa su I2C1.
Fortunatamente se si inseriranno su uno zoccolo invece che sull'altro, il sensore non verrà danneggiato, ma non verrà riconosciuto dal programma. In questo caso è sufficinte posizionarlo sullo zoccolo corretto.
In questa realizzazione è stata usata la versione che alloggia su I2C1.

2 ver



680_30_sc

Ed ecco lo schema di collegamento dei sensori BMP680, SGP30 (che sono collegati in parallelo) con ESP01, nel caso non si utilizzi la basetta sperimentale.
SDA va collegato su GPIO2, mentre SCL si collegherà GPIO0.







bsd
La basetta sperimentale in scala 1:1
Si è usata la versione2 di SGP30, per poterla inserire sullo zoccolo I2C1;
mentre BME680 alloggia su I2C2.




Il programma (differenze dai due sketch precedenti)



8 contr

Queste linee sono del tutto cruciali, perchè collegano i valori letti da BME680 e da SGP30 all'interno del programma e la rappresentazione grafica su ThingSpeak, per cui è fondamentale che la corrispondenza tra i numeri progressivi  (in questo caso tra 1 e 8) e il nome dei campi che si sono attribuiti in "Channel setting" di ThingSpeak (vedi immagine a sinistra) siano coerenti, altrimenti le letture non corrisponderanno a quanto rilevato dai sensori.



ts8

Ed ecco come dovranno essere configurati i campi in ThingSpeak affinchè i dati mostrati nelle varie finestre corrispondano ai dati letti dai sensori.



serial monitor

I dati rilevati dal programma potranno essere letti puntualmente anche in locale, attivando il monitor seriale, settato a 115200 bit/s



Ed ecco le misurazioni della nostra aria:

ts1ts2





Clicca qui per visualizzare il progetto

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

Link di riferimento: https://randomnerdtutorials.com/esp8266-nodemcu-thingspeak-publish-arduino/
Ho utilizzato la struttura del programma da quanto presentato nella pagina indicata; ho modificato lo sketch per poter utilizzare SGP30 e può essere utilizzato di base per molti altri programmi.
Ringrazio come sempre i curatori di "randomnerdstutorial" per il numero, e specialmente per la qualità, del loro lavoro.










Per contatti: info@ethicaldiy.org