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).
Brak komentarzy:
Prześlij komentarz