In dieser kleinen Schaltung verwenden wir einen BH1750FVI-Sensor auf einem Breakoutboard und einen Arduino zur Messung der Beleuchtungsstärke in Lux. Neben der Anwendung zur Messung der Ausleuchtung von Objekten in der Fotografie, kann man allerdings – mit einer Erweiterung dieser Schaltung – auch leicht eine automatisch angepasste Beleuchtung von Räumen oder Grundstücken vornehmen. Ebenso ist es möglich eine automatische Helligkeitsregelung von Displays zu realisieren.
Wir verkabeln unseren Arduino – in diesem Fall ein Arduino Uno – mit dem (GY-30) Breakoutboard wie folgend:
mit der Maus über Elemente fahren (oder im Touch-Modus: Elemente antippen)...
Arduino (Nano, Uno, Pro Mini) |
Arduino (Mega, Mega 2560) |
GY-30 BH1750FVI Breakoutboard |
5V oder 3.3V (VCC) | 5V oder 3.3V (VCC) | VCC |
GND | GND | GND |
A4 (SDA) | D20 (SDA) | SDA |
A5 (SCL) | D21 (SCL) | SCL |
Programmcode (Sketch):
Da eine zusätzliche Bibliothek nicht notwendig ist, brauchen wir nur noch folgenden Sketch auf den Arduino laden:
#include <Wire.h> int BH1750_address = 0x23; // i2c Addresse byte buff[2]; void setup(){ Wire.begin(); BH1750_Init(BH1750_address); delay(200); Serial.begin(9600); Serial.println("Starte Beleuchtungsstaerkemessung - blog.simtronyx.de"); } void loop(){ float valf=0; if(BH1750_Read(BH1750_address)==2){ valf=((buff[0]<<8)|buff[1])/1.2; if(valf<0)Serial.print("> 65535"); else Serial.print((int)valf,DEC); Serial.println(" lx"); } delay(1000); } void BH1750_Init(int address){ Wire.beginTransmission(address); Wire.write(0x10); // 1 [lux] aufloesung Wire.endTransmission(); } byte BH1750_Read(int address){ byte i=0; Wire.beginTransmission(address); Wire.requestFrom(address, 2); while(Wire.available()){ buff[i] = Wire.read(); i++; } Wire.endTransmission(); return i; }
und starten dann noch den seriellen Monitor (mit 9600 Baud Geschwindigkeit):
Nun sollten eine ähnliche Ausgabe wie im obigen Bild erhalten. Im vorliegenden Fall wurde bei sonnigem Wetter der Sensor zwischen Schatten (kurzzeitig mit von der Hand in geringem Abstand abgedeckt) und direkter Sonne hin- und herbewegt. Hierbei ist zu erkennen, dass bei direkter Sonneneinstrahlung sehr schnell der Wertebereich des Sensors überschritten wird.
Eine Übersicht mit Beispielen gängiger Beleuchtungsstärken zum Vergleich ist hier in der Wikipedia zu finden.
Bauteile (Bezugsquellen):
eBay: | Arduino BH1750FVI Breadboard Breadboard Kabel |
Amazon: | Arduino BH1750FVI Breadboard Breadboard Kabel |
Gut?