İçindekiler:

RaspberryPi 4: 15 Adımlarına Dayalı Düşük Maliyetli Bir IoT Hava Kalitesi Monitörü (Resimlerle)
RaspberryPi 4: 15 Adımlarına Dayalı Düşük Maliyetli Bir IoT Hava Kalitesi Monitörü (Resimlerle)

Video: RaspberryPi 4: 15 Adımlarına Dayalı Düşük Maliyetli Bir IoT Hava Kalitesi Monitörü (Resimlerle)

Video: RaspberryPi 4: 15 Adımlarına Dayalı Düşük Maliyetli Bir IoT Hava Kalitesi Monitörü (Resimlerle)
Video: Patron görmesin :) 2024, Temmuz
Anonim
RaspberryPi 4 Tabanlı Düşük Maliyetli IoT Hava Kalitesi Monitörü
RaspberryPi 4 Tabanlı Düşük Maliyetli IoT Hava Kalitesi Monitörü
RaspberryPi 4 Tabanlı Düşük Maliyetli IoT Hava Kalitesi Monitörü
RaspberryPi 4 Tabanlı Düşük Maliyetli IoT Hava Kalitesi Monitörü
RaspberryPi 4 Tabanlı Düşük Maliyetli IoT Hava Kalitesi Monitörü
RaspberryPi 4 Tabanlı Düşük Maliyetli IoT Hava Kalitesi Monitörü
RaspberryPi 4 Tabanlı Düşük Maliyetli IoT Hava Kalitesi Monitörü
RaspberryPi 4 Tabanlı Düşük Maliyetli IoT Hava Kalitesi Monitörü

Santiago, Şili bir kış çevre acil durumu sırasında dünyanın en güzel ülkelerinden birinde yaşama ayrıcalığına sahiptir, ancak ne yazık ki her şey güllük gülistanlık değildir. Şili, kış mevsiminde, esas olarak toz ve duman gibi partikül maddeler nedeniyle hava kirliliğinden çokça zarar görmektedir.

Soğuk hava nedeniyle, güneyde, hava kirliliği esas olarak ahşap bazlı kalfaktörlerden ve Santiago'da (ülkenin merkezindeki ana başkent) endüstrilerden, arabalardan ve 2 büyük dağ zinciri arasındaki benzersiz coğrafi konumundan kaynaklanmaktadır.

Günümüzde hava kirliliği tüm dünyada büyük bir sorun ve bu yazıda Raspberry Pi tabanlı düşük maliyetli ev yapımı Hava Kalitesi monitörünün nasıl geliştirileceğini keşfedeceğiz. Hava kalitesi hakkında daha fazla bilgi edinmek istiyorsanız, lütfen “Dünya Hava Kalitesi İndeksi” Projesini ziyaret edin.

Gereçler

  • Ahududu Pi 4
  • 1SDS011 - Yüksek hassasiyetli lazer pm2.5 hava kalitesi algılama sensörü
  • Plastik kutu

Adım 1: Partikül Madde (PM): Nedir? Havaya Nasıl Girer?

Partikül Madde (PM): Nedir? Havaya Nasıl Girer?
Partikül Madde (PM): Nedir? Havaya Nasıl Girer?

Bu nedenle, kirliliği veya hava kirliliğini anlamak için, partikül madde olarak da bilinen bununla ilgili partikülleri incelememiz gerekir. Bir önceki bölümdeki grafiklere baktığımızda PM2.5 ve PM10'dan bahsettiklerini görebiliriz. Buna hızlı bir genel bakış sunalım.

PM, partikül madde (partikül kirliliği olarak da adlandırılır) anlamına gelir: havada bulunan katı partiküller ve sıvı damlacıkların karışımı için kullanılan terim. Toz, kir, kurum veya duman gibi bazı parçacıklar çıplak gözle görülebilecek kadar büyük veya karanlıktır. Diğerleri o kadar küçüktür ki sadece bir elektron mikroskobu kullanılarak tespit edilebilirler. Parçacıklar çok çeşitli boyutlarda gelir. Çapı 10 mikrometre veya daha küçük olan partiküller o kadar küçüktür ki akciğerlere girebilir ve ciddi sağlık sorunlarına yol açabilir. On mikrometre, tek bir insan saçının genişliğinden daha azdır.

Partikül kirliliği şunları içerir: Kaba toz partikülleri (PM10): genellikle 10 mikrometre ve daha küçük çaplara sahip solunabilir partiküller. Kaynaklar arasında kırma veya öğütme işlemleri ve araçlar tarafından yollarda karıştırılan toz yer alır. İnce parçacıklar (PM2.5): genellikle 2,5 mikrometre ve daha küçük çaplara sahip, solunabilir ince parçacıklar. Motorlu taşıtlar, enerji santralleri, konutlarda odun yakma, orman yangınları, tarımsal yakma ve bazı endüstriyel işlemler dahil olmak üzere her tür yanmadan ince parçacıklar üretilir ve partikül madde hakkında daha fazla bilgiyi EPA sitesinde bulabilirsiniz: Amerika Birleşik Devletleri Çevre Koruma Ajansı

Adım 2: Bu Partikül Maddeleri Önemsemek Neden Önemli?

Bu Partikül Maddeleri Önemsemek Neden Önemli?
Bu Partikül Maddeleri Önemsemek Neden Önemli?

GERARDO ALVARADO Z.'nin Şili Üniversitesi'ndeki çalışmasında tanımladığı gibi, 1930'da Meuse Vadisi'nde (Belçika), 1948'de Donora'da (Pennsylvania) ve 1952'de Londra'da yüksek hava kirliliği vakaları üzerine yapılan çalışmalar, ölümle ilgili ilk belgelenmiş kaynaklar olmuştur. partikül kontaminasyonu ile (Préndez, 1993). Hava kirliliğinin insan sağlığı üzerindeki etkilerinin araştırılmasındaki ilerlemeler, sağlık risklerinin, solunum sisteminin farklı bölümlerinde penetrasyon ve birikmelerine ve birikmiş materyallere karşı biyolojik tepkiye bağlı olarak solunabilir partiküllerden kaynaklandığını belirlemiştir.

Yaklaşık 5 µm olan en kalın partiküller, nazal pasajın kirpiklerinin ve nazal kaviteyi ve trakeayı kaplayan mukozanın ortak hareketi ile filtrelenir. Çapı 0,5 ile 5 µm arasında olan partiküller bronşlarda ve hatta pulmoner alveollerde birikebilir, ancak birkaç saat sonra bronşların ve bronşiyollerin kirpikleri tarafından elimine edilirler. 0,5 μm'den küçük partiküller, eliminasyonu kolaylaştıran bir mukosiliyer taşıma mekanizması bulunmadığından, pulmoner alveollerde birikene kadar haftalarca yıllarca kalarak derinlemesine nüfuz edebilir. Aşağıdaki şekil partiküllerin boyutlarına bağlı olarak solunum sistemindeki penetrasyonunu göstermektedir.

Bu nedenle, her iki parçacık türünü (PM2.5 ve PM10) tespit etmek çok önemlidir ve iyi haber şu ki, her ikisi de basit ve pahalı olmayan bir sensör olan SDS011 tarafından okunabilir.

Adım 3: Parçacık Sensörü - SDS011

Parçacık Sensörü - SDS011
Parçacık Sensörü - SDS011
Parçacık Sensörü - SDS011
Parçacık Sensörü - SDS011

Hava Kalitesi izleme, 80'lerde başlayan iyi bilinen ve yerleşik bir bilimdir. O zamanlar, teknoloji oldukça sınırlıydı ve hava kirliliği kompleksini ölçmek için kullanılan çözüm, hantal ve gerçekten pahalıydı.

Neyse ki günümüzde, en yeni ve modern teknolojiler ile Hava Kalitesi izleme için kullanılan çözümler sadece daha hassas değil, aynı zamanda ölçümde de daha hızlı hale geliyor. Cihazlar küçülüyor ve her zamankinden çok daha uygun maliyetli hale geliyor.

Bu yazıda havadaki toz miktarını tespit edebilen bir parçacık sensörüne odaklanacağız. İlk nesil opaklık miktarını henüz tespit edebiliyorken, Jinan Üniversitesi'nden (Shandong'da) bir yan ürün olan INOVAFIT'in SDS011'i gibi en yeni sensörler artık PM2.5 ve PM10'u algılayabiliyor.

Boyutu ile SDS011, doğruluk ve fiyat açısından muhtemelen en iyi sensörlerden biridir (40,00 USD'den az). Özellikler

  • Ölçülen değerler: PM2.5, PM10
  • Aralık: 0–999,9 μg /m³
  • Besleme gerilimi: 5V (4,7–5,3V)
  • Güç tüketimi (çalışma): 70mA±10mA
  • Güç tüketimi (uyku modu lazeri ve fan): < 4mA
  • Depolama sıcaklığı: -20 ila +60C
  • Çalışma sıcaklığı: -10 ila +50C
  • Nem (depolama): Maks. %90
  • Nem (çalışma): Maks. %70 (su buharının yoğunlaşması okumaları bozar)
  • Doğruluk: 0,3μm için %70 ve 0,5μm için %98
  • Boyut: 71x70x23 mm
  • Sertifika: CE, FCC, RoHS

SD011, PCB'yi kasanın bir tarafı olarak kullanır ve maliyetini düşürür. Alıcı diyot PCB tarafına monte edilmiştir (diyot ile LNA arasında herhangi bir gürültüden kaçınılması gerektiği için bu zorunludur). Yayıcı lazer plastik kutu üzerine monte edilmiştir ve esnek bir kablo ile PCB'ye bağlanmıştır.

Kısacası Nova Fitness SDS011, profesyonel bir lazer toz sensörüdür. Sensöre takılan fan otomatik olarak havayı emer. Sensör, havada asılı kalan toz parçacıklarının değerini ölçmek için bir lazer ışığı saçılım ilkesi* kullanır. Sensör, PM2.5 ve PM10 değerlerinin yüksek hassasiyetli ve güvenilir okumalarını sağlar. Ortamdaki herhangi bir değişiklik neredeyse anında gözlemlenebilir, kısa tepki süresi 10 saniyenin altındadır. Standart moddaki sensör, 1 saniyelik aralıklarla okuma bildirir.

* Lazer Saçılım Prensibi: Parçacıklar algılama alanından geçtiğinde ışık saçılması indüklenebilir. Saçılan ışık elektrik sinyallerine dönüştürülür ve bu sinyaller güçlendirilip işlenir. Parçacıkların sayısı ve çapı, sinyal dalga biçimi parçacıkların çapı ile belirli ilişkilere sahip olduğu için analiz yoluyla elde edilebilir.

Adım 4: Ama SDS011 Bu Parçacıkları Nasıl Yakalayabilir?

Peki SDS011 Bu Parçacıkları Nasıl Yakalayabilir?
Peki SDS011 Bu Parçacıkları Nasıl Yakalayabilir?
Peki SDS011 Bu Parçacıkları Nasıl Yakalayabilir?
Peki SDS011 Bu Parçacıkları Nasıl Yakalayabilir?

Daha önce yorumlandığı gibi, SDS011 tarafından kullanılan ilke, ışık saçılması veya daha iyisi, fizikte süspansiyondaki küçük parçacıkların veya çözeltideki polimerlerin boyut dağılım profilini belirlemek için kullanılabilen bir teknik olan Dinamik Işık Saçılmasıdır (DLS). DLS kapsamında, zamansal dalgalanmalar genellikle yoğunluk veya foton oto-korelasyon fonksiyonu (foton korelasyon spektroskopisi veya yarı elastik ışık saçılımı olarak da bilinir) vasıtasıyla analiz edilir. Zaman alanı analizinde, otokorelasyon fonksiyonu (ACF) genellikle sıfır gecikme süresinden başlayarak bozulur ve daha küçük parçacıklar nedeniyle daha hızlı dinamikler, saçılan yoğunluk izinin daha hızlı korelasyonuna yol açar. ACF yoğunluğunun güç spektrumunun Fourier dönüşümü olduğu ve bu nedenle DLS ölçümlerinin spektral alanda eşit derecede iyi gerçekleştirilebileceği gösterilmiştir.

İki örneğin varsayımsal dinamik ışık saçılımının üstünde: Üstte daha büyük parçacıklar (PM10 gibi) ve altta daha küçük parçacıklar (PM2.5 gibi). Sensörümüzün içine baktığımızda, ışık saçılımı ilkesinin nasıl uygulandığını görebiliriz.

Diyotta yakalanan elektrik sinyali, Düşük Gürültülü Amplifikatöre gider ve buradan bir ADC aracılığıyla dijital bir sinyale ve bir UART aracılığıyla dışarıya dönüştürülür.

Gerçek bir bilimsel deneyim hakkında SDS011 hakkında daha fazla bilgi edinmek için lütfen Konstantinos ve arkadaşlarının, PM2.5 Konsantrasyonlarını İzlemek için Düşük Maliyetli Taşınabilir Sistemin Geliştirilmesi ve Sahada Test Edilmesi başlıklı 2018 çalışmasına bir göz atın.

Adım 5: Gösteri Zamanı

Gösteri zamanı!
Gösteri zamanı!
Gösteri zamanı!
Gösteri zamanı!

Tüm bu teoriye bir ara verelim ve bir Raspberry Pi ve SDS011 sensörü kullanarak partikül maddelerin nasıl ölçüleceğine odaklanalım.

HW bağlantısı aslında çok basittir. Sensör, 7 pinli UART'ından gelen çıkış verilerini RPi'nin standart USB konektörlerinden biri ile arayüzlemek için bir USB adaptörüyle birlikte satılır.

SDS011 pin çıkışı:

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

Bu eğitim için ilk kez yepyeni bir Raspberry-Pi 4 kullanıyorum. Ama elbette, önceki herhangi bir model de iyi çalışacaktır.

Sensörü RPi USB bağlantı noktalarından birine bağladığınız anda otomatik olarak fanının sesini dinlemeye başlayacaksınız. Gürültü biraz can sıkıcı, bu yüzden belki de fişini çekip SW ile tamamen ayarlanana kadar beklemelisiniz.

Sensör ve RPi arasındaki iletişim bir seri protokol aracılığıyla olacaktır. Bu protokolle ilgili ayrıntılar burada bulunabilir: Lazer Toz Sensörü Kontrol Protokolü V1.3. Ancak bu proje için en iyisi, geliştirilecek kodu basitleştirmek için bir python arayüzü kullanmaktır. Frank Heuer veya Ivan Kalchev'inki gibi kendi arayüzünüzü oluşturabilir veya internette bulunan bazılarını kullanabilirsiniz. Çok basit ve iyi çalışan sonuncuyu kullanacağız (sds011.py betiğini GitHub'dan veya benimkinden indirebilirsiniz).

sds011.py dosyası, komut dosyanızı oluşturduğunuz dizinde olmalıdır.

Geliştirme aşamasında bir Jupyter Notebook kullanacağım, ancak istediğiniz herhangi bir IDE'yi kullanabilirsiniz (örneğin, Raspberry Pi Debian paketinin bir parçası olan Thonny veya Geany, ikisi de çok iyidir).

sds011'i içe aktarmaya ve sensör örneğinizi oluşturmaya başlayın. SDS011, bir UART kullanarak sensörden okumak için bir yöntem sağlar.

sds011'den içe aktarma *

sensör = SDS011("/dev/ttyUSB0")

Uyku komutuyla sensörünüzü açıp kapatabilirsiniz:

pmt_2_5, pmt_10 = sensor.query()

Ölçümlerden önce stabilizasyon için en az 10 saniye ve yenisini başlatmak için en az 2 saniye bekleyin (yukarıdaki koda bakın).

Ve sensörü kullanmak için SW açısından bilmeniz gereken tek şey bu. Ancak Hava Kalitesi Kontrolünde daha derine inelim! Bu makalenin başında, havanın ne kadar iyi veya kötü olduğu hakkında bilgi veren siteleri araştırdıysanız, renklerin bu değerlerle ilişkili olduğunu anlamalısınız. Her renk bir İndekstir. Bunlardan en bilineni, ABD'de ve diğer birçok ülkede kullanılan AQI'dir (Hava Kalitesi İndeksi).

Adım 6: Hava Kalitesi İndeksi - AQI

Hava Kalitesi İndeksi - AQI
Hava Kalitesi İndeksi - AQI
Hava Kalitesi İndeksi - AQI
Hava Kalitesi İndeksi - AQI
Hava Kalitesi İndeksi - AQI
Hava Kalitesi İndeksi - AQI

AQI, günlük hava kalitesini raporlamak için bir indekstir. Havanızın ne kadar temiz veya kirli olduğunu ve ilgili sağlık etkilerinin sizin için endişe verici olabileceğini söyler. AQI, kirli havayı soluduktan sonraki birkaç saat veya gün içinde yaşayabileceğiniz sağlık etkilerine odaklanır.

Örneğin, EPA (Amerika Birleşik Devletleri Çevre Koruma Ajansı), AQI'yi yalnızca partikül kirliliği (PM2.5 ve PM10) için değil, aynı zamanda Temiz Hava Yasası tarafından düzenlenen diğer önemli hava kirleticileri için de hesaplar: yer seviyesi ozon, karbon monoksit, kükürt dioksit ve azot dioksit. Bu kirleticilerin her biri için EPA, halk sağlığını korumak için ulusal hava kalitesi standartları belirlemiştir. AQI değerleri, renkler ve ilgili sağlık mesajı ile yukarıdaki resme bakın.

Daha önce yorumlandığı gibi, bu AQI değerleri ve renkleri kirletici maddelerin her biri ile ilgilidir, ancak sensörler tarafından üretilen değerler bunlarla nasıl ilişkilendirilebilir? Ek bir tablo, hepsini yukarıda gösterildiği gibi birbirine bağlar.

Ama tabii ki böyle bir tablodan yararlanmanın bir anlamı yok. Sonunda, hesaplamayı yapan basit bir matematiksel algoritmadır. Bunun için, AQI değeri ile kirletici konsantrasyonu (µg/m³) arasında dönüştürmek için kütüphaneyi içe aktaracağız: python-aqi.

Kütüphaneyi PIP kullanarak kurun ve bir test yapın (yukarıdaki koda bakın)

pip kurulumu python-aqi

Peki ya Şili?

Şili'de benzer bir indeks kullanılmaktadır, ICAP: Nefes Alabilir Parçacıklar için Hava Kalitesi İndeksi. Cumhurbaşkanlığı Genel Sekreterliği'nin 16 Mart 1998 tarihli 59 sayılı Yüksek Kararnamesi, Madde 1, g) harfinde, Nefes Alabilir Partikül Malzeme için ICA'yı (ICAP) tanımlayan seviyeleri belirler.

Değerler bölümler arasında doğrusal olarak değişecektir, 500 değeri, bu konsantrasyonlara maruz kaldığında popülasyon için bir riskin olacağı sınır değerine tekabül edecektir. ICAP değerlerine göre, insanların maruz kaldığı MP10 konsantrasyon seviyelerini niteleyen kategoriler oluşturulmuştur.

7. Adım: Verileri Yerel Olarak Günlüğe Kaydetme

Verileri Yerel Olarak Günlüğe Kaydetme
Verileri Yerel Olarak Günlüğe Kaydetme
Verileri Yerel Olarak Günlüğe Kaydetme
Verileri Yerel Olarak Günlüğe Kaydetme
Verileri Yerel Olarak Günlüğe Kaydetme
Verileri Yerel Olarak Günlüğe Kaydetme

Bu noktada, sensörden veri yakalamak ve bunları AQI indeksi olan daha “okunabilir bir değere” dönüştürmek için tüm araçlara sahibiz.

Bu değerleri yakalamak için bir fonksiyon oluşturalım. Aralarındaki ortalamayı alarak sırayla 3 değer yakalayacağız:

def get_data(n=3):

sensor.sleep(sleep=Yanlış) pmt_2_5 = 0 pmt_10 = 0 time.sleep(10) i aralığında (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) dönüş pmt_2_5, pmt_10 Yukarıda test sonucunu görebilirsiniz. Ayrıca PM'nin sayısal değerlerini AQI dizininde dönüştürmek için bir fonksiyon yapalım.

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)) return aqi_2_5, aqi_10 her iki işleve sahip bir testin sonucunun üstünde. Ama onlarla ne yapmalı? En basit cevap, yakalanan verileri yerel bir dosyaya kaydederek kaydetmek için bir işlev oluşturmaktır.

def save_log():

open("BURADAKİ YOLUNUZ/air_quality.csv", "a") ile günlük olarak: dt = datetime.now() log.write("{}, {}, {}, {}, {}\n". format(dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close() Tek bir döngüyle, yerel dosyanızdaki verileri düzenli olarak, örneğin her dakika kaydedebilirsiniz.

süre(Doğru):

pmt_2_5, pmt_10 = get_data() aqi_2_5, aqi_10 = conv_aqi(pmt_2_5, pmt_10) deneyin: save_log() hariç: print ("[BİLGİ] veri günlüğünde hata") time.sleep(60) Her 60 saniyede bir, zaman damgası artı veriler yukarıda gördüğümüz gibi bu dosyaya "eklenecektir".

8. Adım: Bir Bulut Hizmetine Veri Gönderme

Bir Bulut Hizmetine Veri Gönderme
Bir Bulut Hizmetine Veri Gönderme

Bu noktada, sensörden veri yakalamayı ve bunları yerel bir CSV dosyasına kaydetmeyi öğrendik. Şimdi, bu verilerin bir IoT platformuna nasıl gönderileceğini görmenin zamanı geldi. Bu eğitimde ThingSpeak.com'u kullanacağız.

“ThingSpeak, REST ve MQTT API'lerini kullanarak şeylerden veri depolamak ve almak için açık kaynaklı bir Nesnelerin İnterneti (IoT) uygulamasıdır. ThingSpeak, sensör günlüğü uygulamalarının, konum izleme uygulamalarının ve durum güncellemeleriyle birlikte sosyal ağların oluşturulmasını sağlar.”

Öncelikle ThinkSpeak.com'da bir hesabınızın olması gerekir. Ardından, Kanal Kimliğini ve API Anahtarını Yazarak bir Kanal oluşturmak için talimatları izleyin.

Kanalı oluştururken, yukarıda gösterildiği gibi 8 alanın her birine hangi bilgilerin yükleneceğini de tanımlamanız gerekir (bizim durumumuzda sadece 4 tanesi kullanılacaktır).

9. Adım: MQTT Protokolü ve ThingSpeak Bağlantısı

MQTT Protokolü ve ThingSpeak Bağlantısı
MQTT Protokolü ve ThingSpeak Bağlantısı

MQTT, öncelikle bant genişliğini ve gücü kısıtlı cihazları kablosuz ağlar üzerinden bağlamak için geliştirilmiş bir yayınlama/abone olma mimarisidir. TCP/IP soketleri veya WebSockets üzerinden çalışan basit ve hafif bir protokoldür. WebSockets üzerinden MQTT, SSL ile güvence altına alınabilir. Yayınla/abone ol mimarisi, aygıtın sunucuyu sürekli olarak sorgulamasına gerek kalmadan mesajların istemci aygıtlara iletilmesini sağlar.

MQTT aracısı, iletişimin merkezi noktasıdır ve gönderenler ile doğru alıcılar arasındaki tüm mesajların gönderilmesinden sorumludur. İstemci, aracıya bağlanan ve bilgilere erişmek için konuları yayınlayabilen veya bunlara abone olabilen herhangi bir aygıttır. Bir konu, aracı için yönlendirme bilgilerini içerir. Mesaj göndermek isteyen her müşteri belirli bir konuya yayınlar ve mesaj almak isteyen her müşteri belirli bir konuya abone olur. Aracı, eşleşen konuyla ilgili tüm iletileri uygun istemcilere iletir.

ThingSpeak™, mqtt.thingspeak.com URL'sinde ve 1883 numaralı bağlantı noktasında bir MQTT aracısına sahiptir. ThingSpeak aracısı, hem MQTT yayınlamayı hem de MQTT aboneliğini destekler.

Bizim durumumuzda MQTT Publish kullanacağız.

Adım 10: MQTT Yayınlama

MQTT Yayınla
MQTT Yayınla

Başlamak için, MQTT protokolünün 3.1 ve 3.1.1 sürümlerini uygulayan Eclipse Paho MQTT Python istemci kitaplığını kuralım.

sudo pip kurulumu paho-mqtt

Ardından, paho kitaplığını içe aktaralım:

paho.mqtt.publish dosyasını yayın olarak içe aktar

ve Thingspeak kanalını ve MQTT protokolünü başlatın. Bu bağlantı yöntemi en basitidir ve en az sistem kaynağı gerektirir:

channelID = "KANAL KİMLİĞİNİZ"

apiKey = "YAZMA ANAHTARINIZ" konu = "kanallar/" + kanal kimliği + "/yayınla/" + apiKey mqttHost = "mqtt.thingspeak.com" Şimdi “yükümüzü” tanımlamalıyız

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

Ve bu kadar! buluta veri göndermeye başlamaya hazırız! Önceki döngü işlevini, ThingSpeak kısmını da içerecek şekilde yeniden yazalım.

# Her 1 dakikada bir tüm verileri ThingSpeak'e gönderme

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=" (pmt_10)+ "&field4=" + str(aqi_10) şunu deneyin: yayınla.single(konu, payload=tPayload, hostname=mqttHost, port=tPort, tls=tTLS, transport=tTransport) save_log() hariç: print ("[INFO] Veri gönderme hatası") time.sleep(60) Her şey yolundaysa, yukarıda gösterildiği gibi,thingspeak.com adresindeki kanalınızda da verilerin göründüğünü görmelisiniz.

11. Adım: Son Senaryo

Jupyter Notebook'un geliştirme ve raporlama için çok iyi bir araç olduğunu belirtmek önemlidir, ancak üretime koymak için bir kod oluşturmak için değildir. Şimdi yapmanız gereken, kodun ilgili kısmını alıp bir.py betiği oluşturup onu terminalinizde çalıştırmak.

Örneğin, şu komutla çalıştırmanız gereken “ts_air_quality_logger.py”:

piton 3 ts_air_quality_logger.py

Bu komut dosyası, Jupyter Notebook ve sds011.py, RPi_Air_Quality_Sensor adresindeki havuzumda bulunabilir.

Bu betiğin yalnızca test için uygun olduğunu unutmayın. En iyisi, son döngü içindeki gecikmeleri (kodu "duraklatmaya" koyan) kullanmamak, bunun yerine zamanlayıcıları kullanmaktır. Veya gerçek bir uygulama için en iyisi, Linux'un betiği crontab ile düzenli olarak yürütmek üzere programlanmış olması olan döngüyü kullanmamaktır.

Adım 12: Monitörü Dışarı Çıkarmak

Monitörü Dışarı Çıkarmak
Monitörü Dışarı Çıkarmak
Monitörü Dışarı Çıkarmak
Monitörü Dışarı Çıkarmak
Monitörü Dışarı Çıkarmak
Monitörü Dışarı Çıkarmak
Monitörü Dışarı Çıkarmak
Monitörü Dışarı Çıkarmak

Raspberry Pi Hava Kalitesi monitörüm çalıştığında, RPI'yi plastik bir kutunun içine monte ettim, sensörü dışarıda tuttum ve evimin dışına yerleştirdim.

İki deneyim yapıldı.

Adım 13: Benzinli Motor Yanması

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

Sensör, Lambretta'nın gaz çıkışından yaklaşık 1 m uzağa yerleştirildi ve motoru açıldı. Motor birkaç dakika çalıştı ve kapandı. Yukarıdaki günlük dosyasından aldığım sonuç. PM2.5'in motordan kaynaklanan en tehlikeli partikül olduğunu doğrulamak ilginç.

Adım 14: Odun Yakma

odun yakma
odun yakma
odun yakma
odun yakma

Günlük dosyasına baktığımızda, sensör verilerinin anlık "Menzil dışı" olduğunu ve AQI dönüştürme Kitaplığı tarafından iyi yakalanmadığını fark ettik, bu yüzden işlemek için önceki kodu değiştirdim:

def conv_aqi(pmt_2_5, pmt_10):

deneyin: 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 hariç: dönüş 600, 600 Bu durum sahada olabilir, ki bu sorun değil. Aslında, AQI'yi gerçekten elde etmek için hareketli ortalamayı kullanmanız gerektiğini unutmayın (en azından saatlik, ancak genellikle günlük).

Adım 15: Sonuç

Çözüm
Çözüm

Her zaman olduğu gibi, umarım bu proje diğerlerinin Elektronik ve Veri Biliminin heyecan verici dünyasına girmelerine yardımcı olabilir!

Ayrıntılar ve son kod için lütfen GitHub depomu ziyaret edin: RPi_Air_Quality_Sensor.

Dünyanın güneyinden selamlar!

Bir sonraki talimatımda görüşürüz!

Teşekkürler, Marcelo

Önerilen: