Cara Mengukur Kualitas Udara di OpenSensors
Cara mengukur kualitas udara Open Data Institute menggunakan Arduino dan Shinyei PPD-42.
Pengantar
Jadi, sambil memikirkan demonstrasi yang bagus untuk platform Opensensors, kami berpikir mengapa tidak melihat betapa tercemarnya tempat kerja kami dengan memasang sensor untuk mempublikasikan aliran data berkelanjutan ke broker pesan Opensensors. Untuk ini kami membutuhkan sensor yang mudah diambil dan digunakan, kami memilih Shinyei PPD-42. Kami akan menggunakan ini untuk mengukur jumlah partikel kecil yang berpotensi berbahaya di udara, dengan arduino yang terhubung ke PC linux (atau Raspberry PI).
Untuk menjalankan proyek mini ini, Anda memerlukan:
- Shinyei PPD-42
- Arduino UNO
- Komputer dengan Linux terinstal (Anda dapat menggunakan Raspberry PI)
Kami mendasarkan run-through ini pada proyek bernama DustDuino yang menggunakan sensor Shinyei PPD-42 dengan modul arduino dan wifi. Lihat disini. Kami menggunakan proyek ini sebagai referensi kami saat menyiapkan sensor dan menulis kode Arduino.
Pertama kita ikuti langkah 2 dari instruksi untuk menghubungkan sensor ke Arduino. Kemudian kita mendownload kode dari repositori github project dengan membuka link untuk kode DustDuinoSerial.ino memilih mentah dan menyimpan halaman tersebut.
Membuka ini di IDE arduino, sekarang kami mengunggahnya ke Arduino UNO kami dengan menghubungkan Arduino dan menekan unggah.
Anda dapat memeriksa data yang masuk dengan menggunakan monitor serial Arduino IDE.
Kami kemudian perlu mencari cara untuk mengirim pesan serial yang masuk ke broker pesan Opensensors.
Untuk melakukan ini, kami memilih untuk menulis skrip Python. Kami menggunakan modul Mosquitto Python. Saya akan berasumsi bahwa Anda sudah menginstal Python, karena sudah dikemas sebelumnya di sebagian besar versi Linux. Jika Anda belum memilikinya, Anda harus menginstal pip untuk mengunduh dan mengatur modul python Mosquitto. Di Ubuntu atau Debian ini dapat dilakukan dengan perintah berikut:
sudo apt-get install python-pip
Setelah pip terinstal, kita dapat menginstal modul klien python Mosquitto menggunakan perintah berikut:
sudo pip install paho-mqtt
Anda dapat mengetahui cara menggunakan modul python dengan membaca situs web yang telah kami tautkan di atas. Menulis dan mengkompilasi python sangat mudah.
Halo Python Dunia
Buka editor teks biasa favorit Anda. Masukkan baris:
cetak “Halo Dunia”
Simpan sebagai hi.py. Kemudian di terminal, navigasikan ke dokumen Anda dan masukkan perintah:
python hi.py
Anda akan melihat respons "Halo Dunia". Semudah itu.
Halo Opensensors
Untuk menggunakan modul python klien Mosquitto kita dapat menjalankan kode berikut untuk menguji penerbitan. Anda harus mengganti nama pengguna saya “Louis” (menjaga tanda ucapan), dan kata sandi dengan detail Anda:
Pustaka nyamuk yang kita perlukan untuk berkomunikasi dengan perantara pesan Opensensors:
impor paho.mqtt.client sebagai mqtt
Inisialisasi opsi klien dengan ID klien perangkat kami:
mqttc =mqtt.Client(client_id="939")
Tetapkan nama pengguna dan kata sandi kami:
mqttc.username_pw_set("Louis", password="AbcDEFgH")
Hubungkan ke server Opensensors:
mqttc.connect("mqtt.opensensors.io")
Publikasikan pesan untuk menyapa:
mqttc.publish("/users/Louis/test2", payload="Halo Opensensors!", qos=0, retain=False)
Putuskan sambungan:
mqttc.disconnect();
Berhasil, Anda sekarang harus memiliki sensor yang berfungsi
Selanjutnya kita perlu membuat serialnya berfungsi. Untuk mengetahui seperti apa port serial arduino Anda, kami menjalankan perintah berikut ke terminal:
dmesg | grep tty
Outputnya kira-kira seperti ini…
[ 0,000000] console [tty0] diaktifkan[ 3522.192687] cdc_acm 7-1:1.0:ttyACM0:Perangkat USB ACM
Baris kedua memiliki rincian Ardiuno kami. ttyACM0 adalah nama perangkat dan ‘/dev/ttyACM0’ adalah port serial.
Untuk membuka dan membaca port serial Python membuatnya sangat mudah. Anda dapat menjalankan tes kecil untuk memeriksa apakah itu berfungsi dengan menggunakan kode berikut:
Untuk komunikasi dengan Arduino kita perlu menggunakan perpustakaan serial:
import serialser =serial.Serial('/dev/ttyACM0') # buka port serial pertama while True:print ser.readline() # mencetak setiap baris yang dibaca dari serial
Akhirnya kita hanya perlu meretas kedua bagian tersebut. Berikut adalah kode yang kami gunakan:
import serialimport paho.mqtt.client sebagai mqttimport timemqttc =mqtt.Client(client_id="939")mqttc.username_pw_set("Louis", password="AbcDEFgH") mqttc.connect("mqtt.opensensors.io")ser =serial.Serial('/dev/ttyACM0') # buka port serial pertama while True:message=ser.readline()print messagemqttc.publish("/users/Louis/ ODI/kualitas udara", payload=pesan, qos=0, retain=False)time.sleep(1);
Menjalankan ini, kami memublikasikan data sensor kami ke Opensensors!
KAMI merekomendasikan untuk menyesuaikan kode Arduino untuk menampilkan data dalam format JSON. Ini akan mempermudah membaca dan menambahkan fungsionalitas.
Anda dapat melihat topik yang menghasilkan Data Terbuka yang kami buat di sini!
Kode
import serialimport paho.mqtt.client sebagai mqttimport timemqttc =mqtt.Client(client_id="939")mqttc.username_pw_set("Louis", password="AbcDEFgH")mqttc.connect ("opensensors.io")ser =serial.Serial('/dev/ttyACM0') # buka port serial pertama while True:message=ser.readline()print messagemqttc.publish("/users/Louis/ODI/airquality", payload=pesan, qos=0, retain=False)time.sleep(1);
Sumber:Cara Mengukur Kualitas Udara di OpenSensors