☀️ BH1750 Digital Lyssensor (GY-302)
BH1750 er lyssensoren for dig, der er færdig med at gætte. Hvor en fotomodstand bare siger "lidt lyst-ish", spytter BH1750 et rigtigt tal ud i lux over I2C – og den er kalibreret til at se lys nogenlunde som dit øje gør.
Perfekt til automatisk lys i indkørslen, skærmlysstyrke der følger rummet, vejrstationer og drivhus-logging. To ledninger til data, færdigt bibliotek, og du har lux i Serial Monitor på fem minutter.
🛒 Køb BH1750 lyssensor 📄 Officielt datasheet (ROHM, PDF) 🔦 Billig lillebror: GL5528 LDR
⚡ Hurtige specifikationer
| Parameter | Værdi |
|---|---|
| Chip | ROHM BH1750FVI på GY-302 breakout |
| Forsyning (modul) | 3,3–5 V (modulet har egen spændingsregulator) |
| Forsyning (selve chippen) | 2,4–3,6 V – derfor regulatoren på modulet |
| Interface | I2C |
| I2C-adresse | 0x23 (ADDR åben eller til GND) / 0x5C (ADDR til VCC) |
| Måleområde | 1–65.535 lx |
| Opløsning | 4 lx (L-mode), 1 lx (H-mode), 0,5 lx (H-mode2) |
| Måletid | ca. 120 ms i H-mode, ca. 16 ms i L-mode |
| Spektral følsomhed | Tæt på menneskeøjet (top omkring 560 nm) |
📌 Pinout
Rækkefølgen på GY-302-modulet (set forfra med pins nedad):
| Pin | Navn | Funktion | Forbindes til |
|---|---|---|---|
| 1 | VCC | Forsyning | 5V (UNO/Nano) eller 3V3 (ESP32) |
| 2 | GND | Stel | GND |
| 3 | SCL | I2C-clock | A5 (UNO/Nano) / GPIO22 (ESP32) |
| 4 | SDA | I2C-data | A4 (UNO/Nano) / GPIO21 (ESP32) |
| 5 | ADDR (ADD) | Vælger I2C-adresse | Åben/GND = 0x23, VCC = 0x5C |
Der findes kloner med en anden rækkefølge – kig altid på silketrykket ved siden af hullerne, før du sætter strøm på.
🔌 Sådan forbinder du den
| BH1750 | Arduino UNO / Nano | ESP32 (DevKit) |
|---|---|---|
| VCC | 5V | 3V3 |
| GND | GND | GND |
| SCL | A5 | GPIO22 |
| SDA | A4 | GPIO21 |
| ADDR | Lad være åben (0x23) | Lad være åben (0x23) |
På en UNO R3 kan du også bruge de dedikerede SDA/SCL-pins ved AREF – de er bare forbundet til A4/A5 indvendigt. Ny i breadboard-land? Tag et smut forbi KompoNemt Grundskolen.
💻 Eksempelkode
Bibliotek: "BH1750" af Christopher Laws (søg på BH1750 i Library Manager)
#include <Wire.h>
#include <BH1750.h>
BH1750 lysmaaler; // standardadresse 0x23
void setup() {
Serial.begin(9600);
Wire.begin(); // ESP32: Wire.begin(21, 22);
if (lysmaaler.begin(BH1750::CONTINUOUS_HIGH_RES_MODE)) {
Serial.println("BH1750 klar!");
} else {
Serial.println("BH1750 ikke fundet - tjek ledninger");
}
}
void loop() {
float lux = lysmaaler.readLightLevel();
if (lux < 0) {
Serial.println("Målefejl");
} else {
Serial.print("Lys: ");
Serial.print(lux);
Serial.println(" lx");
}
delay(1000);
}
💡 KompoNemt-tip fra værkstedet
- To sensorer, to adresser: Vil du have to BH1750 på samme I2C-bus (fx inde og ude), så sæt ADDR på den ene til VCC. Så hedder den 0x5C, og de to kan snakke i munden på hinanden uden ballade.
- Del bussen: BH1750 kan sagtens dele SDA/SCL med fx et OLED-display eller en AHT21 – de har hver deres adresse.
- Lad den se lyset: Den lille hvide/klare chip er øjet. Bygger du den ind i en 3D-printet kasse, så lav et hul eller brug en klar rude – mat plast æder lux.
- Skumring: Til natlys og lave lysniveauer giver H-mode2 (0,5 lx opløsning) pænere tal end standard-mode.
-
Direkte sol klipper: En overskyet dag er nogle tusinde lx, men direkte sommersol kan overstige 65.535 lx, så målingen "klipper" i toppen. Til sollys udendørs kan du skrue ned for følsomheden med
setMTreg()i biblioteket.
🔧 Fejlfinding
- "BH1750 ikke fundet": Byt SDA og SCL – det er den klassiske. Kør derefter en I2C-scanner og se, om den svarer på 0x23 eller 0x5C.
-
Negative værdier (fx -1 eller -2): Sensoren blev ikke startet korrekt, eller læsningen fejlede. Tjek at
begin()lykkes, og at GND er fælles. - Altid 0 lx: Sensoren er dækket til, eller den sidder i en kasse uden lysåbning. Prøv med en lommelygte direkte på chippen.
-
ESP32 finder intet: Brug 3V3 og GPIO21/22, eller angiv dine egne pins i
Wire.begin(sda, scl).
Sidder du fast? Skriv til os – vi hjælper gerne.