Laserowy, bezprzewodowy sensor smogu dla Raspberry Pi

Laserowy, bezprzewodowy sensor smogu dla Raspberry Pi

W jednym z poprzednich numerów zaprezentowany został projekt sensora smogu z bezprzewodową technologią Bluetooth Low Energy. Wyposażony w dokładny, laserowy czujnik PMS7003 umożliwia on wykonywanie zdalnych pomiarów zawartości pyłów zawieszonych w powietrzu. Mierzy też temperaturę i wilgotność względną, korzystając z precyzyjnego układu SHT20. Prezentację wyniku pomiaru powierzono aplikacji BBair, która na ekranie smartfonu z systemem Android pokazuje, jaki jest aktualny stan badanego powietrza. Okazuje się, że z zaprezentowanego sensora można wycisnąć znacznie więcej funkcjonalności. I właśnie tym zajmiemy się dzisiaj.

Rysunek 1. Połączenie pól konfiguracyjnych: czas 15 minut

Rysunek 2. Połączenie pól konfiguracyjnych: czas 60 minut

Rysunek 3. Połączenie pól konfiguracyjnych: czas 180 minut

Rysunek 4. Schemat połączenia diod LED

Rysunek 5. Pierwsze kroki podczas konfigurowania systemu

Po odpowiednim skonfigurowaniu sensor BBair może wykonywać pomiary jakości powietrza w dwóch równoległych trybach:

  1. Pomiar na żądanie: w dowolnej chwili, po nawiązaniu połączenia Bluetooth Smart, sensor rozpoczyna wykonywanie pomiarów, przesyłając wyniki do  urządzenia mobilnego.
  2. Pomiary automatyczne: wykonywane cyklicznie z przesyłaniem wyników do komputera kolekcjonującego i przetwarzającego dane.

Takie dualne działanie sensora umożliwia sprawdzenie stanu powietrza w konkretnej, interesującej nas chwili, na przykład za pomocą smartfonu i jednocześnie zbieranie długookresowych danych analitycznych. Wykorzystując mały, popularny mikrokomputer Raspberry Pi, dostajemy nieograniczone wręcz możliwości rejestracji, analizy, prezentacji i publikacji zebranych danych pomiarowych. Odpowiednie do naszych zastosowań będą Raspberry Pi 3 lub Raspberry Pi Zero W fabrycznie wyposażone w interfejs Bluetooth Low Energy. Dzięki bibliotece bbmagic_lib jest możliwe bardzo łatwe i szybkie napisanie programu zbierającego dane z sensorów jakości powietrza.

Jak to zrobić? Sensor BBair

Na początek zajmiemy się skonfigurowaniem samego sensora BBair. Mamy do wyboru trzy okresy wykonywania pomiarów automatycznych: 15 minut, 1 godzina lub 3 godziny. Ustawienia żądanego okresu pomiarowego dokonujemy po uprzednim wyłączeniu zasilania za pomocą odpowiedniego połączenia pól konfiguracyjnych. Szczegóły pokazano na rysunkach 1…3. Nie wykonując żadnego połączenia pól, programujemy sensor do pracy w trybie pomiarów na żądanie, bez wykonywania pomiarów automatycznych.

Jak to zrobić? Raspberry Pi

Mikrokomputer Raspberry Pi Zero W z zainstalowanym systemem operacyjnym Raspbian Lite jest idealnym narzędziem do naszych celów. Ponieważ biblioteka zapewniająca komunikację z sensorami BBair ma również możliwość sterowania trzema diodami LED, wykonamy kilka połączeń, aby skorzystać z tego udogodnienia. Kolorowe diody będą informowały o stanie pracy programu. Przyłączmy zatem do Raspberry Pi diody z szeregowymi rezystorami, jak pokazano na schemacie z rysunku 4. Żółta dioda dołączona do pinu 13 zaświeci się, gdy uruchomimy aplikację, i zgaśnie, jeśli program zostanie zamknięty. Mrugające, zielona i czerwona, diody LED poinformują o trwającej komunikacji radiowej, odpowiednio - odbieraniu i wysyłaniu danych.

Jak to zrobić? Software

Aby móc zbudować aplikację, potrzebujemy narzędzi (kompilator, linker). Logujemy się zatem do elektronicznej maliny i instalujemy cały pakiet poleceniem

W kolejnym kroku uruchamiamy zatem komunikację bbmagic over BLE, wywołując funkcję

bbm_id = bbm_bt_read(bbm_buf) ;

Jeśli zwróci ona „0”, to oznacza, że nie nadeszły nowe dane. Wartość „-1” informuje, że użytkownik nacisnął Ctrl+C i zażądał zakończenia działania programu. Wtedy przerywamy główną pętlę do{...}while(bbm_id != -1), zamykamy komunikację BBMagic over BLE (bbm_bt_close()) i plik logowania, jeśli wcześniej został poprawnie otwarty (fclose(logFile)) i kończymy działanie (exit(0)). Jeśli natomiast funkcja zwróci liczbę większą od 0, to jest ona numerem ID urządzenia, które nadesłało wiadomość. W takim wypadku tablica bbm_buf[BBLIB_FRAME_SIZE] zawiera odebrane i zdekodowane dane. Sensor BBair ma numer ID=40 ukryty w stałej BBMAGIC_M_BBAIR i zdefiniowanej w pliku bbmagic_lib.h. Zawartość tablicy wypełnionej informacjami od sensora jakości powietrza szczegółowo przedstawia tabela 2.

Dalsza część pętli głównej sprawdza, czy odebrane dane pochodzą od sensora BBair

Pozostaje jeszcze pytanie, w jaki sposób zapisywać kolejne porcje danych pomiarowych do pliku? Sensor BBair dostarcza bowiem kolejnych informacji co około 1 sekundy, ale pomiary są wykonywane co 15, 60 lub 180 minut, w zależności od wybranej konfiguracji. Byłoby przecież bezcelowym zapisywanie do pliku każdej odebranej ramki danych. Mamy na szczęście prosty sposób na zorientowanie się, czy otrzymane właśnie dane są świeże, czy może dotyczą historycznego pomiaru sprzed powiedzmy kilkudziesięciu minut. Jak pokazuje tab. 2, pole bbm_buf[BBM_BBAIR_MEAS_TIME] każdej nadesłanej ramki danych zawiera czas w minutach, który upłynął od ostatniego pomiaru. Widzimy więc, że wartość ta będzie systematycznie rosła, aż do momentu, w którym zostanie zakończony kolejny pomiar i nowe wyniki zostaną dostarczone do aplikacji. Wtedy nastąpi jej wyzerowanie, ponieważ od wykonanego właśnie pomiaru upłynęło 0 minut. Wystarczy więc zapamiętywać wartość tego pola w zmiennej m_time i jeśli spełniony zostanie warunek

Pozostaje jeszcze kwestia drobnego usprawnienia, aby nasz logger działał w tle, umożliwiając normalny dostęp do konsoli. Użyteczne w tym przypadku będzie narzędzie ‘screen’. Szczegółowy opis, jak go zainstalować i użyć, można zaleźć pod adresem http://bit.ly/2PelGHN.

W kolejnym artykule o badaniu jakości powietrza zbudujemy w kilka chwil stację monitorującą, która będzie zasilana energią słoneczną. Wyniki pomiarów w atrakcyjnej formie zaprezentuje kolorowy czterocalowy, graficzny wyświetlacz LCD sterowany przez Raspberry Pi zero W (rysunek 11).

Mariusz Żądło

Artykuł ukazał się w
Elektronika Praktyczna
maj 2019
DO POBRANIA
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik czerwiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje czerwiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna czerwiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich czerwiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów