BH1750 je levný obvod pro měření světelné intenzity. Uvažuji o tom, že bych jím rozšířil meteostanici a měřil ještě navíc světelnou intenzitu. Obvod komunikující po I2C. Proto abychom mohli komunikovat musíme povolit I2C komunikaci. Přihlašte se do Raspberry a zadejte příkaz:
sudo raspi-config
Vyberte možnost 8) Advenced Options -> A7 I2C ( povolte I2C komunikaci)
Poté restartujte Raspberry a jdeme propojit Raspberry a BH1750. Nepotřebujete žádné součástky, pouze oba obvody propojíme.
Schéma zapojení
Napájení je 3,3V!!!
Instalace i2c-tools
apt-get install i2c-tools
Nyní si zobrazíme zařízení na I2C sběrnici:
i2cdetect 1
i2cdetect 1 WARNING! This program can confuse your I2C bus, cause data loss and worse! I will probe file /dev/i2c-1. I will probe address range 0x03-0x77. Continue? [Y/n] 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Je vidět že na adrese 23 je naše čidlo světelné intenzity. Pro zjištění světelné intenzity použijeme programovací jazyk Python. Pro komunikaci ještě zvýbá nainstalovat modul smbus:
apt-get install python-smbus
Získání hodnoty osvětlení
vim bh1750.py
#!/usr/bin/python import time import smbus # Simple function to convert 2 bytes of data # into a decimal number def convertToNumber(data): return ((data[1] + (256 * data[0])) / 1.2) DEVICE = 0x23 # I2C device address bus = smbus.SMBus(1) # Rev 2 Pi uses 1 while True: data = bus.read_i2c_block_data(DEVICE,0x11) print "Light Level : " + str(convertToNumber(data)) + " lx" time.sleep(0.5)
Souboru nastavíme oprávnění pro spuštění
chmod ogu+x bh1750.py
Měření spustíme:
sudo python bh1750.py