Mundarija:

RaspberryPi 4: 15 bosqichlariga asoslangan arzon IoT havo sifati monitori (rasmlar bilan)
RaspberryPi 4: 15 bosqichlariga asoslangan arzon IoT havo sifati monitori (rasmlar bilan)

Video: RaspberryPi 4: 15 bosqichlariga asoslangan arzon IoT havo sifati monitori (rasmlar bilan)

Video: RaspberryPi 4: 15 bosqichlariga asoslangan arzon IoT havo sifati monitori (rasmlar bilan)
Video: Qaysi Kasb Sizga Mos Keladi? TEST! | ҚАЙСИ КАСБ СИЗГА МОС КЕЛАДИ ??? 2024, Iyul
Anonim
RaspberryPi 4 ga asoslangan arzon IoT havo sifati monitori
RaspberryPi 4 ga asoslangan arzon IoT havo sifati monitori
RaspberryPi 4 ga asoslangan arzon IoT havo sifati monitori
RaspberryPi 4 ga asoslangan arzon IoT havo sifati monitori
RaspberryPi 4 ga asoslangan arzon IoT havo sifati monitori
RaspberryPi 4 ga asoslangan arzon IoT havo sifati monitori
RaspberryPi 4 ga asoslangan arzon IoT havo sifati monitori
RaspberryPi 4 ga asoslangan arzon IoT havo sifati monitori

Santyago, Chili qishki ekologik favqulodda vaziyatda dunyoning eng go'zal mamlakatlaridan birida yashash sharafiga ega, lekin afsuski, bu atirgul emas. Qish mavsumida Chili havoning ifloslanishi bilan ko'p azob chekadi, asosan chang va tutun kabi zarrachali materiallar tufayli.

Sovuq ob-havo tufayli janubda havoning ifloslanishi asosan yog'ochdan yasalgan kalifaktorlar va Santyagoda (mamlakat markazidagi asosiy poytaxt) sanoat, avtomobillar aralashganligi va 2 ta ulkan tog 'zanjiri orasidagi o'ziga xos geografik vaziyat tufayli sodir bo'ladi.

Hozirgi kunda havoning ifloslanishi butun dunyoda katta muammo bo'lib kelmoqda va ushbu maqolada biz Raspberry Pi asosida uy qurilishi arzon havo sifati monitorini qanday ishlab chiqishni ko'rib chiqamiz. Agar siz havo sifati haqida ko'proq bilmoqchi bo'lsangiz, "Jahon havo sifati indeksi" loyihasiga tashrif buyuring.

Ta'minotlar

  • Raspberry Pi 4
  • 1SDS011 - yuqori aniqlikdagi lazer pm2.5 havo sifatini aniqlash sensori
  • Plastik quti

1 -qadam: zarracha moddasi (PM): bu nima? U havoga qanday tushadi?

Zarrachalar (PM): bu nima? U havoga qanday tushadi?
Zarrachalar (PM): bu nima? U havoga qanday tushadi?

Shunday qilib, ifloslanish yoki havoning ifloslanishini tushunish uchun biz unga tegishli bo'lgan zarrachalarni o'rganishimiz kerak, bu zarrachalar deb ham ataladi. Oldingi bo'limdagi grafiklarga qarab, ular PM2.5 va PM10 haqida gapirganini ko'rishimiz mumkin. Keling, bu haqda qisqacha ma'lumot beraylik.

PM zarrachali moddalarni (zarrachalarning ifloslanishi deb ham ataladi) anglatadi: havoda topilgan qattiq zarrachalar va suyuq tomchilar aralashmasi. Chang, axloqsizlik, kuyikish yoki tutun kabi ba'zi zarralar yalang'och ko'z bilan ko'rish uchun etarlicha katta yoki qorong'i. Boshqalar shunchalik kichikki, ularni faqat elektron mikroskop yordamida aniqlash mumkin. Zarrachalar har xil o'lchamda bo'ladi. Diametri 10 mikrometrdan kichik yoki teng bo'lgan zarrachalar shunchalik kichikki, ular o'pkaga kirib, salomatlik uchun jiddiy muammolarga olib kelishi mumkin. O'n mikrometr bitta odam sochining kengligidan kam.

Zarrachalarning ifloslanishiga qo'pol chang zarralari (PM10) kiradi: nafas olish mumkin bo'lgan zarralar, diametri odatda 10 mikrometr va undan kichikroq. Manbalarga maydalash yoki maydalash ishlari va yo'llarda avtomobillar qo'zg'atgan chang kiradi. Yupqa zarralar (PM2.5): ingichka nafas oluvchi zarralar, diametri odatda 2,5 mikrometr va undan kichikroq. Nozik zarralar yonishning barcha turlaridan, shu jumladan avtotransport vositalari, elektr stantsiyalari, turar -joy yog'ochlarini yoqish, o'rmon yong'inlari, qishloq xo'jaligi yonishi va ba'zi sanoat jarayonlaridan ishlab chiqariladi, siz zarrachalar haqida EPA saytida ko'proq ma'lumot topishingiz mumkin: AQSh atrof -muhitni muhofaza qilish agentligi

2 -qadam: Nima uchun bu zarrachalar haqida g'amxo'rlik qilish muhim?

Nima uchun bu zarrachalar haqida g'amxo'rlik qilish muhim?
Nima uchun bu zarrachalar haqida g'amxo'rlik qilish muhim?

GERARDO ALVARADO Z. Chili universitetidagi ishida ta'riflaganidek, 1930 yilda Meuz vodiysida (Belgiya), 1948 yilda Donorada (Pensilvaniya) va 1952 yilda Londonda yuqori havo ifloslanishi epizodlarini o'rganish o'lim bilan bog'liq birinchi hujjatlashtirilgan manbalar bo'lgan. zarrachalarning ifloslanishi bilan (Préndez, 1993). Atmosfera ifloslanishining odamlar salomatligiga ta'sirini o'rganishdagi yutuqlar, nafas olish tizimining turli bo'limlariga kirib borishi va cho'kindi moddalarga biologik javob berishiga qarab, sog'liq uchun xavflar nafas olish zarralari bilan bog'liqligini aniqladi.

Eng qalin zarralar, taxminan 5 mkm, burun yo'lining siliyalari va burun bo'shlig'i va traxeyani qoplaydigan shilliq qavatning birgalikdagi harakati natijasida filtrlanadi. Diametri 0,5 dan 5 mkm gacha bo'lgan zarralar bronxlarda va hatto o'pka alveolalarida to'planishi mumkin, ammo ular bir necha soatdan keyin bronxlar va bronxiolalar siliyasi bilan yo'q qilinadi. 0,5 mkm dan kichik zarralar o'pka alveolalariga yotqizilmaguncha chuqur kirib borishi mumkin, bir necha yildan bir necha yilgacha, chunki yo'q qilinishini osonlashtiradigan mukosiliar transport mexanizmi yo'q. Quyidagi rasmda zarrachalarning kattaligiga qarab nafas olish tizimiga kirib borishi ko'rsatilgan.

Shunday qilib, har ikkala turdagi zarrachalarni (PM2.5 va PM10) aniqlash juda muhim va yaxshi xabar shundaki, ikkalasini ham oddiy va qimmat bo'lmagan SDS011 sensori o'qiydi.

3 -qadam: zarracha sensori - SDS011

Zarrachalar sensori - SDS011
Zarrachalar sensori - SDS011
Zarrachalar sensori - SDS011
Zarrachalar sensori - SDS011

Havo sifatini kuzatish - 80 -yillarda boshlangan fan va taniqli fan. O'sha paytda texnologiya juda cheklangan edi va bu yechim havoning ifloslanishini aniqlash uchun ishlatilgan.

Yaxshiyamki, hozirgi vaqtda, eng yangi va zamonaviy texnologiyalar yordamida, havo sifatini kuzatish uchun ishlatiladigan echimlar nafaqat aniqroq, balki o'lchashda ham tezlashmoqda. Qurilmalar kichikroq bo'lib, har qachongidan ham ancha arzon.

Ushbu maqolada biz havodagi chang miqdorini aniqlaydigan zarracha sensori haqida to'xtalamiz. Birinchi avlod shaffoflikni aniqlay olgan bo'lsa-da, Jinan universiteti (Shandun shtatidagi) INOVAFIT SDS011 kabi so'nggi sensorlar endi PM2.5 va PM10 ni aniqlay oladi.

SDS011 o'lchami bilan, ehtimol, aniqlik va narx jihatidan eng yaxshi sensorlardan biri (40,00 AQSh dollaridan kam).

  • O'lchangan qiymatlar: PM2.5, PM10
  • Diapazon: 0-999.9 mkg /m³
  • Besleme zo'riqishida: 5V (4.7-5.3V)
  • Quvvat iste'moli (ish): 70mA ± 10mA
  • Quvvat iste'moli (uyqu rejimi lazer va fan): <4mA
  • Saqlash harorati: -20 dan +60 ° C gacha
  • Ish harorati: -10 dan +50 ° C gacha
  • Namlik (saqlash): Maks. 90%
  • Namlik (ish): Maks. 70% (suv bug'ining kondensatsiyasi o'qishni buzadi)
  • Aniqlik: 0,3 mm uchun 70% va 0,5 mm uchun 98%
  • Hajmi: 71x70x23 mm
  • Sertifikatlash: Idoralar, FCC, RoHS

SD011 korpusining bir tomoni sifatida tenglikni ishlatadi, bu uning narxini pasaytirishga imkon beradi. Retseptor diodi PCB tomoniga o'rnatiladi (bu majburiydir, chunki diod va LNA o'rtasidagi har qanday shovqinni oldini olish kerak). Emitent lazer plastik qutiga o'rnatiladi va PCBga moslashuvchan sim orqali ulanadi.

Qisqacha aytganda, Nova Fitness SDS011 - bu professional lazer chang sensori. Sensorga o'rnatilgan fan avtomatik ravishda havoni so'radi. Sensor havodagi chang zarrachalarining qiymatini o'lchash uchun lazer nurini tarqatish tamoyilidan* foydalanadi. Sensor PM2.5 va PM10 qiymatlarining yuqori aniqligi va ishonchli o'qilishini ta'minlaydi. Atrofdagi har qanday o'zgarish deyarli birdaniga 10 soniyadan past bo'lgan qisqa javob vaqtini kuzatishi mumkin. Sensor standart rejimda o'qishni 1 soniya oralig'ida ko'rsatadi.

* Lazer sochish printsipi: zarrachalar aniqlanadigan joydan o'tganda yorug'lik tarqalishi mumkin. Tarqalgan yorug'lik elektr signallariga aylanadi va bu signallar kuchayadi va qayta ishlanadi. Zarrachalar soni va diametrini tahlil qilish orqali olish mumkin, chunki signal to'lqin shakli zarrachalar diametri bilan ma'lum aloqaga ega.

4 -qadam: Ammo SDS011 bu zarrachalarni qanday tortib olishi mumkin?

Ammo SDS011 bu zarrachalarni qanday suratga olishi mumkin?
Ammo SDS011 bu zarrachalarni qanday suratga olishi mumkin?
Ammo SDS011 bu zarrachalarni qanday suratga olishi mumkin?
Ammo SDS011 bu zarrachalarni qanday suratga olishi mumkin?

Yuqorida aytib o'tilganidek, SDS011 tomonidan qo'llaniladigan printsip - nurning tarqalishi yoki yaxshiroq, Dinamik nurning tarqalishi (DLS), bu fizikadagi usul bo'lib, u eritmadagi suspenziyadagi yoki polimerlardagi mayda zarrachalarning o'lchamlarini taqsimlash profilini aniqlash imkonini beradi. DLS doirasida vaqtinchalik tebranishlar odatda intensivlik yoki fotonli avtomatik korrelyatsiya funktsiyasi yordamida tahlil qilinadi (foton korrelyatsion spektroskopiyasi yoki kvazelastik nur sochilishi deb ham ataladi). Vaqt maydonini tahlil qilishda avtokorrelyatsiya funktsiyasi (ACF) odatda noldan kechikish vaqtidan boshlanadi va kichikroq zarralar tufayli tezroq dinamikasi tarqoqlik izining dekoratsiyasini tezroq olib keladi. ACF intensivligi kuch spektrining Furye konvertatsiyasi ekanligi isbotlangan, shuning uchun DLS o'lchovlari spektral maydonda teng darajada yaxshi bajarilishi mumkin.

Gipotetik dinamik nurning tepasida ikkita namuna: tepada katta zarralar (PM10 kabi) va pastda kichikroq zarralar (PM2.5 kabi). Sensorning ichki qismiga nazar tashlasak, yorug'lik tarqalish printsipi qanday amalga oshirilganini ko'rishimiz mumkin.

Diyotdan olingan elektr signal past shovqin kuchaytirgichga o'tadi va undan ADC orqali raqamli signalga va UART orqali tashqariga o'tkaziladi.

Haqiqiy ilmiy tajriba haqida SDS011 haqida ko'proq ma'lumot olish uchun, iltimos, Konstantinos va boshqalarning 2018 yilgi ishini, PM2.5 kontsentratsiyasini kuzatish uchun arzon narxli ko'chma tizimni ishlab chiqish va sinovdan o'tkazishni ko'rib chiqing.

5 -qadam: Showtime

Vaqtni ko'rsat!
Vaqtni ko'rsat!
Vaqtni ko'rsat!
Vaqtni ko'rsat!

Keling, bu nazariyaning barchasini tanaffus qilib, Raspberry Pi va SDS011 sensori yordamida zarrachali moddalarni qanday o'lchashga e'tibor qaratsak.

HW ulanishi aslida juda oddiy. Sensor USB adapteri bilan sotiladi, u 7 pinli UART chiqish ma'lumotlarini RPi standart USB ulagichlaridan biriga ulashadi.

SDS011 ulagichi:

  • 1 -pin - ulanmagan
  • 2 -pin - PM2.5: 0-999 mkg/m³; PWM chiqishi
  • Quvvat 3-5V
  • 4 -pin - PM10: 0-999 mkg/m³; PWM chiqishi
  • 5 -pin - GND
  • 6 -pin - RX UART (TTL) 3.3V
  • 7 -pin - TX UART (TTL) 3.3V

Bu darslik uchun men birinchi marta yangi Raspberry-Pi 4. dan foydalanmoqdaman. Lekin, albatta, oldingi har qanday model ham yaxshi ishlaydi.

Sensorni RPi USB portlaridan biriga ulashingiz bilan siz avtomatik ravishda uning fanatining ovozini eshitishni boshlaysiz. Shovqin biroz bezovta qiladi, shuning uchun uni tarmoqdan uzib, hamma narsa SW bilan o'rnatilguncha kutish kerak.

Sensor va RPi o'rtasidagi aloqa ketma -ket protokol orqali amalga oshiriladi. Ushbu protokol haqida batafsil ma'lumotni bu erda topishingiz mumkin: V1.3 lazer chang sensori boshqaruv protokoli. Lekin, bu loyiha uchun ishlab chiqiladigan kodni soddalashtirish uchun python interfeysidan foydalanish yaxshidir. Siz o'zingizning interfeysingizni yaratishingiz yoki Internetda Frank Heuer yoki Ivan Kalchevnikidan foydalanishingiz mumkin. Biz oxirgisini ishlatamiz, bu juda sodda va yaxshi ishlaydi (sds011.py skriptini GitHub yoki menikidan yuklab olishingiz mumkin).

Sds011.py fayli skriptni yaratadigan katalogda bo'lishi kerak.

Rivojlanish bosqichida men Jupyter daftaridan foydalanaman, lekin siz xohlagan IDE -dan foydalanishingiz mumkin (masalan, Raspberry Pi Debian paketining bir qismi bo'lgan Thonny yoki Geany juda yaxshi).

Sds011 -ni import qilishni boshlang va sensorlar nusxasini yarating. SDS011 UART yordamida sensordan o'qish usulini taqdim etadi.

sds011 importidan *

Sensor = SDS011 ("/dev/ttyUSB0")

Sensorni uyqu buyrug'i bilan yoqish yoki o'chirish mumkin:

pmt_2_5, pmt_10 = sensor.query ()

O'lchovlardan oldin stabilizatsiya uchun kamida 10 soniya va yangisini boshlash uchun kamida 2 soniya kuting (yuqoridagi kodga qarang).

Sensorni ishlatish uchun SW nuqtai nazaridan bilishingiz kerak bo'lgan narsa shu. Ammo keling, havo sifatini nazorat qilishni chuqurroq ko'rib chiqaylik! Maqolaning boshida, agar siz havoning yaxshi yoki yomonligi haqida ma'lumot beradigan saytlarni o'rgangan bo'lsangiz, ranglar bu qadriyatlar bilan bog'liqligini tushunishingiz kerak. Har bir rang indeksdir. Ulardan eng mashhuri AQSH va boshqa bir qancha mamlakatlarda qo'llaniladigan AQI (Havo sifati indeksi).

6 -qadam: Havo sifati indeksi - AQI

Havo sifati indeksi - AQI
Havo sifati indeksi - AQI
Havo sifati indeksi - AQI
Havo sifati indeksi - AQI
Havo sifati indeksi - AQI
Havo sifati indeksi - AQI

AQI kundalik havo sifati to'g'risida hisobot beradi. Bu sizga havoning qanchalik toza yoki ifloslanganligini va sog'likka qanday ta'sir qilishi sizni xavotirga solishi mumkinligini aytadi. AQI ifloslangan havodan nafas olgandan keyin bir necha soat yoki kun ichida sog'lig'ingizga ta'sir qilishiga e'tibor qaratadi.

Masalan, EPA (Amerika Qo'shma Shtatlari Atrof-muhitni muhofaza qilish agentligi) AQIni zarrachalarning ifloslanishi (PM2.5 va PM10) uchun emas, balki "Toza havo to'g'risida" gi qonun bilan tartibga solingan boshqa asosiy ifloslantiruvchi moddalar uchun ham hisoblaydi: er sathidagi ozon, uglerod oksidi, oltingugurt dioksidi va azot dioksidi. Ushbu ifloslantiruvchi moddalarning har biri uchun EPA aholi salomatligini muhofaza qilish uchun havo sifati milliy standartlarini o'rnatdi. Yuqoridagi rasmga AQI qiymatlari, ranglari va sog'liq haqidagi xabarlar bilan qarang.

Yuqorida aytib o'tilganidek, AQI qiymatlari va ranglari har bir ifloslantiruvchi vosita bilan bog'liq, ammo sensorlar tomonidan yaratilgan qiymatlarni ular bilan qanday bog'lash mumkin? Qo'shimcha jadval ularning barchasini yuqorida ko'rsatilgan tarzda bog'laydi.

Albatta, bunday jadvaldan foydalanishning ma'nosi yo'q. Oxir -oqibat, bu hisobni bajaradigan oddiy matematik algoritm. Buning uchun biz kutubxonani AQI qiymati va ifloslantiruvchi moddalar kontsentratsiyasi (mkg/m³) o'rtasida aylantirish uchun import qilamiz: python-aqi.

Kutubxonani PIP yordamida o'rnating va test qiling (yuqoridagi kodni ko'ring)

python-aqi-ni o'rnatish

Va Chili haqida nima deyish mumkin?

Chilida xuddi shunday indeks ishlatiladi, ICAP: nafas oladigan zarrachalar uchun havo sifati indeksi. Respublika Prezidenti Vazirligi Bosh kotibining 1998 yil 16 martdagi 59 -sonli Oliy Farmonining 1 -moddasida, g) harfi, nafas oladigan zarrachalar uchun ICAni belgilaydigan darajalar belgilanadi.

Bo'limlar o'rtasida qiymatlar chiziqli ravishda o'zgaradi, 500 qiymati bu kontsentratsiyaga duch kelganda aholi uchun xavf tug'diradigan chegaraviy qiymatga to'g'ri keladi. ICAP qiymatlariga ko'ra, odamlar ta'sir qilgan MP10 kontsentratsiyasi darajasini aniqlaydigan toifalar aniqlandi.

7 -qadam: Ma'lumotlarni mahalliy qayd qilish

Ma'lumotlarni mahalliy qayd qilish
Ma'lumotlarni mahalliy qayd qilish
Ma'lumotlarni mahalliy qayd qilish
Ma'lumotlarni mahalliy qayd qilish
Ma'lumotlarni mahalliy qayd qilish
Ma'lumotlarni mahalliy qayd qilish

Bu vaqtda bizda sensordan ma'lumotlarni olish va ularni "o'qiladigan qiymat" ga aylantirish uchun barcha vositalar mavjud, bu AQI indeksi.

Keling, bu qiymatlarni yozib oladigan funktsiyani yarataylik. Biz ketma -ket 3 qiymatni olamiz, ular orasida o'rtacha:

def get_data (n = 3):

sensor.sleep (uxlash = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) i uchun diapazonda (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) pmt_2_5, pmt_10 qaytish Yuqorida siz test natijasini ko'rishingiz mumkin. Shuningdek, AQI indeksidagi PMning raqamli qiymatlarini konvertatsiya qilish funktsiyasini bajaramiz

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)) qaytish aqi_2_5, aqi_10 ikkala funktsiyali test natijasidan yuqori. Lekin ular bilan nima qilish kerak? Eng oddiy javob, olingan fayllarni mahalliy faylga saqlash funktsiyasini yaratishdir

def save_log ():

ochiq ("YO'LINGIZ BU YERDA/air_quality.csv", "a") bilan log: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n"). format (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Bitta tsikl yordamida siz ma'lumotni mahalliy faylda muntazam ravishda, masalan, har bir daqiqada qayd qilishingiz mumkin

while (True):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) harakat qilib ko'ring: save_log () bundan mustasno: chop etish ("[INFO] Ma'lumotlarni yozishda xatolik") time.sleep (60) Yuqorida ko'rib turganimizdek, har 60 soniyada vaqt belgisi va ma'lumotlar ushbu faylga "qo'shiladi".

8 -qadam: ma'lumotlarni bulutli xizmatga yuborish

Ma'lumotni bulutli xizmatga yuborish
Ma'lumotni bulutli xizmatga yuborish

Shu nuqtada, biz ma'lumotlarni CSV -dagi faylga saqlash orqali sensordan ma'lumotlarni qanday olishni bilib oldik. Endi bu ma'lumotlarni IoT platformasiga qanday yuborish kerakligini ko'rish vaqti keldi. Ushbu qo'llanmada biz ThingSpeak.com dan foydalanamiz.

ThingSpeak-bu REST va MQTT API-laridan foydalanib, narsalardan ma'lumotlarni saqlash va olish uchun ochiq manbali Internet-narsalar (IoT) ilovasi. ThingSpeak datchiklarni ro'yxatga olish uchun ilovalar, joylashuvni kuzatish uchun ilovalar va statuslar yangilanadigan narsalar ijtimoiy tarmog'ini yaratishga imkon beradi.

Birinchidan, ThinkSpeak.com saytida hisob qaydnomangiz bo'lishi kerak. Keyin, kanal identifikatori va API yozish kalitini hisobga olgan holda, kanal yaratish bo'yicha ko'rsatmalarga amal qiling.

Kanal yaratishda siz yuqorida ko'rsatilgan 8 ta maydonning har biriga qanday ma'lumot yuklanishini ham belgilashingiz kerak (bizda ulardan faqat 4 tasi ishlatiladi).

9 -qadam: MQTT protokoli va ThingSpeak ulanishi

MQTT protokoli va ThingSpeak aloqasi
MQTT protokoli va ThingSpeak aloqasi

MQTT-bu nashr etish/obuna bo'lish arxitekturasi bo'lib, u asosan tarmoqli kengligi va quvvat cheklangan qurilmalarni simsiz tarmoqlar orqali ulash uchun ishlab chiqilgan. Bu oddiy va engil protokol bo'lib, u TCP/IP soketlari yoki WebSockets orqali ishlaydi. WebSockets orqali MQTT SSL bilan himoyalangan bo'lishi mumkin. Nashr qilish/obuna bo'lish arxitekturasi xabarlarni mijoz qurilmalariga uzatishni, qurilmani serverni doimiy ravishda so'roq qilishni talab qilmasdan amalga oshirish imkonini beradi.

MQTT brokeri aloqa markaziy nuqtasi bo'lib, u jo'natuvchilar va qonuniy qabul qiluvchilar o'rtasida barcha xabarlarni jo'natish bilan shug'ullanadi. Mijoz - bu brokerga ulanadigan va ma'lumotga kirish uchun mavzularni nashr qilishi yoki unga obuna bo'lishi mumkin bo'lgan har qanday qurilma. Mavzu broker uchun marshrut ma'lumotlarini o'z ichiga oladi. Xabar yubormoqchi bo'lgan har bir mijoz ularni ma'lum bir mavzuda e'lon qiladi va xabar olishni istagan har bir mijoz ma'lum mavzuga obuna bo'ladi. Broker mos keladigan mavzuga ega bo'lgan barcha xabarlarni tegishli mijozlarga etkazib beradi.

ThingSpeak ™ mqtt.thingspeak.com manzilida va 1883 portida MQTT brokeriga ega. ThingSpeak brokeri MQTT nashrini ham, MQTT obunasini ham qo'llab -quvvatlaydi.

Bizning holatda, biz MQTT Publish -dan foydalanamiz.

10 -qadam: MQTT nashr etish

MQTT nashr etish
MQTT nashr etish

Boshlash uchun, MQTT protokolining 3.1 va 3.1.1 versiyalarini amalga oshiradigan Eclipse Paho MQTT Python mijozlar kutubxonasini o'rnatamiz.

sudo pip o'rnatish paho-mqtt

Keling, paho kutubxonasini import qilaylik:

paho.mqtt.publish -ni nashr sifatida joylash

Thingspeak kanali va MQTT protokolini ishga tushiring. Bu ulanish usuli eng sodda va eng kam tizim resurslarini talab qiladi:

channelID = "SIZNING KANAL ID"

apiKey = "YOZISH KEYINGIZ" mavzu = "kanallar/" + kanalID + "/nashr etish/" + apiKey mqttHost = "mqtt.thingspeak.com" Endi biz "yukni" aniqlashimiz kerak.

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

Va bu ham! biz bulutga ma'lumotlarni yuborishni boshlashga tayyormiz! Keling, ThingSpeak qismini qo'shish uchun oldingi loop funktsiyasini qayta yozamiz.

# Barcha ma'lumotlarni ThingSpeak -ga har 1 daqiqada yuborish

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 =" + str (pmt_10) + "& field4 =" + str (aqi_10) harakat qilib ko'ring: publish.single (mavzu, yuk = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () tashqari: chop etish ("[INFO] ". Time.sleep" (60) ma'lumotlar yuborilmadi Agar hamma narsa tartibda bo'lsa, ma'lumotlar yuqorida ko'rsatilganidek, sizning kanalingizda thingspeak.com saytida ham paydo bo'lishini ko'rishingiz kerak.

11 -qadam: Yakuniy skript

Shuni ta'kidlash kerakki, Jupyter Notebook - bu ishlab chiqish va hisobot berish uchun juda yaxshi vosita, lekin ishlab chiqarishga joriy qilish uchun kod yaratib bo'lmaydi. Endi nima qilish kerak - kodning tegishli qismini olib,.py skriptini yarating va uni terminalda ishga tushiring.

Masalan, "ts_air_quality_logger.py" buyrug'i bilan ishlashingiz kerak:

python 3 ts_air_quality_logger.py

Bu skriptni, shuningdek, Jupyter daftarchasini va sds011.py -ni mening omborimda RPi_Air_Quality_Sensor -da topish mumkin.

E'tibor bering, bu skript faqat sinov uchun mumkin. Eng yaxshisi, oxirgi tsiklda kechikishlarni ishlatmaslik (bu kodni "pauza" ga qo'yadi), buning o'rniga taymerlardan foydalaning. Yoki haqiqiy dastur uchun, Linuxni skriptni muntazam ravishda crontab yordamida bajarish uchun dasturlashtirilgan, pastadirni ishlatmaslik yaxshiroqdir.

12 -qadam: monitorni tashqariga chiqarish

Monitorni tashqariga olib chiqish
Monitorni tashqariga olib chiqish
Monitorni tashqariga olib chiqish
Monitorni tashqariga olib chiqish
Monitorni tashqariga olib chiqish
Monitorni tashqariga olib chiqish
Monitorni tashqariga olib chiqish
Monitorni tashqariga olib chiqish

Mening Raspberry Pi havo sifati monitorim ishlayotganda, men RPi -ni plastik qutiga yig'ib, sensorni tashqarida saqladim va uni uyim tashqarisiga qo'ydim.

Ikkita tajriba o'tkazildi.

13 -qadam: benzinli dvigatelning yonishi

Benzinli dvigatellarning yonishi
Benzinli dvigatellarning yonishi
Benzinli dvigatellarning yonishi
Benzinli dvigatellarning yonishi

Sensor Lambrettaning gaz qobig'idan 1 m masofada joylashgan va uning dvigateli yoqilgan. Dvigatel bir necha daqiqa ishladi va o'chdi. Yuqoridagi jurnal faylidan men olgan natija. PM2.5 dvigateldan kelib chiqqan eng xavfli zarracha ekanligini tasdiqlash qiziq.

14 -qadam: Yog'ochni yoqish

Yog'och yonishi
Yog'och yonishi
Yog'och yonishi
Yog'och yonishi

Kundalik faylga qarab, biz sensorlar ma'lumotlari "chegaradan tashqarida" ekanligini va AQI konvertatsiya kutubxonasi tomonidan yaxshi saqlanmaganligini tushunamiz, shuning uchun men oldingi kodni o'zgartiraman:

def conv_aqi (pmt_2_5, pmt_10):

harakat qilib ko'ring: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) qaytish aqi_2_5, aqi_10 tashqari: qaytish 600, 600 Bu holat maydonda bo'lishi mumkin, bu yaxshi. Esingizda bo'lsin, siz AQIni olish uchun harakatlanuvchi o'rtacha qiymatdan foydalanishingiz kerak (kamida soatlik, lekin odatda har kuni).

15 -qadam: Xulosa

Xulosa
Xulosa

Har doimgidek, men umid qilamanki, bu loyiha boshqalarga elektronika va ma'lumot fanining hayajonli olamiga yo'l topishga yordam beradi!

Tafsilotlar va yakuniy kod uchun GitHub depozitariyamga tashrif buyuring: RPi_Air_Quality_Sensor.

Dunyoning janubidan salomlar!

Keyingi ko'rsatuvimda ko'rishguncha!

Rahmat, Marselo

Tavsiya: