Spisu treści:

Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4: 15 kroków (ze zdjęciami)
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4: 15 kroków (ze zdjęciami)

Wideo: Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4: 15 kroków (ze zdjęciami)

Wideo: Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4: 15 kroków (ze zdjęciami)
Wideo: Multisensor czujnik jakości powietrza w Home Assistant 2024, Lipiec
Anonim
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4
Niedrogi monitor jakości powietrza IoT oparty na RaspberryPi 4

Santiago w Chile podczas zimowej katastrofy ekologicznej ma przywilej życia w jednym z najpiękniejszych krajów na świecie, ale niestety nie wszystkie róże. Chile w okresie zimowym bardzo cierpi z powodu zanieczyszczenia powietrza, głównie z powodu cząstek stałych, takich jak pył i smog.

Z powodu zimnej pogody, na południu, zanieczyszczenie powietrza jest spowodowane głównie kalefaktorami opartymi na drewnie, a w Santiago (główna stolica w centrum kraju) mieszanym z przemysłu, samochodów i wyjątkowego położenia geograficznego między dwoma ogromnymi łańcuchami górskimi.

W dzisiejszych czasach zanieczyszczenie powietrza jest dużym problemem na całym świecie, a w tym artykule zbadamy, jak opracować niedrogi, domowy monitor jakości powietrza, oparty na Raspberry Pi. Jeśli chcesz dowiedzieć się więcej na temat jakości powietrza, odwiedź projekt „Światowy wskaźnik jakości powietrza”.

Kieszonkowe dzieci

  • Raspberry Pi 4
  • 1SDS011 - Precyzyjny laserowy czujnik wykrywania jakości powietrza pm2.5
  • Plastikowe pudełko

Krok 1: Materia cząsteczkowa (PM): co to jest? Jak dostaje się do powietrza?

Materia cząsteczkowa (PM): co to jest? Jak dostaje się do powietrza?
Materia cząsteczkowa (PM): co to jest? Jak dostaje się do powietrza?

Tak więc, aby zrozumieć zanieczyszczenie lub zanieczyszczenie powietrza, musimy zbadać cząstki, które są z tym związane, znane również jako cząstki stałe. Patrząc na wykresy z poprzedniej sekcji możemy zauważyć, że wspominali o PM2.5 i PM10. Zróbmy szybki przegląd tego.

PM oznacza cząstki stałe (zwane również zanieczyszczeniem cząstkami): termin określający mieszaninę cząstek stałych i kropel cieczy znajdujących się w powietrzu. Niektóre cząsteczki, takie jak kurz, brud, sadza lub dym, są na tyle duże lub ciemne, że można je dostrzec gołym okiem. Inne są tak małe, że można je wykryć tylko za pomocą mikroskopu elektronowego. Cząsteczki występują w szerokiej gamie rozmiarów. Cząsteczki o średnicy mniejszej lub równej 10 mikrometrom są tak małe, że mogą dostać się do płuc, potencjalnie powodując poważne problemy zdrowotne. Dziesięć mikrometrów to mniej niż szerokość pojedynczego ludzkiego włosa.

Zanieczyszczenia cząsteczkowe obejmują gruboziarniste cząstki pyłu (PM10): wdychane cząstki o średnicach zwykle 10 mikrometrów i mniejszych. Źródła obejmują operacje kruszenia lub mielenia oraz pył wzniecany przez pojazdy na drogach. Drobne cząstki (PM2,5): drobne cząstki, które można wdychać, o średnicach zwykle 2,5 mikrometra i mniejszych. Drobne cząstki są wytwarzane ze wszystkich rodzajów spalania, w tym pojazdów silnikowych, elektrowni, spalania drewna w budynkach mieszkalnych, pożarów lasów, spalania w rolnictwie i niektórych procesów przemysłowych. Więcej informacji na temat cząstek stałych można znaleźć na stronie EPA: The United States Environmental Protection Agency

Krok 2: Dlaczego ważne jest, aby dbać o te cząstki stałe?

Dlaczego ważne jest, aby dbać o te cząstki stałe?
Dlaczego ważne jest, aby dbać o te cząstki stałe?

Jak opisał GERARDO ALVARADO Z. w swojej pracy na Uniwersytecie w Chile, badania nad epizodami wysokiego zanieczyszczenia powietrza w Dolinie Meuse (Belgia) w 1930 r., Donorze (Pensylwania) w 1948 r. i Londynie w 1952 r. były pierwszymi udokumentowanymi źródłami dotyczącymi śmiertelności. z zanieczyszczeniem cząstkami (Préndez, 1993). Postępy w badaniach nad wpływem zanieczyszczenia powietrza na zdrowie ludzi wykazały, że zagrożenia dla zdrowia są powodowane przez wdychane cząstki, w zależności od ich penetracji i osadzania w różnych odcinkach układu oddechowego oraz odpowiedzi biologicznej na zdeponowane materiały.

Najgrubsze cząstki, około 5 μm, są filtrowane przez wspólne działanie rzęsek przewodu nosowego i błony śluzowej pokrywającej jamę nosową i tchawicę. Cząsteczki o średnicy od 0,5 do 5 μm mogą odkładać się w oskrzelach, a nawet w pęcherzykach płucnych, jednak po kilku godzinach są eliminowane przez rzęski oskrzeli i oskrzelików. Cząsteczki mniejsze niż 0,5 μm mogą wnikać głęboko, aż do odkładania się w pęcherzykach płucnych, pozostając od tygodni do lat, ponieważ nie ma mechanizmu transportu śluzowo-rzęskowego, który ułatwia eliminację. Poniższy rysunek przedstawia przenikanie cząstek do układu oddechowego w zależności od ich wielkości.

Tak więc wykrycie obu rodzajów cząstek (PM2,5 i PM10) jest bardzo ważne, a dobrą wiadomością jest to, że oba są czytelne przez prosty i niedrogi czujnik SDS011.

Krok 3: Czujnik cząstek - SDS011

Czujnik cząstek - SDS011
Czujnik cząstek - SDS011
Czujnik cząstek - SDS011
Czujnik cząstek - SDS011

Monitorowanie jakości powietrza jest dobrze znaną i ugruntowaną nauką, która rozpoczęła się w latach 80-tych. W tamtym czasie technologia była dość ograniczona, a rozwiązanie zastosowane do ilościowego określenia kompleksu zanieczyszczenia powietrza było kłopotliwe i bardzo drogie.

Na szczęście w dzisiejszych czasach, dzięki najnowszym i nowoczesnym technologiom, rozwiązania stosowane do monitorowania jakości powietrza stają się nie tylko bardziej precyzyjne, ale także szybsze w pomiarach. Urządzenia stają się coraz mniejsze i kosztują znacznie taniej niż kiedykolwiek wcześniej.

W tym artykule skupimy się na czujniku cząstek, który może wykryć ilość kurzu w powietrzu. Podczas gdy pierwsza generacja była w stanie wykryć wielkość nieprzezroczystości, najnowsze czujniki, takie jak SDS011 od INOVAFIT, firmy spin-off z University of Jinan (w Shandong), mogą teraz wykrywać PM2,5 i PM10.

Dzięki swoim rozmiarom SDS011 jest prawdopodobnie jednym z najlepszych czujników pod względem dokładności i ceny (mniej niż 40,00 USD).

  • Mierzone wartości: PM2,5, PM10
  • Zakres: 0–999,9 μg/m³
  • Napięcie zasilania: 5V (4,7-5,3V)
  • Pobór mocy (praca): 70mA±10mA
  • Pobór mocy (laser i wentylator w trybie uśpienia): < 4mA
  • Temperatura przechowywania: -20 do +60C
  • Temperatura pracy: -10 do + 50C
  • Wilgotność (przechowywanie): Max. 90%
  • Wilgotność (praca): Max. 70% (kondensacja pary wodnej fałszuje odczyty)
  • Dokładność: 70% dla 0,3 μm i 98% dla 0,5 μm
  • Rozmiar: 71x70x23mm
  • Certyfikacja: CE, FCC, RoHS

SD011 wykorzystuje płytkę PCB jako jedną stronę obudowy, co pozwala obniżyć jej koszt. Dioda receptora jest zamontowana po stronie PCB (jest to obowiązkowe, ponieważ należy unikać jakichkolwiek zakłóceń między diodą a LNA). Emiter laserowy jest zamontowany na plastikowej obudowie i podłączony do płytki drukowanej za pomocą elastycznego przewodu.

Krótko mówiąc, Nova Fitness SDS011 to profesjonalny laserowy czujnik kurzu. Wentylator zamontowany na czujniku automatycznie zasysa powietrze. Czujnik wykorzystuje zasadę rozpraszania światła laserowego* do pomiaru wartości cząsteczek kurzu zawieszonych w powietrzu. Czujnik zapewnia wysoką precyzję i wiarygodne odczyty wartości PM2,5 i PM10. Każdą zmianę w otoczeniu można zaobserwować niemal natychmiastowo krótki czas reakcji poniżej 10 sekund. Czujnik w trybie standardowym zgłasza odczyt w odstępie 1 sekundy.

* Zasada rozpraszania laserowego: rozpraszanie światła może być wywołane, gdy cząstki przechodzą przez obszar wykrywania. Rozproszone światło jest przekształcane na sygnały elektryczne, które są wzmacniane i przetwarzane. Liczbę i średnicę cząstek można uzyskać na podstawie analizy, ponieważ przebieg sygnału ma pewne związki ze średnicą cząstek.

Krok 4: Ale jak SDS011 może przechwytywać te cząstki?

Ale jak SDS011 może przechwytywać te cząstki?
Ale jak SDS011 może przechwytywać te cząstki?
Ale jak SDS011 może przechwytywać te cząstki?
Ale jak SDS011 może przechwytywać te cząstki?

Jak skomentowano wcześniej, zasadą stosowaną przez SDS011 jest rozpraszanie światła lub lepiej, dynamiczne rozpraszanie światła (DLS), która jest techniką w fizyce, którą można wykorzystać do określenia profilu rozkładu wielkości małych cząstek w zawiesinie lub polimerów w roztworze. W zakresie DLS fluktuacje czasowe są zwykle analizowane za pomocą funkcji natężenia lub funkcji autokorelacji fotonów (znanej również jako spektroskopia korelacji fotonów lub quasi-elastyczne rozpraszanie światła). W analizie w dziedzinie czasu funkcja autokorelacji (ACF) zwykle zanika począwszy od zerowego czasu opóźnienia, a szybsza dynamika ze względu na mniejsze cząstki prowadzi do szybszej dekorelacji śladu intensywności rozproszonej. Wykazano, że natężenie ACF jest transformatą Fouriera widma mocy, a zatem pomiary DLS mogą być równie dobrze wykonywane w domenie spektralnej.

Powyżej hipotetyczne dynamiczne rozpraszanie światła dwóch próbek: większych cząstek (takich jak PM10) na górze i mniejszych cząstek (takich jak PM2,5) na dole. A zaglądając do wnętrza naszego czujnika, możemy zobaczyć, jak realizowana jest zasada rozpraszania światła.

Przechwycony na diodzie sygnał elektryczny trafia do wzmacniacza niskoszumowego, a stamtąd jest konwertowany na sygnał cyfrowy przez ADC i na zewnątrz przez UART.

Aby dowiedzieć się więcej o SDS011 na temat prawdziwego doświadczenia naukowego, zapoznaj się z pracą Konstantinosa i in. z 2018 r., Rozwój i testowanie w terenie taniego przenośnego systemu monitorowania stężeń PM2,5.

Krok 5: Czas pokazu

Czas na przedstawienie!
Czas na przedstawienie!
Czas na przedstawienie!
Czas na przedstawienie!

Zróbmy przerwę w całej tej teorii i skupmy się na tym, jak mierzyć cząstki stałe za pomocą Raspberry Pi i czujnika SDS011

Połączenie sprzętowe jest w rzeczywistości bardzo proste. Czujnik jest sprzedawany z adapterem USB do połączenia danych wyjściowych z jego 7-stykowego UART z jednym ze standardowych złączy USB RPi.

Wyprowadzenie SDS011:

  • Pin 1 - nie podłączony
  • Pin 2 - PM2.5: 0–999 μg/m³; Wyjście PWM
  • Styk 3–5V
  • Pin 4 - PM10: 0–999 μg/m³; Wyjście PWM
  • Pin 5 - GND
  • Pin 6 - RX UART (TTL) 3,3 V
  • Pin 7 - TX UART (TTL) 3,3 V

W tym samouczku po raz pierwszy używam zupełnie nowego Raspberry-Pi 4. Ale oczywiście każdy poprzedni model również będzie działał dobrze.

Gdy tylko podłączysz czujnik do jednego z portów USB RPi, automatycznie zaczniesz słuchać dźwięku jego wentylatora. Hałas jest trochę denerwujący, więc może powinieneś go odłączyć i poczekać, aż wszystko ustawisz z SW.

Komunikacja między czujnikiem a RPi będzie odbywać się za pośrednictwem protokołu szeregowego. Szczegóły dotyczące tego protokołu można znaleźć tutaj: Protokół kontroli laserowego czujnika kurzu V1.3. Ale w przypadku tego projektu najlepiej jest użyć interfejsu Pythona, aby uprościć opracowywany kod. Możesz stworzyć własny interfejs lub skorzystać z niektórych dostępnych w Internecie, takich jak Frank Heuer czy Ivan Kalchev. Użyjemy tego ostatniego, który jest bardzo prosty i działa dobrze (możesz pobrać skrypt sds011.py z jego GitHub lub mojego).

Plik sds011.py musi znajdować się w tym samym katalogu, w którym tworzysz skrypt.

Podczas fazy rozwoju będę używał notebooka Jupyter, ale możesz użyć dowolnego IDE, które lubisz (na przykład Thonny lub Geany, które są częścią pakietu Raspberry Pi Debian, są bardzo dobre).

Rozpocznij importowanie sds011 i tworzenie instancji czujnika. SDS011 zapewnia metodę odczytu z czujnika za pomocą UART.

z importu sds011 *

czujnik = SDS011("/dev/ttyUSB0")

Możesz włączyć lub wyłączyć czujnik za pomocą polecenia sen:

pmt_2_5, pmt_10 = czujnik.zapytanie()

Odczekaj co najmniej 10 sekund na stabilizację przed pomiarami i co najmniej 2 sekundy, aby rozpocząć nowy (patrz kod powyżej).

I to wszystko, co musisz wiedzieć w zakresie SW, aby korzystać z czujnika. Ale przejdźmy głębiej do kontroli jakości powietrza! Na początku tego artykułu, jeśli zwiedziłeś strony, które podają informacje o tym, jak dobre lub złe jest powietrze, powinieneś zdać sobie sprawę, że kolory są powiązane z tymi wartościami. Każdy kolor jest indeksem. Najbardziej znanym z nich jest AQI (Indeks Jakości Powietrza), stosowany w USA i kilku innych krajach.

Krok 6: Wskaźnik jakości powietrza - AQI

Wskaźnik jakości powietrza - AQI
Wskaźnik jakości powietrza - AQI
Wskaźnik jakości powietrza - AQI
Wskaźnik jakości powietrza - AQI
Wskaźnik jakości powietrza - AQI
Wskaźnik jakości powietrza - AQI

AQI to wskaźnik do codziennego raportowania jakości powietrza. Informuje o tym, jak czyste lub zanieczyszczone jest Twoje powietrze i jakie związane z tym skutki zdrowotne mogą Cię niepokoić. AQI koncentruje się na skutkach zdrowotnych, których możesz doświadczyć w ciągu kilku godzin lub dni po oddychaniu zanieczyszczonym powietrzem.

Na przykład EPA (Agencja Ochrony Środowiska Stanów Zjednoczonych) oblicza wskaźnik AQI nie tylko dla zanieczyszczenia cząstkami (PM2,5 i PM10), ale także dla innych głównych zanieczyszczeń powietrza regulowanych przez ustawę o czystym powietrzu: ozon w warstwie przyziemnej, tlenek węgla, dwutlenek siarki i dwutlenek azotu. Dla każdego z tych zanieczyszczeń EPA ustanowiła krajowe normy jakości powietrza w celu ochrony zdrowia publicznego. Zobacz powyższe zdjęcie z powiązanymi wartościami AQI, kolorami i komunikatem zdrowotnym.

Jak skomentowano wcześniej, te wartości AQI i kolory są powiązane z każdym z czynników zanieczyszczających, ale jak powiązać z nimi wartości generowane przez czujniki? Dodatkowa tabela łączy je wszystkie, jak pokazano powyżej.

Ale oczywiście nie ma sensu korzystać z takiego stołu. W końcu jest to prosty algorytm matematyczny, który dokonuje obliczeń. W tym celu zaimportujemy bibliotekę, aby przekonwertować między wartością AQI a stężeniem zanieczyszczenia (µg/m³): python-aqi.

Zainstaluj bibliotekę za pomocą PIP i wykonaj test (patrz kod powyżej)

pip zainstaluj python-aqi

A co z Chile?

W Chile stosuje się podobny wskaźnik, ICAP: Indeks Jakości Powietrza dla Cząstek Oddychających. Dekret Najwyższy 59 z 16 marca 1998 r. Sekretarza Generalnego Ministerstwa Prezydium Republiki ustanawia w artykule 1 litera g), że poziomy definiujące ICA dla Oddychających Materiałów Cząstek, ICAP.

Wartości będą się różnić liniowo między sekcjami, wartość 500 odpowiadałaby wartości granicznej, powyżej której istnieje ryzyko dla populacji narażonej na te stężenia. Zgodnie z wartościami ICAP ustalono kategorie, które kwalifikują poziomy stężeń MP10, na które narażeni byli ludzie.

Krok 7: Lokalne rejestrowanie danych

Lokalne rejestrowanie danych
Lokalne rejestrowanie danych
Lokalne rejestrowanie danych
Lokalne rejestrowanie danych
Lokalne rejestrowanie danych
Lokalne rejestrowanie danych

W tym momencie mamy wszystkie narzędzia do przechwytywania danych z czujnika, a także konwertowania ich na bardziej „czytelną wartość”, czyli indeks AQI.

Stwórzmy funkcję, która przechwyci te wartości. Przechwycimy kolejno 3 wartości, biorąc średnią z nich:

def pobierz_dane(n=3):

sensor.sleep(sleep=False) pmt_2_5 = 0 pmt_10 = 0 time.sleep(10) dla i w zakresie (n): x = sensor.query() pmt_2_5 = pmt_2_5 + x[0] pmt_10 = pmt_10 + x[1] time.sleep(2) pmt_2_5 = round(pmt_2_5/n, 1) pmt_10 = round(pmt_10/n, 1) sensor.sleep(sleep=True) time.sleep(2) return pmt_2_5, pmt_10 Powyżej widać wynik testu. Zróbmy też funkcję konwertującą wartości liczbowe PM na indeks AQI

def conv_aqi(pmt_2_5, pmt_10):

aqi_2_5 = aqi.to_iaqi(aqi. POLLUTANT_PM25, str(pmt_2_5)) aqi_10 = aqi.to_iaqi(aqi. POLLUTANT_PM10, str(pmt_10))) return aqi_2_5, aqi_10 powyżej wyniku testu z obiema funkcjami. Ale co z nimi zrobić? Najprostszą odpowiedzią jest utworzenie funkcji do zapisywania przechwyconych danych, zapisując je w lokalnym pliku

def save_log():

with open("TWOJA ŚCIEŻKA TUTAJ/air_quality.csv", "a") jako log: dt = datetime.now() log.write("{}, {}, {}, {}, {}\n". format(dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.zamknij() Za pomocą jednej pętli możesz regularnie rejestrować dane w swoim lokalnym pliku, na przykład co minutę

podczas (prawda):

pmt_2_5, pmt_10 = get_data() aqi_2_5, aqi_10 = conv_aqi(pmt_2_5, pmt_10) try: save_log() z wyjątkiem: print ("[INFO] Błąd w rejestrowaniu danych") time.sleep(60) Co 60 sekund znacznik czasu plus dane będą „dołączane” do tego pliku, jak widać powyżej.

Krok 8: Wysyłanie danych do usługi w chmurze

Wysyłanie danych do usługi w chmurze
Wysyłanie danych do usługi w chmurze

W tym momencie nauczyliśmy się przechwytywać dane z czujnika, zapisując je w lokalnym pliku CSV. Teraz nadszedł czas, aby zobaczyć, jak przesłać te dane na platformę IoT. W tym samouczku użyjemy ThingSpeak.com.

„ThingSpeak to aplikacja Internetu rzeczy (IoT) o otwartym kodzie źródłowym do przechowywania i pobierania danych z przedmiotów przy użyciu interfejsów API REST i MQTT. ThingSpeak umożliwia tworzenie aplikacji do rejestrowania czujników, aplikacji do śledzenia lokalizacji i społecznościowej sieci rzeczy z aktualizacjami statusu.”

Po pierwsze, musisz mieć konto na ThinkSpeak.com. Następnie postępuj zgodnie z instrukcjami, aby utworzyć kanał, zwracając uwagę na jego identyfikator kanału i zapisz klucz API.

Tworząc kanał należy również określić, jakie informacje zostaną przesłane do każdego z 8 pól, jak pokazano powyżej (w naszym przypadku zostaną użyte tylko 4 z nich).

Krok 9: Protokół MQTT i połączenie ThingSpeak

Protokół MQTT i połączenie ThingSpeak
Protokół MQTT i połączenie ThingSpeak

MQTT to architektura publikowania/subskrybowania, która została opracowana głównie w celu łączenia urządzeń o ograniczonej przepustowości i mocy w sieciach bezprzewodowych. Jest to prosty i lekki protokół, który działa przez gniazda TCP/IP lub WebSockets. MQTT przez WebSockets można zabezpieczyć za pomocą SSL. Architektura publikowania/subskrybowania umożliwia wypychanie komunikatów do urządzeń klienckich bez konieczności ciągłego odpytywania przez urządzenie serwera.

Broker MQTT jest centralnym punktem komunikacji i odpowiada za wysyłanie wszystkich wiadomości między nadawcami a pełnoprawnymi odbiorcami. Klient to dowolne urządzenie, które łączy się z brokerem i może publikować lub subskrybować tematy w celu uzyskania dostępu do informacji. Temat zawiera informacje o routingu dla brokera. Każdy klient, który chce wysyłać wiadomości, publikuje je w określonym temacie, a każdy klient, który chce otrzymywać wiadomości, subskrybuje określony temat. Broker dostarcza wszystkie komunikaty z pasującym tematem do odpowiednich klientów.

ThingSpeak™ ma brokera MQTT pod adresem URL mqtt.thingspeak.com i portem 1883. Broker ThingSpeak obsługuje zarówno publikowanie MQTT, jak i subskrypcję MQTT.

W naszym przypadku skorzystamy z MQTT Publish.

Krok 10: Publikowanie MQTT

Opublikuj MQTT
Opublikuj MQTT

Na początek zainstalujmy bibliotekę klienta Eclipse Paho MQTT Python, która implementuje wersje 3.1 i 3.1.1 protokołu MQTT

sudo pip zainstaluj paho-mqtt

Następnie zaimportujmy bibliotekę paho:

importuj paho.mqtt.publish jako publikuj

i zainicjuj kanał Thingspeak i protokół MQTT. Ta metoda połączenia jest najprostsza i wymaga najmniej zasobów systemowych:

channelID = "ID TWOJEGO KANAŁU"

apiKey = "TWÓJ KLUCZ ZAPISU" topic = "channels/" + ID kanału + "/publish/" + apiKey mqttHost = "mqtt.thingspeak.com" Teraz musimy zdefiniować nasz „ładowność”

tPayload = "field1=" + str(pmt_2_5)+ "&field2=" + str(aqi_2_5)+ "&field3=" + str(pmt_10)+ "&field4=" + str(aqi_10)

I to wszystko! jesteśmy gotowi do rozpoczęcia przesyłania danych do chmury! Przepiszmy poprzednią funkcję pętli, aby uwzględnić również jej część ThingSpeak.

# Wysyłanie wszystkich danych do ThingSpeak co 1 minutę

while(True): pmt_2_5, pmt_10 = get_data() aqi_2_5, aqi_10 = conv_aqi(pmt_2_5, pmt_10) tPayload = "field1=" + str(pmt_2_5)+ "&field2=" + str(aqi_2_5)+ "&field3=" + str (pmt_10)+ "&field4=" + str(aqi_10) try: publish.single(topic, payload=tPayload, hostname=mqttHost, port=tPort, tls=tTLS, transport=tTransport) save_log() z wyjątkiem: print ("[INFO] Błąd wysyłania danych") time.sleep(60) Jeśli wszystko jest w porządku, musisz zobaczyć dane również na Twoim kanale na thingspeak.com, jak pokazano powyżej.

Krok 11: Ostateczny scenariusz

Należy zaznaczyć, że Jupyter Notebook jest bardzo dobrym narzędziem do tworzenia i raportowania, ale nie do tworzenia kodu do wdrożenia produkcyjnego. To, co powinieneś teraz zrobić, to wziąć odpowiednią część kodu i utworzyć skrypt.py i uruchomić go na swoim terminalu.

Na przykład „ts_air_quality_logger.py”, który należy uruchomić za pomocą polecenia:

python 3 ts_air_quality_logger.py

Ten skrypt, jak również Jupyter Notebook i sds011.py można znaleźć w moim repozytorium pod adresem RPi_Air_Quality_Sensor.

Zauważ, że ten skrypt jest możliwy tylko do testowania. Najlepiej nie używać opóźnień w końcowej pętli (która wstawia kod w „pauzę”), zamiast tego używać timerów. Lub w przypadku prawdziwej aplikacji najlepiej nie używać pętli, ponieważ Linux jest zaprogramowany do regularnego wykonywania skryptu za pomocą crontab.

Krok 12: Wynoszenie monitora na zewnątrz

Wynoszenie monitora na zewnątrz
Wynoszenie monitora na zewnątrz
Wynoszenie monitora na zewnątrz
Wynoszenie monitora na zewnątrz
Wynoszenie monitora na zewnątrz
Wynoszenie monitora na zewnątrz
Wynoszenie monitora na zewnątrz
Wynoszenie monitora na zewnątrz

Gdy mój monitor Raspberry Pi Air Quality działał, zmontowałem RPi w plastikowym pudełku, trzymając czujnik na zewnątrz i umieściłem go poza domem.

Dokonano dwóch doświadczeń.

Krok 13: Spalanie silnika benzynowego

Spalanie silnika benzynowego
Spalanie silnika benzynowego
Spalanie silnika benzynowego
Spalanie silnika benzynowego

Czujnik został umieszczony około 1m od przestrzeni gazowej Lambretty, a jego silnik był włączony. Silnik pracował przez kilka minut i wyłączył się. Z powyższego pliku dziennika wynik, który otrzymałem. Interesujące jest potwierdzenie, że PM2,5 był najniebezpieczniejszym pyłem, który pochodził z silnika.

Krok 14: Spalanie drewna

Spalanie drewna
Spalanie drewna
Spalanie drewna
Spalanie drewna

Patrząc na plik dziennika, zdajemy sobie sprawę, że dane z czujnika były chwilowo „poza zakresem” i nie zostały dobrze przechwycone przez bibliotekę konwersji AQI, więc zmieniam poprzedni kod, aby to obsłużyć:

def conv_aqi(pmt_2_5, pmt_10):

try: aqi_2_5 = aqi.to_iaqi(aqi. POLLUTANT_PM25, str(pmt_2_5)) aqi_10 = aqi.to_iaqi(aqi. POLLUTANT_PM10, str(pmt_10))) return aqi_2_5, aqi_10 oprócz: return 600, 600 Taka sytuacja może się zdarzyć w terenie, co jest w porządku. Pamiętaj, że w rzeczywistości powinieneś używać średniej ruchomej, aby naprawdę uzyskać AQI (przynajmniej co godzinę, ale zwykle codziennie).

Krok 15: Wniosek

Wniosek
Wniosek

Jak zawsze, mam nadzieję, że ten projekt pomoże innym znaleźć drogę do ekscytującego świata elektroniki i nauki o danych!

Aby uzyskać szczegółowe informacje i ostateczny kod, odwiedź mój depozyt na GitHub: RPi_Air_Quality_Sensor.

Saludo z południa świata!

Do zobaczenia na mojej następnej instrukcji!

Dziękuję Ci, Marcelo

Zalecana: