Ethical DIY

Progetti hardware & software etici


Menu orizzontale con sottomenu CSS








 


Progetti hardware

Basetta sperimentale per ESP8266

Assemblare la basetta sperimentale

Configurazione e piedinatura di ESP8266

Download dei dati 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 generici

Programmi vari
- Test dellabasetta sperimentale
- Creare un web server
    - Hello word
    - Accendi un led!
    - Pagina con login e password
- Ricevere la data e l'ora esatta
    - sul monitor seriale
    - sul display Oled

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 SGP30

Una stazione meteo e controllo qualità dell'aria con BME680 eSGP30



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 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 e DHT11



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

Ho inserito nel programma anche il "solito" DHT11. In questo modo, oltre alle caratteristiche dell'aria, otterremo anche la temperatura e l'umidità dell'aria, così da avere delle informazioni complete sulla qualità dell'aria.
Naturalmente al posto di DHT11 si può utilizzare un DHT21 o DHT22, selezionando nel programma le righe adeguate di configurazione del sensore.

sgp30SGP30
dht11
DHT11



Attenzione: SGP30 è venduto con due piedinature diverse.
Il modello "1" va inserito sullo zoccolo I2C3;
il modello "2" va inserito sullo zoccolo I2C1.

Se si inseriscono sullo zoccolo sbagliato, il sensore non viene danneggiato,
perchè i piedini di alimentazione sono nello stesso ordine, però non funzionerà
il rilevamento dei dati.

s1

1

s2
2



Lo schema elettrico



sgdht

Il sensore temperatura/umidità DHT11 va collegato sulla porta GPIO0; mentre SGP30 segue il protocollo I2C, per cui SCL si connette su GPIO5 e SDA su GPIO4







sgdht1
Il rendering della basetta sperimentale in scala 1:1.
DHT11 si connette sullo zoccolo DG1,
mentre SGP30 si connette sullo zoccolo I2C2. Vedi nota iniziale.
Fare attenzione a connetterlo sui pin corretti.







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; DHT.h serve per gestire DHT11; 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.

Nota: per quanto possibile, scaricare sempre le librerie più aggiornate.
Solo in caso non le trovaste, utilizzare quelle proposte nel sito.


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



11

Queste linee di programma servono per stabilire il tipo di sensore che si sta utilizzando: DHT11, DHT21 o DHT22, e inserire i giusti parametri, altrimenti si leggeranno dei valori incoerenti.
Nota: ho acquistato sia da Amazon che Aliexpress dei sensori  come DHT11, ma in realtà erano DHT22! Sostituiti i paramentri, tutto ha funzionato regolarmente.



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.



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)



I valori inseriti nel programma...

6


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.



ts_data1


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 ESP8266, collegato i sensori, aperta la pagina su ThingSpeak, se tutto è stato fatto a regola d'arte....

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



sgdh

L'immagine della BDS in scala 1:1.
Si noti che il sensore SGP30 è posto sullo zoccolo I2C1.
DHT11 è inserito su DG1.



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 DHT11 e 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




680


Schema elettrico del collegamento tra il sensore ed ESP8266.
Si è utilizzato il collegamento con il protocollo I2S, che utilizza solo quattro cavi:
Vcc (+3,3 v)
GND
SCL - Clock (GPIO5)
SDA - Data (GPIO4)


bds_680
Il sensore BME680 sulla basetta sperimentale in scala 1:1
Attenzione a inserire il sensore sullo zoccolo I2C2 con la corretta disposizione dei pin.







Il programma



Le librerie necessarie:

Nota: per quanto possibile, scaricare sempre le librerie più aggiornate.
Solo in caso non le trovaste, utilizzare quelle proposte nel sito.

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)



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



In questo programma si assommano le informazioni registrate dai due sensori, ovvero BME680 e SGP30, utilizzando tutte le finestre dati messe a disposizione da ThingSpeak!

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



Lo schema elettrico



380&30


Schema elettrico del collegamento tra i sensori, collegati in parallelo, ed ESP8266.
Si è utilizzato il collegamento con il protocollo I2S, che utilizza solo quattro cavi:
Vcc (+3,3 v)
GND
SCL - Clock (GPIO5)
SDA - Data (GPIO4)



bds2
La basetta sperimentale in scala 1:1.
SGP30 è alloggiato su I2C1 e BMP680 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