Elektroda.pl
Elektroda.pl
X
SterControlSterControl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Cyfrowy czujnik natężenia światła na I2C do Raspberry Pi

ghost666 18 Lip 2015 14:39 5418 2
  • Cyfrowy czujnik natężenia światła na I2C do Raspberry Pi
    Układ BH1750FVI jest cyfrowym sensorem natężenia oświetlanie, wykorzystującym do komunikacji interfejs I²C. Pozwala to na łatwe podłączenie go do komputera Raspberry Pi z wykorzystaniem jedynie czterech przewodów. Moduł z tym układem umożliwia szybkie i proste pomiary natężenie oświetlenia, gdyż oferuje cyfrowe wartości o rozdzielczości 16 bit na swoim wyjściu. Sam układ wykorzystywany jest częstow telefonach komórkowych, telewizorach i monitorach a także aparatach i kamerach cyfrowych do dobierania parametrów ekspozycji.

    Wykorzystany w poniższym przypadku niewielki moduł ma wielkość zaledwie 32 mm x 16 mm. Moduł posiada jedynie pięć goldpinów, potrzebnych do podłączenia do układu. Można je wpiąć do płytki stykowej, lub połączyć kabelkami bezpośrednio z Raspberry Pi.

    Cyfrowy czujnik natężenia światła na I2C do Raspberry Pi


    Konfiguracja interfejsu I²C

    Aby wykorzystać opisywany moduł z Raspberry Pi, komputer musi mieć włączony interfejs I²C. Nie jest on domyślnie włączony. Sposób jego włączenia poprzez aplikację raspi-config opisano w tym artykule.

    Podłączanie sprzętu

    Poniższa tabelka pokazuje połączenia modułu do wyprowadzeń GPIO Raspberry Pi (P1). Lokalizację poszczególnych pinów na listwie GPIO odnaleźć można w dokumentacji RPi.






    Opis na PCB modułuOpisPin na wyprowadzeniu GPIO RPi
    GNDMasaP1-06
    ADDWybór adresuP1-06
    SDAI²C SDAP1-03
    SCLI²C SCLP1-05
    VCCnapięcie 3,3VP1-01


    Na poniższym obrazku znajduje się schematyczne przedstawienie podłączenia modułu do płytki RPi z wykorzystaniem płytki stykowej i zaledwie pięciu kabelków.

    Cyfrowy czujnik natężenia światła na I2C do Raspberry Pi


    Diagram narysowano w Fritzing z wykorzystaniem własnoręcznie dodanego elementu - opisywanego modułu. Inne moduły z opisywanym sensorem, dostępne w handlu, mogą mieć inny rozkład wyprowadzeń, dlatego trzeba koniecznie zwrócić uwagę na opis n a PCB i dokumentację zakupionego modułu.

    Po podłączeniu układu do RPi i uruchomieniu systemu komenda i2cdetect powinna pokazać nam układ pod adresem 0x23.

    Przykładowy kod w Pythonie

    Poniżej znajduje się przykładowy skrypt napisany w języku Python, pozwalający na odczyt natężenia światła z modułu.

    Kod: python
    Zaloguj się, aby zobaczyć kod


    Jeśli chcecie pobrać skrypt bezpośrednio na RPi z internetu możecie wpisać komendę:

    Code:
    wget https://bitbucket.org/MattHawkinsUK/rpispy-misc/raw/master/python/bh1750.py


    Lub pobrać skrypt poprzez link.

    Aby uruchomić pobrany skrypt wystarczy wpisać:

    Code:
    sudo python bh1750.py


    A na wyjściu powinniśmy zobaczyć coś takiego:

    Cyfrowy czujnik natężenia światła na I2C do Raspberry Pi


    Pętla while w skrypcie odczytuje ciągle wartość natężenie oświetlenia, co około 200 ms. Program działą do momentu naciśnięcia kombinacji klawiszy ctrl+c.

    Uwagi do skryptu

    Komenda import w Pythonie importuje do skryptu wykorzystywane biblioteki, wliczając w to bibliotekę smbus, która obsługuje interfejs I²C.

    Każdy układ I²C musi mieć jakiś adres. Jeśli pin ADDR modułu podłączmy do masy to adres układu wyniesie 0x23, jeśli do napięcia zasilania to adresem będzie 0x5C

    Stałe, definiowane w skrypcie, dobrane zostały zgodnie z zapisany karty katalogowej układu. Wykorzystany jest tylko “ONE_TIME_HIGH_RES_MODE_1″. Inne tryby pracy mogą być przydatne, jeśli chce się realizować szybkie pomiary.

    Funkcj smbus.SMBus(1) KONFIGURUJE INTERFEJS I²C Raspberry Pi.

    Funkcja read_i2c_block_data wykorzystywana jest do odczytania dwóch batów danych z układu w trybie ONE_TIME_HIGH_RES_MODE_1.

    Funkcja convertToNumber pozwala na konwersję dwóch odczytanych bajtów na realną wartość, zmierzoną przez układ. Wartość 1,2 w obliczeniach pochodzi z karty katalogowej układu.

    Źródło: http://www.raspberrypi-spy.co.uk/2015/03/bh1750fvi-i2c-digital-light-intensity-sensor/

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9835 postów o ocenie 8046, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • SterControlSterControl