
Nie jest to nic odkrywczego - wręcz idea takiego wykorzystania elektrodowego gadżetu (D1 mini) nasuwa się od razu.
Więc zaczynajmy:
Założeniem było wykonanie czujnika zapylenia i przy okazji innych parametrów atmosferycznych. Czujnik miał być umieszczony na balkonie i zostać połączony jak najmniejszą ilością kabli.
To, co przedstawiam poniżej jest trzecią wersją czujnika, a zarazem pierwszą, która doczekała się obudowy.
Wersja pierwsza bazowała na czujniku Sharp GP2Y1010AU0F i termometrze MCP9808.
W wersji drugiej zapragnąłem odczytu wilgotności, więc MCP został zastąpiony przez DHT22.
Obydwie miały podstawową wadę - czujnik zapylenia, który brał wszystko jak leci i nie był kalibrowany.
Powstała więc wersja 3, w której rolę czujnika zapylenia pełnić zaczął PMS3003. Producent twierdzi, że jest on fabrycznie kalibrowany. Posiada zestaw rejestrów z gotowymi wynikami pomiarów. Zapylenie rozbite jest na frakcje PM1, PM2,5 oraz PM10. Do rejestrów dostęp daje interfejs RS232 z logiką 3,3V. Za pomiar temperatury i innych parametrów odpowiada tym razem moduł oparty na BME280.
Obecna wersja mierzy (wylicza na podstawie pomiarów):
-zapylenie frakcja PM1 [µg/m³]
-zapylenie frakcja PM2,5 [µg/m³]
-zapylenie frakcja PM10 [µg/m³]
-temperaturę [°C]
-temperaturę punktu rosy [°C]
-wilgotność względną [%]
-wilgotność bezwzględną
-ciśnienie atmosferyczne [hPa]
-ciśnienie atmosferyczne w odniesieniu do poziomu morza[hPa]
-poziom sygnału Wi-Fi
Czyli to, co potrafi ESP8266 wraz z BME280 i PMS3003.
Sposób połączenia elementów nie jest niczym odkrywczym, a podyktowany jest użyciem sprzętowych interfejsów RS232 i I2C. Takie podłączenie ma jedną wadę - jeżeli podłączony jest czujnik zapylenia, nie da się wgrać programu do modułu. Wystarczy odłączyć moduł przez wyjęcie wtyczki na czas ładowania programu.
Jeśli kogoś ta niedogodność będzie mocno uwierać, to można zainicjować drugi port szeregowy i na niego przełączyć komunikację z czujnikiem zapylenia.

Elementy czujnika zmontowano na prostej płytce.
Umieszczono tam również dodatkowe pola lutownicze dla przyszłej rozbudowy.

Po zlutowaniu powstał zwarty moduł. Moduł ten przed zamontowaniem czujników pokryłem powtórnie kalafonią - zobaczymy, jak będzie chroniła ścieżki przed wilgocią.


Który został przymocowany do podstawy będącym w zestawie z obudową rzepem:

Całość zamknięto w obudowie radiacyjnej.

Obudowa jest dość droga, ale ma w zestawie uchwyty. Alternatywą była zabawa z podstawkami od doniczek.
Cały klocek zasilany jest z ładowarki 5V i bierze około 130mA.
Tyle o sprzęcie. Czas na program.
Choć może to zbyt duże słowo - powstał bowiem w Arduino Ide i w całości bazuje na gotowych bibliotekach.
Program realizuje odczyt danych z czujników i wystawia je w postaci prostej strony HTML

oraz paczki JSON.
Code: json
JSON jest używany przez serwerek, który wystawia normalną stronę WWW z danymi oraz zrealizowany na drugim module D1 mini zegarek, który na bieżąco wyświetla dane o zapyleniu.
Przed wgraniem programu należy w listingu wpisać nazwę domowej sieci Wi-Fi oraz hasło dostępu. Wypada też wpisać wysokość nad poziomem morza, na której zainstalowano czujnik (np. z GPS).
W routerze warto ustawić rezerwację adresu IP, by czujnik otrzymywał zawsze ten sam adres.
Można też zmienić tryb pracy na WIFI_AP, wówczas czujnik sam stanie się punktem dostępowym i będzie się można do niego podłączyć przez Wi-Fi jak do każdego innego AP.
Code: c
Koszty:
PMS3003 - 100zł,
BME280 moduł - 25zł,
obudowa - 60zł,
D1 mini - z elektrody.
Co dalej?
-może pomiar ilości opadów deszczu.
-może zasilanie z baterii słonecznej
-być może dopieszczenie strony HTML bo na razie pełni rolę diagnostyczną.
A może nic, bo to, co jest, działa i to całkiem nieźle, zważywszy że miesiąc przeleżało na balkonie bez obudowy w postaci pająka. Opis powstał, bo stwierdziłem, że należy się temu tworowi obudowa.
Dzięki czujności kol Azbi
Zmieniono jednostkę dla wilgotności absolutnej w opisie i listingu
Strona prezentująca dane z czujnika
http://tos18.ddns.net/php/air.php
Powstała kolejna wersja programu dla wemosa
zmiany to głównie wygląd strony wbudowanej oraz wstęp do sygnalizacji awarii czujników.
Code: c
a efekt zmian wygląda tak:

Jest też drobna zmiana w paczce json a mianowicie zmienna stan przyjmuje następujące wartości:
0-wszystko ok
1-problem z czujnikiem PMS
2-problem z czujnikiem BME280
3-problem z obydwoma czujnikami.
Tak oto po roku pracy szkic doczekał się jeszcze jednej poprawki
Code: c
A to za sprawą kolegi @Erbit który zauważył niepoprawny nagłówek dla json
Za co serdecznie dziękuję.
Jednocześnie okazało się że czujnik zapylenia wymaga okresowego czyszczenia. Myślę że raz na pół roku wystarczy. U mnie błędy pojawiły się po około roku ciągłej pracy bez usypiania.
Po rozebraniu i wyczyszczeniu suchym pędzelkiem czarnych płaszczyzn działa poprawnie.
WWygląda na to że z zamieszczonych przeze mnie listingów zniknęły ukośniki
zamieszczam więc gotowe szkice ino spakowane winrarem.
strona zbierająca dane z czujnika:
http://tos18.ddns.net/php/air.arch.php
kopia strony jaką wystawia sam czujnik:
http://tos18.ddns.net/php/air.sens.php
wersja 2.3 - ta z listingu
wersja 2.3.1 - poprawka jeśli używamy biblioteki PMS nowszej niż 1.0
Cool? Ranking DIY