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. Essi usano dei sendori BME280, BME680, SGP30 e DHT11. I vari sketch presentano una complessità crescente: la visualizzazione può essere effettuata su di un serial monitor, su un display Oled SSD1306, oppure su di un browser, via Wi-fi. |
![]() BME680 |
|
BME280 : una stazione meteorologica (serial monitor) |
BME280
è un sensore molto interessante per quanto minuscolo, anche
per il rapporto qualità/prezzo. Infatti con una sola
periferica è possibile monitorare la temperatura
(Celsius e Farhenehit), l'umidità, la
pressione e, attraverso un calcolo, l'altezza
approssimativa sul livello del mare. Attenzione: BMP280 e BME280 sono praticamente identici a uno sguardo superficiale. L'unica differenza, a parte il prezzo, consiste nel fatto che BMP280 non fornisce la lettura dell'umidità dell'aria e richiede altre librerie. |
![]() BME280 |
Il
programma |
Questo
programma permette di vedere sul monitor seriale (115200
bps) la temperatura (Celsius e Farhenehit), l'umidità, la
pressione e, attraverso un calcolo, l'altezza approssimativa
sul livello del mare. Di per sè lo sketch è piuttosto semplice e lineare e non presenta particolari criticità. Il sensore BME280 è inserito sullo zoccolo I2C2. Attenzione: lo zoccolo I2C2 ha sei pin, mentre BME280 ne ha solo quattro. Posizionarlo in modo corretto! La misurazione dell'altezza sul livello del mare è frutto di un calcolo ed è approssimativa, una semplice indicazione, e dipende dall'altezza sul livello del mare, che varia di giorno in giorno. Quindi è necessario cercarla su Internet e sostituirla per avere delle rilevazioni sensate. Ho trovato utile questo sito per la rilevazione giornaliera della pressione: https://www.meteosatonline.it/2020_pressioni_attuali_italia.php Il sensore BME280 (e il display SSD1306) segue il protocollo I2C. I due pin relativi per il funzionamento sono per default, GPIO21 per SDA e GPIO22 per SCL (o SCK). Noi abitualmente useremo GPIO27 per SDA e GPIO22 per SCL, quindi è necessario dichiararli esplicitamente. |
![]() La visualizzazione dei dati ![]() Sostituire la pressione attuale con il dato tra parentesi. ![]() La
dichiarazione per le porte I2C
|
Le
librerie necessarie:
Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per informazioni sull'installazione delle librerie. |
Lo
schema elettrico |
![]() |
Lo
schema elettrico
BME280 ESP32 VIN +3.3v GND GND SCL GPIO22 SDA GPIO27 |
|
Immagine
del sensore sulla BDS![]() Immagine della BDS in scala 1:1 Il sensore BME280 è evidenziato in blu, e lo zoccolo usato è I2C2. In evidenza in verde anche il jumper "SDA", settato su GPIO27 per SDA. |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip" |
|
BME280 : una stazione meteorologica (display SSD1306) |
Questo
progetto è semplicemente un'evoluzione del
precedente: le informazioni, invece di apparire
semplicemente sul monitor seriale (dove è sempre e comunque
possibile visualizzarle), verranno mostrate anche su un
dispaly OLED da 0,96" (SSD1306), che per quanto minuscolo
mostra nitidamente le informazioni. Allo sketch precedente sono state aggiunte un paio di librerie e alcune righe di codice per permettere di inviare le informazioni sul display, che sarà collegato sullo zoccolo I2C1. |
![]() |
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per informazioni sull'installazione delle librerie. |
Adafruit_GFX.h Adafruit_SSD1306.h Wire.h Adafruit_Sensor.h Adafruit_BME280.h |
Lo
schema elettrico |
![]() |
Lo
schema elettrico BME280 ESP32 VIN +3.3v GND GND SCL GPIO22 SDA GPIO27 SSD1306 ESP32 GND GND VDD +3.3v SCK GPIO22 SDA GPIO27 |
Immagine
della BDS con sensore e display![]() Immagine della BDS in scala 1:1 Il sensore BME280 è evidenziato in blu, e lo zoccolo usato è I2C2. In evidenza in verde anche il jumper "SDA", settato su GPIO27 per SDA. Il display SSD1306 evidenziato in viola, posto sullo zoccolo I2C1. |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip" |
|
BME280 : una stazione meteorologica (Wi-Fi) |
Anche
questo progetto è un'evoluzione del primo
poroposto: i dati, oltre che sul monitor seriale, sono
visualizzati, con un piacevole effetto grafico, sul proprio
browser preferito. Naturalmente affinchè questo sia
possibile, è necessario che ESP32 si agganci alla propria
rete Wi-Fi. Nota: le informazioni raccolte da BME280 sono visibili solo all'interno della propria rete. |
![]() La visualizzazione sul browser |
Per
collegarsi alla propria rete wi-fi, è necessario inserire in
un paio di righe, le proprie credenziali, ovvero il nome
(SSID) della rete e la password. |
![]() |
Dopo
aver caricato il programma su ESP32, è necessario aprire il
monitor seriale e prendere nota dell'indirizzo IP che il
router ha attribuito al nostro micorcontroller. |
![]() |
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per informazioni sull'installazione delle librerie. |
Wire.h Adafruit_Sensor.h Adafruit_BME280.h WiFi.h |
Lo
schema elettrico |
![]() |
Lo schema elettrico BME280 ESP32 VIN +3.3v GND GND SCL GPIO22 SDA GPIO27 |
Immagine
del sensore sulla BDS
![]() Immagine della BDS in scala 1:1 Il sensore BME280 è evidenziato in blu, e lo zoccolo usato è I2C2. In evidenza in verde anche il jumper "SDA", settato su GPIO27 per SDA. |
![]() |
Inserendo
l'indirizzo IP di cui abbiamo preso nota dal monitor
seriale, possiamo vedere le informazioni sul nostro browser
preferito. |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip" |
|
BME680: una stazione meteorologica + monitor gas + altezza appros. (serial monitor) |
In
questa seconda serie di programmi, verrà usato un sensore
BME680, che è un po' il "fratello maggiore" di BME280. Ha
tutte le funzioni di quest'ultimo ovvero misurazione della
temperatura, umidità dell'aria, pressione atmosferica e
altezza approssimativa sul livello del mare. Inoltre
aggiunge anche una misurazione dei gas (VOC) presenti
nell'aria, espressi in resistenza (KOhm). Il
sensore di gas funziona riscaldando internamente una
piccola superficie e misurando la resistenza dello strato
di gas. |
![]() BME680 |
Tabella
della qualità dell'aria![]() Nota: la precisione di questi valori richiede di usare delle librerie particolari, non supportate da ESP32 o Arduino; quelle che verranno utilizzate nei nostri programmi non sono così accurate, quindi dovremo accontentarci di valori approssimativi, che danno una valutazione qualitativa della qualità dell'aria, semplicemente indicativa. |
|
Il
programma |
Il
primo programma è molto semplice; dopo aver verificato la
presenza del sensore, passa direttamente alla misurazione
dei valori, che verranno visualizzati sul monitor seriale.
BME680
viene inserito sullo zoccolo I2C2 e utilizza tutti
e sei i piedini. Attenzione a inserirlo in modo corretto,
pena il danneggiamento del sensore stesso.
La misurazione dell'altezza sul livello del mare è frutto di un calcolo ed è approssimativa, una semplice indicazione, e dipende dall'altezza sul livello del mare, che varia di giorno in giorno. Quindi è necessario cercarla su Internet e sostituirla per avere delle rilevazioni sensate. Ho trovato utile questo sito per la rilevazione giornaliera della pressione: https://www.meteosatonline.it/2020_pressioni_attuali_italia.php Il sensore BME680 (e il display SSD1306) segue il protocollo I2C. I due pin relativi per il funzionamento sono per default, GPIO21 per SDA e GPIO22 per SCL (o SCK). Noi abitualmente useremo GPIO27 per SDA e GPIO22 per SCL, quindi è necessario dichiararli esplicitamente. |
![]() I dati che appaiono sul serial monitor ![]() Sostituire la pressione attuale con il dato tra parentesi. ![]() La dichiarazione per le porte I2C |
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per informazioni sull'installazione delle librerie. |
Wire.h Adafruit_Sensor.h Adafruit_BME680.h |
|
Lo
schema elettrico |
![]() |
Lo
schema elettrico BME280 ESP32 VIN +3.3v GND GND SCL GPIO22 SDA GPIO27 |
L'immagine
della BDS con il sensore BME680![]() L'immagine della BDS in scala 1:1 Il sensore BME680 è evidenziato in blu, e lo zoccolo usato è I2C2. In evidenza in verde anche il jumper "SDA", settato su GPIO27 per SDA. |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip" Puoi trovare le spiegazioni complete sul programma in oggetto al seguente link: https://RandomNerdTutorials.com/esp32-bme680-sensor-arduino/ Come sempre, il mio ringraziamento va ai curatori di "Randomnerdtutorials". |
|
BME680: una stazione meteorologica + monitor gas + altezza appros. (display SSD1306) |
Questo
secondo progetto è un'evoluzione del
precedente: le
informazioni, invece di apparire semplicemente sul monitor
seriale (dove è sempre e comunque possibile visualizzarle),
verranno mostrate anche su un dispaly OLED da 0,96"
(SSD1306), che per quanto minuscolo mostra nitidamente le
informazioni. Allo sketch precedente sono state aggiunte un paio di librerie e alcune righe di codice per permettere di inviare le informazioni sul display, che sarà collegato sullo zoccolo I2C1. |
![]() |
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per informazioni sull'installazione delle librerie. |
Adafruit_GFX.h Adafruit_SSD1306.h Wire.h Adafruit_Sensor.h Adafruit_BME680.h |
|
Lo schema elettrico |
![]() |
Lo
schema elettrico BME280 ESP32 VIN +3.3v GND GND SCL GPIO22 SDA GPIO27 SSD1306 ESP32 GND GND VDD +3.3v SCK GPIO22 SDA GPIO27 |
Il
progetto sulla BDS |
![]() La BDS in formato 1:1 Evidenziati in verde il display SSD1306sullo zoccolo I2C1 e il sensore BME680 sullo zoccolo I2C2 |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip" Puoi trovare le spiegazioni parziali (sono state aggiunte le routine per la gestione del display) sul programma in oggetto al seguente link: https://RandomNerdTutorials.com/esp32-bme680-sensor-arduino/ Come sempre, il mio ringraziamento va ai curatori di "Randomnerdtutorials". |
|
BME680: una stazione meteorologica + monitor gas + altezza appros. (Wi-Fi) |
Il
programma attuale permette di visualizzare le informazioni
elaborate da BME680 non solo sul monitor seriale, ma anche
sul proprio browser collegandosi via Wi-Fi. Puoi trovare qui le informazioni di base sul sensore BME680 |
![]() |
Il
programma |
Per collegarsi alla propria rete wi-fi, è necessario inserire in un paio di righe, le proprie credenziali, ovvero il nome (SSID) della rete e la password. | ![]() |
Dopo aver caricato il programma su ESP32, è necessario aprire il monitor seriale e prendere nota dell'indirizzo IP che il router ha attribuito al nostro micorcontroller. | ![]() |
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per informazioni sull'installazione delle librerie. |
Wire.h Adafruit_Sensor.h Adafruit_BME680.h WiFi.h ESPAsyncWebServer.h |
Lo
schema elettrico |
![]() |
Lo
schema elettrico BME280 ESP32 VIN +3.3v GND GND SCL GPIO22 SDA GPIO27 |
L'immagine
della BDS con il sensore BME680
![]() L'immagine della BDS in scala 1:1 Il sensore BME680 è evidenziato in blu, e lo zoccolo usato è I2C2. In evidenza in verde anche il jumper "SDA", settato su GPIO27 per SDA. |
La
visione nel browser![]() |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip". Puoi trovare le spiegazioni parziali (sono state aggiunte le routine per visualizzare la temperetura in Farhenehit e l'altezza approssimativa sul livello del mare) sul programma in oggetto al seguente link: https://RandomNerdTutorials.com/esp32-bme680-sensor-arduino/ Come sempre, il mio ringraziamento va ai curatori di "Randomnerdtutorials". |
SGP30 + DHT11: temperatura + pressione + monitoraggio della qualità dell'aria (serial monitor) |
Questo
progetto è leggermente più complesso, dal punto di vista
elettrico, perché monta due sensori: uno digitale, DHT11
(DHT21 o DHT22) che fornisce la temperatura e l'umidità
dell'aria; un secondo, SGP30 che fornisce interessanti
informazioni sulla qualità dell'aria, ovvero:
|
![]() Il sensore DHT11 ![]() Il sensore SGP30 |
Il
progetto |
Il
primo progetto con DHT11 (o simili) e SGP30 è relativamente
semplice. Dapprima inizializza i sensori (e verifica se sono
attivi) e poi mostra sul monitor seriale con scadenza
ravvicinate le letture sulla temperatura, l'umidità e la
qualità dell'aria. |
![]() |
Lo
schema elettrico |
![]() |
Lo schema elettrico SGP30 ESP32 VIN +3.3v GND GND SDA GPIO27 SCL GPIO22 |
Attenzione: esistono
SGP30 con diverse piedinature. Ecco alcuni esempi: |
![]() SGP30 tipo 1 |
![]() SGP30 tipo 2 |
![]() SGP30 tipo 3 |
Come si vede, utilizzando la BDS si riesce spesso a fare fronte anche a situazioni impreviste, ma non del tutto infrequenti, come questa. |
Immagine
della BDS con i sensori![]() Immagine della BDS in scala 1:1 Nel riquadro ocra appare il sensore DHT11, sullo zoccoloDA3 (GPIO18); nel riquadro blu è visualizzato il sensore SGP30, sullo zoccolo I2C3 (GPIO22 - SCL; GPIO27 - SDA) In nero è evidenziato il jumper "SDA", che permette di selezionare SDA. Selezionato GPIO27. |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip |
|
SGP30 + DHT11: temperatura + pressione + monitoraggio qualità dell'aria (display SSD1306) |
Il
secondo progetto, come anche per BME280 e BME680i, è un
perfezionamento di quello precedente:
infatti vengono aggiunte le librerie e le righe per la
routine del display SSD1306 da 0,96" con risoluzione 128 x
64 pixel, in cui vengono visualizzate le informazioni
rilevate dai due sensori. Il display SSD1306 sarà collegato sullo zoccolo I2C1. |
![]() |
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per informazioni sull'installazione delle librerie. |
Adafruit_GFX.h Adafruit_SSD1306.h Wire.h Adafruit_SGP30 DHT.h |
Lo
schema elettrico |
![]() |
Lo schema elettrico SGP30 ESP32 VIN +3.3v GND GND SDA GPIO27 SCL GPIO22 SSD1306 ESP32 GND GND VDD +3.3v SCK GPIO22 SDA GPIO27 |
Attenzione: esistono
SGP30 con diverse piedinature. Ecco alcuni esempi:
Come si vede, utilizzando la BDS si riesce spesso a fare fronte anche a situazioni impreviste, ma non del tutto infrequenti, come questa. |
Immagine
della BDS con i sensori e il display![]() Immagine della BDS in scala 1:1 Nel riquadro ocra appare il sensore DHT11, sullo zoccoloDA3 (GPIO18); nel riquadro blu è visualizzato il sensore SGP30, sullo zoccolo I2C3 (GPIO22 - SCL; GPIO27 - SDA); nel riquadro verde è presente il display SSD1306, sullo zoccolo I2C1 (GPIO22 - SCL; GPIO27 - SDA). In nero è evidenziato il jumper "SDA", che permette di selezionare SDA. Selezionato GPIO27. |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip" |
|
SGP30 + DHT11: temperatura + pressione + monitoraggio qualità dell'aria (Wi-Fi) |
Ed
infine l'ulimo progetto di questa serie: le informazioni,
oltre che sul monitor seriale, possono essere visualizzate
sul browser, naturalmente all'interno della nostra rete
Wi-Fi. |
![]() |
Il
programma |
Per collegarsi alla propria rete wi-fi, è necessario inserire in un paio di righe, le proprie credenziali, ovvero il nome (SSID) della rete e la password. |
![]() |
Dopo aver caricato il programma su ESP32, è necessario aprire il monitor seriale e prendere nota dell'indirizzo IP che il router ha attribuito al nostro micorcontroller. |
![]() |
Le
librerie necessarie: Nota: per quanto possibile, scaricare sempre le librerie più aggiornate. Solo in caso non le trovaste, utilizzare quelle proposte nel sito. Clicca qui per informazioni sull'installazione delle librerie. |
Wire.h Adafruit_SGP30 DHT.h WiFi.h ESPAsyncWebServer.h |
Lo
schema elettrico |
![]() |
Lo schema elettrico SGP30 ESP32 VIN +3.3v GND GND SDA GPIO27 SCL GPIO22 |
Immagine
della BDS con i sensori
![]() Immagine della BDS in scala 1:1 Nel riquadro ocra appare il sensore DHT11, sullo zoccoloDA3 (GPIO18); nel riquadro blu è visualizzato il sensore SGP30, sullo zoccolo I2C3 (GPIO22 - SCL; GPIO27 - SDA) In
nero è evidenziato il jumper "SDA", che permette di
selezionare SDA. Selezionato GPIO27.
|
La
visualizzazione dei dati nel browser![]() |
Attenzione: esistono
SGP30 con diverse piedinature. Ecco alcuni esempi:
Come si vede, utilizzando la BDS si riesce spesso a fare fronte anche a situazioni impreviste, ma non del tutto infrequenti, come questa. |
Clicca
qui per visualizzare il progetto. Clicca qui per scaricare il progetto in formato ".zip" Questo progetto è in parte originale; la parte di codice necessaria per visualizzare le informazioni sul browser sono state copiate dal programma https://RandomNerdTutorials.com/esp32-bme680-sensor-arduino/ Come sempre, il mio ringraziamento va ai curatori di "Randomnerdtutorials". |