Il BH1750 Ambient light Shield è appositamente progettato per essere utilizzato con le schede Wemos D1 Mini o Wemos D1 Mini Pro, su di esso è presente il sensore di luce digitale BH1750.
E’ in grado di trasformare l’intensità della luce, compresa in un range da 1 a 65.535 lux,
Per altri shield specifici per Wemos D1 mini vedere l’articolo Wemos D1 mini – Raccolta Shield disponibili.
Indice
Descrizione del modulo
Il BH1750 Ambient light Shield – Wemos D1 Mini è appositamente progettato per essere utilizzato con le schede Wemos D1 Mini o Wemos D1 Mini Pro. Su di esso è presente il sensore di luce digitale BH1750.
Si tratta di un sensore di luce ambientale digitale posto all’interno di un circuito integrato con interfaccia bus I2C. Questo circuito integrato è adatto per ottenere dati relativi alla luce ambientale in un’ampia gamma spettrale e ad alta risoluzione ( 1 – 65535 lx ).
Per altri sensori di luce vedere il post Raccolta sensori di luce
Caratteristiche del BH1750 Ambient light Shield
- Interfaccia I2C – 0x23 (0x5C)
- Due indirizzi selezionabili dall’utente
- BH1750FVI Convertitore digitale di illuminamento
- Ampia gamma e alta risoluzione. ( 1 – 65535 lx )
- Design separabile
- Fori di montaggio da Φ2 mm
- Alimentazione 3.3V
Circuito elettrico
Nella figura sottostante è visibile lo schema del BH1750 Shield D1 Mini (schema in formato PDF) che è composto principalmente dal sensore BH170 (datasheet) U1, troviamo poi vari condensatori e resistenze.
Le due resistenze (R2 e R3 da 4,7 KΩ ) hanno la funzione di pull-up sulle linee SCL e SDA bus I2C.
J1 (PU) permette di collegarle o meno alla tensione di alimentazione.
Il sensore può essere impostato per due indirizzi a seconda di come è collegato il pin 2 (ADR), questo varia a seconda che il pin sia collegato al positivo e negativo dell’alimentazione.
- Se ADR = LOW, l’indirizzo sarà 0x23
- Se ADR = HIGH, l’indirizzo sarà 0x5C
Nel nostro caso essendo il pin connesso tramite la resistenza R4 da 4,7 KΩ a GND (LOW) per cui l’indirizzo sarà 0x23.
Sotto è riportato il dettaglio dei Jumper ADR (J2) e PU (J1) descritti precedentemente.
Nel caso vogliate modificare l’indirizzo del sensore occorre effettuare un ponticello di stagno tra le due piazzole ADR.
Collegamento alternativo del modulo sensore
Il BH1750 Shield D1 Mini può essere installato direttamente su modulo Wemos D1 mini
Esiste la possibilità di utilizzare solamente il piccolo PCB su cui è presente il sensore. infatti come potete vedere, esiste una fresatura sul modulo e se si applica una leggera forza in corrispondenza del piccolo connettore questo si stacca.
Le dimensioni del piccolo modulo sono a questo punto di 13x13mm circa. Il connettore presente è a 4 pin I2C.
Questo potrà essere collegato tramite apposito cavetto per esempio al modulo TFT I2C Connector Shield su cui sono presenti due connettori I2C utilizzabili per questo scopo.
N° | Pin Wemos D1 | |
---|---|---|
1 | 3V3 | |
2 | D4 (IO2) | |
3 | D3 (IO0) | |
4 | GND |
Cavo per I2C / IO
Si tratta di un cavo con due connettori 4 Pin, lunghezza 10 cm.
Dove trovare il BH1750 Ambient light Shield
Il BH1750 Ambient light Shield, può essere acquistato online per esempio presso il sito AliExpress
Nel blister antistatico sono presenti due pin strip che dovranno essere saldati a vostra cura
Misurazione dell’illuminamento
Il sensore presentato in questo articolo, fornisce il valore in lux della luce che lo colpisce. Il lux (simbolo lx) è l’unità di misura per l’illuminamento.
Un lux è pari a un lumen su metro quadrato. Potremmo quindi definire il lux come il flusso luminoso per unità di superficie.
È un’unità di misura relativa alla luce visibile, dipende dalle caratteristiche dell’occhio umano, attraverso la curva di sensibilità dell’occhio alla radiazione luminosa.
Alcuni dati di illuminamento per dare un’idea di quanto vale un lux:
- la luce riflessa della Luna piena è pari a circa 1 lx;
- la luce del Sole mediamente varia tra i 32 000 lx e i 100 000 lx ;
- sotto i riflettori degli studi televisivi si hanno circa 1 000 lx ;
- in un campo di calcio (illuminazione notturna per riprese tv) tra i 500 lx e i 1200 lx;
- in un ufficio luminoso si hanno circa 400 lx;
- la luce di una stella luminosa è soltanto 0,00005 lx .
Modulo D1 MINI
Wemos D1 mini (V3.1.0) |
Wemos D1 mini Pro (V1.1.0) |
Per informazioni del modulo Wemos D1 mini vedere articolo Modulo WeMos – LOLIN D1 mini
Libreria di gestione del sensore H1750FVI
[Traduzione della pagina relativa alla libreria Arduino del sensore fatta da Cristopher Laws ]
Il sensore di luce ambientale BH1750 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 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; tenere presente che il tempo di misurazione viene modificato di conseguenza.
Test base del modulo
Per la prova del BH1750 Ambient light Shield utilizzeremo oltre al Modulo Wemos D1 Mini, lo BH1750 Ambient light Shield il modulo Display
Per la sua conformazione, lo shield può essere montato direttamente sul modulo Wemos D1 mini, nel nostro caso si è utilizzata una base tripla, l’alimentazione potrà essere fornita da PC tramite il cavo USB a cui è collegato il modulo Wemos, oppure tramite una Power bank utilizzando sempre il cavo USB
Materiale occorrente
Wemos D1 Mini |
BH1750 Ambient light Shield |
OLED Shield |
Base tripla |
Schema dei collegamenti
Librerie necessarie
Come anticipato, per la gestione del sensore è necessario utilizzare l’apposita libreria. Questa potrà essere ricercata inserendo nel campo della ricerca il testo “bh1750“, quella utilizzata è stata scritta da Cristopher Laws, nella versione 1.3.0
Lo Sketch utilizzato deve inoltre gestire il display 64 x 48 pixel con driver SSD1306, in questo caso occorre caricare una specifica libreria in quanto quella standard non funzionerà.
Quella da utilizzare è stata scritta in origine dalla Adafruit ma modificata da @mcauser. Scaricabile dal suo sito oppure da questo link.
In questo caso dovrebbe apparire la versione 1.1.0. Non effettuate l’aggiornamento proposto.
La scritta “INSTALLED” segnalerà l’avvenuta installazione delle libreria.
Per informazioni su come installare una libreria vedere l’articolo Arduino – Tutorial, come installare una libreria
Sketch del programma
Prima di caricare il programma per testare il BH1750 Shield D1 Mini, occorre verificare di aver impostato nell’IDE correttamente la scheda Wemos Di mini e che questa sia correttamente riconosciuta, verificando a quale porta risulta collegata. Il test è stato fatti utilizzando l’IDE nella versione 2.2.1.
Se tutto funziona, sul display potrete leggete il valore il lx dell’illuminamento del luogo in cui è posto il 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 |
#include "Adafruit_GFX.h" #include "Adafruit_SSD1306.h" #include <Wire.h> //Include la libreria e definisce il sensore #include <BH1750.h> BH1750 lightMeter; #define OLED_RESET 0 // GPIO0 Adafruit_SSD1306 display(OLED_RESET); void setup() { Serial.begin(9600); //Inizializza il sensore Wire.begin(D2, D1); lightMeter.begin(); Serial.println(F("BH1750 Test begin")); // Impostazione modulo display con indirizzo I2C addr 0x3C display.begin(SSD1306_SWITCHCAPVCC, 0x3C); delay(1000); // Cancellazione schermo e buffer display.clearDisplay(); // Messaggio iniziale display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println(" ADRIROBOT "); display.setTextColor(BLACK, WHITE); // Inverte il colore del testo display.setCursor(0, 10); display.println(" BH1750 "); display.display(); } void loop() { float lux = lightMeter.readLightLevel(); //Mostra i dati sul monito seriale Serial.print("Light: "); Serial.print(lux); Serial.println(" lx"); //Mostra i dati sul Display display.setTextColor(WHITE); //Calcella vecchi dati display.fillRect(0, 30, 64, 30, BLACK); display.setCursor(5, 30); display.print(lux, 1); display.print(" lx"); display.display(); delay(500); } |
Wemos D1 mini – Raccolta Shield disponibili
Oltre al BH1750 Shield D1 Mini , per la scheda Wemos D1 mini, prodotta dalla WEMOS/LOLIN sono disponibili vari shield che appartengono a varie categorie: Display & Interactive Shield, Environment, Power, Control, Others.
Per l’elenco vedere articolo Wemos D1 mini – Raccolta Shield disponibili
Utilizzo del sensore BH1750 con Arduino
Per l’utilizzo del sensore BH1750 presente sul breakout GY-302 con Arduino vedere lo specifico articolo BH1750 GY-302 Sensore di luce
Per informazioni relative ad altri sensori di luce vedere invece l’articolo Panoramica dei moduli sensori di luce