- Gerekli Bileşenler
- Nova PM Sensör SDS011
- 0.96 'OLED Ekran Modülü
- Hava Kalitesi Analizörü için Devre Şeması
- Devreyi Perf Board üzerinde Kurmak
- Hava Kalitesi Monitörü için Kod Açıklaması
- Arduino Hava Kalitesi İzleme Testi
Hava kirliliği birçok şehirde önemli bir sorundur ve hava kalitesi endeksi her geçen gün daha da kötüye gidiyor. Dünya Sağlık Örgütü raporuna göre, havada bulunan tehlikeli partiküllerin etkisiyle araba kazalarından çok daha fazla insan vaktinden önce öldürülüyor. Çevre Koruma Ajansı'na (EPA) göre, iç ortam havası, dış havaya göre 2 ila 5 kat daha toksik olabilir. Bu yüzden burada, havadaki PM2.5 ve PM10 parçacıklarını ölçerek hava kalitesini izlemek için bir cihaz yapıyoruz .
Daha önce Hava kalitesi monitörü için MQ135 Gaz sensörünü ve havadaki toz yoğunluğunu ölçmek için Sharp GP2Y1014AU0F Sensörünü kullandık. Bu sefer Hava Kalitesi Analizörü oluşturmak için Arduino Nano ile bir SDS011 sensörü kullanıyoruz . SDS011 sensörü, havadaki PM2.5 ve PM10 parçacıklarının konsantrasyonlarını hesaplayabilir. Burada gerçek zamanlı PM2.5 ve PM 10 değerleri OLED ekranda görüntülenecektir.
Gerekli Bileşenler
- Arduino Nano
- Nova PM Sensör SDS011
- 0.96 'SPI OLED Ekran Modülü
- Atlama Telleri
Nova PM Sensör SDS011
SDS011 Sensörü, Nova Fitness tarafından geliştirilmiş çok yeni bir Hava Kalitesi Sensörüdür. Lazer saçılması prensibine göre çalışır ve partikül konsantrasyonunu havada 0.3 ila 10μm arasında alabilir. Bu sensör küçük bir fan, hava giriş valfi, Lazer diyot ve fotodiyottan oluşur. Hava, bir ışık kaynağının (Lazer) parçacıkları aydınlattığı ve saçılan ışığın bir fotodetektör tarafından sinyale dönüştürüldüğü hava girişinden girer. Bu sinyaller daha sonra yükseltilir ve PM2.5 ve PM10 partikül konsantrasyonunu elde etmek için işlenir.
SDS011 Sensör Özellikleri:
- Çıkış: PM2.5, PM10
- Ölçüm Aralığı: 0.0-999.9μg / m3
- Giriş Voltajı: 4.7V - 5.3V
- Maksimum Akım: 100mA
- Uyku Akımı: 2mA
- Tepki Süresi: 1 saniye
- Seri Veri Çıkış Frekansı: 1 kez / saniye
- Parçacık Çapı Çözünürlüğü: ≤ 0.3μm
- Göreli Hata:% 10
- Sıcaklık Aralığı: -20 ~ 50 ° C
0.96 'OLED Ekran Modülü
OLED (Organik Işık Yayan Diyotlar), iki iletken arasına bir dizi organik ince film yerleştirilerek oluşturulmuş kendinden ışık yayan bir teknolojidir. Bu filmlere elektrik akımı uygulandığında parlak bir ışık üretilir. OLED'ler televizyonlarla aynı teknolojiyi kullanıyor, ancak çoğu televizyonumuzdakinden daha az piksel içeriyor.
Bu proje için, Monokrom 7 pimli SSD1306 0,96 ”OLED ekran kullanıyoruz. Üç farklı iletişim Protokolü üzerinde çalışabilir: SPI 3 Tel modu, SPI dört tel modu ve I2C modu. Pimler ve işlevleri aşağıdaki tabloda açıklanmıştır:
Pin Adı |
Diğer isimler |
Açıklama |
Gnd |
Zemin |
Modülün topraklama pimi |
Vdd |
Vcc, 5V |
Güç pimi (3-5V tolere edilebilir) |
SCK |
D0, SCL, CLK |
Saat pimi görevi görür. Hem I2C hem de SPI için kullanılır |
SDA |
D1, MOSI |
Modülün veri pini. Hem IIC hem de SPI için kullanılır |
RES |
RST, RESET |
Modülü sıfırlar (SPI sırasında kullanışlıdır) |
DC |
A0 |
Veri Komutu pimi. SPI protokolü için kullanılır |
CS |
Çip Seçimi |
SPI protokolü altında birden fazla modül kullanıldığında kullanışlıdır |
Burada OLED ekranlar ve türleri hakkında tam bir Makaleyi ele aldık.
OLED Özellikleri:
- OLED Sürücü IC: SSD1306
- Çözünürlük: 128 x 64
- Görsel Açı:> 160 °
- Giriş Voltajı: 3.3V ~ 6V
- Piksel Rengi: Mavi
- Çalışma sıcaklığı: -30 ° C ~ 70 ° C
Bağlantıyı takip ederek OLED ve farklı mikro denetleyicilerle arabirimi hakkında daha fazla bilgi edinin.
Hava Kalitesi Analizörü için Devre Şeması
Arduino kullanarak PM2.5 ve PM10 parçacıklarını ölçmek için devre şeması çok basittir ve aşağıda verilmiştir.
SDS011 Sensör ve OLED Ekran modülünün her ikisi de + 5V ve GND ile güçlendirilmiştir. SDS011'in verici ve Alıcı pinleri Arduino Nano'nun D3 ve D4 pinlerine bağlıdır. OLED Ekran modülü SPI iletişimini kullandığından, OLED modülü ile Arduino Nano arasında bir SPI iletişimi kurduk. Bağlantılar aşağıdaki tabloda gösterilmektedir:
S.No |
OLED Modül Pimi |
Arduino Pimi |
1 |
GND |
Zemin |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
Devreyi Perf Board üzerinde Kurmak
Ayrıca düzgün görünmesi için mükemmel panodaki tüm bileşenleri lehimledim. Ancak bunları bir breadboard üzerinde de yapabilirsiniz. Yaptığım panolar aşağıda. Lehimleme sırasında telleri ayırmadığınızdan emin olun. Lehimlediğim performans kartı aşağıda gösterilmiştir:
Hava Kalitesi Monitörü için Kod Açıklaması
Bu projenin tam kodu belgenin sonunda verilmiştir. Burada kodun bazı önemli kısımlarını açıklıyoruz.
Kod kullanan SDS011, Adafruit_GFX , ve Adafruit_SSD1306 kütüphaneleri. Bu kitaplıklar Arduino IDE'deki Kitaplık Yöneticisinden indirilebilir ve buradan kurulabilir. Bunun için Arduino IDE'yi açın ve Sketch> Include Library> Manage Libraries'e gidin . Şimdi SDS011'i arayın ve R. Zschiegner tarafından hazırlanan SDS Sensör kitaplığını kurun.
Benzer şekilde, Adafruit tarafından Adafruit GFX ve Adafruit SSD1306 kitaplıklarını yükleyin.
Kitaplıkları Arduino IDE'ye yükledikten sonra, gerekli kitaplık dosyalarını ekleyerek kodu başlatın.
#Dahil etmek
Sonraki satırlarda, PM10 ve PM2.5 değerlerini saklamak için iki değişken tanımlayın.
şamandıra p10, p25;
Ardından OLED genişliğini ve yüksekliğini tanımlayın. Bu projede 128 × 64 SPI OLED ekran kullanıyoruz. Bu SCREEN_WIDTH ve SCREEN_HEIGHT değişkenlerini ekranınıza göre değiştirebilirsiniz.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Ardından OLED Ekranın bağlandığı SPI iletişim pinlerini tanımlayın.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Ardından, SPI iletişim protokolüyle daha önce tanımlanan genişlik ve yüksekliğe sahip bir Adafruit görüntü örneği oluşturun.
Adafruit_SSD1306 ekranı (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Şimdi setup () işlevinin içinde, hata ayıklama amacıyla Seri Monitörü 9600 baud hızında başlatın. Ayrıca, begin () işlevi ile OLED ekranını ve SDS011 sensörünü başlatın.
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Boş döngü () içinde, SDS011 sensöründen PM10 ve PM2.5 değerlerini okuyun ve okumaları bir seri monitörde yazdırın.
geçersiz döngü () {hata = my_sds.read (& p25, & p10); eğer (! error) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + Dize (p10));
Bundan sonra setTextSize () ve setTextColor () kullanarak metin boyutunu ve metin rengini ayarlayın.
display.setTextSize (2); display.setTextColor (BEYAZ);
Ardından sonraki satırda, setCursor (x, y) yöntemini kullanarak metne başlamak için konumu tanımlayın. Burada PM2.5 ve PM10 değerlerini OLED ekranında göstereceğiz, böylece ilk satır (0,15) ile başlarken ikinci satır (0, 40) koordinatlarında başlar.
display.setCursor (0,15); display.println ("PM2.5"); display.setCursor (67,15); display.println (p25); display.setCursor (0,40); display.println ("PM10"); display.setCursor (67,40); display.println (p10);
Son olarak, metni OLED Ekranda görüntülemek için display () yöntemini çağırın.
display.display (); display.clearDisplay ();
Arduino Hava Kalitesi İzleme Testi
Donanım ve kod hazır olduğunda, cihazı test etme zamanı gelmiştir. Bunun için Arduino'yu dizüstü bilgisayara bağlayın, Board ve Port'u seçin ve yükleme düğmesine basın. Aşağıdaki resimde görebileceğiniz gibi OLED Ekran üzerinde PM2.5 ve PM10 değerlerini gösterecektir.
Tam çalışma videosu ve kodu aşağıda verilmiştir. Umarım öğreticiden keyif almışsınızdır ve yararlı bir şeyler öğrenmişsinizdir. Herhangi bir sorunuz varsa, yorum bölümünde bırakın veya diğer teknik sorular için forumlarımızı kullanın.