Vediamo in questo articolo come interpretare i valori letti dal sensore BME680 utilizzando la Demo board XIAO METER su cui è istallato un XIAO SAMD21 della SEEED STUDIO.
Indice
La demo board XIAO METER
La Demo board XIAO METER utilizzata in questo articolo è una scheda autoprodotta che permette di testare facilmente un elevato numero di sensori tramite l’utilizzo di un XIAO SAMD21 della SEEED STUDIO che è il membro più piccolo della famiglia Seeeduino.
Il modulo misura solamente 20×17.5×3.5mm e dispone di un microprocessore Cortex-M0, 11 porte di I/O, connessioni seriali UART, I2C ed SPI. Compatibile con l’IDE di Arduino.
Sotto le caratteristiche della Demo board XIAO METER.
Descrizione | Valore | |||
---|---|---|---|---|
Tensione di esercizio | Batteria al litio da 5 V / 3,7 V | |||
Corrente di carica | 1A (massimo) | |||
Display | OLED da 0,96" 128×64 pixel - driver SSD1306 | |||
Porte I2C | 2 | |||
Porte digitali | 1 | |||
Porte analogiche | 1 | |||
Altre apparecchiature esterne | pulsante utente | |||
Modulo alimentatore /caricabatteria | LX-LCBS | |||
Dimensioni | 48.96 x 49.53 mm |
Il modulo Seeed Studio XIAO SAMD21
Il modulo Seeed Studio XIAO SAMD21 è perfettamente compatibile con Arduino IDE, questo permette di sviluppare facilmente piccoli progetti con l’aiuto della vasta e completa libreria Arduino.
Ecco le sue principali caratteristiche:
Descrizione | Valore |
---|---|
Processore | CPU ARM Cortex-M0+ (SAMD21G18) fino a 48 MHz |
Memoria flash | 256KB |
Sram | 32KB |
Pin I/O | 11 PIN analogici (10 o 12 bit), 11 PIN digitali, 1 pin di uscita DAC |
Interfaccia I2C | 1 |
Interfaccia SPI | 1 |
Interfaccia UART | 1 |
LED | 1 LED utente, 1 LED di alimentazione, due LED per il download della porta seriale |
Porta alimentazione e interfaccia di download | Tipo-C |
Alimentazione | 3,3 V/5 V CC |
Dimensioni | 20 × 17,5 × 3,5 mm |
Compatibilità software | Compatibile con Arduino IDE |
Maggiori informazioni nell’articolo Seeed Studio XIAO SAMD21 – Presentazione
Realizzazione del PCB con PCBWay
Il PCB è stato disegnato con il programma online EasyEDA, mentre è stato realizzato tramite il servizio offerto dal sito PCBWay
Sito online per creazioni schemi e PCB | Sito produzione PCB |
Dove trovare il progetto
Il progetto completo può essere scaricato dal mio account presso OSHWLab, utilizzando questo link.
Per realizzare il PCB si può anche utilizzare il mio progetto presente sulla piattaforma di condivisione offerta dalla PCBWay, ecco in link.
Per maggiori informazioni relative alla costruzione della Demo Board vedere l’articolo Demo board XIAO METER per XIAO SAMD21 – Progetto completo
Descrizione del sensore BME680
Il sensore BME680 costituito da un package LGA che misura 3 x 3 x 1 mm con coperchio metallico e 8 pin , integra sensori di gas, pressione, umidità e temperatura a elevata linearità e accuratezza.
Il BME680 contiene un piccolo sensore MOX (Metal- OXide).
L’ossido metallico riscaldato modifica la resistenza in base ai composti organici volatili (COV – Volatile Organic Compounds ) presenti nell’aria, quindi può essere utilizzato per rilevare gas e alcoli come etanolo, alcool e monossido di carbonio ed eseguire misurazioni della qualità dell’aria.
Il BME680 consente all’utente di regolare individualmente le velocità di campionamento per ciascun componente del sensore (temperatura, umidità, pressione e gas), nonché di impostare il ritardo di inter-misurazione e il coefficiente di campionamento del filtro IIR .
La combinazione di queste impostazioni consente un controllo molto preciso dei tempi di misurazione e della precisione della misurazione, nonché la gestione dell’energia.
Vedere anche l’articolo BME680 Sensore: pressione, temperatura, umidità, VOC
Rilevamento della temperatura
Il BME680 misura temperature tra -40 ° C e 85 ° C con un intervallo di precisione tra 0 ° C e + 65 ° C. La precisione è di ± 0,5 ° C con una risoluzione completa di 0,01 ° C.
Rilevazione dell’umidità
L’umidità senza condensa tra lo 0% e il 100% viene misurata con una precisione di ± 3% a una risoluzione massima dello 0,008%.
Rilevamento della pressione
Il sensore di pressione funziona a temperature comprese tra 0 ° C a + 65 ° C. La pressione viene misurata tra 300 hPa e 1100 hPa con una precisione di ± 1,0 hPa e una risoluzione di 0,2 Pa
Rilevamento di gas nell’ambiente
Il sensore di gas funziona riscaldando internamente una piccola superficie e misurando la resistenza dello strato di gas.
Ciò indica la quantità di componenti volatili nell’aria e può essere utilizzato come mezzo indiretto per misurare la qualità dell’aria.
Tipologia del sensore utilizzato
Il modulo su cui è installato il sensore misura 19 x 16 mm con un peso di 1,3 g. Il modulo sensore 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.
Pin del modulo
Pin | Descrizione |
---|---|
VCC | Pin alimentazione , compresa tra 3,3-5 V CC |
GND | Pin di massa |
SCL | I2C / SPI Clock line |
SDA | I2C / SPI data line |
SDO | SPI data line |
CS | SPI Slave Device Enable |
Dove trovare il sensore
Il sensore BME680 , può essere acquistato presso il sito Homotix, codice HMTBME680.
Se lo acquisterete presso il sito potrete usufruire di uno sconto inserendo il codice di sconto ADRIROBOT
Video dimostrativo
Test BME680 su Demo board XIAO SAMD21
I primi passi saranno quelli di configurare il sistema, per cui dovremo aggiungere, se non l’abbiamo già fatto, all’IDE la possibilità di gestire il modulo XIAO SAMD1 e il display OLED. Vediamo come.
Come aggiungere Seeed Studio XIAO SAMD21 all’Arduino IDE
Il modulo Seeed Studio XIAO SAMD21 può essere programmato attraverso l’IDE di Arduino, basta aggiungere la scheda tra quelle riconosciute.
Cominceremo accedendo alla voce di menù File > Impostazioni, e aggiungeremo alla sezione URL aggiuntive per il Gestore schede, la seguente URL :
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
Ora cliccheremo su Strumenti-> Scheda-> Gestore di schede…, e inseriremo la keyword “Seeeduino xiao” nella casella di ricerca. Comparirà la voce “Seeed SAMD Boards“, che dovrà essere installata.
Per maggiori informazioni vedere l’articolo Seeed Studio XIAO SAMD21 – Presentazione
Libreria di gestione del display
Per utilizzare il display OLED è necessario installare l’apposita libreria. Può essere cercata tra le librerie installabili nell’IDE, basterà inserire nel campo di ricerca “Adafruit_SSD1306“.
Sarà anche mostrata una finestra che segnala che la libreria ha una dipendenza con la libreria grafica “Adafruit GFX Library“. Procedete premendo su “Install all”.
Per altre informazioni su come installare le librerie vedete l’articolo Arduino – Tutorial, come installare una libreria
Per altre informazioni vedere l’articolo Display bicolore OLED 0.96″ 128×64 – SSD1306
Libreria di gestione del sensore
Per facilitare la gestione come sempre ci vengono in aiuto delle librerie già pronte. Tra le tante presenti la scelta è andata a quella fornita dal sito Adafruit, anche se è stata creata per un altro modulo sensore, la libreria è perfettamente compatibile.
Per il caricamento occorre aprire sotto il menù Sketch, #include libreria, “Gestione Librerie..”
Nel campo ricerca si inserirà “BME680” trovata la libreria “Adafruit BME680 Libray“, premendo su “More info..” apparirà il tasto “Installa” cliccare il tasto
a fine installazione apparirà la scritta “INSTALLED”
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.
Per altre informazioni vedere anche l’articolo Arduino – Tutorial, come installare una libreria
Collegamento del sensore BME680 alla Demo board XIAO SAMD21
Se avremo realizzato la Demo Board XIAO METER per SAMD21 basterà posizionare il modulo sensore BME680 in uno dei due connettori I2C disponibili controllando l’orientamento.
Nel caso non aveste realizzato la Demo Board è sempre possibile realizzare il circuito utilizzando una bread board. In questo caso vi occorreranno:
Bread Board | |
Display bicolore OLED 0.96″ 128×64 – SSD1306 | |
cavi colorati di collegamento |
Il modulo Caricabatteria e la batteria potranno essere omessi in quanto il modulo XIAO SAMD21 può essere alimentato direttamente tramite il connettore USB
Sketch utilizzato
Lo sketch proposto mostrerà sul display i seguenti valori letti dal sensore:
- Temperatura espresso in °C
- Pressione atmosferica espressa in hPa
- Umidità, espressa in %
- Gas, espresso in valore delle resistenza rilevata dal sensore in KΩ relativo al contenuto complessivo di VOC, ma non può differenziare gas o alcoli.
I valori saranno aggiornati ogni 2 secondi.
Nota: 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, il periodo di preriscaldo potrà essere limitata a 30 minuti.
Questo perché i livelli di sensibilità del sensore cambieranno durante l’uso precoce e la resistenza aumenterà lentamente nel tempo mentre il MOX si riscalda fino alla lettura di base.
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
#include <Wire.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include "Adafruit_BME680.h" #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define BME_SCK 13 #define BME_MISO 12 #define BME_MOSI 11 #define BME_CS 10 #define SEALEVELPRESSURE_HPA (1013.25) Adafruit_BME680 bme; // I2C // Impostazione OLED #include <Wire.h> #include <Adafruit_SSD1306.h> #define OLED_ADDR 0x3C #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); void setup() { Serial.begin(9600); Serial.println(F("BME680 test")); // inizializza display display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); delay(1000); // Verifica collegamento con sensore if (!bme.begin()) { Serial.println("Non trovo il sensore BME680 sensore"); 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("Failed to perform reading :("); return; } display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(5, 0); display.println("XIAO METER"); display.setTextSize(1); display.setCursor(0, 20); display.print("Temperature: "); display.print(bme.temperature); display.print((char)247); display.println("C"); display.print("Pressure: "); display.print(bme.pressure / 100); display.println(" hPa"); display.print("Humidity: "); display.print(bme.humidity); display.println(" %"); display.print("Gas: "); display.print(bme.gas_resistance / 1000.0); display.println(" KOhms"); display.setTextSize(1); display.setCursor(15, 55); display.println("WWW.ADRIROBOT.IT"); display.display(); display.display(); delay(2000); } |
Altri articoli dedicati al sensore BME680
Lettura dei valori forniti dal sensore BME 680 con un modulo ESP32 Devkit V1.
La stessa applicazione utilizzando lo Shield per ESP32 DevKIT V1 – Progetto completo
Gestione del sensore BME680 tramite il modulo Wemos D1 mini, i dati rilevato saranno riportati su un display TFT a colori.
Altri sensori testati
Sotto potete trovare altri test effettuati con la Demo Board XIAO METER per SAMD21
Valore della temperatura ambiente letto dal sensore BMP180
Valore della luminosità ambiente letto tramite sensore BMH1750
Prossimamente
Sono attualmente in preparazione gli articoli relativi ai seguenti utilizzi della Demo Board XIAO METER per SAMD21
Gestione ingressi/uscita digitali, gestione led tramite pulsante
Lettura valore tensione tramite ingresso analogico