INHOUDSOPGAWE:

N Goedkoop monitor vir IoT-luggehalte gebaseer op RaspberryPi 4: 15-stappe (met foto's)
N Goedkoop monitor vir IoT-luggehalte gebaseer op RaspberryPi 4: 15-stappe (met foto's)

Video: N Goedkoop monitor vir IoT-luggehalte gebaseer op RaspberryPi 4: 15-stappe (met foto's)

Video: N Goedkoop monitor vir IoT-luggehalte gebaseer op RaspberryPi 4: 15-stappe (met foto's)
Video: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, November
Anonim
'N Goedkoop IoT-luggehalte-monitor gebaseer op RaspberryPi 4
'N Goedkoop IoT-luggehalte-monitor gebaseer op RaspberryPi 4
'N Goedkoop IoT-luggehalte-monitor gebaseer op RaspberryPi 4
'N Goedkoop IoT-luggehalte-monitor gebaseer op RaspberryPi 4
'N Goedkoop IoT-luggehalte-monitor gebaseer op RaspberryPi 4
'N Goedkoop IoT-luggehalte-monitor gebaseer op RaspberryPi 4
'N Goedkoop IoT-luggehalte-monitor gebaseer op RaspberryPi 4
'N Goedkoop IoT-luggehalte-monitor gebaseer op RaspberryPi 4

Santiago, Chili tydens 'n winteromgewingsgeval, het die voorreg om in een van die mooiste lande ter wêreld te woon, maar dit is ongelukkig nie alles rose nie. Chili ly gedurende die winterseisoen baie onder lugbesmetting, hoofsaaklik as gevolg van deeltjies soos stof en rookmis.

As gevolg van koue weer, in die suide, is lugbesmetting hoofsaaklik te wyte aan kalfaktore op hout en in Santiago (die hoofstad in die middel van die land), gemeng van nywerhede, motors en die unieke geografiese situasie tussen twee groot bergkettings.

Tans is lugbesoedeling wêreldwyd 'n groot probleem, en in hierdie artikel sal ons ondersoek hoe u 'n goedkoop tuisgemaakte luggehalte -monitor, gebaseer op 'n Raspberry Pi, kan ontwikkel. As u meer wil weet oor luggehalte, besoek die projek "World Air Quality Index".

Voorrade

  • Framboos Pi 4
  • 1SDS011 - Laser met hoë presisie pm2.5 opsporing van luggehalte
  • Plastiek boks

Stap 1: Deeltjie materie (PM): wat is dit? Hoe kom dit die lug in?

Particulate Matter (PM): wat is dit? Hoe kom dit die lug in?
Particulate Matter (PM): wat is dit? Hoe kom dit die lug in?

Om besoedeling of lugbesmetting te verstaan, moet ons die deeltjies bestudeer wat daarmee verband hou, wat ook bekend staan as deeltjies. As ons na die grafieke in die vorige afdeling kyk, kan ons sien dat hulle PM2.5 en PM10 genoem het. Kom ons gee 'n vinnige oorsig daarvan.

PM staan vir deeltjies (ook partikelbesoedeling genoem): die term vir 'n mengsel van vaste deeltjies en vloeistofdruppels wat in die lug voorkom. Sommige deeltjies, soos stof, vuil, roet of rook, is groot of donker genoeg om met die blote oog gesien te word. Ander is so klein dat hulle slegs met 'n elektronmikroskoop opgespoor kan word. Deeltjies kom in 'n wye verskeidenheid groottes voor. Deeltjies kleiner as of gelyk aan 10 mikrometer in deursnee is so klein dat hulle in die longe kan beland, wat moontlik ernstige gesondheidsprobleme kan veroorsaak. Tien mikrometer is minder as die breedte van 'n enkele menslike hare.

Deeltjiebesoedeling sluit in growwe stofdeeltjies (PM10): inhaleerbare deeltjies, met diameters wat oor die algemeen 10 mikrometer en kleiner is. Bronne sluit in verpletterings of maalwerk en stof wat deur voertuie op paaie opgewek word. Fyn deeltjies (PM2.5): fyn inhaleerbare deeltjies, met diameters wat oor die algemeen 2,5 mikrometer en kleiner is. Fyn deeltjies word vervaardig uit alle vorme van verbranding, insluitend motorvoertuie, kragsentrales, houtverbranding in die woonbuurt, bosbrande, landbouverbranding en 'n paar industriële prosesse.

Stap 2: Waarom is dit belangrik om besorg te wees oor die deeltjies?

Waarom is dit belangrik om besorg te wees oor die deeltjies?
Waarom is dit belangrik om besorg te wees oor die deeltjies?

Soos beskryf deur GERARDO ALVARADO Z. in sy werk aan die Universiteit van Chili, was studies oor episodes van hoë lugbesoedeling in die Maasvallei (België) in 1930, Donora (Pennsylvania) in 1948 en Londen in 1952 die eerste gedokumenteerde bronne wat sterftes verband hou. met kontaminasie van deeltjies (Préndez, 1993). Vooruitgang in die ondersoek na die gevolge van lugbesoedeling op die gesondheid van mense het bepaal dat gesondheidsrisiko's veroorsaak word deur inasembare deeltjies, afhangende van hul penetrasie en afsetting in verskillende dele van die respiratoriese stelsel, en die biologiese reaksie op afgesette materiale.

Die dikste deeltjies, ongeveer 5 mikrometer, word gefiltreer deur die gesamentlike werking van die cilia van die neusgang en die slymvlies wat die neusholte en die tragea bedek. Deeltjies met 'n deursnee tussen 0,5 en 5 mikrometer kan in die brongi en selfs in die longalveoli neergelê word, maar dit word na 'n paar uur deur die brille en brongioli verwyder. Deeltjies kleiner as 0,5 μm kan diep deurdring totdat hulle in die longalveoli neergelê word, wat van weke tot jare oorbly, aangesien daar geen mukosiliêre transportmeganisme is wat die uitskakeling vergemaklik nie. Die volgende figuur toon die penetrasie van die deeltjies in die respiratoriese stelsel, afhangende van hul grootte.

Om beide soorte deeltjies (PM2.5 en PM10) op te spoor, is dus baie belangrik, en die goeie nuus is dat beide deur 'n eenvoudige en nie duur sensor, die SDS011, gelees kan word.

Stap 3: Die deeltjiesensor - SDS011

Die deeltjiesensor - SDS011
Die deeltjiesensor - SDS011
Die deeltjiesensor - SDS011
Die deeltjiesensor - SDS011

Monitering van luggehalte is 'n bekende en gevestigde wetenskap wat in die 80's begin het. Op daardie stadium was die tegnologie redelik beperk, en die oplossing wat gebruik is om die lugbesoedelingskompleks te kwantifiseer, omslagtig en baie duur.

Gelukkig, met die nuutste en moderne tegnologie, word die oplossings wat gebruik word vir monitering van luggehalte nie net meer akkuraat nie, maar ook vinniger om te meet. Toestelle word al hoe kleiner en kos baie goedkoper as ooit tevore.

In hierdie artikel fokus ons op 'n deeltjesensor wat die hoeveelheid stof in die lug kan opspoor. Terwyl die eerste generasie net die hoeveelheid ondeursigtigheid kon opspoor, kan die nuutste sensors, soos die SDS011 van INOVAFIT, 'n uitvloeisel van die Universiteit van Jinan (in Shandong), nou PM2.5 en PM10 opspoor.

Met sy grootte is die SDS011 waarskynlik een van die beste sensors wat akkuraatheid en prys betref (minder as USD40,00).

  • Gemete waardes: PM2.5, PM10
  • Bereik: 0–999,9 μg /m³
  • Voedingsspanning: 5V (4.7–5.3V)
  • Kragverbruik (werk): 70mA ± 10mA
  • Kragverbruik (slaapmodus laser en waaier): <4mA
  • Bergingstemperatuur: -20 tot +60C
  • Werktemperatuur: -10 tot +50C
  • Humiditeit (berging): maks. 90%
  • Humiditeit (werk): maks. 70% (kondensasie van waterdamp vervals lesings)
  • Akkuraatheid: 70% vir 0.3μm en 98% vir 0.5μm
  • Grootte: 71 x 70 x 23 mm
  • Sertifisering: CE, FCC, RoHS

Die SD011 gebruik die PCB as die een kant van die omhulsel, wat die koste kan verminder. Die reseptordiode is aan die PCB -kant gemonteer (dit is verpligtend, aangesien enige geraas tussen die diode en die LNA vermy moet word). Die emitterlaser word op die plastiekkas gemonteer en via 'n buigsame draad aan die printplaat gekoppel.

Kortom, Nova Fitness SDS011 is 'n professionele laserstofsensor. Die waaier wat op die sensor gemonteer is, suig outomaties lug. Die sensor gebruik 'n laserligverspreidingsbeginsel* om die waarde van stofdeeltjies wat in die lug hang, te meet. Die sensor bied hoë presisie en betroubare metings van PM2.5 en PM10 waardes. Enige verandering in die omgewing kan byna onmiddellik gesien word kort reaksietyd onder 10 sekondes. Die sensor in standaardmodus rapporteer lees met 'n interval van 1 sekonde.

* Laserspreidingsbeginsel: Ligstrooiing kan veroorsaak word wanneer deeltjies deur die opsporingsgebied gaan. Die verspreide lig word omskep in elektriese seine en hierdie seine word versterk en verwerk. Die aantal en deursnee van deeltjies kan verkry word deur analise omdat die seingolfvorm sekere verwantskappe het met die deursnee van die deeltjies.

Stap 4: Maar hoe kan die SDS011 daardie deeltjies vang?

Maar hoe kan die SDS011 daardie deeltjies vang?
Maar hoe kan die SDS011 daardie deeltjies vang?
Maar hoe kan die SDS011 daardie deeltjies vang?
Maar hoe kan die SDS011 daardie deeltjies vang?

Soos voorheen gesê, is die beginsel wat deur SDS011 gebruik word, ligstrooiing of beter, Dynamic Light Scattering (DLS), wat 'n fisika -tegniek is wat gebruik kan word om die grootteverspreidingsprofiel van klein deeltjies in suspensie of polimere in oplossing te bepaal. In die omvang van DLS word tydelike skommelinge gewoonlik geanaliseer deur middel van die intensiteit of foton outokorrelasie funksie (ook bekend as foton korrelasie spektroskopie of kwasi-elastiese lig verstrooiing). In die tyddomeinanalise verval die outokorrelasiefunksie (ACF) gewoonlik vanaf nul vertragingstyd, en vinniger dinamika as gevolg van kleiner deeltjies lei tot vinniger dekorrelasie van die verspreide intensiteitspoor. Daar is getoon dat die intensiteit ACF die Fourier -transformasie van die kragspektrum is, en daarom kan die DLS -metings ewe goed in die spektrale domein uitgevoer word.

Bo 'n hipotetiese dinamiese ligverspreiding van twee monsters: Groter deeltjies (soos PM10) aan die bokant en kleiner deeltjies (as PM2.5) aan die onderkant. En as ons binne ons sensor kyk, kan ons sien hoe die beginsel van ligstrooi geïmplementeer word.

Die elektriese sein wat op die diode afgeneem word, gaan na Laaggeruisversterker en word dan omgeskakel na 'n digitale sein deur 'n ADC en na buite via 'n UART.

Om meer te wete te kom oor SDS011 oor 'n ware wetenskaplike ervaring, kyk na die 2018-werk van Konstantinos et al, Ontwikkeling en toetsing op die veld van laekoste-draagbare stelsel vir die monitering van PM2.5-konsentrasies.

Stap 5: Showtime

Showtime!
Showtime!
Showtime!
Showtime!

Kom ons neem 'n blaaskans oor al hierdie teorie en fokus op hoe om deeltjies te meet met behulp van 'n Raspberry Pi en die SDS011 -sensor

Die HW -verbinding is eintlik baie eenvoudig. Die sensor word verkoop met 'n USB -adapter om die uitvoerdata van sy 7 -pins UART met een van die RPi se standaard USB -verbindings te koppel.

SDS011 pinout:

  • Speld 1 - nie gekoppel nie
  • Speld 2 - PM2.5: 0–999μg/m³; PWM uitset
  • Speld 3–5V
  • Speld 4 - PM10: 0–999 μg/m³; PWM uitset
  • Speld 5 - GND
  • Speld 6 - RX UART (TTL) 3.3V
  • Speld 7 - TX UART (TTL) 3.3V

Vir hierdie tutoriaal gebruik ek vir die eerste keer 'n splinternuwe Raspberry-Pi 4. Maar natuurlik sal enige vorige model ook goed werk.

Sodra u die sensor op een van die RPi USB -poorte aansluit, begin u outomaties na die geluid van die waaier luister. Die geraas is 'n bietjie irriterend, so miskien moet u dit uit die stekker trek en wag totdat u klaar is met SW.

Die kommunikasie tussen die sensor en RPi sal deur middel van 'n seriële protokol plaasvind. Besonderhede oor hierdie protokol kan hier gevind word: Laser Dust Sensor Control Protocol V1.3. Maar vir hierdie projek is die beste om 'n python -koppelvlak te gebruik om die kode wat ontwikkel moet word, te vereenvoudig. U kan u eie koppelvlak skep of sommige wat op die internet beskikbaar is, gebruik soos Frank Heuer of Ivan Kalchev. Ons sal die laaste een gebruik, wat baie eenvoudig is en goed werk (u kan die sds011.py -script van die GitHub of myne aflaai).

Die lêer sds011.py moet in dieselfde gids wees as waarin u u skrip geskep het.

Tydens die ontwikkelingsfase sal ek 'n Jupyter Notebook gebruik, maar u kan enige IDE gebruik wat u wil (byvoorbeeld Thonny of Geany wat deel uitmaak van die Raspberry Pi Debian -pakket is baie goed).

Begin met die invoer van sds011 en skep u sensor -instansie. SDS011 bied 'n metode om van die sensor af te lees met behulp van 'n UART.

vanaf sds011 invoer *

sensor = SDS011 ("/dev/ttyUSB0")

U kan u sensor aan- of uitskakel met die opdrag slaap:

pmt_2_5, pmt_10 = sensor.query ()

Wag ten minste 10 sekondes vir stabilisering voor metings en ten minste 2 sekondes om 'n nuwe een te begin (sien kode hierbo).

En dit is alles wat u moet weet in terme van SW om die sensor te gebruik. Maar laat ons dieper gaan oor luggehaltebeheer! Aan die begin van hierdie artikel, as u die webwerwe ondersoek het wat inligting gee oor hoe goed of sleg die lug is, moet u besef dat kleure met hierdie waardes verband hou. Elke kleur is 'n indeks. Die bekendste daarvan is die AQI (Air Quality Index), wat in die VSA en verskeie ander lande gebruik word.

Stap 6: Luggehalte -indeks - AQI

Luggehalte -indeks - AQI
Luggehalte -indeks - AQI
Luggehalte -indeks - AQI
Luggehalte -indeks - AQI
Luggehalte -indeks - AQI
Luggehalte -indeks - AQI

Die AQI is 'n indeks vir die rapportering van daaglikse luggehalte. Dit vertel jou hoe skoon of besoedel jou lug is, en watter gepaardgaande gesondheidseffekte vir jou kommer kan wees. Die AQI fokus op die gesondheidseffekte wat u binne enkele ure of dae kan ervaar nadat u besoedelde lug ingeasem het.

EPA (die Verenigde State se Omgewingsbeskermingsagentskap) bereken byvoorbeeld die AQI nie net vir deeltjiebesoedeling nie (PM2.5 en PM10), maar ook vir die ander groot lugbesoedeling wat deur die Clean Air Act gereguleer word: osoon op grondvlak, koolstofmonoksied, swaeldioksied en stikstofdioksied. Vir elkeen van hierdie besoedelstowwe het EPA nasionale luggehalte -standaarde daargestel om die openbare gesondheid te beskerm. Sien foto hierbo met AQI -waardes, kleure en gesondheidsboodskap wat verband hou.

Soos voorheen gesê, hou die AQI -waardes en kleure verband met elkeen van besoedelende middels, maar hoe kan u die waardes wat deur sensors gegenereer word, daaraan koppel? 'N Bykomende tabel verbind hulle almal soos hierbo getoon.

Maar dit maak natuurlik nie sin om van so 'n tafel gebruik te maak nie. Uiteindelik is dit 'n eenvoudige wiskundige algoritme wat die berekening maak. Hiervoor sal ons die biblioteek invoer om te skakel tussen AQI-waarde en konsentrasie van besoedeling (µg/m³): python-aqi.

Installeer die biblioteek met behulp van PIP en maak 'n toets (sien kode hierbo)

pip installeer python-aqi

En wat van Chili?

In Chili word 'n soortgelyke indeks gebruik, die ICAP: Air Quality Index for Breathable Particles. 'N Hoogste besluit 59 van 16 Maart 1998 van die Ministerie van Algemene Sekretaris van die Presidensie van die Republiek, bepaal in sy artikel 1, letter g) dat die vlakke wat die ICA vir asemende deeltjies bevat, ICAP.

Die waardes sal lineêr tussen die afdelings wissel, die waarde 500 sal ooreenstem met die grenswaarde waaroor die bevolking 'n risiko kan hê as dit aan hierdie konsentrasies blootgestel word. Volgens die ICAP -waardes het kategorieë vasgestel wat die konsentrasievlakke van MP10 waaraan mense blootgestel is, kwalifiseer.

Stap 7: Plaaslike aanmelding van data

Teken data lokaal op
Teken data lokaal op
Teken data lokaal op
Teken data lokaal op
Teken data lokaal op
Teken data lokaal op

Op hierdie stadium het ons al die gereedskap om data van die sensor op te vang en dit ook om te skakel vir 'n meer 'leesbare waarde', dit is die AQI -indeks.

Kom ons skep 'n funksie om hierdie waardes vas te lê. Ons sal drie waardes in volgorde vaslê, met die gemiddelde onder hulle:

def get_data (n = 3):

sensor.sleep (slaap = vals) pmt_2_5 = 0 pmt_10 = 0 tyd. slaap (10) vir i in reeks (n): x = sensor.navraag () 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 Hierbo kan u die toetsuitslag sien. Laat ons ook 'n funksie doen om die numeriese waardes van PM in die AQI -indeks om te skakel

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)) terugkeer aqi_2_5, aqi_10 bo die uitslag van 'n toets met albei funksies. Maar wat om met hulle te doen? Die eenvoudigste antwoord is om 'n funksie te skep om die vasgelegde data te stoor en dit op 'n plaaslike lêer te stoor

def save_log ():

met oop ("U PAD HIER/air_quality.csv", "a") as log: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n". formaat (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Met 'n enkele lus kan u data op 'n gereelde basis in u plaaslike lêer aanteken, byvoorbeeld elke minuut

terwyl (waar):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) probeer: save_log () behalwe: print ("[INFO] Mislukking by aanmelding data") time.sleep (60) Elke 60 sekondes word die tydstempel plus die data by hierdie lêer "bygevoeg", soos ons hierbo kan sien.

Stap 8: Stuur data na 'n wolkdiens

Stuur data na 'n wolkdiens
Stuur data na 'n wolkdiens

Op hierdie stadium het ons geleer hoe om data van die sensor op te neem en dit op 'n plaaslike CSV -lêer te stoor. Dit is nou tyd om te sien hoe u die data na 'n IoT -platform kan stuur. In hierdie tutoriaal gebruik ons ThingSpeak.com.

“ThingSpeak is 'n open-source Internet of Things (IoT) -toepassing om data uit dinge op te slaan en op te haal met behulp van REST- en MQTT-API's. ThingSpeak maak dit moontlik om sensor -logprogramme te skep, toepassings vir die dop van liggings en 'n sosiale netwerk van dinge met statusopdaterings.”

Eerstens moet u 'n rekening by ThinkSpeak.com hê. Volg vervolgens die instruksies om 'n kanaal te skep, en let op die kanaal -ID en die skryf -API -sleutel.

As u die kanaal skep, moet u ook definieer watter inligting na elk van die 8 velde opgelaai sal word, soos hierbo getoon (in ons geval sal slegs 4 daarvan gebruik word).

Stap 9: MQTT -protokol en ThingSpeak -verbinding

MQTT -protokol en ThingSpeak -verbinding
MQTT -protokol en ThingSpeak -verbinding

MQTT is 'n publiseer-/intekenargitektuur wat hoofsaaklik ontwikkel is om bandwydte en toestelle met beperkte krag oor draadlose netwerke te verbind. Dit is 'n eenvoudige en ligte protokol wat oor TCP/IP -voetstukke of WebSockets loop. MQTT via WebSockets kan met SSL beveilig word. Met die publiseer/inteken -argitektuur kan boodskappe na die kliëntoestelle gestuur word sonder dat die toestel die bediener deurlopend hoef te peil.

Die MQTT -makelaar is die sentrale kommunikasiepunt en is verantwoordelik vir die versending van alle boodskappe tussen die senders en die regte ontvangers. 'N Kliënt is 'n toestel wat met die makelaar verbind is en onderwerpe kan publiseer of inteken om toegang tot die inligting te verkry. 'N Onderwerp bevat routeringsinligting vir die makelaar. Elke kliënt wat boodskappe wil stuur, publiseer dit na 'n sekere onderwerp, en elke kliënt wat boodskappe wil ontvang, teken op 'n sekere onderwerp in. Die makelaar lewer alle boodskappe met die ooreenstemmende onderwerp aan die toepaslike kliënte.

ThingSpeak ™ het 'n MQTT -makelaar op die URL mqtt.thingspeak.com en poort 1883. Die ThingSpeak -makelaar ondersteun beide MQTT -publisering en MQTT -intekening.

In ons geval gebruik ons die MQTT Publish.

Stap 10: MQTT Publiseer

MQTT Publiseer
MQTT Publiseer

Om mee te begin, laat ons die Eclipse Paho MQTT Python -kliëntbiblioteek installeer, wat weergawes 3.1 en 3.1.1 van die MQTT -protokol implementeer

sudo pip installeer paho-mqtt

Laat ons dan die paho -biblioteek invoer:

invoer paho.mqtt.publiseer as publiseer

en begin die Thingspeak -kanaal en MQTT -protokol. Hierdie verbindingsmetode is die eenvoudigste en benodig die minste stelselhulpbronne:

channelID = "U KANAAL -ID"

apiKey = "U SKRYFSLEUTEL" onderwerp = "kanale/" + channelID + "/publish/" + apiKey mqttHost = "mqtt.thingspeak.com" Nou moet ons ons 'loonvrag' definieer

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

En dit is dit! ons is gereed om data na die wolk te stuur! Laat ons die vorige lusfunksie herskryf om ook die ThingSpeak -deel daarvan in te sluit.

# Stuur elke 1 minuut alle data na ThingSpeak

terwyl (Waar): 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 () behalwe: print ("[INFO] Versuim om data te stuur ") time.sleep (60) As alles in orde is, moet u sien dat data ook op u kanaal verskyn op thingspeak.com soos hierbo getoon.

Stap 11: Die finale skrif

Dit is belangrik om daarop te wys dat Jupyter Notebook 'n baie goeie hulpmiddel vir ontwikkeling en verslag is, maar nie om 'n kode te skep om dit in produksie te plaas nie. Wat u nou moet doen, is om die relevante deel van die kode te neem en 'n.py -script te skep en dit op u terminale uit te voer.

Byvoorbeeld, "ts_air_quality_logger.py", wat u moet uitvoer met die opdrag:

python 3 ts_air_quality_logger.py

Hierdie skrif sowel as die Jupyter Notebook en die sds011.py kan gevind word in my bewaarplek by RPi_Air_Quality_Sensor.

Let daarop dat hierdie skrif slegs vir toetsing moontlik is. Die beste is om nie vertragings in die laaste lus te gebruik nie (wat die kode in 'pouse' plaas), maar gebruik eerder tydtellers. Of vir 'n regte toepassing, die beste is om die lus nie te gebruik nie, met die Linux geprogrammeer om die script gereeld met crontab uit te voer.

Stap 12: Neem die monitor buite

Neem die monitor na buite
Neem die monitor na buite
Neem die monitor na buite
Neem die monitor na buite
Neem die monitor na buite
Neem die monitor na buite
Neem die monitor na buite
Neem die monitor na buite

Toe my Raspberry Pi -luggehalte -monitor werk, het ek die RPi in 'n plastiekboks gemonteer, die sensor buite gehou en buite my huis geplaas.

Twee ervarings is gemaak.

Stap 13: Verbranding van petrolmotors

Verbranding van petrolmotors
Verbranding van petrolmotors
Verbranding van petrolmotors
Verbranding van petrolmotors

Die sensor is ongeveer 1 m van die Lambretta se gasveld geplaas en sy motor het aangeskakel. Die motor loop 'n paar minute en draai af. Uit die bogenoemde loglêer, die resultaat wat ek gekry het. Interessant om te bevestig dat PM2.5 die gevaarlikste deeltjie was as gevolg van die motor.

Stap 14: Hout verbrand

Hout verbrand
Hout verbrand
Hout verbrand
Hout verbrand

As ons na die loglêer kyk, besef ons dat die sensordata tydelik "buite bereik" was en nie goed deur die AQI -omskakelingsbiblioteek vasgelê is nie, so ek verander die vorige kode om dit te hanteer:

def conv_aqi (pmt_2_5, pmt_10):

probeer: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) retour aqi_2_5, aqi_10 behalwe: terugkeer 600, 600 Hierdie situasie kan in die veld gebeur, wat goed is. Onthou dat u eintlik die bewegende gemiddelde moet gebruik om die AQI regtig te kry (ten minste elke uur, maar gewoonlik daagliks).

Stap 15: Gevolgtrekking

Afsluiting
Afsluiting

Soos altyd, hoop ek dat hierdie projek ander kan help om die opwindende wêreld van elektronika en datawetenskap te vind!

Besoek my GitHub -bewaarplek: RPi_Air_Quality_Sensor vir besonderhede en finale kode.

Groete uit die suide van die wêreld!

Sien jou by my volgende instruksies!

Dankie, Marcelo

Aanbeveel: