Luchtkwaliteit meten met OpenSensors: Een Arduino & Python Handleiding
Leer hoe u de luchtkwaliteit binnen kunt monitoren met een Arduino, een Shinyei PPD‑42 deeltjesensor en de OpenSensors MQTT-broker. Deze stapsgewijze tutorial laat zien hoe u realtime deeltjesdata verzamelt en veilig publiceert naar een publieke datastroom.
Inleiding
Voor dit project wilden we een eenvoudige maar krachtige manier om de luchtkwaliteit op ons werkplek te beoordelen. We kozen de Shinyei PPD‑42 sensor vanwege de betaalbaarheid en gebruiksgemak, en combineerden deze met een Arduino UNO en een Linux-gebaseerde host (bijv. Raspberry Pi). De sensor meet de concentratie van kleine deeltjes die gezondheidsrisico's kunnen opleveren, en we publiceren die data continu naar de OpenSensors messaging broker.
Wat u nodig hebt:
- Shinyei PPD‑42 sensor
- Arduino UNO
- Linux-computer of Raspberry Pi
Deze handleiding volgt het DustDuino project, dat de PPD‑42 al integreert met Arduino en Wi‑Fi. We hebben het wiring-diagram en de code aangepast voor onze OpenSensors setup.
Sluit eerst de sensor aan op de Arduino zoals beschreven in stap 2 van de DustDuino-instructies. Download vervolgens de sketch DustDuinoSerial.ino van de GitHub-repository, open deze in de Arduino IDE, en upload naar de UNO.
Controleer of de sensor data verzendt door de Seriële Monitor van de Arduino IDE te openen.
Vervolgens bruggen we de seriële output van de Arduino naar de OpenSensors broker met een lichtgewicht Python-script dat de Mosquitto-clientbibliotheek gebruikt.
Hello Python World
Om te bevestigen dat Python gereed is op uw machine, maak een bestand genaamd hi.py met de volgende inhoud:
print("Hello World")
Voer het uit vanaf een terminal:
python hi.py
U zou Hello World in de console moeten zien.
Hello OpenSensors
Installeer de Mosquitto Python-client als u dat nog niet heeft gedaan:
sudo apt-get install python-pip sudo pip install paho-mqtt
Test publiceren naar OpenSensors met dit minimale script (vervang Louis en het wachtwoord door uw eigen credentials):
import paho.mqtt.client as mqtt mqttc = mqtt.Client(client_id="939") mqttc.username_pw_set("Louis", password="AbcDEFgH") mqttc.connect("mqtt.opensensors.io") mqttc.publish("/users/Louis/test2", payload="Hello Opensensors!", qos=0, retain=False) mqttc.disconnect()
Bij succesvolle uitvoering verschijnt het bericht in de OpenSensors-console.
Om verbinding te maken met de seriële poort van de Arduino, identificeer het apparaat met:
dmesg | grep tty
Typische output ziet er als volgt uit:
[ 0.000000] console [tty0] enabled [ 3522.192687] cdc_acm 7-1:1.0: ttyACM0: USB ACM device
Hier is /dev/ttyACM0 de te gebruiken seriële poort.
Lees seriële data met Python:
import serial ser = serial.Serial('/dev/ttyACM0') while True: print(ser.readline())
Sensoroutput integreren met MQTT
Combineer de seriële lezer en MQTT-publisher in één script. Het onderstaande voorbeeld publiceert elke regel sensordata naar het topic /users/Louis/ODI/airquality elke seconde:
import serial import paho.mqtt.client as mqtt import time mqttc = mqtt.Client(client_id="939") mqttc.username_pw_set("Louis", password="AbcDEFgH") mqttc.connect("mqtt.opensensors.io") ser = serial.Serial('/dev/ttyACM0') # aanpassen als uw poort anders is while True: message = ser.readline() print(message) mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False) time.sleep(1)
Voor eenvoudigere verwerking downstream, overweeg om de Arduino-output te formatteren als JSON voordat u publiceert.
Ontdek de resulterende datastream op OpenSensors door het topic dat u aanmaakte hier te bezoeken.
Complete Codevoorbeeld
import serial import paho.mqtt.client as mqtt import time mqttc = mqtt.Client(client_id="939") mqttc.username_pw_set("Louis", password="AbcDEFgH") mqttc.connect("opensensors.io") ser = serial.Serial('/dev/ttyACM0') # open first serial port while True: message= ser.readline() print(message) mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False) time.sleep(1);
Bron: How to Measure Air Quality on OpenSensors
Productieproces
- Helium-gebaseerde Zon-Powered Luchtsensor: Ontwerp & Implementatiegids
- Bouw een Universele IR-remote met Arduino: Stap-voor-stap Handleiding
- Thermistor Gebruik Gemaakt Eenvoudig: Stap-voor-Stap Arduino Handleiding
- Luchtdrukcompressorefficiëntie op schepen verhogen: bewezen strategieën
- Soldermaskdikte meten: een praktische gids
- Hoe Luchtdrogers Werken: Gecomprimeerde Lucht Schoon & Efficiënt Houden
- Uitgebreide Gids voor Het Verwijderen van Verontreinigingen uit Gecomprimeerde Lucht
- Silicone polsbandjes: betaalbare passieve monsters voor accurate luchtkwaliteitsmonitoring
- Geavanceerde Koolstofgebaseerde NO₂-sensor Verbetert Binnenluchtkwaliteitsmonitoring
- De Verborgen Gezondheidsrisico's van Slecht Binnenklimaat
- IoT Gebruiken voor Geavanceerde Binnenluchtkwaliteit Monitoring Systemen