poniedziałek, 5 października 2015

Raspberry Pi 2 & Windows 10 IoT Core - odc.4: I2C (BMP180)

Tym razem postanowiłem skorzystać z I2C, by zmierzyć temperaturę i ciśnienie atmosferyczne w pokoju. Posłużył mi do tego dość popularny czujnik BMP180 produkcji Bosch (moduł SparkFun). Jak widać na zdjęciach wszystko się udało i nic nie wybuchło.

Ale po kolei. Co to jest I2C?  To kolejny standard komunikacji szeregowej między urządzeniami. Kto nie zetknął się z nim na studiach, może rzucić okiem na odpowiednią część wykładu  http://www.ien.pw.edu.pl/EAZ/_pdf/wykl_cz1.pdf.  Przed eksperymentami koniecznie należy zapoznać się z dokumentacją czujnika BMP180. Dowiemy się z niej, do jakich rejestrów zapisywać polecenia odczytu temperatury i ciśnienia (cztery poziomy precyzji), a z jakich odczytywać wyniki pomiarów oraz parametry kalibracji (są potrzebne do dość złożonych wzorów konwertujących surowe wartości z bezpośredniego odczytu na postać zrozumiałą dla ludzi). Zwróćmy uwagę na podane czasy w ms, po których możemy odczytać wynik pomiaru (różne dla poszczególnych precyzji ciśnienia). Mamy tam też opisaną komunikację po I2C, jakby ktoś nie zapoznał się z tym standardem z innych źródeł. Jeszcze jedna dygresja o BMP180. Standardowo dostarczany jest z otworami, w które trzeba wlutować goldpiny, by móc wpiąć go do płytki. Jeśli jednak eksperymentujemy, to możemy pójść na skróty i posłużyć się kabelkami z haczykami, co też uczyniłem.

Jak połączyć BMP180 z “maliną”?  Robimy to w prosty sposób przy użyciu czterech przewodów:  masa, zasilanie +3.3V, szyna z danymi I2C (SDA), szyna z zegarem I2C (SCL). Nie mamy raczej jak pomylić pinów GPIO w Raspberry Pi (tylko jedno SDA i SCL).  Dla porządku polecam jednak zapoznać się ze schematem np. z projektu BMP180 Windows IoT Project.

Co z oprogramowaniem?  Polecam źródła BMP180 Windows IoT Project, a także lekturę posta I/O I²C with Windows 10 IoT, Raspberry Pi 2 and the temperature sensor BMP180. W moim przypadku to wypadkowa wspomnianych rozwiązań (używam wysokiej precyzji pomiaru ciśnienia, ale nie tej hiper najwyższej) dodatkowo wzbogacona o wyliczanie wysokości n.p.m na podstawie ciśnienia. Odpowiedni wzór można znaleźć np. na stronie Raspberry Pi barometr czujnik ciśnienia BMP 180 czy w skryptach biblioteki Adafruit_Python_BMP.  Wyliczona wysokość pasuje w miarę do miejsca, w którym się znajduję (co jakiś czas można zaobserwować drobne wachania w zakresie kilku metrów).

WP_20151006_00_23_48_Pro

WP_20151006_00_22_21_Pro

WP_20151006_00_21_57_Pro

Brak komentarzy: