Talaan ng mga Nilalaman:

Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4:15 Mga Hakbang (na may Mga Larawan)
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4:15 Mga Hakbang (na may Mga Larawan)

Video: Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4:15 Mga Hakbang (na may Mga Larawan)

Video: Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4:15 Mga Hakbang (na may Mga Larawan)
Video: Leap Motion SDK 2024, Hulyo
Anonim
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4
Isang Mababang gastos na IoT Air Quality Monitor Batay sa RaspberryPi 4

Ang Santiago, Chile sa panahon ng emerhensiyang pangkapaligiran ay may pribilehiyo na manirahan sa isa sa mga pinakamagagandang bansa sa mundo, ngunit sa kasamaang palad, hindi lahat ng mga rosas. Ang Chile sa panahon ng taglamig ay nagdurusa ng maraming kontaminasyon sa hangin, pangunahin dahil sa mga materyal na maliit na butil bilang alikabok at usok.

Dahil sa malamig na panahon, sa timog, ang kontaminasyon ng hangin ay pangunahing sanhi ng mga calefactor na nakabatay sa kahoy at sa Santiago (ang pangunahing kabisera sa gitna ng bansa) na halo-halong mula sa mga industriya, kotse, at ang natatanging kalagayang pang-heograpiya nito sa pagitan ng 2 malalaking kadena ng bundok.

Ngayong mga araw na ito, ang polusyon sa hangin ay isang malaking problema sa buong mundo at sa artikulong ito ay susuriin namin kung paano paunlarin ang isang mababang mahal na homemade Air Quality monitor, batay sa isang Raspberry Pi. Kung interesado kang maunawaan ang tungkol sa kalidad ng hangin, mangyaring bisitahin ang "World Air Quality Index" Project.

Mga gamit

  • Raspberry Pi 4
  • 1SDS011 - Mataas na katumpakan laser pm2.5 sensor ng kalidad ng pagtuklas ng hangin
  • Kahon na Plastik

Hakbang 1: Pakikipag-usap sa Wika (PM): Ano Ito? Paano Ito Makakasakay sa Hangin?

Partulateate Matter (PM): Ano Ito? Paano Ito Makakasakay sa Hangin?
Partulateate Matter (PM): Ano Ito? Paano Ito Makakasakay sa Hangin?

Kaya, upang maunawaan ang polusyon o kontaminasyon sa hangin, dapat nating pag-aralan ang mga particle na nauugnay sa na, na kilala rin bilang maliit na butil na bagay. Sa pagtingin sa mga graph sa nakaraang seksyon maaari naming obserbahan na binanggit nila ang PM2.5 at PM10. Bigyan natin ng isang mabilis na pangkalahatang ideya ng iyon.

Ang PM ay nangangahulugang maliit na butil (na tinatawag ding polusyon ng maliit na butil): ang term para sa isang halo ng mga solidong maliit na butil at likidong droplet na matatagpuan sa hangin. Ang ilang mga maliit na butil, tulad ng alikabok, dumi, uling, o usok, ay malaki o madilim na sapat upang makita ng mata. Ang iba ay napakaliit maaari lamang silang makita gamit ang isang electron microscope. Ang mga particle ay may iba't ibang laki. Ang mga maliit na butil na mas mababa sa o katumbas ng 10 micrometers sa diameter ay napakaliit na makakakuha sila sa baga, na maaaring maging sanhi ng malubhang mga problema sa kalusugan. Ang sampung micrometers ay mas mababa sa lapad ng isang solong buhok ng tao.

Kasama sa polusyon ng maliit na butil ang mga maliliit na dust particle (PM10): mga inhalable na partikulo, na may mga diametro na sa pangkalahatan ay 10 micrometers at mas maliit. Ang mga mapagkukunan ay may kasamang pagdurog o paggiling na operasyon at alikabok na hinalo ng mga sasakyan sa mga kalsada. Mga magagandang maliit na butil (PM2.5): pinong mga inhalable na maliit na butil, na may mga diameter na karaniwang 2.5 micrometers at mas maliit. Ang mga magagandang maliit na butil ay ginawa mula sa lahat ng uri ng pagkasunog, kabilang ang mga sasakyang de-motor, halaman ng kuryente, sunog na kahoy, sunog sa kagubatan, pagkasunog sa agrikultura, at ilang proseso sa industriya na maaari mong makita ang higit pa tungkol sa maliit na butil na bagay sa EPA site: Ang Estados Unidos Environmental Protection Agency

Hakbang 2: Bakit Mahalaga ang Pangangalaga sa Mga Pakikipag-usap na Iyan?

Bakit Mahalaga ang Pangangalaga sa Mga Pakikipag-usap na Mag-uusap?
Bakit Mahalaga ang Pangangalaga sa Mga Pakikipag-usap na Mag-uusap?

Tulad ng inilarawan ni GERARDO ALVARADO Z. sa kanyang trabaho sa Chile University, ang mga pag-aaral ng mga yugto ng mataas na polusyon sa himpapawid sa Meuse Valley (Belgium) noong 1930, ang Donora (Pennsylvania) noong 1948 at London noong 1952 ay ang unang naitala na mapagkukunan na nauugnay sa dami ng namamatay na may kontaminasyong maliit na butil (Préndez, 1993). Ang mga pagsulong sa pag-iimbestiga ng mga epekto ng polusyon sa hangin sa kalusugan ng mga tao ay nagpasiya na ang mga panganib sa kalusugan ay sanhi ng mga hindi malalanghap na mga maliit na butil, depende sa kanilang pagtagos at pagtitiwalag sa iba't ibang mga seksyon ng respiratory system, at ang tugon ng Biyolohikal sa mga idineposito na materyales.

Ang makapal na mga maliit na butil, mga 5 μm, ay sinala ng magkasanib na pagkilos ng cilia ng daanan ng ilong at ang mucosa na sumasakop sa ilong ng ilong at trachea. Ang mga particle na may diameter sa pagitan ng 0.5 at 5 μm ay maaaring ideposito sa bronchi at kahit sa pulmonary alveoli, gayunpaman, tinanggal sila ng cilia ng bronchi at bronchioles pagkalipas ng ilang oras. Ang mga maliit na butil na mas maliit sa 0.5 μm ay maaaring tumagos nang malalim hanggang sa mailagay ang mga ito sa baga alveoli, na natitira mula sa mga linggo hanggang taon, dahil walang mekanismo ng transportasyon na mucociliary na nagpapabilis sa pag-aalis. Ipinapakita ng sumusunod na pigura ang pagtagos ng mga maliit na butil sa respiratory system depende sa kanilang laki.

Kaya, upang makita ang parehong uri ng mga maliit na butil (PM2.5 at PM10) ay napakahalaga at ang mabuting balita ay kapwa nababasa ng isang simple at hindi mamahaling sensor, ang SDS011.

Hakbang 3: Ang Particle Sensor - SDS011

Ang Sensicle ng Particle - SDS011
Ang Sensicle ng Particle - SDS011
Ang Sensicle ng Particle - SDS011
Ang Sensicle ng Particle - SDS011

Ang pagsubaybay sa Kalidad ng Air ay kilalang kilala at naitatag na agham na nagsimula noong 80's. Sa oras na iyon, ang teknolohiya ay medyo limitado, at ang solusyon na ginamit upang mabilang ang komplikadong polusyon sa hangin, masalimuot at talagang mahal.

Sa kasamaang palad, sa panahong ito, sa pinakabagong at modernong mga teknolohiya, ang mga solusyon na ginamit para sa pagsubaybay sa Kalidad ng Air ay nagiging hindi lamang mas tumpak ngunit mas mabilis din sa pagsukat. Ang mga aparato ay nagiging mas maliit, at nagkakahalaga ng higit na abot-kayang kaysa dati.

Sa artikulong ito ay magtutuon kami sa isang sensor ng maliit na butil, na maaaring tuklasin ang dami ng alikabok sa hangin. Habang ang unang henerasyon ay nakakakita lamang ng dami ng opacity, ang pinakabagong mga sensor bilang SDS011 mula sa INOVAFIT, isang spin-off mula sa University of Jinan (sa Shandong), ay makakakita na ng PM2.5 at PM10.

Sa laki nito, ang SDS011 ay marahil isa sa mga pinakamahusay na sensor sa mga tuntunin ng kawastuhan at presyo (mas mababa sa USD40.00).

  • Mga sinusukat na halaga: PM2.5, PM10
  • Saklaw: 0–999.9 μg / m³
  • Supply boltahe: 5V (4.7-5.3V)
  • Pagkonsumo ng kuryente (trabaho): 70mA ± 10mA
  • Pagkonsumo ng kuryente (laser mode at tagahanga ng pagtulog): <4mA
  • Temperatura ng imbakan: -20 hanggang + 60C
  • Temperatura sa trabaho: -10 hanggang + 50C
  • Humidity (imbakan): Max. 90%
  • Humidity (trabaho): Max. 70% (paghalay ng singaw ng tubig na pinapalpak ang mga pagbasa)
  • Katumpakan: 70% para sa 0.3μm at 98% para sa 0.5μm
  • Laki: 71x70x23 mm
  • Sertipikasyon: CE, FCC, RoHS

Ginagamit ng SD011 ang PCB bilang isang bahagi ng pambalot, pinapayagan na bawasan ang gastos nito. Ang diode ng receptor ay naka-mount sa gilid ng PCB (sapilitan ito dahil ang anumang ingay sa pagitan ng diode at ng LNA ay dapat iwasan). Ang emitter laser ay naka-mount sa plastic box at nakakonekta sa PCB sa pamamagitan ng isang kakayahang umangkop na kawad.

Sa madaling salita, ang Nova Fitness SDS011 ay isang propesyonal na laser dust sensor. Ang fan na naka-mount sa sensor ay awtomatikong sumipsip ng hangin. Gumagamit ang sensor ng prinsipyo ng pagsabog ng ilaw ng laser * upang masukat ang halaga ng mga dust particle na nasuspinde sa hangin. Nagbibigay ang sensor ng mataas na katumpakan at maaasahang pagbabasa ng mga halagang PM2.5 at PM10. Ang anumang pagbabago sa kapaligiran ay maaaring sundin halos kaagad maikling maikling oras ng pagtugon sa ibaba 10 segundo. Ang sensor sa karaniwang mode ay nag-uulat ng pagbabasa na may isang 1 segundong agwat.

* Prinsipyo ng Pag-Scatter ng Laser: Maaaring masiyahan ang pagsabog ng ilaw kapag ang mga maliit na butil ay dumaan sa lugar ng pagtuklas. Ang kalat-kalat na ilaw ay binago sa mga signal ng elektrisidad at ang mga senyas na ito ay magpapalakas at mapoproseso. Ang bilang at diameter ng mga maliit na butil ay maaaring makuha sa pamamagitan ng pagtatasa sapagkat ang signal waveform ay may tiyak na ugnayan sa diameter ng mga maliit na butil.

Hakbang 4: Ngunit Paano Makukuha ng SDS011 Ang Mga Particle?

Ngunit Paano Makukuha ng SDS011 Ang Mga Particle?
Ngunit Paano Makukuha ng SDS011 Ang Mga Particle?
Ngunit Paano Makukuha ng SDS011 Ang Mga Particle?
Ngunit Paano Makukuha ng SDS011 Ang Mga Particle?

Tulad ng nagkomento dati, ang prinsipyong ginamit ng SDS011 ay ang pagsabog ng ilaw o mas mahusay, Dynamic Light Scattering (DLS), na isang pamamaraan sa pisika na maaaring magamit upang matukoy ang laki ng profile sa pamamahagi ng mga maliliit na partikulo sa suspensyon o polymers na may solusyon. Sa saklaw ng DLS, ang mga pansamantalang pagbabagu-bago ay karaniwang pinag-aaralan sa pamamagitan ng intensidad o pagpapaandar na auto-ugnayan ng photon (kilala rin bilang photon correlation spectroscopy o quasi-nababanat na ilaw na nagkalat). Sa pagtatasa ng oras ng domain, ang pagpapaandar ng autocorrelation (ACF) ay karaniwang nabubulok simula sa zero pagkaantala ng oras, at mas mabilis na dynamics dahil sa mas maliit na mga maliit na butil ay humantong sa mas mabilis na pagkasira ng nakakalat na bakas ng tindi. Ipinakita na ang tindi ng ACF ay ang Fourier transform ng power spectrum, at samakatuwid ang mga sukat ng DLS ay maaaring pantay na mahusay na maisagawa sa spectral domain.

Sa itaas ng isang haka-haka na pabagu-bago ng ilaw na pagsabog ng dalawang mga sample: Mas malalaking mga particle (tulad ng PM10) sa itaas at mas maliit na mga maliit na butil (tulad ng PM2.5) sa ibaba. At pagtingin sa loob ng aming sensor, maaari naming makita kung paano ipinatupad ang ilaw na prinsipyo ng pagkalat.

Ang signal ng elektrisidad na nakunan sa diode ay papunta sa Low Noise Amplifier at mula doon ay mai-convert sa isang digital signal sa pamamagitan ng isang ADC at sa labas sa pamamagitan ng isang UART.

Upang malaman ang higit pa tungkol sa SDS011 sa isang tunay na pang-agham na karanasan, mangyaring tingnan ang gawain ng Konstantinos et al, Pag-unlad at Pagsubok sa Labas ng Mababang Gastos na Portable System para sa Pagsubaybay sa PM2.5 na Konsentrasyon sa 2018.

Hakbang 5: Showtime

Showtime!
Showtime!
Showtime!
Showtime!

Pahinga muna tayo sa lahat ng teoryang ito at ituon kung paano masukat ang mga bagay na maliit na butil gamit ang isang Raspberry Pi at ang SDS011 sensor

Ang koneksyon ng HW ay sa katunayan napaka-simple. Ang sensor ay ibinebenta gamit ang isang USB adapter upang mai-interface ang output data mula sa 7 pin na UART na may isa sa mga karaniwang USB konektor ng RPi.

Pinout ng SDS011:

  • Pin 1 - hindi konektado
  • Pin 2 - PM2.5: 0–999μg / m³; Output ng PWM
  • I-pin ang 3-5V
  • Pin 4 - PM10: 0–999 μg / m³; Output ng PWM
  • Pin 5 - GND
  • Pin 6 - RX UART (TTL) 3.3V
  • Pin 7 - TX UART (TTL) 3.3V

Para sa tutorial na ito, gumagamit ako ng unang pagkakataon, isang bagong Raspberry-Pi 4. Ngunit syempre, ang anumang nakaraang modelo ay gagana ring maayos.

Kaagad na ikinonekta mo ang sensor sa isa sa mga port ng RPi USB, awtomatiko kang magsisimulang makinig sa tunog ng bentilador nito. Ang ingay ay medyo nakakainis, kaya siguro dapat mong i-unplug ito at maghintay hanggang sa natapos mo na ang lahat sa SW.

Ang komunikasyon sa pagitan ng sensor at RPi ay sa pamamagitan ng isang serial protocol. Ang mga detalye tungkol sa protokol na ito ay matatagpuan dito: Laser Dust Sensor Control Protocol V1.3. Ngunit para sa proyektong ito, ang pinakamahusay ay gumamit ng isang interface ng sawa upang gawing simple ang code na bubuo. Maaari kang lumikha ng iyong sariling interface o gumamit ng ilan na magagamit sa internet, tulad ng kay Frank Heuer o kay Ivan Kalchev's. Gagamitin namin ang huling, na kung saan ay napaka-simple at gumagana nang maayos (maaari mong i-download ang sds011.py script mula sa GitHub o minahan).

Ang file sds011.py ay dapat na nasa parehong direktoryo kung saan mo nilikha ang iyong script.

Sa yugto ng pag-unlad, gagamit ako ng isang Jupyter Notebook, ngunit maaari mong gamitin ang anumang IDE na gusto mo (halimbawa, halimbawa, na bahagi ng Raspberry Pi Debian na pakete ay parehong napakahusay).

Simulang mag-import ng sds011, at likhain ang iyong halimbawa ng sensor. Nagbibigay ang SDS011 ng isang paraan upang mabasa mula sa sensor gamit ang isang UART.

mula sa sds011 import *

sensor = SDS011 ("/ dev / ttyUSB0")

Maaari mong i-on o i-off ang iyong sensor gamit ang utos na pagtulog:

pmt_2_5, pmt_10 = sensor.query ()

Maghintay ng hindi bababa sa 10 segundo para sa pagpapapanatag bago ang mga sukat at hindi bababa sa 2 segundo upang magsimula ng bago (tingnan ang code sa itaas).

At ito lang ang kailangan mong malaman sa mga tuntunin ng SW upang magamit ang sensor. Ngunit pumunta tayo nang mas malalim sa Air Quality Control! Sa simula ng artikulong ito, kung nasaliksik mo ang mga site na nagbibigay ng impormasyon tungkol sa kung gaano kabuti o masama ang hangin, dapat mong mapagtanto na ang mga kulay ay nauugnay sa mga halagang iyon. Ang bawat kulay ay isang Index. Ang pinaka-kilala sa mga iyon ay ang AQI (Air Quality Index), na ginagamit sa US at maraming iba pang mga bansa.

Hakbang 6: Air Quality Index - AQI

Air Quality Index - AQI
Air Quality Index - AQI
Air Quality Index - AQI
Air Quality Index - AQI
Air Quality Index - AQI
Air Quality Index - AQI

Ang AQI ay isang index para sa pag-uulat ng pang-araw-araw na kalidad ng hangin. Sinasabi nito sa iyo kung gaano kalinis o marumi ang iyong hangin, at kung anong kaugnay na mga epekto sa kalusugan ang maaaring maging isang alalahanin para sa iyo. Nakatuon ang AQI sa mga epekto sa kalusugan na maaari mong maranasan sa loob ng ilang oras o araw pagkatapos huminga ng maruming hangin.

Ang EPA (ang United States Environmental Protection Agency), halimbawa, kinakalkula ang AQI hindi lamang para sa polusyon ng maliit na butil (PM2.5 at PM10) kundi pati na rin para sa iba pang mga pangunahing polusyon sa hangin na kinokontrol ng Clean Air Act: ground-level ozone, carbon monoxide, sulfur dioxide, at nitrogen dioxide. Para sa bawat isa sa mga pollutant na ito, ang EPA ay nagtaguyod ng pambansang pamantayan sa kalidad ng hangin upang maprotektahan ang kalusugan ng publiko. Tingnan ang larawan sa itaas na may mga halaga ng AQI, kulay at mensahe ng kalusugan na nauugnay.

Tulad ng nagkomento bago ang mga halagang AQI at kulay na nauugnay sa bawat isa sa mga pollutant na ahente, ngunit paano maiugnay ang mga halagang binubuo ng mga sensor sa kanila? Ang isang karagdagang talahanayan ay nag-uugnay sa kanilang lahat tulad ng ipinakita sa itaas.

Ngunit syempre, walang katuturan na magamit ang gayong mesa. Sa huli, ito ay isang simpleng algorithm ng matematika na gumagawa ng pagkalkula. Para doon, mai-import namin ang library upang mag-convert sa pagitan ng halaga ng AQI at konsentrasyon ng pollutant (µg / m³): python-aqi.

I-install ang library gamit ang PIP at gumawa ng isang pagsubok (tingnan ang code sa itaas)

pip install python-aqi

At paano ang Chile?

Sa Chile ginagamit ang isang katulad na index, ang ICAP: Air Quality Index para sa Mga Breathable Particle. Ang isang kataas-taasang dekreto 59 ng Marso 16, 1998, ng Pangkalahatang Kalihim Ministri ng Pagkapangulo ng Republika, naitatag sa artikulong 1, liham g) na ang mga antas na tumutukoy sa ICA para sa Breathable Particateate Material, ICAP.

Ang mga halaga ay magkakaiba-iba sa pagitan ng mga seksyon, ang halagang 500 ay tumutugma sa halaga ng limitasyon kung saan magkakaroon ng peligro para sa populasyon kapag nahantad sa mga konsentrasyong ito. Ayon sa mga halaga ng ICAP, itinatag ng mga kategorya na kwalipikado ang antas ng konsentrasyon ng MP10 kung saan ang mga tao ay nalantad.

Hakbang 7: Lokal na Pag-log ng Data

Lokal ang Pag-log ng Data
Lokal ang Pag-log ng Data
Lokal ang Pag-log ng Data
Lokal ang Pag-log ng Data
Lokal ang Pag-log ng Data
Lokal ang Pag-log ng Data

Sa puntong ito, mayroon kaming lahat ng mga tool upang makuha ang data mula sa sensor at i-convert din ang mga ito para sa isang mas "nababasa na halaga", na ito ang AQI index.

Lumikha tayo ng isang pagpapaandar upang makuha ang mga halagang iyon. Makakakuha kami ng 3 halagang magkakasunud-sunod na kumukuha ng average sa kanila:

def get_data (n = 3):

sensor.s Sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.s Sleep (10) para sa ako sa saklaw (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] time.s Sleep (2) pmt_2_5 = bilog (pmt_2_5 / n, 1) pmt_10 = bilog (pmt_10 / n, 1) sensor.s Sleep (sleep = True) time.s Sleep (2) bumalik pmt_2_5, pmt_10 Sa itaas makikita mo ang resulta ng pagsubok. Gumawa rin tayo ng isang pagpapaandar upang mai-convert ang mga numerong halaga ng PM sa AQI index

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)) ibalik ang aqi_2_5, aqi_10 sa itaas ng resulta ng isang pagsubok na may parehong pag-andar. Ngunit ano ang gagawin sa kanila? Ang pinakasimpleng sagot ay upang lumikha ng isang pagpapaandar upang mai-save ang nakuhang data, i-save ang mga ito sa isang lokal na file

def save_log ():

na may bukas ("IYONG PATH DITO / air_quality.csv", "a") bilang log: dt = datime.now () log.write ("{}, {}, {}, {}, {} n". format (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Sa isang solong loop, maaari kang mag-log ng data sa mga regular na base sa iyong lokal na file, halimbawa, bawat minuto

habang (Totoo):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) subukan: save_log () maliban sa: i-print ("[INFO] Nabigo sa pag-log ng data") time.s Sleep (60) Tuwing 60 segundo, ang timestamp kasama ang data ay "idugtong" sa file na ito, tulad ng nakikita natin sa itaas.

Hakbang 8: Pagpapadala ng Data sa isang Serbisyo sa Cloud

Pagpapadala ng Data sa isang Serbisyo sa Cloud
Pagpapadala ng Data sa isang Serbisyo sa Cloud

Sa puntong ito, natutunan namin kung paano makunan ng data mula sa sensor, nai-save ang mga ito sa isang lokal na CSV file. Ngayon, oras na upang makita kung paano ipadala ang data na iyon sa isang IoT platform. Sa tutorial na ito, gagamitin namin ang ThingSpeak.com.

"Ang ThingSpeak ay isang open-source na application ng Internet of Things (IoT) upang maiimbak at makuha ang data mula sa mga bagay, gamit ang REST at MQTT API. Pinapayagan ng ThingSpeak ang paglikha ng mga application ng pag-log ng sensor, mga application sa pagsubaybay sa lokasyon, at isang social network ng mga bagay na may mga update sa katayuan."

Una, dapat mayroon kang isang account sa ThinkSpeak.com. Susunod, sundin ang mga tagubilin upang lumikha ng isang Channel, na isinasaalang-alang ang Channel ID nito at Isulat ang API Key.

Kapag lumilikha ng channel, dapat mo ring tukuyin kung anong impormasyon ang mai-a-upload sa bawat isa sa 8 mga patlang, tulad ng ipinakita sa itaas (sa aming kaso 4 lamang sa mga ito ang gagamitin).

Hakbang 9: MQTT Protocol at ThingSpeak Connection

MQTT Protocol at ThingSpeak Connection
MQTT Protocol at ThingSpeak Connection

Ang MQTT ay isang i-publish / mag-subscribe ng arkitektura na pangunahing binuo upang ikonekta ang bandwidth at mga aparato na pinipigilan ng kuryente sa mga wireless network. Ito ay isang simple at magaan na protokol na tumatakbo sa mga socket ng TCP / IP o WebSockets. Ang MQTT sa WebSockets ay maaaring ma-secure sa SSL. Nagbibigay-daan ang arkitektura ng pag-publish / pag-subscribe ng mga mensahe na maitulak sa mga aparato ng client nang hindi kinakailangan ng aparato na patuloy na i-poll ang server.

Ang MQTT broker ay ang sentral na punto ng komunikasyon, at ito ang namamahala sa pagpapadala ng lahat ng mga mensahe sa pagitan ng mga nagpadala at ng mga tamang tagatanggap. Ang isang kliyente ay anumang aparato na kumokonekta sa broker at maaaring mag-publish o mag-subscribe sa mga paksa upang ma-access ang impormasyon. Ang isang paksa ay naglalaman ng impormasyon sa pagruruta para sa broker. Ang bawat kliyente na nais magpadala ng mga mensahe ay inilalathala ang mga ito sa isang tiyak na paksa, at ang bawat kliyente na nais makatanggap ng mga mensahe ay nag-subscribe sa isang tiyak na paksa. Naghahatid ang broker ng lahat ng mga mensahe na may pagtutugma na paksa sa mga naaangkop na kliyente.

Ang ThingSpeak ™ ay mayroong isang MQTT broker sa URL mqtt.thingspeak.com at port 1883. Sinusuportahan ng ThingSpeak broker ang parehong MQTT publish at MQTT subscribe.

Sa aming kaso, gagamitin namin ang MQTT Publish.

Hakbang 10: I-publish ang MQTT

I-publish ang MQTT
I-publish ang MQTT

Para sa pagsisimula, i-install natin ang Eclipse Paho MQTT Python client library, na nagpapatupad ng mga bersyon 3.1 at 3.1.1 ng MQTT protocol

sudo pip install paho-mqtt

Susunod, i-import natin ang paho library:

i-import ang paho.mqtt.publish bilang i-publish

at simulan ang Thingspeak channel at MQTT protocol. Ang pamamaraan ng koneksyon na ito ay ang pinakasimpla at nangangailangan ng pinakamaliit na mapagkukunan ng system:

channelID = "IYONG CHANNEL ID"

apiKey = "IYONG SUSULAT NG SUSI" paksa = "mga channel /" + channelID + "/ publish /" + apiKey mqttHost = "mqtt.thingspeak.com" Ngayon dapat nating tukuyin ang aming "kargamento"

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

At yun lang! handa na kaming magsimulang magpadala ng data sa cloud! Isulat ulit natin ang nakaraang pag-andar ng loop upang isama din ang bahagi ng ThingSpeak nito.

# Pagpapadala ng lahat ng data sa ThingSpeak bawat 1 minuto

habang (Totoo): 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) subukan: publish.single (paksa, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () maliban sa: i-print ("[INFO] Pagkabigo sa pagpapadala ng data na ") oras. Pagtulog (60) Kung ok ang lahat, dapat mong makita ang data na lilitaw din sa iyong channel sa Thingspeak.com tulad ng ipinakita sa itaas.

Hakbang 11: Ang Huling Script

Mahalagang ituro na ang Jupyter Notebook ay isang napakahusay na tool para sa pag-unlad at pag-uulat, ngunit hindi upang lumikha ng isang code na mailalagay sa produksyon. Ang dapat mong gawin ngayon ay kunin ang nauugnay na bahagi ng code at lumikha ng isang.py script at patakbuhin ito sa iyong terminal.

Halimbawa, "ts_air_quality_logger.py", na dapat mong patakbuhin kasama ang utos:

sawa 3 ts_air_quality_logger.py

Ang script na ito pati na rin ang Jupyter Notebook at ang sds011.py ay matatagpuan sa aking lalagyan sa RPi_Air_Qual_Sensor.

Tandaan na ang script na ito ay magagawa para sa pagsubok lamang. Ang pinakamahusay ay huwag gumamit ng mga pagkaantala sa loob ng pangwakas na loop (na inilalagay ang code sa "pause"), sa halip ay gumamit ng mga timer. O para sa isang tunay na application, ang pinakamahusay ay hindi gumagamit ng loop, na na-program ang Linux upang maipatupad ang script sa isang regular na batayan sa crontab.

Hakbang 12: Pagkuha ng Monitor sa Labas

Pagkuha ng Monitor sa Labas
Pagkuha ng Monitor sa Labas
Pagkuha ng Monitor sa Labas
Pagkuha ng Monitor sa Labas
Pagkuha ng Monitor sa Labas
Pagkuha ng Monitor sa Labas
Pagkuha ng Monitor sa Labas
Pagkuha ng Monitor sa Labas

Sa sandaling gumagana ang aking monitor na Raspberry Pi Air Quality, tinipon ko ang RPi sa loob ng isang plastik na kahon, pinapanatili ang sensor sa labas at inilagay ito sa labas ng aking tahanan.

Dalawang karanasan ang nagawa.

Hakbang 13: pagkasunog ng Gasoline Motor

Pagkasunog ng motor ng gasolina
Pagkasunog ng motor ng gasolina
Pagkasunog ng motor ng gasolina
Pagkasunog ng motor ng gasolina

Ang sensor ay inilagay sa paligid ng 1m mula sa gas scape ng Lambretta, at ang motor nito ay nakabukas. Tumatakbo ang motor ng ilang minuto at naka-off. Mula sa file ng log sa itaas, ang resulta na nakuha ko. Kagiliw-giliw na kumpirmahin na ang PM2.5 ay ang pinaka-mapanganib na maliit na butil na nagresulta mula sa motor.

Hakbang 14: Pag-burn ng kahoy

Pag-burn ng kahoy
Pag-burn ng kahoy
Pag-burn ng kahoy
Pag-burn ng kahoy

Sa pagtingin sa file ng log, napagtanto namin na ang data ng sensor ay sandali "wala sa Saklaw" at hindi maayos na nakuha ng AQI conversion Library, kaya binago ko ang dating code upang hawakan ito:

def conv_aqi (pmt_2_5, pmt_10):

subukan: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) ibalik ang aqi_2_5, aqi_10 maliban sa: bumalik sa 600, 600 Ang sitwasyong ito ay maaaring mangyari sa larangan, na OK lang. Tandaan na sa katunayan, dapat mong gamitin ang average ng paglipat upang makuha talaga ang AQI (oras-oras na hindi bababa, ngunit karaniwang araw-araw).

Hakbang 15: Konklusyon

Konklusyon
Konklusyon

Gaya ng lagi, inaasahan kong ang proyektong ito ay makakatulong sa iba na mahanap ang kanilang daan patungo sa kapanapanabik na mundo ng Electronics at Data Science!

Para sa mga detalye at pangwakas na code, mangyaring bisitahin ang aking deposito sa GitHub: RPi_Air_Qual_Sensor.

Saludos mula sa timog ng mundo!

Magkita tayo sa susunod kong turo!

Salamat, Marcelo

Inirerekumendang: