Vediamo in questo articolo come interpretare i valori letti dal sensore BH1750 utilizzando la Demo board XIAO METER su cui è istallato un XIAO SAMD21 della SEEED STUDIO.
Il sensore BH1750 presente sul breakout GY-302 è in grado di trasformare l’intensità della luce, compresa in un range da 1 a 65.535 lux, in un segnale digitale disponibile tramite interfaccia I2C.
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. Si può fare 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 BH1750FVI
[Traduzione della pagina relativa alla libreria Arduino del sensore fatta da Cristopher Laws ]
Il sensore di luce ambientale BH1750 montato sul modulo GY-302 ha sei diverse modalità di misurazione che sono divise in due gruppi: misurazioni continue e una tantum.
In modalità continua il sensore misura continuamente il valore di luminosità. In modalità singola, il sensore effettua una sola misurazione e poi passa alla modalità Spegnimento.
Impostazione precisione della misura
Ogni modalità ha tre diverse precisioni, vediamole:
- Bassa risoluzione – (4 lx di precisione, 16 ms di tempo di misurazione)
- Alta risoluzione – (precisione 1 lx, tempo di misurazione 120 ms)
- Alta risoluzione 2 – (precisione 0,5 lx, tempo di misurazione 120 ms)
Per impostazione predefinita, questa libreria utilizza la modalità ad alta risoluzione continua, ma è possibile cambiarla in una modalità diversa passando l’argomento mode a BH1750.begin().
Quando viene utilizzata la modalità One-Time, il sensore entrerà in modalità Spegnimento una volta completata la misurazione e dopo averla letta. Quando il sensore viene riacceso, torna alla modalità predefinita, il che significa che deve essere riconfigurato in modalità One-Time.
La libreria utilizzata è stata implementata per riconfigurare automaticamente il sensore al successivo tentativo di misurazione.
Impostazione risoluzione
Di solito si otterrà un valore intero che rappresenta l’equivalente in lux.
- Bassa risoluzione – (intervallo generico: 0,0 fino a 54612,5 lux)
- Alta risoluzione – (intervallo generico: 0,0 fino a 54612,5 lux)
- Alta risoluzione 2 – (intervallo generico: 0,0 fino a 27306,25 lux)
Il sensore stesso restituisce un intero senza segno a 16 bit. Pertanto il valore massimo è generalmente limitato. La conversione standard tra i cosiddetti “conteggi” in lux è 1/1.2, il che significa che si otterrà un valore inferiore. Poiché si usa float, se si verifica un errore otterrai un valore negativo.
-1 nessun dato valido è stato trasmesso dal sensore
-2 il dispositivo non è configurato. Altrimenti i conteggi misurati vengono convertiti in lux e restituiti. Se non vengono modificati i parametri avanzati, il valore lux massimo è 54612,5 lx.
Poiché il sensore conta l’impatto della luce in un intervallo di tempo specifico, è possibile modificare questo intervallo di tempo. Ciò è necessario se si utilizza una finestra di sovrapposizione o si compensa l’influenza ambientale come l’oscurità. Questo lasso di tempo è definito da un registro chiamato MTreg.
Pertanto è possibile scegliere un valore compreso tra 32 e 254. Il valore predefinito è 69; va tenuto presente che il tempo di misurazione viene modificato di conseguenza.
Caratteristiche del sensore
Ampio range (Lux): da 1 a 65.535
Alimentazione: da 3 VDC a 5 VDC
Temperatura di funzionamento: da -40°C a +85°C
Dimensioni (mm): 18,5×13,9×2,5 (connettori esclusi)
PINOUT del modulo sensore BH1750 GY-302
- VCC: ingresso alimentazione 2,7-5,5 VDC
- GND: massa alimentazione
- SCL: pin clock I2C
- SDA: pin DATA I2C
- ADDR: il pin viene utilizzato solo quando più BH1750 sono collegati ad una scheda di controllo
Dove trovare il sensore?
Il Breakout GY-302 con sensore BH1750 può essere acquistato presso il sito FUTURA ELETTRONICA, il codice prodotto è 1606-GY302BH1750. Il suo costo, al momento della pubblicazione di questo articolo è di 4,20 €.
Contento del blister
Video dimostrativo
Test BH1750 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 l’uso del sensore luce BH1750 è disponibile un’apposita libreria; questa funziona in unione alla libreria Wire.h che è già presente come libreria standard dell’IDE di Arduino che permette l’utilizzo del protocollo I2C
Per il caricamento occorre aprire sotto il menù Sketch, #include libreria, “Gestione Librerie..”
Nel campo ricerca si inserirà “BH1750”, trovata la libreria realizzata da Cristopher Laws , premendo su “More info..” apparirà il tasto “Installa” cliccare il tasto, la libreria verrà installata
Per altre informazioni vedere anche l’articolo Arduino – Tutorial, come installare una libreria
Collegamento del sensore BH1750 alla Demo board XIAO SAMD21
Se avremo realizzato la Demo Board XIAO METER per SAMD21 basterà posizionare il modulo sensore BH1750 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 LX-LCBST 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 il valore in Lx rilevato dal sensore.
I valori saranno aggiornati ogni secondo.
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 |
/* Lettura sensore BH1750 XIAO_METER_BH1750.ino Lettura del sensore BH1750 presente sul breakout GY-302 è in grado di trasformare l’intensità della luce compresa in un range da 1 a 65.535 lux. Il valore viene letto sul display OLED By Adriano Gandolfo - adrirobot https://www.adrirobot.it */ #include <Wire.h> #include <BH1750.h> BH1750 lightMeter; //Imposta display OLED #include <Adafruit_SSD1306.h> #define OLED_ADDR 0x3C #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET 1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); void setup() { // inizializza e cancella il display display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); delay(500); display.clearDisplay(); // Inizializza il bus I2C e il sensore Wire.begin(); lightMeter.begin(); } void loop() { float lux = lightMeter.readLightLevel(); //Mostra il valore sul display display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(5, 0); display.println("XIAO METER"); display.setCursor(15, 20); display.print(lux, 1); display.println(" lx"); display.setTextSize(1); display.setCursor(15, 50); display.println("www.adrirobot.it"); display.display(); delay(1000); display.clearDisplay(); } |
Altri articoli dedicati al sensore BH1750
Lettura sensore tramite Arduino UNO, articolo BH1750 GY-302 Sensore di luce
Lettura tramite Modulo Wemos D1 mini, articolo BH1750 Ambient light Shield – Wemos D1 Mini
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
Prossimamente
Gestione ingressi/uscite digitali, gestione led tramite pulsante
Lettura valore tensione tramite ingresso analogico