Mündəricat:

RaspberryPi 4: 15 Addımlarına əsaslanan Ucuz IoT Hava Keyfiyyət Monitoru (Şəkillərlə birlikdə)
RaspberryPi 4: 15 Addımlarına əsaslanan Ucuz IoT Hava Keyfiyyət Monitoru (Şəkillərlə birlikdə)

Video: RaspberryPi 4: 15 Addımlarına əsaslanan Ucuz IoT Hava Keyfiyyət Monitoru (Şəkillərlə birlikdə)

Video: RaspberryPi 4: 15 Addımlarına əsaslanan Ucuz IoT Hava Keyfiyyət Monitoru (Şəkillərlə birlikdə)
Video: Home Assistant - первые настройки, File Editor, Maria DB, HACS - октябрь 2023 2024, Iyul
Anonim
RaspberryPi 4-ə əsaslanan Ucuz IoT Hava Keyfiyyəti Monitoru
RaspberryPi 4-ə əsaslanan Ucuz IoT Hava Keyfiyyəti Monitoru
RaspberryPi 4-ə əsaslanan Ucuz IoT Hava Keyfiyyəti Monitoru
RaspberryPi 4-ə əsaslanan Ucuz IoT Hava Keyfiyyəti Monitoru
RaspberryPi 4-ə əsaslanan Ucuz IoT Hava Keyfiyyəti Monitoru
RaspberryPi 4-ə əsaslanan Ucuz IoT Hava Keyfiyyəti Monitoru
RaspberryPi 4-ə əsaslanan Ucuz IoT Hava Keyfiyyəti Monitoru
RaspberryPi 4-ə əsaslanan Ucuz IoT Hava Keyfiyyəti Monitoru

Santiago, Şili, qışda bir ekoloji fövqəladə vəziyyətdə dünyanın ən gözəl ölkələrindən birində yaşamaq imtiyazına sahibdir, amma təəssüf ki, bu güllərin hamısı deyil. Qış mövsümündə Çili, əsasən toz və duman kimi hissəcikli materiallara görə hava çirklənməsi ilə çox əziyyət çəkir.

Soyuq hava səbəbiylə, cənubda, hava çirklənməsi əsasən ağacdan hazırlanan kalifaktorlardan və sənaye, avtomobillərdən qarışıq olan Santyaqoda (ölkənin mərkəzindəki əsas paytaxt) və 2 nəhəng dağ silsiləsi arasındakı özünəməxsus coğrafi vəziyyətdən qaynaqlanır.

Hal -hazırda, hava çirkliliyi bütün dünyada böyük bir problemdir və bu yazıda, Raspberry Pi -yə əsaslanaraq, ev istehsalı ucuz hava keyfiyyəti monitorunun necə hazırlanacağını araşdıracağıq. Hava keyfiyyəti haqqında daha çox məlumat əldə etmək istəyirsinizsə, "Dünya Hava Keyfiyyəti İndeksi" Layihəsinə baş çəkin.

Təchizat

  • Moruq Pi 4
  • 1SDS011 - Yüksək dəqiqlikli lazer pm2.5 hava keyfiyyəti aşkarlama sensoru
  • Plastik qutu

Addım 1: Partikül Maddə (PM): Bu nədir? Havaya Necə Gəzir?

Partikül Maddə (PM): Bu nədir? Havaya Necə Gəzir?
Partikül Maddə (PM): Bu nədir? Havaya Necə Gəzir?

Beləliklə, çirklənməni və ya havanın çirklənməsini başa düşmək üçün onunla əlaqəli olan hissəcikləri öyrənməliyik, bu da hissəcikli maddə kimi tanınır. Əvvəlki hissədəki qrafiklərə baxanda PM2.5 və PM10 -dan bəhs etdiklərini müşahidə edə bilərik. Buna qısa bir nəzər salaq.

PM hissəcikli maddələrin (hissəciklərin çirklənməsi adlanır) mənasını verir: havada olan bərk hissəciklər və maye damcılarının qarışığı üçün istifadə olunan termin. Toz, kir, is və ya tüstü kimi bəzi hissəciklər çılpaq gözlə görülə biləcək qədər böyük və ya qaranlıqdır. Digərləri o qədər kiçikdir ki, onları yalnız elektron mikroskopla aşkar etmək olar. Parçacıqlar geniş ölçüdə olur. Çapı 10 mikrometrdən az və ya bərabər olan hissəciklər o qədər kiçikdir ki, ağciyərlərə girə bilər və ciddi sağlamlıq problemlərinə səbəb ola bilər. On mikrometr tək bir insan saçının genişliyindən azdır.

Partikül çirkliliyinə qaba toz hissəcikləri (PM10) daxildir: tənəffüs edilə bilən hissəciklər, diametri ümumiyyətlə 10 mikrometr və daha kiçikdir. Mənbələr, yollarda nəqliyyat vasitələri tərəfindən qarışdırılan əzmə və ya üyütmə əməliyyatları və tozu əhatə edir. İncə hissəciklər (PM2.5): diametri ümumiyyətlə 2,5 mikrometr və daha kiçik olan nəfəs ala bilən zərrəciklər. İncə hissəciklər, motorlu nəqliyyat vasitələri, elektrik stansiyaları, yaşayış yerlərində odun yanması, meşə yanğınları, kənd təsərrüfatı yanması və bəzi sənaye prosesləri də daxil olmaqla, hər növ yanmadan istehsal olunur.

Addım 2: Bu hissəcikli maddələrə diqqət yetirmək niyə vacibdir?

Bu hissəciklərə əhəmiyyət vermək niyə vacibdir?
Bu hissəciklərə əhəmiyyət vermək niyə vacibdir?

GERARDO ALVARADO Z. -in Çili Universitetindəki işində təsvir etdiyi kimi, 1930 -cu ildə Meuse Vadisində (Belçika), 1948 -ci ildə Donora (Pensilvaniya) və 1952 -ci ildə Londonda yüksək hava çirklənməsi epizodlarının araşdırılması ölümlə əlaqəli ilk sənədli mənbələr olmuşdur. hissəciklərin çirklənməsi ilə (Préndez, 1993). Hava çirkliliyinin insanların sağlamlığına təsirinin araşdırılmasında əldə edilən irəliləyişlər, tənəffüs sisteminin müxtəlif hissələrinə nüfuz etməsi və çöküntüsündən və çöküntü materiallarına bioloji reaksiyasından asılı olaraq, sağlamlıq risklərinin inhalyasiya olunan hissəciklərdən qaynaqlandığını müəyyən etdi.

Təxminən 5 μm olan ən qalın hissəciklər burun keçidinin kirpikləri ilə burun boşluğunu və traxeyanı əhatə edən mukozanın birgə hərəkəti ilə süzülür. Diametri 0,5 ilə 5 μm arasında olan hissəciklər bronxlarda və hətta ağciyər alveollarında çökə bilər, lakin bir neçə saatdan sonra bronxlar və bronxiolların siliyası ilə xaric olurlar. 0.5 mikrondan kiçik olan hissəciklər, ağciyər alveollarına tökülənə qədər dərindən nüfuz edə bilir, bir neçə həftədən illərə qədər qalır, çünki aradan qaldırılmasını asanlaşdıran mukosilier nəqliyyat mexanizmi yoxdur. Aşağıdakı şəkil, ölçülərindən asılı olaraq tənəffüs sistemindəki hissəciklərin nüfuzunu göstərir.

Beləliklə, hər iki hissəcik növünü (PM2.5 və PM10) müəyyən etmək çox vacibdir və yaxşı xəbər odur ki, hər ikisi də sadə və bahalı olmayan bir SDS011 sensoru ilə oxunur.

Addım 3: Partikül Sensoru - SDS011

Partikül Sensoru - SDS011
Partikül Sensoru - SDS011
Partikül Sensoru - SDS011
Partikül Sensoru - SDS011

Hava Keyfiyyətinin monitorinqi 80 -ci illərdə başlayan yaxşı bilinən və qurulmuş bir elmdir. O vaxt texnologiya olduqca məhdud idi və həll çirkli və həqiqətən bahalı olan hava çirkliliyi kompleksini ölçmək üçün istifadə olunurdu.

Xoşbəxtlikdən, günümüzdə, ən son və müasir texnologiyalarla, Hava Keyfiyyətinin monitorinqi üçün istifadə olunan həllər nəinki daha dəqiq, həm də daha sürətli ölçülür. Cihazlar kiçilir və qiyməti həmişəkindən daha əlverişlidir.

Bu yazıda havadakı toz miqdarını təyin edə bilən bir hissəcik sensoru üzərində dayanacağıq. İlk nəsil qeyri-şəffaflıq miqdarını aşkarlaya bilsə də, Jinan Universitetindən (Shandong) ayrılan INOVAFIT-dən SDS011 kimi ən son sensorlar artıq PM2.5 və PM10-u aşkar edə bilir.

Ölçüsü ilə SDS011, yəqin ki, dəqiqlik və qiymət baxımından ən yaxşı sensorlardandır (USD 40.00 -dan aşağı).

  • Ölçülmüş dəyərlər: PM2.5, PM10
  • Aralığı: 0-999.9 μg /m³
  • Təchizat gərginliyi: 5V (4.7-5.3V)
  • Güc istehlakı (iş): 70mA ± 10mA
  • Güc istehlakı (yuxu rejimi lazer və fan): <4mA
  • Saxlama temperaturu: -20 ilə +60C arasında
  • İş temperaturu: -10 ilə +50C arasında
  • Rütubət (saxlama): Maks. 90%
  • Rütubət (iş): Maks. 70% (su buxarının kondensasiyası göstəriciləri saxtalaşdırır)
  • Dəqiqlik: 0.3μm üçün 70% və 0.5μm üçün 98%
  • Ölçüləri: 71x70x23 mm
  • Sertifikatlaşdırma: CE, FCC, RoHS

SD011, PCB -ni korpusun bir tərəfi kimi istifadə edir, bu da onun qiymətini azaltmağa imkan verir. Reseptor diodu PCB tərəfinə quraşdırılmışdır (diyot və LNA arasındakı hər hansı bir səs -küyün qarşısını almaq lazım olduğu üçün bu məcburidir). Emitent lazer plastik qutuya quraşdırılıb və çevik bir tel vasitəsilə PCB -yə qoşulub.

Bir sözlə, Nova Fitness SDS011 peşəkar lazer toz sensoru. Sensora quraşdırılmış fan avtomatik olaraq havanı çəkir. Sensor havada asılan toz hissəciklərinin dəyərini ölçmək üçün lazer işığı səpilməsi prinsipindən* istifadə edir. Sensor, PM2.5 və PM10 dəyərlərinin yüksək dəqiqliyi və etibarlı oxunmasını təmin edir. Ətrafdakı hər hansı bir dəyişiklik, demək olar ki, 10 saniyənin altındakı qısa cavab müddətində müşahidə edilə bilər. Standart rejimdə olan sensor 1 saniyəlik bir fasilə ilə oxu haqqında məlumat verir.

* Lazer səpələnmə prinsipi: hissəciklər aşkarlama sahəsindən keçəndə işığın səpələnməsinə səbəb ola bilər. Səpələnmiş işıq elektrik siqnallarına çevrilir və bu siqnallar gücləndiriləcək və işlənəcəkdir. Siqnal dalğası hissəciklərin diametri ilə müəyyən əlaqələrə malik olduğu üçün hissəciklərin sayı və diametri analizlə əldə edilə bilər.

Addım 4: Bəs SDS011 bu hissəcikləri necə tuta bilər?

Bəs SDS011 bu hissəcikləri necə tuta bilər?
Bəs SDS011 bu hissəcikləri necə tuta bilər?
Bəs SDS011 bu hissəcikləri necə tuta bilər?
Bəs SDS011 bu hissəcikləri necə tuta bilər?

Daha əvvəl şərh edildiyi kimi, SDS011 -in istifadə etdiyi prinsip yüngül səpilmə və ya daha yaxşısıdır, fizikada bir həll olan süspansiyonda və ya polimerlərdə kiçik hissəciklərin ölçü paylama profilini təyin etmək üçün istifadə edilə bilən bir üsul. DLS çərçivəsində, müvəqqəti dalğalanmalar ümumiyyətlə intensivlik və ya foton avtomatik korrelyasiya funksiyası (foton korrelyasiya spektroskopiyası və ya yarı elastik işıq saçılması kimi də tanınır) vasitəsi ilə təhlil edilir. Zaman sahəsinin analizində, avtomatik korrelyasiya funksiyası (ACF) ümumiyyətlə sıfır gecikmə vaxtından başlayaraq tənəzzülə uğrayır və kiçik hissəciklər səbəbiylə daha sürətli dinamika səpələnmiş intensivlik izinin daha sürətli dekorasiya əlaqəsinə səbəb olur. ACF intensivliyinin güc spektrinin Fourier çevrilməsi olduğu və buna görə də DLS ölçülərinin spektral sahədə eyni dərəcədə yaxşı aparıla biləcəyi göstərilmişdir.

İki nümunənin hipotetik dinamik işıq saçılmasının üstündə: yuxarıda daha böyük hissəciklər (PM10 kimi) və daha kiçik hissəciklər (PM2.5 kimi). Sensorumuzun içərisinə baxaraq, işıq səpilmə prinsipinin necə həyata keçirildiyini görə bilərik.

Diodda tutulan elektrik siqnalı Aşağı Səs Gücləndiriciyə gedir və bundan ADC vasitəsilə rəqəmsal siqnala və UART vasitəsi ilə xaricə çevrilir.

Həqiqi bir elmi təcrübə haqqında SDS011 haqqında daha çox məlumat əldə etmək üçün, Konstantinos və digərlərinin 2018 PM2.5 Konsentrasiyalarının Monitorinqi üçün Aşağı Qiymətli Portativ Sistemin İnkişafı və Sahə Testi işinə nəzər salın.

Addım 5: Showtime

Şou vaxtı!
Şou vaxtı!
Şou vaxtı!
Şou vaxtı!

Bütün bu nəzəriyyəyə bir ara verək və Raspberry Pi və SDS011 sensoru istifadə edərək hissəcikli maddələrin ölçülməsinə diqqət edək.

HW bağlantısı əslində çox sadədir. Sensor, 7 pinli UART -dan çıxış məlumatlarını RPi -nin standart USB konnektorlarından biri ilə birləşdirmək üçün bir USB adapteri ilə satılır.

SDS011 çıxışı:

  • Pin 1 - bağlı deyil
  • Pin 2 - PM2.5: 0-999μg/m³; PWM çıxışı
  • Pin 3-5V
  • Pin 4 - PM10: 0-999 μg/m³; PWM çıxışı
  • Pin 5 - GND
  • Pin 6 - RX UART (TTL) 3.3V
  • Pin 7 - TX UART (TTL) 3.3V

Bu dərs üçün ilk dəfə olaraq yeni bir Raspberry-Pi 4 istifadə edirəm. Əlbəttə ki, əvvəlki hər hansı bir model də yaxşı işləyəcək.

Sensoru RPi USB portlarından birinə bağladığınız anda avtomatik olaraq fanatının səsini dinləməyə başlayacaqsınız. Səs -küy bir az cansıxıcıdır, buna görə də onu çıxarıb SW -ə düzəldənə qədər gözləməlisiniz.

Sensor və RPi arasındakı əlaqə serial protokolu vasitəsilə olacaq. Bu protokol haqqında ətraflı məlumatı burada tapa bilərsiniz: Lazer Toz Sensoruna Nəzarət Protokolu V1.3. Ancaq bu layihə üçün ən yaxşısı, inkişaf etdiriləcək kodu asanlaşdırmaq üçün bir python interfeysindən istifadə etməkdir. Öz interfeysinizi yarada və ya Frank Heuer və ya Ivan Kalchev kimi internetdə mövcud olanlardan istifadə edə bilərsiniz. Sonuncudan istifadə edəcəyik, bu çox sadə və yaxşı işləyir (sds011.py skriptini GitHub -dan və ya mənimkindən yükləyə bilərsiniz).

Sds011.py faylı skriptinizi yaratdığınız eyni qovluqda olmalıdır.

İnkişaf mərhələsində Jupyter Noutbukundan istifadə edəcəyəm, ancaq bəyəndiyiniz hər hansı bir IDE -dən istifadə edə bilərsiniz (məsələn, Raspberry Pi Debian paketinin bir hissəsi olan Thonny və ya Geany çox yaxşıdır).

Sds011 idxal etməyə və sensor nümunənizi yaratmağa başlayın. SDS011, UART istifadə edərək sensordan oxumaq üçün bir üsul təqdim edir.

sds011 idxalından *

sensor = SDS011 ("/dev/ttyUSB0")

Sensorunuzu yuxu əmri ilə aça və ya söndürə bilərsiniz:

pmt_2_5, pmt_10 = sensor.query ()

Ölçmədən əvvəl sabitləşmə üçün ən az 10 saniyə və yenisini işə salmaq üçün ən azı 2 saniyə gözləyin (yuxarıdakı koda baxın).

Sensoru istifadə etmək üçün SW baxımından bilmək lazım olan hər şey budur. Ancaq Hava Keyfiyyətinə Nəzarət mövzusunda daha dərinə gedək! Bu yazının əvvəlində, havanın nə qədər yaxşı və ya pis olduğu haqqında məlumat verən saytları araşdırmış olsanız, rənglərin bu dəyərlərlə əlaqəli olduğunu anlamalısınız. Hər rəng bir indeksdir. Bunlardan ən məşhuru ABŞ və bir sıra digər ölkələrdə istifadə olunan AQI (Hava Keyfiyyəti İndeksi) dir.

Addım 6: Hava Keyfiyyəti İndeksi - AQI

Hava Keyfiyyəti İndeksi - AQI
Hava Keyfiyyəti İndeksi - AQI
Hava Keyfiyyəti İndeksi - AQI
Hava Keyfiyyəti İndeksi - AQI
Hava Keyfiyyəti İndeksi - AQI
Hava Keyfiyyəti İndeksi - AQI

AQI gündəlik hava keyfiyyətini bildirmək üçün bir göstəricidir. Havanızın nə qədər təmiz və ya çirkli olduğunu və hansı sağlamlıq təsirlərinin sizi narahat edə biləcəyini söyləyir. AQI, çirkli hava nəfəs aldıqdan sonra bir neçə saat və ya gün ərzində yaşaya biləcəyiniz sağlamlıq təsirlərinə diqqət yetirir.

EPA (Amerika Birləşmiş Ştatlarının Ətraf Mühitin Mühafizəsi Agentliyi), AQI-ni yalnız hissəciklərin çirklənməsi (PM2.5 və PM10) üçün deyil, Təmiz Hava Qanunu ilə tənzimlənən digər əsas hava çirkləndiriciləri üçün də hesablayır: yer səviyyəsindəki ozon, karbon monoksit, kükürd dioksid və azot dioksid. Bu çirkləndiricilərin hər biri üçün EPA, əhalinin sağlamlığını qorumaq üçün milli hava keyfiyyəti standartlarını müəyyən etmişdir. AQI dəyərləri, rəngləri və sağlamlıq mesajı ilə əlaqəli yuxarıdakı şəklə baxın.

Daha əvvəl şərh edildiyi kimi, AQI dəyərləri və rəngləri çirkləndirici maddələrin hər biri ilə əlaqəlidir, amma sensorlar tərəfindən yaradılan dəyərləri onlarla necə əlaqələndirmək olar? Əlavə bir masa, hamısını yuxarıda göstərildiyi kimi birləşdirir.

Ancaq əlbəttə ki, belə bir masadan istifadə etməyin heç bir mənası yoxdur. Sonda, hesablamanı aparan sadə bir riyazi alqoritmdir. Bunun üçün kitabxananı AQI dəyəri ilə çirkləndirici konsentrasiyası (µg/m³) arasında çevirmək üçün idxal edəcəyik: python-aqi.

PIP istifadə edərək kitabxananı quraşdırın və test edin (yuxarıdakı koda baxın)

pip python-aqi quraşdırın

Bəs Çili necə?

Çilidə oxşar bir indeks istifadə olunur, ICAP: Nəfəs ala bilən hissəciklər üçün hava keyfiyyəti indeksi. 16 Mart 1998 -ci il tarixli 59 saylı Cümhuriyyət Başçılığı Nazirliyi Baş Qərarının 1 -ci maddəsinin g) hərfində ICA -nın Nəfəs ala bilən hissəcikli material üçün ICAP -ı təyin edən səviyyələri təsbit edilir.

Dəyərlər bölmələr arasında xətti olaraq dəyişəcək, 500 dəyəri bu konsentrasiyalara məruz qaldıqda əhali üçün risk olacağı limit dəyərinə uyğun gəlir. ICAP dəyərlərinə görə, insanların məruz qaldığı MP10 konsentrasiyası səviyyəsinə uyğun kateqoriyalar təsbit edildi.

Addım 7: Yerli Məlumatların Qeydiyyatı

Məlumatların Yerli Girişi
Məlumatların Yerli Girişi
Məlumatların Yerli Girişi
Məlumatların Yerli Girişi
Məlumatların Yerli Girişi
Məlumatların Yerli Girişi

Bu nöqtədə, sensordan məlumatları götürmək və onları daha "oxunaqlı bir dəyər" ə çevirmək üçün bütün vasitələrimiz var, yəni AQI indeksi.

Bu dəyərləri tutmaq üçün bir funksiya yaradaq. Aralarındakı ortalamanı alaraq ardıcıl olaraq 3 dəyər çəkəcəyik:

def get_data (n = 3):

sensor.yuxu (yuxu = Yanlış) pmt_2_5 = 0 pmt_10 = 0 zaman. yuxu (10) i üçün (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) return pmt_2_5, pmt_10 Yuxarıda testin nəticəsini görə bilərsiniz. AQI indeksində PM -in ədədi dəyərlərini çevirmək üçün bir funksiya da edək

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)) qayıt aqi_2_5, aqi_10 hər iki funksiyası olan bir testin nəticəsi. Amma onlarla nə etməli? Ən sadə cavab, tutulan məlumatları yerli bir faylda saxlamaq üçün bir funksiya yaratmaqdır

def save_log ():

açıq olaraq ("YOLUNU BURADA/air_quality.csv", "a") log olaraq: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n"). format (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () Tək bir döngə ilə, məsələn, hər dəqiqə, yerli sənədinizdəki məlumatları müntəzəm olaraq daxil edə bilərsiniz

isə (Doğru):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) cəhd edin: save_log () istisna olmaqla: print ("[INFO] Məlumatların qeydində uğursuzluq") time.sleep (60) Hər 60 saniyədə, zaman damgası və məlumatlar yuxarıda gördüyümüz kimi bu fayla "əlavə olunacaq".

Addım 8: Məlumatların Bulud Xidmətinə göndərilməsi

Məlumatların Bulud Xidmətinə göndərilməsi
Məlumatların Bulud Xidmətinə göndərilməsi

Bu nöqtədə, məlumatları yerli CSV faylına saxlayaraq sensordan necə çəkməyi öyrəndik. İndi bu məlumatların IoT platformasına necə göndəriləcəyini görmək vaxtıdır. Bu dərslikdə ThingSpeak.com istifadə edəcəyik.

"ThingSpeak, REST və MQTT API-lərindən istifadə edərək əşyalardan məlumatları saxlamaq və almaq üçün açıq mənbəli Əşyalar İnterneti (IoT) tətbiqidir. ThingSpeak, sensor giriş proqramları, yer izləmə tətbiqetmələri və status yeniləmələri olan şeylərin sosial şəbəkəsinin yaradılmasına imkan verir."

Əvvəlcə ThinkSpeak.com -da bir hesabınız olmalıdır. Sonra, Kanal ID -ni və Yazı API Açarını nəzərə alaraq bir Kanal yaratmaq üçün təlimatları izləyin.

Kanal yaratarkən yuxarıda göstərildiyi kimi 8 sahənin hər birinə hansı məlumatların yüklənəcəyini də təyin etməlisiniz (bizim halda onlardan yalnız 4 -ü istifadə olunacaq).

Addım 9: MQTT Protokolu və ThingSpeak Bağlantısı

MQTT Protokolu və ThingSpeak Bağlantısı
MQTT Protokolu və ThingSpeak Bağlantısı

MQTT, ilk növbədə simsiz şəbəkələr üzərindən bant genişliyi və gücü məhdud cihazları birləşdirmək üçün hazırlanmış bir nəşr/abunə arxitekturasıdır. TCP/IP yuvaları və ya WebSockets üzərində işləyən sadə və yüngül bir protokoldur. WebSockets üzərindən MQTT SSL ilə təmin edilə bilər. Nəşr/abunə arxitekturası, serverin davamlı olaraq sorğu keçirməsinə ehtiyac duymadan mesajların müştəri cihazlarına göndərilməsini təmin edir.

MQTT brokeri, ünsiyyətin mərkəzi nöqtəsidir və göndəricilərlə qanuni alıcılar arasında bütün mesajların göndərilməsindən məsuldur. Müştəri, brokerə qoşulan və məlumat əldə etmək üçün mövzuları dərc edə və ya abunə ola bilən hər hansı bir cihazdır. Bir mövzu broker üçün marşrutlaşdırma məlumatlarını ehtiva edir. Mesaj göndərmək istəyən hər bir müştəri onları müəyyən bir mövzuya göndərir və mesaj almaq istəyən hər bir müştəri müəyyən bir mövzuya abunə olur. Broker uyğun gələn mövzu ilə bütün mesajları uyğun müştərilərə çatdırır.

ThingSpeak ™ mqtt.thingspeak.com URL və 1883 limanında bir MQTT brokerinə malikdir. ThingSpeak broker həm MQTT nəşrini, həm də MQTT abunəsini dəstəkləyir.

Bizim vəziyyətimizdə MQTT Publish -dən istifadə edəcəyik.

Addım 10: MQTT Nəşr edin

MQTT Nəşr
MQTT Nəşr

Başlamaq üçün, MQTT protokolunun 3.1 və 3.1.1 versiyalarını tətbiq edən Eclipse Paho MQTT Python müştəri kitabxanasını quraq.

sudo pip paho-mqtt quraşdırın

Sonra, paho kitabxanasını idxal edək:

paho.mqtt.pub olaraq yayımlayın

və Thingspeak kanalını və MQTT protokolunu işə salın. Bu əlaqə üsulu ən sadədir və ən az sistem qaynağı tələb edir:

channelID = "KANAL IDİNİZ"

apiKey = "SİZİN YAZMA AÇARINIZ" mövzusu = "kanallar/" + kanalID + "/dərc etmək/" + apiKey mqttHost = "mqtt.thingspeak.com" İndi "yükümüzü" müəyyənləşdirməliyik

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

Və bu qədər! məlumatları buluda göndərməyə başlamağa hazırıq! ThingSpeak hissəsini də daxil etmək üçün əvvəlki loop funksiyasını yenidən yazaq.

# Bütün məlumatları hər 1 dəqiqədə ThingSpeak -ə göndərmək

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) cəhd edin: publish.single (mövzu, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, nəqliyyat = tTransport) save_log () istisna olmaqla: print ("[INFO] Məlumatların göndərilməməsi ") time.sleep (60) Hər şey qaydasındadırsa, yuxarıda göstərildiyi kimi, məlumatlarınızın thingspeak.com saytında da kanalınızda göründüyünü görməlisiniz.

Addım 11: Son Ssenari

Qeyd etmək vacibdir ki, Jupyter Notebooku inkişaf etdirmək və hesabat vermək üçün çox yaxşı bir vasitədir, lakin istehsalda istifadə etmək üçün kod yaratmağa ehtiyac yoxdur. İndi etməli olduğunuz şey, kodun müvafiq hissəsini götürmək və.py skriptini yaratmaq və onu terminalınızda işə salmaqdır.

Məsələn, "ts_air_quality_logger.py" əmri ilə işləməlisiniz:

python 3 ts_air_quality_logger.py

Bu skript də Jupyter Notebook və sds011.py -ni RPi_Air_Quality_Sensordakı depomda tapa bilərsiniz.

Qeyd edək ki, bu skript yalnız sınaq üçün mümkündür. Ən yaxşısı, son döngədə gecikmələrdən istifadə etməməkdir (kodu "fasilə" qoyur), bunun əvəzinə taymerlərdən istifadə edin. Və ya həqiqi bir tətbiq üçün, ən yaxşısı, Linuxu skriptin müntəzəm olaraq crontab ilə icra etməsi üçün proqramlaşdırılmış loop istifadə etməməkdir.

Addım 12: Monitoru kənara çıxarmaq

Monitoru kənara çıxarmaq
Monitoru kənara çıxarmaq
Monitoru kənara çıxarmaq
Monitoru kənara çıxarmaq
Monitoru kənara çıxarmaq
Monitoru kənara çıxarmaq
Monitoru kənara çıxarmaq
Monitoru kənara çıxarmaq

Raspberry Pi Hava Keyfiyyət monitorum işləyərkən, RPi -ni plastik bir qutunun içinə yığdım, sensoru çöldə saxladım və evimin kənarına qoydum.

İki təcrübə edildi.

Addım 13: Benzinli Motor Yanması

Benzinli Motor Yanması
Benzinli Motor Yanması
Benzinli Motor Yanması
Benzinli Motor Yanması

Sensor, Lambretta qaz kəmərindən təxminən 1 m məsafədə yerləşdirildi və mühərriki işə salındı. Motor bir neçə dəqiqə işləyib və sönüb. Yuxarıdakı qeyd sənədindən aldığım nəticə. PM2.5 -in mühərrikdən çıxan ən təhlükəli hissəcik olduğunu təsdiqləmək maraqlıdır.

Addım 14: Odun yandırılması

Odun Yandırılması
Odun Yandırılması
Odun Yandırılması
Odun Yandırılması

Günlük sənədinə baxdıqda, sensor məlumatlarının "aralığın xaricində" olduğunu anladıq və AQI konvertasiya kitabxanası tərəfindən yaxşı çəkilmədiyini başa düşdük, buna görə də əvvəlki kodu dəyişdirmək üçün onu dəyişdirdim:

def conv_aqi (pmt_2_5, pmt_10):

cəhd edin: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) qaytar aqi_2_5, aqi_10 istisna olmaqla: qayıt 600, 600 Bu vəziyyət tarlada baş verə bilər, bu da qaydasındadır. Unutmayın ki, həqiqətən AQI almaq üçün hərəkət edən ortalamadan istifadə etməlisiniz (ən azı saatlıq, lakin ümumiyyətlə gündəlik).

Addım 15: Nəticə

Nəticə
Nəticə

Həmişə olduğu kimi, ümid edirəm ki, bu layihə başqalarına maraqlı elektronika və məlumat elmləri dünyasına yol tapmağa kömək edə bilər!

Detallar və son kod üçün GitHub depozitarımı ziyarət edin: RPi_Air_Quality_Sensor.

Dünyanın cənubundan salamlar!

Növbəti təlimatımda görüşənədək!

Çox sağ ol, Marcelo

Tövsiyə: