Vediamo in questo articolo come leggere i valori forniti dal sensore BME 680 con un modulo ESP32 Devkit V1. Il sensore è in grado di rilevare diversi parametri ambientali come: la temperatura, l’umidità, la pressione barometrica ed i composti organici volatili (VOC).
Indice
Il Sensore BME680
Il Sensore BME680 è prodotto dalla Bosch Sensortec, si tratta di un sensore digitale 4 in 1 con misurazione di gas, umidità, pressione e temperatura.
Il sensore BME680 che misura 3 x 3 x 1 mm, integra sensori di gas, pressione, umidità e temperatura ad elevata linearità e accuratezza. È progettato per consumi ottimizzati a seconda delle specifiche modalità di funzionamento, stabilità a lungo termine e robustezza EMC elevata.
Dato misurato | Range | Precisione | Risoluzione | |||
Temperatura | -40 ÷85 °C | ±0,5 °C | 0,01 °C | |||
Umidità | 0 ÷ 100 % | ± 3% | 0,008 %. | |||
Pressione | 300 ÷ 1100 hPa | ± 1,0 hPa | 0,2 Pa |
Maggiori informazioni le trovate in questo articolo BME680 Sensore: pressione, temperatura, umidità, VOC
Test sensore BME680 con ESP32 Devkit
Componenti necessari
In questo test, i dati forniti dal sensore BME680, tramite un modulo ESP32 Devkit V1 saranno mostrati tramite in monitor seriale fornito dall’IDE di Arduino. Seguono i componenti necessari:
Modulo ESP32 Devkit V1 |
Sensore BME 680 |
Cavi di collegamento F/F |
Breadboard |
Dove trovare i componenti
Tutti i componenti necessari potranno essere acquistati presso il sito https://www.homotix.it/ . In questo caso potrete usufruire anche di uno sconto se indicherete lo speciale codice riservato agli utenti del sito adrirobot.
Schema di collegamento
Il collegamento tra il Modulo ESP32 Devkit V1, il sensore BME680 prevede l’utilizzo del BUS I2C, mentre l’alimentazione sarà fornita tramite i pin : 3.3V e GND.
il Modulo ESP32 Devkit V1, prevede già i pin per il BUS I2C, questi sono il GPO22 ->SCL e GPO21 -> SDA
ESP32 | BME680 |
---|---|
D22 | SCL |
D21 | SDA |
GND | GND |
3V3 | VCC |
Lo stesso sensore installato sullo Shield per ESP32 DevKIT V1
Libreria di gestione
Per la gestione del sensore è necessario installare le relativa libreria che può essere ricercata tramite il gestore dell’ IDE ricercando “bme680”
Per utilizzare la libreria BME680, è necessario installare anche la libreria Adafruit_Sensor.
Anche in questo caso faremo uso della Gestore librerie ricercando ” Adafruit Unified Sensor “, occorrerà scorrere la cartella e una volta trovata installarla.
Sketch di prova
Segue lo Sketch utilizzato per il test. Una volta caricato, occorrerà attivare il monitor seriale
assicurandoci che la velocità di trasmissione sia la stessa impostata nello sketch, in questo caso 115200 baud
se non sono stati fatti errori di collegamento, saranno mostrati i valori letti dal sensore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#include <Wire.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include "Adafruit_BME680.h" #define BME_SCK 22 #define BME_MISO 21 #define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME680 bme; // I2C void setup() { Serial.begin(115200); while (!Serial); Serial.println(F("BME680 test")); if (!bme.begin()) { Serial.println("Impossibile trovare un sensore BME680 valido, controllare il cablaggio!"); while (1); } // Set up oversampling and filter initialization bme.setTemperatureOversampling(BME680_OS_8X); bme.setHumidityOversampling(BME680_OS_2X); bme.setPressureOversampling(BME680_OS_4X); bme.setIIRFilterSize(BME680_FILTER_SIZE_3); bme.setGasHeater(320, 150); // 320*C for 150 ms } void loop() { if (! bme.performReading()) { Serial.println("Impossibile eseguire la lettura :("); return; } Serial.print("Temperatura = "); Serial.print(bme.temperature); Serial.println(" *C"); Serial.print("Pressione = "); Serial.print(bme.pressure / 100.0); Serial.println(" hPa"); Serial.print("Umidita' = "); Serial.print(bme.humidity); Serial.println(" %"); Serial.print("Gas = "); Serial.print(bme.gas_resistance / 1000.0); Serial.println(" KOhms"); Serial.print("Altitudine apposs. = "); Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA)); Serial.println(" m"); Serial.println(); delay(2000); //tempo minimo tra le letture } |
Altri articoli dedicati al sensore BME680
Lettura sensore BME680 tramite Demo board XIAO METER per SAMD21. Il sensore misura: pressione barometrica, temperatura, altitudine e VOC.
Gestione del sensore BME680 tramite il modulo Wemos D1 mini, i dati rilevato saranno riportati su un display TFT a colori.