Mengukur Kualitas Udara dengan OpenSensors: Panduan Arduino & Python
Pelajari cara memantau kualitas udara di dalam ruangan menggunakan Arduino, sensor partikel Shinyei PPD-42, dan broker MQTT OpenSensors. Tutorial langkah demi langkah ini menunjukkan cara mengumpulkan data partikel secara real-time dan memublikasikannya dengan aman ke aliran data publik.
Pendahuluan
Untuk proyek ini, kami ingin cara yang sederhana namun canggih untuk menilai kualitas udara di tempat kerja. Kami memilih sensor Shinyei PPD-42 karena harganya terjangkau dan mudah digunakan, lalu memadukannya dengan Arduino UNO serta host berbasis Linux (misalnya Raspberry Pi). Sensor mengirimkan konsentrasi partikel kecil yang dapat menimbulkan risiko kesehatan, dan kami mempublikasikan data tersebut secara terus-menerus ke broker pesan OpenSensors.
Yang Anda butuhkan:
Sensor Shinyei PPD-42
Arduino UNO
Komputer Linux atau Raspberry Pi
Panduan ini mengikuti proyek DustDuino, yang sudah mengintegrasikan PPD-42 dengan Arduino dan Wi-Fi. Kami menyesuaikan diagram kabel dan kodenya agar bekerja dengan pengaturan OpenSensors kami.
Pertama, hubungkan sensor ke Arduino seperti yang dijelaskan pada langkah 2 petunjuk DustDuino. Kemudian unduh sketsa DustDuinoSerial.ino dari repositori GitHub, buka di Arduino IDE, dan unggah ke UNO.
Verifikasi apakah sensor mengirim data dengan membuka Serial Monitor di Arduino IDE.
Selanjutnya, kami akan menghubungkan keluaran serial Arduino ke broker OpenSensors menggunakan skrip Python ringan yang memanfaatkan pustaka klien Mosquitto.
Hello Python World
Untuk memastikan Python siap di mesin Anda, buat file bernama hi.py dengan isi berikut:
print("Hello World")
Jalankan dari terminal:
python hi.py
Anda seharusnya melihat Hello World dicetak ke konsol.
Hello OpenSensors
Instal klien Python Mosquitto jika belum melakukannya:
Di sini /dev/ttyACM0 adalah port serial yang akan digunakan.
Baca data serial dengan Python:
import serial ser = serial.Serial('/dev/ttyACM0') while True: print(ser.readline())
Mengintegrasikan Keluaran Sensor dengan MQTT
Gabungkan pembaca serial dan penerbit MQTT dalam satu skrip. Contoh di bawah ini mempublikasikan setiap baris data sensor ke topik /users/Louis/ODI/airquality setiap detik:
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') # adjust if your port differs while True: message = ser.readline() print(message) mqttc.publish("/users/Louis/ODI/airquality", payload=message, qos=0, retain=False) time.sleep(1)
Untuk pemrosesan downstream yang lebih mudah, pertimbangkan untuk memformat keluaran Arduino sebagai JSON sebelum mempublikasikan.
Jelajahi aliran data yang dihasilkan di OpenSensors dengan mengunjungi topik yang Anda buat di sini.
Contoh Kode Lengkap
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);