Datasheet & Pinout: BH1750 Digital Lyssensor (GY-302)

☀️ 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.