W planach miałem montaż dwóch czujników ciśnienia do sterownika, ale natrafiłem na problem natury “mało pamięci”. Problem jest bardziej złożony przy czujniku ciśnienia z racji, że niestety BMP180 posiada stałą jedną adresację: 0x77. Czyli jak podłączę dwa takie czujniki do szyny I2C to nie będą one działać, bo mają taki sam adres i nie da się go zmienić. Można to rozwiązać przy użyciu multiplexera do I2C lub biblioteką do stworzenia dwóch programowych szyn I2C i do każdej z nich podłączyć jeden czujnik BMP180 co umożliwi odczyt danych z tych czujników mimo, że mają ten sam adres.
Niestety do takiego zabiegu musiałbym wprowadzić więcej kodu do “wsadu” sterownika (do obsługi BMP180), a to się wiąże z tym, że przy aktualnym kodzie brakuje na to pamięci. Arduino Uno posiada wolnej pamięci flash tylko 32 256 bajtów, a aktualnie “wsad” ma wielkość: 29 936 bajtów. Sporo, ale oprogramowałem moduł LAN (pobieranie danych ze sterownika, ustawianie adresu IP przez LAN itp.), czujnik ciśnienia, dwa czujniki DHT (DHT11 i DHT22) oraz odczytywanie temperatury z czujników DS18B20. Dodatkowo sterownik wykonuje obliczenia punktu rosy i temperatury odczuwalnej. Wszystkie dane można odczytać przy użyciu komend HTTP. Póki co popracuję jeszcze nad kodem i tak go wgram do sterownika. W międzyczasie jak już sterownik będzie działać popracuję nad optymalizacją kodu aby zajmował mniej miejsca w pamięci i nad tym aby podłączyć drugi czujnik ciśnienia z wykorzystaniem programowego I2C. Można oczywiście wykorzystać tutaj Arduino Mega, ale nie widzę w tym sensu. Docelowo w tej wersji ma to obsługiwać Arduino Uno. Arduino Mega może się przydać jak postanowię rozbudować sterownik o anemometr i inne opcje.
wilk 24 listopada, 2015
Posted In: Meteo station v2.0
Tagi: arduino, bmp180, czujnik ciśnienia, meteo, pamięć, pogody, stacja, station