Isi kandungan:

Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4: 15 Langkah (dengan Gambar)
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4: 15 Langkah (dengan Gambar)

Video: Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4: 15 Langkah (dengan Gambar)

Video: Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4: 15 Langkah (dengan Gambar)
Video: “Duduk Macam Lelaki” – Netizen Terkejut Lihat Rupa Terkini Anak Perempuan Sharifah Shahira 2024, November
Anonim
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4
Monitor Kualiti Udara Kos rendah IoT Berdasarkan RaspberryPi 4

Santiago, Chile semasa kecemasan alam sekitar musim sejuk mempunyai hak istimewa untuk tinggal di salah satu negara paling indah di dunia, tetapi sayangnya, itu bukan semua mawar. Chile pada musim sejuk banyak mengalami pencemaran udara, terutamanya disebabkan oleh bahan partikulat seperti debu dan kabut asap.

Kerana cuaca sejuk, di selatan, pencemaran udara terutama disebabkan oleh calefactors berasaskan kayu dan di Santiago (ibu kota utama di tengah negara ini) bercampur dari industri, kereta, dan keadaan geografinya yang unik di antara 2 rantai gunung besar.

Pada masa ini, pencemaran udara adalah masalah besar di seluruh dunia dan dalam artikel ini kita akan meneroka bagaimana untuk membangunkan monitor kualiti udara buatan sendiri yang murah, berdasarkan Raspberry Pi. Sekiranya anda berminat untuk mengetahui lebih lanjut mengenai kualiti udara, sila kunjungi Projek "World Air Quality Index".

Bekalan

  • Raspberry Pi 4
  • 1SDS011 - Sensor pengesanan kualiti udara laser ketepatan tinggi pm2.5
  • Kotak plastik

Langkah 1: Perkara Partikulat (PM): Apa Itu? Bagaimana ia masuk ke udara?

Perkara Partikulat (PM): Apa Itu? Bagaimana ia masuk ke udara?
Perkara Partikulat (PM): Apa Itu? Bagaimana ia masuk ke udara?

Oleh itu, untuk memahami pencemaran atau pencemaran udara, kita mesti mengkaji zarah-zarah yang berkaitan dengan itu, yang juga dikenali sebagai zarah. Melihat grafik pada bahagian sebelumnya kita dapat melihat bahawa mereka menyebutkan PM2.5 dan PM10. Mari berikan gambaran ringkas mengenai perkara itu.

PM bermaksud bahan partikulat (juga disebut pencemaran zarah): istilah untuk campuran zarah pepejal dan titisan cecair yang terdapat di udara. Sebilangan zarah, seperti habuk, kotoran, jelaga, atau asap, cukup besar atau gelap sehingga dapat dilihat dengan mata kasar. Yang lain sangat kecil sehingga hanya dapat dikesan menggunakan mikroskop elektron. Zarah terdapat dalam pelbagai saiz. Zarah dengan diameter kurang dari atau sama dengan 10 mikrometer sangat kecil sehingga dapat masuk ke paru-paru, berpotensi menyebabkan masalah kesihatan yang serius. Sepuluh mikrometer kurang dari lebar rambut manusia tunggal.

Pencemaran zarah merangkumi zarah debu kasar (PM10): zarah yang dapat dihirup, dengan diameter yang biasanya 10 mikrometer dan lebih kecil. Sumber termasuk operasi penghancuran atau pengisaran dan habuk yang dikacau oleh kenderaan di jalan raya. Zarah halus (PM2.5): zarah yang dapat dihirup halus, dengan diameter yang umumnya 2.5 mikrometer dan lebih kecil. Zarah halus dihasilkan dari semua jenis pembakaran, termasuk kenderaan bermotor, loji janakuasa, pembakaran kayu kediaman, kebakaran hutan, pembakaran pertanian, dan beberapa proses perindustrian yang dapat anda temukan lebih banyak mengenai bahan partikulat di laman EPA: Agensi Perlindungan Alam Sekitar Amerika Syarikat

Langkah 2: Mengapa Penting untuk Mengenai Masalah-masalah Partikulat?

Mengapa Penting untuk Mengenai Masalah Partikulat Itu?
Mengapa Penting untuk Mengenai Masalah Partikulat Itu?

Seperti yang dijelaskan oleh GERARDO ALVARADO Z. dalam karyanya di Universiti Chile, kajian mengenai episod pencemaran udara tinggi di Lembah Meuse (Belgia) pada tahun 1930, Donora (Pennsylvania) pada tahun 1948 dan London pada tahun 1952 telah menjadi sumber pertama yang didokumentasikan yang berkaitan dengan kematian. dengan pencemaran zarah (Préndez, 1993). Kemajuan dalam penyelidikan kesan pencemaran udara terhadap kesihatan manusia telah menentukan bahawa risiko kesihatan disebabkan oleh zarah-zarah yang dapat dihirup, bergantung pada penembusan dan pemendapannya di bahagian yang berbeza dari sistem pernafasan, dan tindak balas Biologi terhadap bahan-bahan yang tersimpan.

Zarah-zarah paling tebal, kira-kira 5 μm, disaring oleh tindakan sendi silia saluran hidung dan mukosa yang menutupi rongga hidung dan trakea. Zarah-zarah dengan diameter antara 0,5 dan 5 μm dapat disimpan di bronkus dan bahkan di alveoli pulmonari, bagaimanapun, ia dihilangkan oleh silia bronkus dan bronkiol setelah beberapa jam. Zarah-zarah yang lebih kecil dari 0,5 μm dapat menembus jauh sehingga tersimpan di alveoli pulmonari, tersisa dari beberapa minggu hingga bertahun-tahun, kerana tidak ada mekanisme pengangkutan mukosiliari yang memudahkan penghapusan. Gambar berikut menunjukkan penembusan zarah dalam sistem pernafasan bergantung pada ukurannya.

Jadi, untuk melihat kedua-dua jenis zarah (PM2.5 dan PM10) sangat penting dan berita baiknya ialah kedua-duanya dapat dibaca oleh sensor yang ringkas dan tidak mahal, SDS011.

Langkah 3: Sensor Zarah - SDS011

Sensor Zarah - SDS011
Sensor Zarah - SDS011
Sensor Zarah - SDS011
Sensor Zarah - SDS011

Pemantauan Kualiti Udara adalah sains terkenal dan mapan yang bermula pada tahun 80-an. Pada masa itu, teknologinya agak terhad, dan penyelesaian yang digunakan untuk mengukur kompleks pencemaran udara, membebankan dan sangat mahal.

Nasib baik, pada masa kini, dengan teknologi terkini dan moden, penyelesaian yang digunakan untuk pemantauan Kualiti Udara menjadi tidak hanya lebih tepat tetapi juga lebih cepat dalam pengukuran. Peranti menjadi lebih kecil, dan harganya jauh lebih murah daripada sebelumnya.

Dalam artikel ini kita akan memfokus pada sensor zarah, yang dapat mengesan jumlah debu di udara. Walaupun generasi pertama hanya dapat mengesan jumlah kelegapan, sensor terbaru seperti SDS011 dari INOVAFIT, putaran dari Universiti Jinan (di Shandong), kini dapat mengesan PM2.5 dan PM10.

Dengan ukurannya, SDS011 mungkin merupakan salah satu sensor terbaik dari segi ketepatan dan harganya (kurang dari USD40.00).

  • Nilai yang diukur: PM2.5, PM10
  • Julat: 0–999.9 μg / m³
  • Voltan bekalan: 5V (4.7–5.3V)
  • Penggunaan kuasa (kerja): 70mA ± 10mA
  • Penggunaan kuasa (laser mod tidur & kipas): <4mA
  • Suhu penyimpanan: -20 hingga + 60C
  • Suhu kerja: -10 hingga + 50C
  • Kelembapan (penyimpanan): Maks. 90%
  • Kelembapan (kerja): Maks. 70% (pemeluwapan wap air memalsukan bacaan)
  • Ketepatan: 70% untuk 0.3μm dan 98% untuk 0.5μm
  • Saiz: 71x70x23 mm
  • Persijilan: CE, FCC, RoHS

SD011 menggunakan PCB sebagai satu sisi selongsong, yang memungkinkan untuk mengurangkan kosnya. Diod reseptor dipasang di sisi PCB (ini wajib kerana kebisingan antara dioda dan LNA harus dielakkan). Laser pemancar dipasang pada kotak plastik dan disambungkan ke PCB melalui wayar fleksibel.

Ringkasnya, Nova Fitness SDS011 adalah sensor habuk laser profesional. Kipas yang dipasang pada sensor menghisap udara secara automatik. Sensor menggunakan prinsip penyebaran cahaya laser * untuk mengukur nilai zarah debu yang terampai di udara. Sensor memberikan bacaan ketepatan tinggi dan boleh dipercayai nilai PM2.5 dan PM10. Sebarang perubahan dalam persekitaran dapat dilihat dengan cepat masa tindak balas yang singkat di bawah 10 saat. Sensor dalam mod standard melaporkan pembacaan dengan selang 1 saat.

* Prinsip Penyebaran Laser: Penyerakan cahaya dapat disebabkan ketika zarah melalui kawasan pengesanan. Cahaya yang tersebar diubah menjadi isyarat elektrik dan isyarat ini akan diperkuat dan diproses. Bilangan dan diameter zarah dapat diperoleh dengan analisis kerana bentuk gelombang isyarat mempunyai hubungan tertentu dengan diameter zarah.

Langkah 4: Tetapi Bagaimana SDS011 Dapat Menangkap Partikel-partikel tersebut?

Tetapi Bagaimana SDS011 Dapat Menangkap Zarah Itu?
Tetapi Bagaimana SDS011 Dapat Menangkap Zarah Itu?
Tetapi Bagaimana SDS011 Dapat Menangkap Zarah Itu?
Tetapi Bagaimana SDS011 Dapat Menangkap Zarah Itu?

Seperti yang dikomentari sebelumnya, prinsip yang digunakan oleh SDS011 adalah penyebaran cahaya atau lebih baik, Penyebaran Cahaya Dinamis (DLS), yang merupakan teknik dalam fizik yang dapat digunakan untuk menentukan profil pengagihan ukuran partikel kecil dalam ampaian atau polimer dalam larutan. Dalam skop DLS, fluktuasi temporal biasanya dianalisis dengan intensitas atau fungsi korelasi auto foton (juga dikenal sebagai spektroskopi korelasi foton atau penyebaran cahaya kuasi-elastik). Dalam analisis domain masa, fungsi autokorelasi (ACF) biasanya merosot bermula dari masa penundaan sifar, dan dinamika yang lebih cepat kerana partikel yang lebih kecil menyebabkan penyahtinjaan jejak intensiti tersebar lebih cepat. Telah ditunjukkan bahawa intensiti ACF adalah transformasi Fourier spektrum kuasa, dan oleh itu pengukuran DLS dapat dilakukan dengan baik di domain spektrum.

Di atas penyebaran cahaya dinamik hipotesis dua sampel: Zarah yang lebih besar (seperti PM10) di bahagian atas dan zarah yang lebih kecil (seperti PM2.5) di bahagian bawah. Dan melihat ke dalam sensor kita, kita dapat melihat bagaimana prinsip penyebaran cahaya dilaksanakan.

Isyarat elektrik yang ditangkap pada dioda menuju Penguat Kebisingan Rendah dan dari itu akan ditukar menjadi isyarat digital melalui ADC dan ke luar melalui UART.

Untuk mengetahui lebih lanjut mengenai SDS011 mengenai pengalaman saintifik yang sebenar, sila lihat karya Konstantinos et al, Pengembangan dan Pengujian On-Field Sistem Mudah Alih Kos Rendah untuk Pemantauan PM2.5 2018.

Langkah 5: Waktu Tayangan

Masa pertunjukan!
Masa pertunjukan!
Masa pertunjukan!
Masa pertunjukan!

Mari kita berehat sebentar mengenai semua teori ini dan fokus pada bagaimana mengukur perkara partikulat menggunakan Raspberry Pi dan sensor SDS011

Sambungan HW sebenarnya sangat mudah. Sensor dijual dengan penyesuai USB untuk menghubungkan data output dari 7 pin UART dengan salah satu penyambung USB standard RPi.

Pinout SDS011:

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

Untuk tutorial ini, saya menggunakan untuk pertama kalinya, Raspberry-Pi 4. yang baru. Tetapi sudah tentu, model sebelumnya juga akan berfungsi dengan baik.

Sebaik sahaja anda menyambungkan sensor di salah satu port USB RPi, secara automatik anda akan mula mendengar suara kipasnya. Bunyi itu agak menjengkelkan, jadi mungkin anda harus mencabutnya dan tunggu sehingga anda sudah siap dengan SW.

Komunikasi antara sensor dan RPi akan melalui protokol bersiri. Perincian mengenai protokol ini boleh didapati di sini: Protokol Kawalan Sensor Debu Laser V1.3. Tetapi untuk projek ini, yang terbaik adalah menggunakan antara muka python untuk mempermudah kod yang akan dibangunkan. Anda boleh membuat antara muka anda sendiri atau menggunakan beberapa yang terdapat di internet, seperti Frank Heuer atau Ivan Kalchev. Kami akan menggunakan yang terakhir, yang sangat mudah dan berfungsi dengan baik (anda boleh memuat turun skrip sds011.py dari GitHub atau milik saya).

Fail sds011.py mesti berada di direktori yang sama di mana anda membuat skrip anda.

Semasa fasa pengembangan, saya akan menggunakan Jupyter Notebook, tetapi anda boleh menggunakan IDE yang anda suka (Thonny atau Geany, misalnya, yang merupakan sebahagian daripada paket Raspberry Pi Debian keduanya sangat baik).

Mula mengimport sds011, dan buat contoh sensor anda. SDS011 menyediakan kaedah untuk membaca dari sensor menggunakan UART.

dari sds011 import *

sensor = SDS011 ("/ dev / ttyUSB0")

Anda boleh menghidupkan atau mematikan sensor anda dengan perintah tidur:

pmt_2_5, pmt_10 = sensor.query ()

Tunggu sekurang-kurangnya 10 saat untuk penstabilan sebelum pengukuran dan sekurang-kurangnya 2 saat untuk memulakan yang baru (lihat kod di atas).

Dan ini yang perlu anda ketahui dari segi SW untuk menggunakan sensor. Tetapi mari kita lebih mendalam mengenai Kawalan Kualiti Udara! Pada awal artikel ini, jika anda telah menjelajahi laman web yang memberikan maklumat tentang seberapa baik atau buruk udara, anda harus menyedari bahawa warna dikaitkan dengan nilai-nilai tersebut. Setiap warna adalah Indeks. Yang paling terkenal adalah AQI (Indeks Kualiti Udara), yang digunakan di AS dan beberapa negara lain.

Langkah 6: Indeks Kualiti Udara - AQI

Indeks Kualiti Udara - AQI
Indeks Kualiti Udara - AQI
Indeks Kualiti Udara - AQI
Indeks Kualiti Udara - AQI
Indeks Kualiti Udara - AQI
Indeks Kualiti Udara - AQI

AQI adalah indeks untuk melaporkan kualiti udara harian. Ini memberitahu anda betapa bersih atau tercemarnya udara anda, dan apa kesan kesihatan yang berkaitan mungkin menjadi perhatian anda. AQI memberi tumpuan kepada kesan kesihatan yang mungkin anda alami dalam beberapa jam atau hari setelah menghirup udara tercemar.

EPA (Agensi Perlindungan Alam Sekitar Amerika Syarikat), misalnya, menghitung AQI tidak hanya untuk pencemaran zarah (PM2.5 dan PM10) tetapi juga untuk pencemaran udara utama lain yang diatur oleh Clean Air Act: ozon permukaan tanah, karbon monoksida, sulfur dioksida, dan nitrogen dioksida. Untuk setiap bahan pencemar ini, EPA telah menetapkan standard kualiti udara nasional untuk melindungi kesihatan awam. Lihat gambar di atas dengan nilai, warna dan mesej kesihatan AQI yang berkaitan.

Seperti yang dinyatakan sebelum ini, nilai dan warna AQI berkaitan dengan masing-masing agen pencemar, tetapi bagaimana mengaitkan nilai yang dihasilkan oleh sensor dengan mereka? Jadual tambahan menghubungkan semuanya seperti yang ditunjukkan di atas.

Tetapi tentu saja, tidak masuk akal untuk menggunakan jadual seperti itu. Pada akhirnya, itu adalah algoritma matematik sederhana yang membuat pengiraan. Untuk itu, kami akan mengimport perpustakaan untuk menukar antara nilai AQI dan kepekatan pencemar (µg / m³): python-aqi.

Pasang perpustakaan menggunakan PIP dan buat ujian (lihat kod di atas)

pip memasang python-aqi

Dan bagaimana dengan Chile?

Di Chile indeks serupa digunakan, ICAP: Air Quality Index untuk Breathable Particles. Keputusan Tertinggi 59 dari 16 Maret 1998, dari Sekretaris Jenderal Kementerian Presiden Presiden, menetapkan dalam artikelnya 1, huruf g) bahawa tingkat yang menentukan ICA untuk Bahan Partikulat Bernafas, ICAP.

Nilai akan bervariasi secara linear antara bahagian, nilai 500 akan sesuai dengan nilai had di mana akan ada risiko bagi penduduk ketika terkena kepekatan ini. Menurut nilai ICAP, kategori telah ditetapkan yang memenuhi syarat tahap konsentrasi MP10 yang terdedah kepada orang.

Langkah 7: Mencatat Data Secara Lokal

Mencatat Data secara tempatan
Mencatat Data secara tempatan
Mencatat Data secara tempatan
Mencatat Data secara tempatan
Mencatat Data secara tempatan
Mencatat Data secara tempatan

Pada saat ini, kami memiliki semua alat untuk menangkap data dari sensor dan juga mengubahnya untuk "nilai yang dapat dibaca", iaitu indeks AQI.

Mari buat fungsi untuk menangkap nilai-nilai tersebut. Kami akan menangkap 3 nilai secara berurutan dengan mengambil rata-rata di antaranya:

def get_data (n = 3):

sensor.sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) for i in range (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] time.sleep (2) pmt_2_5 = bulat (pmt_2_5 / n, 1) pmt_10 = bulat (pmt_10 / n, 1) sensor. waktu tidur (tidur = Benar). tidur (2) kembali pmt_2_5, pmt_10 Di atas anda dapat melihat keputusan ujian. Mari kita lakukan fungsi untuk menukar nilai numerik PM dalam indeks AQI

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)) kembali aqi_2_5, aqi_10 di atas hasil ujian dengan kedua fungsi. Tetapi apa yang perlu dilakukan dengan mereka? Jawapan yang paling mudah adalah membuat fungsi untuk menyimpan data yang diambil, menyimpannya pada fail tempatan

def save_log ():

dengan terbuka ("PATH ANDA DI SINI / air_quality.csv", "a") sebagai log: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n". format (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Dengan satu gelung, anda boleh log data secara berkala dalam fail tempatan anda, misalnya, setiap minit

sementara (Betul):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) cuba: save_log () kecuali: print ("[INFO] Gagal dalam log data") time.sleep (60) Setiap 60 saat, cap waktu ditambah data akan "ditambahkan" ke file ini, seperti yang dapat kita lihat di atas.

Langkah 8: Menghantar Data ke Perkhidmatan Cloud

Menghantar Data ke Perkhidmatan Cloud
Menghantar Data ke Perkhidmatan Cloud

Pada ketika ini, kami telah belajar bagaimana menangkap data dari sensor, menyimpannya pada fail CSV tempatan. Sekarang, inilah masanya untuk melihat bagaimana menghantar data tersebut ke platform IoT. Pada tutorial ini, kami akan menggunakan ThingSpeak.com.

"ThingSpeak adalah aplikasi Internet of Things (IoT) sumber terbuka untuk menyimpan dan mengambil data dari sesuatu, menggunakan API REST dan MQTT. ThingSpeak memungkinkan penciptaan aplikasi pembalakan sensor, aplikasi pengesanan lokasi, dan rangkaian sosial dengan kemas kini status."

Pertama, anda mesti mempunyai akaun di ThinkSpeak.com. Seterusnya, ikuti arahan untuk membuat Saluran, perhatikan ID Salurannya dan Tulis Kunci API.

Semasa membuat saluran, anda juga mesti menentukan maklumat apa yang akan dimuat ke setiap salah satu dari 8 bidang, seperti yang ditunjukkan di atas (dalam kes kami hanya 4 daripadanya akan digunakan).

Langkah 9: Protokol MQTT dan ThingSpeak Connection

Protokol MQTT dan Sambungan ThingSpeak
Protokol MQTT dan Sambungan ThingSpeak

MQTT adalah seni bina penerbitan / langganan yang dibangunkan terutamanya untuk menyambungkan lebar jalur dan peranti dengan kuasa melalui rangkaian tanpa wayar. Ini adalah protokol sederhana dan ringan yang berjalan di atas soket TCP / IP atau WebSockets. MQTT melalui WebSockets dapat diamankan dengan SSL. Senibina penerbitan / langganan membolehkan mesej didorong ke peranti pelanggan tanpa peranti perlu terus melakukan tinjauan ke pelayan.

Broker MQTT adalah pusat komunikasi, dan bertanggungjawab untuk menghantar semua mesej antara pengirim dan penerima yang sah. Pelanggan adalah mana-mana peranti yang menghubungkan dengan broker dan boleh menerbitkan atau melanggan topik untuk mengakses maklumat. Topik mengandungi maklumat penghalaan untuk broker. Setiap pelanggan yang ingin mengirim mesej menerbitkannya ke topik tertentu, dan setiap pelanggan yang ingin menerima mesej melanggan topik tertentu. Broker menyampaikan semua mesej dengan topik yang sesuai kepada klien yang sesuai.

ThingSpeak ™ mempunyai broker MQTT di URL mqtt.thingspeak.com dan port 1883. Broker ThingSpeak menyokong penerbitan MQTT dan langganan MQTT.

Dalam kes kami, kami akan menggunakan MQTT Publish.

Langkah 10: Penerbitan MQTT

Penerbitan MQTT
Penerbitan MQTT

Sebagai permulaan, mari kita pasang pustaka pelanggan Eclipse Paho MQTT Python, yang menerapkan versi 3.1 dan 3.1.1 protokol MQTT

sudo pip pasang paho-mqtt

Seterusnya, mari kita import paho library:

import paho.mqtt.publish sebagai terbitan

dan memulakan saluran Thingspeak dan protokol MQTT. Kaedah sambungan ini paling mudah dan memerlukan sumber sistem paling sedikit:

channelID = "ID SALURAN ANDA"

apiKey = "KUNCI MENULIS ANDA" topik = "saluran /" + saluranID + "/ terbitkan /" + apiKey mqttHost = "mqtt.thingspeak.com" Sekarang kita mesti menentukan "muatan" kita

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

Itu sahaja! kami bersedia untuk mula menghantar data ke awan! Mari tulis semula fungsi gelung sebelumnya untuk juga memasukkan bahagian ThingSpeak daripadanya.

# Menghantar semua data ke ThingSpeak setiap 1 minit

sementara (Betul): 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) cuba: publish.single (topik, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () kecuali: print ("[INFO] Gagal menghantar data ") time.sleep (60) Sekiranya semuanya baik-baik saja, anda mesti melihat data juga muncul di saluran anda di thingspeak.com seperti gambar di atas.

Langkah 11: Skrip Akhir

Penting untuk menunjukkan bahawa Jupyter Notebook adalah alat yang sangat baik untuk pengembangan dan laporan, tetapi tidak untuk membuat kod untuk dimasukkan ke dalam pengeluaran. Apa yang harus anda lakukan sekarang ialah mengambil bahagian kod yang relevan dan membuat skrip.py dan jalankan di terminal anda.

Contohnya, "ts_air_quality_logger.py", yang harus anda jalankan dengan arahan:

python 3 ts_air_quality_logger.py

Skrip ini serta Jupyter Notebook dan sds011.py boleh didapati di repositori saya di RPi_Air_Quality_Sensor.

Perhatikan bahawa skrip ini layak untuk pengujian sahaja. Yang terbaik adalah tidak menggunakan kelewatan di dalam gelung terakhir (yang meletakkan kod dalam "jeda"), sebaliknya gunakan pemasa. Atau untuk aplikasi yang sebenarnya, yang terbaik adalah tidak menggunakan gelung, dengan Linux diprogram untuk melaksanakan skrip secara berkala dengan crontab.

Langkah 12: Mengeluarkan Monitor di Luar

Mengeluarkan Monitor di Luar
Mengeluarkan Monitor di Luar
Mengeluarkan Monitor di Luar
Mengeluarkan Monitor di Luar
Mengeluarkan Monitor di Luar
Mengeluarkan Monitor di Luar
Mengeluarkan Monitor di Luar
Mengeluarkan Monitor di Luar

Setelah monitor Raspberry Pi Air Quality saya berfungsi, saya memasang RPi di dalam kotak plastik, menyimpan sensor di luar dan meletakkannya di luar rumah saya.

Dua pengalaman dibuat.

Langkah 13: Pembakaran Motor Bensin

Pembakaran Motor Bensin
Pembakaran Motor Bensin
Pembakaran Motor Bensin
Pembakaran Motor Bensin

Sensor itu diletakkan sekitar 1m dari scape gas Lambretta, dan motornya dihidupkan. Motor berjalan selama beberapa minit dan dimatikan. Dari fail log di atas, hasil yang saya dapat. Menarik untuk mengesahkan bahawa PM2.5 adalah partikulat paling berbahaya yang dihasilkan dari motor.

Langkah 14: Pembakaran Kayu

Pembakaran Kayu
Pembakaran Kayu
Pembakaran Kayu
Pembakaran Kayu

Melihat fail log, kami menyedari bahawa data sensor sesaat "di luar Jangkauan" dan tidak ditangkap dengan baik oleh Perpustakaan penukaran AQI, jadi saya menukar kod sebelumnya untuk mengatasinya:

def conv_aqi (pmt_2_5, pmt_10):

cuba: 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 kecuali: return 600, 600 Keadaan ini boleh berlaku di lapangan, tidak mengapa. Ingatlah bahawa sebenarnya, anda harus menggunakan rata-rata bergerak untuk benar-benar mendapatkan AQI (sekurang-kurangnya setiap jam, tetapi biasanya setiap hari).

Langkah 15: Kesimpulannya

Kesimpulannya
Kesimpulannya

Seperti biasa, saya berharap projek ini dapat membantu orang lain memasuki dunia Elektronik dan Sains Data yang menarik!

Untuk perincian dan kod akhir, sila kunjungi simpanan GitHub saya: RPi_Air_Quality_Sensor.

Saludos dari selatan dunia!

Jumpa anda di arahan saya yang seterusnya!

Terima kasih, Marcelo

Disyorkan: