Serwisy partnerskie:
Close icon
Serwisy partnerskie

Budowa czujnika smogu IoT część 1 - opis i schematy

Temat smogu jest ostatnio bardzo popularny. Smog jest w Polsce od dawna, ale od kilku lat dużo się o nim mówi i przede wszystkim mierzy się jego poziom. W sezonie zimowym w mediach podawane są poziomy pyłów PM2,5 i PM10, ogłaszane są komunikaty alarmowe, gdy przekraczane są ich krytyczne wartości.
Article Image

Powstały też specjalne sieci czujników i strony internetowe, gdzie można sprawdzić jakość powietrza. Jednak mimo że na dużym obszarze, np. miasta, będzie ona dobra, to wystarczy jeden sąsiad palący węglem złej jakości lub po prostu śmieciami, aby tę jakość lokalnie drastycznie obniżyć.

Dlatego warto mieć swój własny czujnik poziomu pyłów zawieszonych i samemu kontrolować powietrze w swojej okolicy.

Własny czujnik przyda się też tam, gdzie publiczne sieci czujników nie docierają, czyli np. na obszarach wiejskich. A to tam wbrew pozorom jakość powietrza może być zimą znacznie gorsza z powodu braku ciepła sieciowego i gazu do ogrzewania. Właśnie żeby umożliwić własne pomiary, opracowałem projekt przydomowego czujnika smogu.

Co czujnik smogu tak naprawdę mierzy? Czym jest smog?

Smog, pył zawieszony, aerozole atmosferyczne to bardzo drobne cząstki stałe unoszące się (zawieszone) w powietrzu. W komunikatach słyszmy o PM2,5 oraz PM10 – to oznaczenia średnicy cząstek pyłu podanej w mikrometrach, czyli tysięcznych częściach milimetra. Zanieczyszczenia, które wdychamy do płuc, są dla nas niebezpieczne, negatywnie wpływają na zdrowie. Te większe PM10 szkodzą głównie na płuca, mniejsze PM2,5 są już tak małe, że mogą przenikać do krwiobiegu i wpływać na cały organizm.

Poziomy pyłów zawieszonych są podawane w mikrogramach na metr sześcienny powietrza. Oczywiste jest, że im mniej, tym lepiej i pożądana wartość to ta bliska zeru, co zdarza się np. latem. Ale żeby określić, kiedy powietrze jest już dobre, a kiedy niezdrowe, powstały normy. Są one różne w różnych krajach. Niestety w Polsce mniej restrykcyjne niż w innych krajach, np. w Europie Zachodniej. Ja w moim urządzaniu przyjąłem normy według tabeli 1, są one zgodne z tymi stosowanymi w komunikatach podawanych w mediach.

Tabela 1 Normy jakości powietrza

Z czego składa się czujnik smogu IoT?

Projekt składa się z dwóch urządzeń: czujnika smogu, który umieszczamy na zewnątrz budynku – nazwanego SMOG TX, oraz opcjonalnego urządzenia umieszczanego w domu, wyświetlającego orientacyjnie wartości PM2,5 i PM10 – nazwanego SMOG RX.

Rys.1 Wyniki pomiarów SMOG TX

Oba urządzenia komunikują się bezprzewodowo, poprzez domową sieć Wi-Fi. SMOG TX, poza czujnikiem pyłów zawieszonych, ma również czujnik mierzący: temperaturę i wilgotność powietrza oraz ciśnienie atmosferyczne.

Część odbiorcza jest opcjonalna, ponieważ wszystkie wyniki pomiarów można sprawdzić za pomocą dowolnego urządzenia z przeglądarką internetową. SMOG TX ma serwer WWW i prezentuję prostą stronę z wynikami pomiarów i oceną zanieczyszczenia powietrza, taką jak na rysunkach 1, 2, 3. Na rysunku 1 widać bardzo dobre wyniki, były one zarejestrowane na początku grudnia, około południa w słoneczną sobotę.

Rys.2 Wyniki pomiarów SMOG TX

Powietrze pachniało świeżością, w komunikatach podawanych przez media jakość powietrza oceniana była jako świetna. Na rysunku 2 pomiar wykonany po północy, było czuć i widać, że sąsiad zapalił „nocne śmieci”. Nocne, czyli takie, z których leci czarny dym i już strach palić nimi w dzień.

Rysunek 3 to pomiar wykonany następnego dnia rano, w styczniową niedzielę. Tego dnia media ogłaszały alarm smogowy i informowały, żeby nie wychodzić z domu. Dzień był bezwietrzny i słoneczny. Od sąsiada dym nie leciał. Powietrze na węch wydawało się czyste.

Rys.1 Wyniki pomiarów SMOG TX

To właśnie dlatego warto mieć czujnik lub chociaż obserwować pomiary podawane w mediach. Na węch czujemy substancje chemiczne, które są w dymie, a pyłów zawieszonych nie poczujemy.

Czyli może nam się wydawać, że powietrze jest czyste, a w rzeczywistości takie nie jest. Czujnik mierzy również poziom PM1, jednak ponieważ dla tak małych pyłów nie znalazłem sensownych norm, te wartości są pokazywane bez słownej i „kolorowej” oceny.

Opis układu - czujnik smogu IoT

Oba urządzenia wykorzystują moduły z układem ESP8266, który moim zdaniem jest rewelacyjnym rozwiązaniem do budowy urządzeń IoT. Zawiera on jednocześnie mikrokontroler i radio Wi-Fi, w dalszej części artykułu będę go nazywał po prostu mikrokontrolerem, mimo że jest to zdecydowanie więcej. Można o tym układzie śmiało mówić SoC – czyli System on Chip.

ESP8266 można wykorzystywać na wiele rożnych sposobów. Większość modułów z tym układem jest dostarczana z wgranym gotowym oprogramowaniem pozwalającym na pracę jako moduł łączności Wi-Fi. Wtedy główne oprogramowanie pracuje na innym układzie i steruje układem ESP za pomocą komend AT, znanych jeszcze z czasów modemów analogowych i nadal wykorzystywanych w różnych modułach komunikacyjnych.

Jednak o wiele ciekawsze i efektywne (zwłaszcza kosztowo) jest wykorzystanie wewnętrznego, wbudowanego mikrokontrolera ESP do uruchamiania swojego oprogramowania. Tutaj też mamy kilka możliwościowi. Możemy wykorzystać środowisko IDE dostarczane przez producenta układu - firmę Espressif.

Możemy wgrać interpreter języka LUA i potem to w nim tworzyć skrypty sterujące pracą naszego urządzenia. Możemy też skorzystać z Arduino IDE. To bardzo dobre moim zdaniem środowisko powstało dla mikrokontrolerów z rdzeniem AVR, ale obecnie dostępnych jest wiele wersji dla innych układów.

Co najlepsze, z punktu widzenia programisty to dalej to samo środowisko, znane biblioteki działają tak samo, a tylko „pod spodem” znajdują się kompilatory dla zupełnie innych architektur i sporo kodu dla odmiennego sprzętu.

Z mojego doświadczenia Arduino „przeniesione” na ESP8266 działa bardzo dobrze, a łatwość pisania kodu „sieciowego” z wykorzystaniem gotowych bibliotek jest zachwycająca. Dlatego właśnie oprogramowanie obu urządzeń powstało w Arduino IDE.

Smog TX – opis i schematy nadajnika

Urządzenie musi pracować na dworze, dlatego obudowa powinna zabezpieczyć je przed warunkami atmosferycznymi. Jednak w tym przypadku nie może to być szczelna obudowa np. klasy IP67, bo dla czujnika niezbędny jest swobodny przepływ mierzonego powietrza. Moje urządzenie zamontowane jest na częściowo zadaszonym tarasie, dzięki temu nie jest aż tak narażone na opady.

Dlatego zdecydowałem się na obudowę osłaniającą elektronikę od góry i z boków, ale otwartą od dołu. Obudowa pochodzi z odzysku, z urządzenia służącego do cyklicznego automatycznego rozpylania zapachów.

Fot.1 SMOG TX - nadajnik (zamontowany na ścianie)
Fot.2 SMOG TX - obudowa od spodu

Fotografia 1 przedstawia zamontowane na ścianie urządzenie, a fotografia 2 – obudowę od spodu. SMOG TX jest zamontowany na uchwycie, na którym wcześniej była antena satelitarna. Elementem montażowym jest typowa obejma służąca do mocowania rur. Kabel koncentryczny, który również jest pozostałością po instalacji satelitarnej, służy do doprowadzenia zasilania do czujnika.

Dzięki temu nie musiałem prowadzić nowych połączeń z domu na zewnątrz, a wcale nie jest to zastosowanie nietypowe dla tego typu kabla, ponieważ konwerter LNB jest zasilany z dekodera satelitarnego właśnie poprzez kabel sygnałowy.

Fot.3 SMOG TX - widok płytki

Rysunek 4 pokazuje schemat urządzenia SMOG TX, a fotografia 3 widok płytki. Najważniejszy element SMOG TX to czujnik pyłów zawieszonych typu PM7003. Jest to złożony moduł. Powietrze do wnętrza jego obudowy jest zaciągane przez wentylator. W komorze pomiarowej znajduje się laser.

Jeżeli powietrze zassane do czujnika zawiera drobiny pyłu zawieszonego, światło lasera odbije się od niego i będzie padać na elementy fotoelektryczne. Układy analogowe wzmacniają powstający w nich sygnał i podają na mikrokontroler z rdzeniem ARM Cortex-M0, który oblicza na ich podstawie stężenia PM1, PM2,5 oraz PM10.

Wyniki są wysyłane na zewnątrz modułu przez łącze szeregowe. Pozostałe elementy na schemacie to raczej typowy układ z mikrokontrolerem. Dioda D1 zabezpiecza przed odwrotną polaryzacją napięcia zasilającego.

Układ ESP8266 wymaga napięcia 3,3V, natomiast czujnik PMS7003 5V. Te napięcia są wytwarzane przez stabilizatory liniowe typu LM2937: U2 oraz U3. Gdybym projektował drugą wersję urządzenia, zastąpiłbym je przetwornicami. Ciepło wytwarzane przez stabilizatory liniowe zakłóca bowiem pomiar temperatury – podnosi ją w obudowie o kilka stopni.

W tym wypadku problem został rozwiązany programowo przez odjęcie arbitralnie ustalonej wartości, ponieważ pomiar temperatury w tym przypadku jest tylko dodatkiem do głównej funkcjonalności. Ale w urządzeniu, w którym byłby on kluczowy, należy zwrócić baczną uwagę, jak układy zasilania oraz inne wpływają na temperaturę we wnętrzu obudowy.

Rys.4 Schemat urządzenia SMOG TX

Układ ESP8266 jest zamontowany na gotowym module z anteną wykonaną w postaci ścieżki na płytce. Moduł typu ESP8266-WROOM-02 pochodzi od producenta układu scalonego i jako jeden z niewielu na rynku ma certyfikaty FCC oraz CE. Zaletą w porównaniu np. do popularnego ESP-01 jest też duża liczba dostępnych wyprowadzeń układu ESP8266.

Czujnik PMS7003 jest dołączony do mikrokontrolera przez łącze szeregowe. Sprzętowy UART ESP8266 jest wykorzystywany do jego programowania i przydatny przy debugowaniu kodu, dlatego czujnik dołączyłem do innych linii GPIO i wykorzystałem programową obsługę portu szeregowego.

Prędkość komunikacji czujnika jest nieduża (9600bps), nie wysyła on wiele danych (32 bajty maksymalnie 5 razy na sekundę), więc takie rozwiązanie jest wystarczające. Połączenie szeregowe jest dwukierunkowe, ale mikrokontroler wyłącznie odbiera dane od czujnika, komunikacja w drugą stronę nie jest wykorzystywana.

Wejście SET czujnika jest dołączone do mikrokontrolera. Niski stan podany na nie wprowadza czujnik w stan uśpienia. Z zasady działania czujnika, obecności elementów mechanicznych – wentylatora, a także źródła światła laserowego wynika jego ograniczona żywotność. Ciągły przepływ powietrza przez czujnik może również powodować gromadzenie się zanieczyszczeń w jego wnętrzu. Dlatego można wykorzystać wejście SET do okresowego wyłączania czujnika pomiędzy pomiarami. Ja jednak nie skorzystałem z tej możliwości w moim oprogramowaniu.

Czujnik ciśnienia, temperatury i wilgotności to BME280. Ponieważ występuje on w bardzo małej obudowie typu QFN, dla uproszczenia montażu został wykorzystany gotowy moduł z Chin. Co ciekawe, moduł kupiony w ten sposób jest łatwiej dostępny i tańszy niż sam układ scalony! Czujnik łączy się z mikrokontrolerem magistralą I2C. Rezystory podciągające dla linii SCL i SDA nie są wymagane, ponieważ już są zamontowane na module.

Smog RX –  opis i schematy odbiornika

Fotografia 4 przedstawia urządzenie odbiorcze, rysunek 5 jego schemat, a fotografia 5 widok płytki.

Fot.5 SMOG RX - widok płytki

Została ona specjalnie zaprojektowana do obudowy pozyskanej z zewnętrznego modemu telefonicznego. Obudowa jest wykonana z aluminium, bardzo solidna i elegancka. Do zamontowania w przedniej części wskaźników wychyłowych oraz diody LED został przygotowany nowy panel czołowy.

Rys.5 Schemat urządzenia SMOG RX

Natomiast płytka drukowana została tak zaprojektowana, żeby wykorzystywane złącza i przyciski znalazły się w otworach panelu tylnego, co widać na fotografii 6. SMOG RX jest przystosowany do zasilania 5V, ma gniazdo microUSB, czyli można wykorzystać np. ładowarkę od nieużywanego telefonu komórkowego.

W prototypie gniazdo było zbyt mocno odsunięte od krawędzi płytki i nie mogło być dobrze przylutowane. Dlatego dla mechanicznego wzmocnienia został wykorzystany klej na gorąco. W udostępnionych w Elportalu plikach projektu ten błąd został już poprawiony. Napięcie 3,3V dla układu ESP8266 jest wytwarzane za pomocą synchronicznej przetwornicy obniżającej typu ADP2108.

Fot.4 Smog RX - odbiornik
Fot.6 SMOG RX - złącza i przyciski w otworach panelu tylnego

To bardzo energooszczędny układ, który sam pobiera tylko 18μA, ma też bardzo dużą sprawność. W tym przypadku nie jest to niezbędne, ponieważ mamy zasilanie sieciowe, ale ten układ zasilania skopiowałem z innego projektu na ESP8266, gdzie ma on być zasilany z 4 baterii AA, a procesor ma większość czasu pozostawać w trybie uśpienia. Jest on w ESP8266 bardzo skuteczny – układ pobiera zaledwie 10μA w trybie Deep Sleep.

Jeżeli konstruujemy urządzenie, które budzi się tylko na kilka sekund, żeby pobrać paczkę danych z serwera, a potem śpi powiedzmy przez pół godziny, to korzystając z trybu uśpienia i dobrego układu zasilania (takiego jak właśnie ta przetwornica), można wykonać urządzenie z łącznością Wi-Fi, które może pracować na bateriach typu AA przez wiele miesięcy.

Przetwornica synchroniczna różni się od zwykłej tym, że w miejsce diody zastosowany jest tranzystor MOSFET, co zmniejsza straty energii. ADP2108 jest bardzo prosta w zastosowaniu, poza kondensatorami na wejściu i wyjściu jedyny wymagany element zewnętrzny to cewka L1. W SMOG RX użyty jest inny moduł z ESP8266 niż w TX, mianowicie ESP07S.

Użyta obudowa jest metalowa, a więc niezbędna jest antena zewnętrzna, a ten moduł ma typowe gniazdo antenowe typu μFL. ESP07S również posiada wszelkie wymagane certyfikaty.

Dwa wykorzystane mierniki wychyłowe to mikroamperomierze. Do wygenerowania pożądanego napięcia wykorzystana jest modulacja PWM (funkcja analogWritew Arduino) a rezystory R5, R6 oraz potencjometry montażowe RV1 oraz RV2 zostały tak dobrane, aby dla 100% wypełnienia PWM móc osiągnąć maksymalne wychylenie wskazówek.

Potencjometry służą do skalibrowania wychylenia w trakcie uruchamiania układu. Kondensatory C8 i C9 tworzą z tymi rezystorami filtr dolnoprzepustowy. Dioda LED błyska po każdym poprawnym odbiorze danych z SMOG TX. Przycisk SW1 służy do wprowadzenia urządzenia w tryb kalibracji wskaźników wychyłowych. SW2 wybiera tryb konfiguracji sieci Wi-Fi, a SW3 wprowadza urządzenie w tryb wgrywania oprogramowania przez złącze K1.

W drugiej części artykułu omówimy oprogramowanie i kwestie montażu.

Do pobrania
Download icon Budowa czujnika smogu IoT część 1 - opis i schematy
Tematyka materiału: czujnik pyłów, Wi-Fi, ESP8266, czujnik PMS7003, czujnik IoT
AUTOR
Źródło
Elektronika dla Wszystkich maj 2019
Udostępnij
UK Logo