- Gerekli Bileşenler
- Sharp GP2Y1014AU0F Sensörü
- OLED Ekran Modülü
- Devre şeması
- Devreyi Perf Board üzerinde Kurmak
- Hava Kalitesi Analizörü için Kod Açıklaması
- Sharp GP2Y1014AU0F Sensörünün Arduino ile Arayüzünü Test Etme
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ç mekan havası, dış havadan 2 ila 5 kat daha toksik olabilir. Bu yüzden burada, havadaki toz parçacıkları yoğunluğunu ölçerek hava kalitesini izlemek için bir proje oluşturuyoruz.
Dolayısıyla, LPG dedektörü, Duman dedektörü ve Hava Kalitesi Monitörü gibi önceki projelerimizin devamında, burada Havadaki Toz Yoğunluğunu ölçmek için Sharp GP2Y1014AU0F Sensörünü Arduino Nano ile arayüzleyeceğiz. Toz sensörü ve Arduino Nano'nun yanı sıra, ölçülen değerleri görüntülemek için bir OLED ekran da kullanılır. Sharp'ın GP2Y1014AU0F Toz Sensörü, sigara dumanı gibi çok ince partikülleri tespit etmede çok etkilidir. Hava temizleyicileri ve Klimalarda kullanılmak üzere tasarlanmıştır.
Gerekli Bileşenler
- Arduino Nano
- Sharp GP2Y1014AU0F Sensörü
- 0.96 'SPI OLED Ekran Modülü
- Atlama Telleri
- 220 µf Kapasitör
- 150 Ω Direnç
Sharp GP2Y1014AU0F Sensörü
Sharp'ın GP2Y1014AU0F'si, havadaki toz parçacıklarını algılamak için tasarlanmış küçük, altı pimli analog çıkışlı optik hava kalitesi / optik toz sensörüdür. Lazer saçılması prensibine göre çalışır. Sensör modülünün içinde, aşağıdaki resimde gösterildiği gibi hava giriş deliğinin yanında bir kızılötesi yayan diyot ve bir fotosensör çapraz olarak düzenlenmiştir:
Toz parçacıkları içeren hava sensör odasına girdiğinde, toz parçacıkları IR LED ışığını foto detektöre doğru dağıtır. Saçılan ışığın yoğunluğu toz parçacıklarına bağlıdır. Havada ne kadar çok toz parçacığı varsa, ışık yoğunluğu o kadar fazla olur. Sensörün V OUT pinindeki çıkış voltajı saçılan ışığın yoğunluğuna göre değişir.
GP2Y1014AU0F Sensör Pin Çıkışı:
Daha önce belirtildiği gibi, GP2Y1014AU0F sensörü 6 pimli bir konektörle birlikte gelir. Aşağıdaki şekil ve tablo GP2Y1014AU0F için pin atamalarını göstermektedir:
S. NO. |
Pin Adı |
Pin Açıklaması |
1 |
V-LED |
LED Vcc Pimi. 150Ω Direnç ile 5V'a bağlayın |
2 |
LED-GND |
LED Topraklama Pimi. GND'ye bağlanın |
3 |
LED |
LED'i Açmak / Kapatmak için kullanılır. Arduino'nun herhangi bir dijital pinine bağlanın |
4 |
S-GND |
Sensör Topraklama Pimi. Arduino'nun GND'sine bağlanın |
5 |
V OUT |
Sensör Analog Çıkış Pimi. Herhangi bir Analog Pin'e bağlanın |
6 |
V CC |
Pozitif Besleme Pimi. 5V Arduino'ya bağlanın |
GP2Y1014AU0F Sensör Özellikleri:
- Düşük Akım Tüketimi: 20mA max
- Tipik Çalışma Voltajı: 4.5V - 5.5V
- Algılanabilir Minimum Toz Boyutu: 0.5µm
- Toz Yoğunluğu Algılama Aralığı: 580 ug / m 3'e kadar
- Algılama Süresi: 1 saniyeden az
- Boyutlar: 1,81 x 1,18 x 0,69 '' (46,0 x 30,0 x 17,6 mm)
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:
OLED ve türlerini bir önceki makalede ayrıntılı olarak ele almıştık.
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 |
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.
Devre şeması
Sharp GP2Y1014AU0F Sensörünün Arduino ile Arayüzü için Devre Şeması aşağıda verilmiştir:
Sadece GP2Y10 Sensör ve OLED Ekran modülünü Arduino Nano ile bağladığımız için devre çok basittir. GP2Y10 Sensör ve OLED Ekran modülünün her ikisi de + 5V ve GND ile güçlendirilmiştir. V0 pini, Arduino Nano'nun A5 pini ile bağlanır. Sensörün LED pini Arduino'nun dijital pinine12 bağlanı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 |
S.No |
Sensör Pimi |
Arduino Pimi |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V ile 150Ω Direnç |
Devreyi Perf Board üzerinde Kurmak
Performans panosundaki tüm bileşenleri lehimledikten sonra, aşağıdaki gibi görünecektir. Ancak bir breadboard üzerine de inşa edilebilir. GP2Y1014 sensörünü, SDS011 sensörüne arayüz oluşturmak için kullandığım kartın üzerine lehimledim. Lehimleme yaparken, lehim tellerinizin birbirinden yeterince uzakta olduğundan emin olun.
Hava Kalitesi Analizö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 kullanır Adafruit_GFX , ve Adafruit_SSD1306 kütüphaneleri. Bu kitaplıklar Arduino IDE'deki Kitaplık Yöneticisinden indirilebilir ve oradan yüklenebilir. Bunun için Arduino IDE'yi açın ve Sketch <Include Library <Manage Libraries'e gidin . Şimdi aramak Adafruit GFX ve yükleyin Adafruit tarafından Adafruit GFX kütüphane.
Benzer şekilde, Adafruit tarafından 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. Gerilim değerlerini doğrudan Arduino'nun analog pininden okuduğumuz için toz sensörü herhangi bir kitaplık gerektirmez.
#Dahil etmek
Ardından OLED genişliğini ve yüksekliğini tanımlayın. Bu projede 128 × 64 SPI OLED ekran kullanıyoruz. Değişebilirsin SCREEN_WIDTH ve SCREEN_HEIGHT ekranınıza göre değişkenler.
#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);
Bundan sonra, Toz sensörlerini algılama ve led pinlerini tanımlayın. Sense pin, IR Led'i açıp kapamak için kullanılırken led pin kullanılırken toz sensörünün voltaj değerlerini okumak için kullanılan çıkış pinidir.
int sensePin = A5; int ledPin = 7;
Ş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ı başlatın.
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
İç döngü () işlev Arduino Nano analog pim 5 voltaj değerleri okuyun. İlk olarak, IR LED'i açın ve ardından çıkış voltajını okumadan önce 0,28 ms bekleyin. Bundan sonra analog pinden voltaj değerlerini okuyun. Bu işlem yaklaşık 40 ila 50 mikrosaniye sürer, bu nedenle toz sensörünün ledini kapatmadan önce 40 mikrosaniye bir gecikme uygulayın. Spesifikasyonlara göre, LED her 10 ms'de bir darbeli olmalıdır, bu nedenle 10 ms'lik döngünün kalanını = 10000 - 280 - 40 = 9680 mikrosaniye bekleyin.
digitalWrite (ledPin, DÜŞÜK); gecikme Mikrosaniye (280); outVo = analogRead (sensePin); gecikme Mikrosaniye (40); digitalWrite (ledPin, YÜKSEK); gecikme Mikrosaniye (9680);
Ardından sonraki satırlarda, çıkış voltajını ve sinyal değerini kullanarak Toz yoğunluğunu hesaplayın.
sigVolt = outVo * (5/1024); dustLevel = 0.17 * sigVolt - 0.1;
Bundan sonra setTextSize () ve setTextColor () kullanarak metin boyutunu ve metin rengini ayarlayın.
display.setTextSize (1); display.setTextColor (BEYAZ);
Ardından sonraki satırda setCursor (x, y) yöntemini kullanarak metnin başladığı konumu tanımlayın. Ve display.println () işlevini kullanarak OLED Ekran üzerindeki Toz Yoğunluğu Değerlerini yazdırın.
display.println ("Toz"); display.println ("Yoğunluk"); display.setTextSize (3); display.println (dustLevel);
Ve son olarak, metni OLED Ekranında görüntülemek için display () yöntemini çağırın.
display.display (); display.clearDisplay ();
Sharp GP2Y1014AU0F Sensörünün Arduino ile Arayüzünü Test Etme
Donanım ve kod hazır olduğunda, sensörü 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 de görebileceğiniz gibi OLED Ekranda Toz Yoğunluğu görüntülenecektir.
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.