Inhoudsopgave:

Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4: 15 stappen (met afbeeldingen)
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4: 15 stappen (met afbeeldingen)

Video: Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4: 15 stappen (met afbeeldingen)

Video: Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4: 15 stappen (met afbeeldingen)
Video: Aqara VOCKQJK11LM - монитор качества воздуха для умного дома c e-ink экраном 2024, November
Anonim
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4
Een goedkope IoT-luchtkwaliteitsmonitor op basis van RaspberryPi 4

Santiago, Chili hebben tijdens een winterse ecologische noodsituatie het voorrecht om in een van de mooiste landen ter wereld te wonen, maar helaas zijn het niet allemaal rozen. Chili heeft tijdens het winterseizoen veel last van luchtverontreiniging, voornamelijk door fijnstof als stof en smog.

Vanwege het koude weer in het zuiden is luchtverontreiniging voornamelijk te wijten aan houtverwerkers en in Santiago (de belangrijkste hoofdstad in het midden van het land) vermengd met industrieën, auto's en de unieke geografische ligging tussen 2 enorme bergketens.

Tegenwoordig is luchtvervuiling een groot probleem over de hele wereld en in dit artikel zullen we onderzoeken hoe we een goedkope zelfgemaakte luchtkwaliteitsmonitor kunnen ontwikkelen, gebaseerd op een Raspberry Pi. Als u meer wilt weten over luchtkwaliteit, bezoek dan het project "World Air Quality Index".

Benodigdheden

  • Raspberry Pi 4
  • 1SDS011 - Hoge precisie laser pm2.5 luchtkwaliteit detectiesensor
  • Plastic doos

Stap 1: Fijnstof (PM): wat is het? Hoe komt het in de lucht?

Fijnstof (PM): wat is het? Hoe komt het in de lucht?
Fijnstof (PM): wat is het? Hoe komt het in de lucht?

Dus om vervuiling of luchtverontreiniging te begrijpen, moeten we de deeltjes bestuderen die daarmee verband houden, ook wel fijnstof genoemd. Als we naar de grafieken in de vorige sectie kijken, kunnen we zien dat ze PM2,5 en PM10 noemden. Laten we daar een snel overzicht van geven.

PM staat voor fijnstof (ook wel deeltjesvervuiling genoemd): de term voor een mengsel van vaste deeltjes en vloeibare druppeltjes in de lucht. Sommige deeltjes, zoals stof, vuil, roet of rook, zijn groot of donker genoeg om met het blote oog te kunnen worden gezien. Andere zijn zo klein dat ze alleen met een elektronenmicroscoop kunnen worden gedetecteerd. Deeltjes zijn er in een groot aantal maten. Deeltjes met een diameter kleiner dan of gelijk aan 10 micrometer zijn zo klein dat ze in de longen kunnen komen en mogelijk ernstige gezondheidsproblemen kunnen veroorzaken. Tien micrometer is minder dan de breedte van een enkele mensenhaar.

Onder deeltjesverontreiniging vallen onder meer Grove stofdeeltjes (PM10): inhaleerbare deeltjes, met een diameter die doorgaans 10 micrometer of kleiner is. Bronnen zijn onder meer verbrijzelings- of maalwerkzaamheden en stof dat door voertuigen op wegen wordt opgeworpen. Fijne deeltjes (PM2,5): fijne inhaleerbare deeltjes, met een diameter die doorgaans 2,5 micrometer en kleiner is. Fijne deeltjes worden geproduceerd door alle soorten verbranding, inclusief motorvoertuigen, energiecentrales, houtverbranding in woningen, bosbranden, verbranding in de landbouw en sommige industriële processen. U kunt meer over de fijnstof vinden op de EPA-site: The United States Environmental Protection Agency

Stap 2: Waarom is het belangrijk om om die fijnstof te geven?

Waarom is het belangrijk om om die fijnstof te geven?
Waarom is het belangrijk om om die fijnstof te geven?

Zoals beschreven door GERARDO ALVARADO Z. in zijn werk aan de Universiteit van Chili, waren studies van episoden van hoge luchtvervuiling in de Maasvallei (België) in 1930, Donora (Pennsylvania) in 1948 en Londen in 1952 de eerste gedocumenteerde bronnen die sterfte in verband brachten met deeltjesverontreiniging (Préndez, 1993). Vooruitgang in het onderzoek naar de effecten van luchtverontreiniging op de gezondheid van mensen heeft uitgewezen dat gezondheidsrisico's worden veroorzaakt door inhaleerbare deeltjes, afhankelijk van hun penetratie en afzetting in verschillende delen van het ademhalingssysteem, en de biologische reactie op afgezette materialen.

De dikste deeltjes, ongeveer 5 m, worden gefilterd door de gezamenlijke werking van de trilharen van de neusholte en het slijmvlies dat de neusholte en de luchtpijp bedekt. Deeltjes met een diameter tussen 0,5 en 5 m kunnen in de bronchiën en zelfs in de longblaasjes worden afgezet, maar worden na enkele uren door de trilharen van de bronchiën en de bronchiolen geëlimineerd. Deeltjes kleiner dan 0,5 m kunnen diep doordringen totdat ze worden afgezet in de longblaasjes, waar ze weken tot jaren achterblijven, omdat er geen mucociliair transportmechanisme is dat eliminatie vergemakkelijkt. De volgende afbeelding toont de penetratie van de deeltjes in het ademhalingssysteem, afhankelijk van hun grootte.

Beide soorten deeltjes (PM2.5 en PM10) zijn dus erg belangrijk en het goede nieuws is dat beide leesbaar zijn door een eenvoudige en niet dure sensor, de SDS011.

Stap 3: De deeltjessensor - SDS011

De deeltjessensor - SDS011
De deeltjessensor - SDS011
De deeltjessensor - SDS011
De deeltjessensor - SDS011

Monitoring van de luchtkwaliteit is een bekende en gevestigde wetenschap die begon in de jaren 80. In die tijd was de technologie vrij beperkt en de oplossing die werd gebruikt om het luchtvervuilingscomplex te kwantificeren, omslachtig en erg duur.

Gelukkig worden de oplossingen die worden gebruikt voor het monitoren van de luchtkwaliteit tegenwoordig, met de meest recente en moderne technologieën, niet alleen nauwkeuriger, maar ook sneller in het meten. Apparaten worden kleiner en kosten veel betaalbaarder dan ooit tevoren.

In dit artikel richten we ons op een deeltjessensor, die de hoeveelheid stof in de lucht kan detecteren. Terwijl de eerste generatie net de mate van ondoorzichtigheid kon detecteren, kunnen de meest recente sensoren zoals de SDS011 van INOVAFIT, een spin-off van de Universiteit van Jinan (in Shandong), nu PM2.5 en PM10 detecteren.

Met zijn formaat is de SDS011 waarschijnlijk een van de beste sensoren in termen van nauwkeurigheid en prijs (minder dan USD40,00). Specificaties

  • Gemeten waarden: PM2.5, PM10
  • Bereik: 0-999,9 g /m³
  • Voedingsspanning: 5V (4,7-5,3V)
  • Stroomverbruik (werk): 70mA±10mA
  • Stroomverbruik (slaapmodus laser & ventilator): < 4mA
  • Opslagtemperatuur: -20 tot +60C
  • Werktemperatuur: -10 tot +50C
  • Luchtvochtigheid (opslag): Max. 90%
  • Luchtvochtigheid (werk): Max. 70% (condensatie van waterdamp vervals metingen)
  • Nauwkeurigheid: 70% voor 0.3μm en 98% voor 0.5μm
  • Afmeting: 71x70x23 mm
  • Certificering: CE, FCC, RoHS

De SD011 gebruikt de PCB als één kant van de behuizing, waardoor de kosten kunnen worden verlaagd. De receptordiode is aan de PCB-zijde gemonteerd (dit is verplicht omdat ruis tussen de diode en de LNA moet worden vermeden). De emitterlaser wordt op de plastic doos gemonteerd en via een flexibele draad met de printplaat verbonden.

Kortom, Nova Fitness SDS011 is een professionele laserstofsensor. Ventilator die op de sensor is gemonteerd, zuigt automatisch lucht aan. De sensor gebruikt een laserlichtverstrooiingsprincipe* om de waarde van stofdeeltjes in de lucht te meten. De sensor biedt hoge precisie en betrouwbare metingen van PM2.5- en PM10-waarden. Elke verandering in de omgeving kan vrijwel onmiddellijk worden waargenomen, een korte reactietijd van minder dan 10 seconden. De sensor in de standaardmodus meldt het lezen met een interval van 1 seconde.

* Laserverstrooiingsprincipe: Lichtverstrooiing kan worden veroorzaakt wanneer deeltjes door het detectiegebied gaan. Het verstrooide licht wordt omgezet in elektrische signalen en deze signalen worden versterkt en verwerkt. Het aantal en de diameter van deeltjes kan worden verkregen door analyse omdat de signaalgolfvorm bepaalde relaties heeft met de diameter van de deeltjes.

Stap 4: Maar hoe kan de SDS011 die deeltjes opvangen?

Maar hoe kan de SDS011 die deeltjes opvangen?
Maar hoe kan de SDS011 die deeltjes opvangen?
Maar hoe kan de SDS011 die deeltjes opvangen?
Maar hoe kan de SDS011 die deeltjes opvangen?

Zoals eerder opgemerkt, is het principe dat door SDS011 wordt gebruikt lichtverstrooiing of beter, Dynamic Light Scattering (DLS), een techniek in de natuurkunde die kan worden gebruikt om het grootteverdelingsprofiel van kleine deeltjes in suspensie of polymeren in oplossing te bepalen. In het kader van DLS worden temporele fluctuaties meestal geanalyseerd door middel van de intensiteit of foton-autocorrelatiefunctie (ook bekend als fotoncorrelatiespectroscopie of quasi-elastische lichtverstrooiing). In de tijddomeinanalyse vervalt de autocorrelatiefunctie (ACF) gewoonlijk vanaf nul vertragingstijd, en snellere dynamiek als gevolg van kleinere deeltjes leidt tot snellere decorrelatie van verstrooid intensiteitsspoor. Het is aangetoond dat de intensiteit ACF de Fourier-transformatie van het vermogensspectrum is, en daarom kunnen de DLS-metingen even goed worden uitgevoerd in het spectrale domein.

Hierboven een hypothetische dynamische lichtverstrooiing van twee monsters: grotere deeltjes (zoals PM10) aan de bovenkant en kleinere deeltjes (zoals PM2.5) aan de onderkant. En als we in onze sensor kijken, kunnen we zien hoe het lichtverstrooiingsprincipe wordt geïmplementeerd.

Het elektrische signaal dat op de diode wordt opgevangen, gaat naar de Low Noise Amplifier en wordt van daaruit omgezet in een digitaal signaal via een ADC en naar buiten via een UART.

Als u meer wilt weten over SDS011 over een echte wetenschappelijke ervaring, neem dan een kijkje in het werk van Konstantinos et al., Ontwikkeling en on-field testen van een goedkoop draagbaar systeem voor het bewaken van PM2.5-concentraties.

Stap 5: Showtime

Show Time!
Show Time!
Show Time!
Show Time!

Laten we een pauze nemen van al deze theorie en ons concentreren op het meten van fijnstof met behulp van een Raspberry Pi en de SDS011-sensor

De HW-aansluiting is namelijk heel eenvoudig. De sensor wordt verkocht met een USB-adapter om de uitvoergegevens van zijn 7-pins UART te koppelen aan een van de standaard USB-connectoren van de RPi.

SDS011 pinout:

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

Voor deze tutorial gebruik ik voor het eerst een gloednieuwe Raspberry-Pi 4. Maar natuurlijk zal elk vorig model ook prima werken.

Zodra je de sensor aansluit op een van de RPi USB-poorten, begin je automatisch te luisteren naar het geluid van de ventilator. Het geluid is een beetje vervelend, dus misschien moet je de stekker uit het stopcontact halen en wachten tot je helemaal klaar bent met SW.

De communicatie tussen de sensor en RPi verloopt via een serieel protocol. Details over dit protocol zijn hier te vinden: Laser Dust Sensor Control Protocol V1.3. Maar voor dit project is het het beste om een python-interface te gebruiken om de te ontwikkelen code te vereenvoudigen. U kunt uw eigen interface maken of een aantal gebruiken die beschikbaar zijn op internet, zoals die van Frank Heuer of Ivan Kalchev. We zullen de laatste gebruiken, die heel eenvoudig is en prima werkt (je kunt het sds011.py-script downloaden van de GitHub of de mijne).

Het bestand sds011.py moet zich in dezelfde map bevinden waarin u uw script maakt.

Tijdens de ontwikkelingsfase zal ik een Jupyter Notebook gebruiken, maar je kunt elke IDE gebruiken die je wilt (Thonny of Geany bijvoorbeeld, die deel uitmaken van het Raspberry Pi Debian-pakket zijn beide erg goed).

Begin met het importeren van sds011 en maak uw sensorinstantie. SDS011 biedt een methode om van de sensor te lezen met behulp van een UART.

van sds011 import *

sensor = SDS011("/dev/ttyUSB0")

Je kunt je sensor aan- of uitzetten met het commando slaap:

pmt_2_5, pmt_10 = sensor.query()

Wacht minimaal 10 seconden voor stabilisatie voor metingen en minimaal 2 seconden om een nieuwe te starten (zie bovenstaande code).

En dit is alles wat u moet weten in termen van SW om de sensor te gebruiken. Maar laten we dieper ingaan op luchtkwaliteitscontrole! Als u aan het begin van dit artikel de sites hebt verkend die informatie geven over hoe goed of slecht de lucht is, moet u zich realiseren dat kleuren worden geassocieerd met die waarden. Elke kleur is een Index. De bekendste daarvan is de AQI (Air Quality Index), die in de VS en verschillende andere landen wordt gebruikt.

Stap 6: Luchtkwaliteitsindex - AQI

Luchtkwaliteitsindex - AQI
Luchtkwaliteitsindex - AQI
Luchtkwaliteitsindex - AQI
Luchtkwaliteitsindex - AQI
Luchtkwaliteitsindex - AQI
Luchtkwaliteitsindex - AQI

De AQI is een index voor het rapporteren van de dagelijkse luchtkwaliteit. Het vertelt u hoe schoon of vervuild uw lucht is en welke gezondheidseffecten u mogelijk zorgen baren. De AQI richt zich op gezondheidseffecten die u kunt ervaren binnen enkele uren of dagen na het inademen van vervuilde lucht.

EPA (de United States Environmental Protection Agency), bijvoorbeeld, berekent de AQI niet alleen voor deeltjesvervuiling (PM2.5 en PM10), maar ook voor de andere belangrijke luchtverontreinigende stoffen die worden gereguleerd door de Clean Air Act: ozon op leefniveau, koolmonoxide, zwaveldioxide en stikstofdioxide. Voor elk van deze verontreinigende stoffen heeft EPA nationale luchtkwaliteitsnormen opgesteld om de volksgezondheid te beschermen. Zie bovenstaande afbeelding met bijbehorende AQI-waarden, kleuren en gezondheidsbericht.

Zoals eerder opgemerkt, zijn die AQI-waarden en kleuren gerelateerd aan elk van de vervuilende stoffen, maar hoe kunnen de waarden die door sensoren worden gegenereerd ermee worden geassocieerd? Een extra tabel verbindt ze allemaal zoals hierboven weergegeven.

Maar het heeft natuurlijk geen zin om van zo'n tafel gebruik te maken. Uiteindelijk is het een eenvoudig wiskundig algoritme dat de berekening maakt. Daarvoor zullen we de bibliotheek importeren om te converteren tussen AQI-waarde en verontreinigende concentratie (µg/m³): python-aqi.

Installeer de bibliotheek met PIP en maak een test (zie bovenstaande code)

pip installeer python-aqi

En wat dacht je van Chili?

In Chili wordt een vergelijkbare index gebruikt, de ICAP: Air Quality Index for Breathable Particles. Een Supreme Decreet 59 van 16 maart 1998, van het Ministerie van secretaris-generaal van het Presidium van de Republiek, stelt in artikel 1, letter g) vast dat de niveaus die de ICA definiëren voor ademend deeltjesmateriaal, ICAP.

De waarden zullen lineair variëren tussen de secties, de waarde 500 zou overeenkomen met de grenswaarde waarboven er een risico zou zijn voor de bevolking bij blootstelling aan deze concentraties. Volgens de ICAP-waarden zijn er categorieën vastgesteld die de concentratieniveaus van MP10 waaraan mensen zijn blootgesteld kwalificeren.

Stap 7: Gegevens lokaal loggen

Gegevens lokaal loggen
Gegevens lokaal loggen
Gegevens lokaal loggen
Gegevens lokaal loggen
Gegevens lokaal loggen
Gegevens lokaal loggen

Op dit moment hebben we alle tools om gegevens van de sensor vast te leggen en deze ook om te zetten voor een meer "leesbare waarde", namelijk de AQI-index.

Laten we een functie maken om die waarden vast te leggen. We zullen achtereenvolgens 3 waarden vastleggen, waarbij we het gemiddelde nemen:

def get_data(n=3):

sensor.sleep(sleep=False) pmt_2_5 = 0 pmt_10 = 0 time.sleep(10) for i binnen bereik (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 Hierboven ziet u het testresultaat. Laten we ook een functie doen om de numerieke waarden van PM in AQI-index om te zetten

def conv_aqi(pmt_2_5, pmt_10):

aqi_2_5 = aqi.naar_iaqi(aqi. VERONTREINIGING_PM25, str(pmt_2_5)) aqi_10 = aqi.naar_iaqi(aqi. VERONTREINIGING_PM10, str(pmt_10)) return aqi_2_5, aqi_10 boven het resultaat van een test met beide functies. Maar wat te doen met hen? Het meest eenvoudige antwoord is om een functie te maken om de vastgelegde gegevens op te slaan en ze op te slaan in een lokaal bestand

def save_log():

met open("UW PAD HIER/air_kwaliteit.csv", "a") als log: dt = datetime.now() log.write("{}, {}, {}, {}, {}\n". formaat(dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close() Met een enkele lus kunt u regelmatig gegevens in uw lokale bestand loggen, bijvoorbeeld elke minuut

terwijl (waar):

pmt_2_5, pmt_10 = get_data() aqi_2_5, aqi_10 = conv_aqi(pmt_2_5, pmt_10) probeer: save_log() behalve: print ("[INFO] Fout bij het loggen van gegevens") time.sleep(60) Elke 60 seconden wordt het tijdstempel plus de gegevens "toegevoegd" aan dit bestand, zoals we hierboven kunnen zien.

Stap 8: Gegevens naar een cloudservice verzenden

Gegevens naar een cloudservice verzenden
Gegevens naar een cloudservice verzenden

Op dit moment hebben we geleerd hoe we gegevens van de sensor kunnen vastleggen en opslaan in een lokaal CSV-bestand. Nu is het tijd om te kijken hoe je die gegevens naar een IoT-platform kunt sturen. In deze zelfstudie gebruiken we ThingSpeak.com.

“ThingSpeak is een open-source Internet of Things (IoT)-toepassing om gegevens van dingen op te slaan en op te halen, met behulp van REST- en MQTT-API's. Met ThingSpeak kunnen toepassingen voor sensorregistratie, toepassingen voor het volgen van locaties en een sociaal netwerk van dingen met statusupdates worden gemaakt.”

Ten eerste moet u een account hebben op ThinkSpeak.com. Volg vervolgens de instructies om een kanaal te maken, waarbij u de kanaal-ID en schrijf-API-sleutel noteert.

Bij het maken van het kanaal moet u ook definiëren welke informatie naar elk van de 8 velden wordt geüpload, zoals hierboven weergegeven (in ons geval worden er slechts 4 gebruikt).

Stap 9: MQTT-protocol en ThingSpeak-verbinding

MQTT-protocol en ThingSpeak-verbinding
MQTT-protocol en ThingSpeak-verbinding

MQTT is een publiceer/abonneer-architectuur die voornamelijk is ontwikkeld om bandbreedte en stroombeperkte apparaten via draadloze netwerken te verbinden. Het is een eenvoudig en lichtgewicht protocol dat over TCP/IP-sockets of WebSockets loopt. MQTT via WebSockets kan worden beveiligd met SSL. Dankzij de architectuur voor publiceren/abonneren kunnen berichten naar de clientapparaten worden gepusht zonder dat het apparaat continu de server hoeft te pollen.

De MQTT-makelaar is het centrale communicatiepunt en is verantwoordelijk voor het verzenden van alle berichten tussen de afzenders en de rechtmatige ontvangers. Een client is elk apparaat dat verbinding maakt met de broker en onderwerpen kan publiceren of erop kunnen abonneren om toegang te krijgen tot de informatie. Een onderwerp bevat routeringsinformatie voor de makelaar. Elke klant die berichten wil verzenden, publiceert ze naar een bepaald onderwerp, en elke klant die berichten wil ontvangen, abonneert zich op een bepaald onderwerp. De makelaar levert alle berichten met het bijbehorende onderwerp aan de juiste klanten.

ThingSpeak™ heeft een MQTT-broker op de URL mqtt.thingspeak.com en poort 1883. De ThingSpeak-broker ondersteunt zowel MQTT-publicatie als MQTT-abonnee.

In ons geval zullen we de MQTT Publish gebruiken.

Stap 10: MQTT publiceren

MQTT publiceren
MQTT publiceren

Laten we om te beginnen de Eclipse Paho MQTT Python-clientbibliotheek installeren, die versie 3.1 en 3.1.1 van het MQTT-protocol implementeert

sudo pip install paho-mqtt

Laten we vervolgens de paho-bibliotheek importeren:

importeer paho.mqtt.publish als publiceren

en start het Thingspeak-kanaal en het MQTT-protocol. Deze verbindingsmethode is de eenvoudigste en vereist de minste systeembronnen:

channelID = "UW KANAAL-ID"

apiKey = "UW SCHRIJFSLEUTEL" topic = "channels/" + channelID + "/publish/" + apiKey mqttHost = "mqtt.thingspeak.com" Nu moeten we onze "payload" definiëren

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

En dat is het! we zijn klaar om gegevens naar de cloud te sturen! Laten we de vorige lusfunctie herschrijven om ook het ThingSpeak-gedeelte ervan op te nemen.

# Elke minuut alle gegevens naar ThingSpeak verzenden

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 (pmt_10)+ "&field4=" + str(aqi_10) probeer: publish.single(topic, payload=tPayload, hostname=mqttHost, port=tPort, tls=tTLS, transport=tTransport) save_log() behalve: print ("[INFO] Fout bij het verzenden van gegevens") time.sleep(60) Als alles in orde is, moet je de gegevens ook op je kanaal zien verschijnen op thingspeak.com, zoals hierboven weergegeven.

Stap 11: het definitieve script

Het is belangrijk op te merken dat Jupyter Notebook een zeer goede tool is voor ontwikkeling en rapportage, maar niet om een code te maken om in productie te nemen. Wat u nu moet doen, is het relevante deel van de code nemen en een.py-script maken en dit op uw terminal uitvoeren.

Bijvoorbeeld "ts_air_quality_logger.py", dat u moet uitvoeren met de opdracht:

python 3 ts_air_quality_logger.py

Dit script evenals de Jupyter Notebook en de sds011.py zijn te vinden in mijn repository op RPi_Air_Quality_Sensor.

Merk op dat dit script alleen geschikt is om te testen. Het beste is om geen vertragingen in de laatste lus te gebruiken (waardoor de code in "pauze" wordt gezet), maar gebruik in plaats daarvan timers. Of voor een echte toepassing is het het beste om de lus niet te gebruiken, waarbij Linux is geprogrammeerd om het script regelmatig uit te voeren met crontab.

Stap 12: De monitor mee naar buiten nemen

De monitor mee naar buiten nemen
De monitor mee naar buiten nemen
De monitor mee naar buiten nemen
De monitor mee naar buiten nemen
De monitor mee naar buiten nemen
De monitor mee naar buiten nemen
De monitor mee naar buiten nemen
De monitor mee naar buiten nemen

Toen mijn Raspberry Pi Air Quality-monitor werkte, monteerde ik de RPi in een plastic doos, hield de sensor buiten en plaatste hem buiten mijn huis.

Er zijn twee ervaringen opgedaan.

Stap 13: Verbranding benzinemotor

Benzine Motor Verbranding
Benzine Motor Verbranding
Benzine Motor Verbranding
Benzine Motor Verbranding

De sensor werd op ongeveer 1 meter van het gaslandschap van de Lambretta geplaatst en de motor werd ingeschakeld. De motor draaide een paar minuten en viel uit. Uit het bovenstaande logbestand het resultaat dat ik kreeg. Interessant om te bevestigen dat PM2.5 de gevaarlijkste deeltjes waren die uit de motor voortkwamen.

Stap 14: houtverbranding

Hout branden
Hout branden
Hout branden
Hout branden

Als we naar het logbestand kijken, realiseren we ons dat de sensorgegevens tijdelijk "buiten bereik" waren en niet goed werden vastgelegd door de AQI-conversiebibliotheek, dus ik verander de vorige code om ermee om te gaan:

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)) return aqi_2_5, aqi_10 behalve: return 600, 600 Deze situatie kan zich in het veld voordoen, en dat is oké. Onthoud dat u in feite voortschrijdend gemiddelde moet gebruiken om de AQI echt te krijgen (tenminste per uur, maar meestal dagelijks).

Stap 15: Conclusie

Conclusie
Conclusie

Zoals altijd hoop ik dat dit project anderen kan helpen hun weg te vinden in de spannende wereld van elektronica en datawetenschap!

Ga voor meer informatie en de definitieve code naar mijn GitHub-depot: RPi_Air_Quality_Sensor.

Saludos uit het zuiden van de wereld!

Tot ziens bij mijn volgende instructable!

Bedankt, Marcelo

Aanbevolen: