- Komponen Diperlukan
- Sensor GP2Y1014AU0F tajam
- Modul Paparan OLED
- Rajah Litar
- Membina Litar di Perf Board
- Penjelasan Kod untuk Penganalisis Kualiti Udara
- Menguji Antaramuka Sensor Sharp GP2Y1014AU0F dengan Arduino
Pencemaran udara adalah masalah utama di banyak bandar dan indeks kualiti udara semakin buruk setiap hari. Menurut laporan Pertubuhan Kesihatan Sedunia, lebih banyak orang terbunuh sebelum waktunya akibat kesan zarah berbahaya yang muncul di udara daripada akibat kemalangan kereta. Menurut Badan Perlindungan Alam Sekitar (EPA), udara dalaman boleh menjadi 2 hingga 5 kali lebih beracun daripada udara luar. Oleh itu, di sini kita membina projek untuk memantau kualiti udara dengan mengukur kepadatan zarah debu di udara.
Oleh itu, sebagai kesinambungan dari projek-projek kami sebelumnya seperti LPG detector, Smoke detector, dan Air Quality Monitor, di sini kita akan menghubungkan Sharp GP2Y1014AU0F Sensor dengan Arduino Nano untuk mengukur Dust Density in Air. Selain sensor Dust dan Arduino Nano, paparan OLED juga digunakan untuk menampilkan nilai yang diukur. Sensor Debu GP2Y1014AU0F Sharp sangat berkesan dalam mengesan zarah yang sangat halus seperti asap rokok. Ia direka untuk digunakan dalam pembersih udara dan penghawa dingin.
Komponen Diperlukan
- Arduino Nano
- Sensor GP2Y1014AU0F tajam
- Modul Paparan OLED 0.96 'SPI
- Wayar Pelompat
- Kapasitor 220 µf
- Perintang 150 Ω
Sensor GP2Y1014AU0F tajam
Sharp's GP2Y1014AU0F adalah sensor kualiti optik output optik enam-pin kecil / sensor habuk optik yang direka untuk merasakan zarah debu di udara. Ia berfungsi berdasarkan prinsip penyerakan laser. Di dalam modul sensor, diod pemancar inframerah dan sensor cahaya disusun secara menyerong di dekat lubang masuk udara seperti yang ditunjukkan dalam gambar di bawah:
Apabila udara yang mengandungi zarah debu masuk ke ruang sensor, zarah debu menyebarkan cahaya LED IR ke arah pengesan foto. Keamatan cahaya yang tersebar bergantung pada zarah debu. Semakin banyak zarah debu di udara, semakin tinggi intensiti cahaya. Voltan output pada pin V OUT sensor berubah mengikut intensiti cahaya yang tersebar.
Pinout Sensor GP2Y1014AU0F:
Seperti yang disebutkan sebelumnya, sensor GP2Y1014AU0F dilengkapi dengan penyambung 6-pin. Gambar dan jadual di bawah menunjukkan penugasan pin untuk GP2Y1014AU0F:
S. TIADA. |
Nama Pin |
Huraian Pin |
1 |
V-LED |
Pin Vcc LED. Sambungkan ke Perintang 5V hingga 150Ω |
2 |
LED-GND |
Pin Tanah LED. Sambung ke GND |
3 |
LED |
Digunakan untuk Toggle LED On / Off. Sambungkan ke mana-mana pin digital Arduino |
4 |
S-GND |
Pin Ground Sensor. Sambung ke GND Arduino |
5 |
V KELUAR |
Pin Output Analog Sensor. Sambungkan ke mana-mana Pin Analog |
6 |
V CC |
Pin Bekalan Positif. Sambungkan ke Arduino 5V |
Spesifikasi Sensor GP2Y1014AU0F:
- Penggunaan Semasa Rendah: maksimum 20mA
- Voltan Operasi Khas: 4.5V hingga 5.5V
- Saiz Debu minimum yang dapat dikesan: 0.5µm
- Julat Sensing Density Density: Hingga 580 ug / m 3
- Masa Sensing: Kurang dari 1 Detik
- Dimensi: 1.81 x 1.18 x 0.69 "(46.0 x 30.0 x 17.6mm)
Modul Paparan OLED
OLED (Organic Light-Emitting Diodes) adalah teknologi pemancar cahaya diri, yang dibina dengan meletakkan serangkaian filem nipis organik di antara dua konduktor. Cahaya terang dihasilkan apabila arus elektrik digunakan pada filem-filem ini. OLED menggunakan teknologi yang sama dengan televisyen, tetapi mempunyai piksel lebih sedikit daripada di kebanyakan TV kami.
Untuk projek ini, kami menggunakan paparan OLED Monochrome 7-pin SSD1306 0.96 ”. Ia boleh berfungsi pada tiga protokol komunikasi yang berbeza: mod Wire SPI 3, mod empat wayar SPI, dan mod I2C. Pin dan fungsinya dijelaskan dalam jadual di bawah:
Kami telah membahas OLED dan jenisnya secara terperinci dalam artikel sebelumnya.
Nama Pin |
Nama lain |
Penerangan |
Gnd |
Tanah |
Pin bawah modul |
Vdd |
Vcc, 5V |
Pin kuasa (boleh tahan 3-5V) |
SCK |
D0, SCL, CLK |
Bertindak sebagai pin jam. Digunakan untuk I2C dan SPI |
SDA |
D1, MOSI |
Pin data modul. Digunakan untuk IIC dan SPI |
RES |
RST, RESET |
Tetapkan semula modul (berguna semasa SPI) |
DC |
A0 |
Pin Perintah Data. Digunakan untuk protokol SPI |
CS |
Pilih Cip |
Berguna apabila lebih daripada satu modul digunakan di bawah protokol SPI |
Spesifikasi OLED:
- IC Pemandu OLED: SSD1306
- Resolusi: 128 x 64
- Sudut Visual:> 160 °
- Voltan Input: 3.3V ~ 6V
- Warna Pixel: Biru
- Suhu kerja: -30 ° C ~ 70 ° C
Ketahui lebih lanjut mengenai OLED dan hubungannya dengan pengawal mikro yang berbeza dengan mengikuti pautan tersebut.
Rajah Litar
Diagram Litar untuk Interfacing Sharp GP2Y1014AU0F Sensor dengan Arduino diberikan di bawah:
Litarnya sangat mudah kerana kami hanya menghubungkan modul Sensor GP2Y10 dan OLED Display dengan Arduino Nano. Sensor GP2Y10 dan modul Paparan OLED kedua-duanya dikuasakan dengan + 5V dan GND. Pin V0 disambungkan dengan pin A5 Arduino Nano. Pin LED sensor disambungkan ke pin digital Arduino12. Oleh kerana modul OLED Display menggunakan komunikasi SPI, kami telah mewujudkan komunikasi SPI antara modul OLED dan Arduino Nano. Sambungan ditunjukkan dalam jadual di bawah:
S.No |
Pin Modul OLED |
Pin Arduino |
1 |
GND |
Tanah |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.No |
Pin Sensor |
Pin Arduino |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V Melalui Perintang 150Ω |
Membina Litar di Perf Board
Setelah menyolder semua komponen pada papan perf, ia akan kelihatan seperti di bawah. Tetapi ia juga boleh dibina di atas papan roti. Saya telah menyolder sensor GP2Y1014 pada papan yang sama dengan yang saya gunakan untuk menghubungkan sensor SDS011. Semasa menyolder, pastikan wayar pateri anda berada pada jarak yang cukup antara satu sama lain.
Penjelasan Kod untuk Penganalisis Kualiti Udara
Kod lengkap untuk projek ini diberikan di akhir dokumen. Di sini kami menerangkan beberapa bahagian penting kod.
Kod itu menggunakan perpustakaan Adafruit_GFX , dan Adafruit_SSD1306 . Perpustakaan ini boleh dimuat turun dari Pengurus Perpustakaan di Arduino IDE dan memasangnya dari sana. Untuk itu, buka Arduino IDE dan pergi ke Sketch <Include Library <Manage Libraries . Sekarang cari Adafruit GFX dan pasang perpustakaan Adafruit GFX oleh Adafruit.
Begitu juga, pasang perpustakaan Adafruit SSD1306 oleh Adafruit.
Setelah memasang perpustakaan ke Arduino IDE, mulakan kod dengan memasukkan fail perpustakaan yang diperlukan. Sensor habuk tidak memerlukan perpustakaan kerana kami membaca nilai voltan secara langsung dari pin analog Arduino.
#sertakan
Kemudian, tentukan lebar dan tinggi OLED. Dalam projek ini, kami menggunakan paparan OLED 128 × 64 SPI. Anda boleh mengubah pemboleh ubah SCREEN_WIDTH , dan SCREEN_HEIGHT mengikut paparan anda.
#tentukan SCREEN_WIDTH 128 #tentukan SCREEN_HEIGHT 64
Kemudian tentukan pin komunikasi SPI di mana Paparan OLED disambungkan.
#tentukan OLED_MOSI 9 #tentukan OLED_CLK 10 #tentukan OLED_DC 11 #tentukan OLED_CS 12 #tentukan OLED_RESET 13
Kemudian, buat contoh paparan Adafruit dengan lebar dan ketinggian yang ditentukan sebelumnya dengan protokol komunikasi SPI.
Paparan Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Selepas itu, tentukan deria sensor Dust dan pin led. Sense pin adalah pin output dari sensor Debu yang digunakan untuk membaca nilai voltan sementara pin led digunakan untuk menghidupkan / mematikan IR Led.
int sensePin = A5; int ledPin = 7;
Sekarang di dalam fungsi setup () , mulakan Monitor Serial pada kadar baud 9600 untuk tujuan penyahpepijatan. Juga, Memulakan paparan OLED dengan fungsi mula () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Di dalam fungsi gelung () , baca Nilai voltan dari pin analog 5 Arduino Nano. Pertama, hidupkan LED IR dan kemudian tunggu 0.28ms sebelum membaca voltan keluaran. Selepas itu, baca nilai voltan dari pin analog. Operasi ini memakan masa sekitar 40 hingga 50 mikrodetik, jadi kenalkan kelewatan 40 mikrodetik sebelum mematikan sensor debu yang dimatikan. Mengikut spesifikasi, LED harus dihidupkan setiap 10ms sekali, jadi tunggu sisa kitaran 10ms = 10000 - 280 - 40 = 9680 mikrodetik .
digitalWrite (ledPin, RENDAH); kelewatanMikrodetik (280); outVo = analogRead (sensePin); kelewatanMikrodetik (40); digitalWrite (ledPin, TINGGI); kelewatanMikrodetik (9680);
Kemudian pada baris seterusnya, hitung ketumpatan Debu menggunakan voltan output dan nilai isyarat.
sigVolt = outVo * (5/1024); dustLevel = 0.17 * sigVolt - 0.1;
Selepas itu, tetapkan ukuran teks dan warna teks menggunakan setTextSize () dan setTextColor () .
display.setTextSize (1); display.setTextColor (PUTIH);
Kemudian pada baris seterusnya, tentukan kedudukan di mana teks mula menggunakan kaedah setCursor (x, y) . Dan cetak Nilai Dens Density pada OLED Display menggunakan fungsi display.println () .
display.println ("Debu"); display.println ("Ketumpatan"); display.setTextSize (3); display.println (dustLevel);
Dan terakhir, panggil kaedah display () untuk memaparkan teks pada OLED Display.
paparan.display (); display.clearDisplay ();
Menguji Antaramuka Sensor Sharp GP2Y1014AU0F dengan Arduino
Setelah perkakasan dan kod siap, sudah tiba masanya untuk menguji sensor. Untuk itu, sambungkan Arduino ke komputer riba, pilih Papan dan Pelabuhan, dan tekan butang muat naik. Seperti yang anda lihat pada gambar di bawah, ia akan memaparkan Dust Density pada OLED Display.
Video dan kod kerja lengkap diberikan di bawah. Semoga anda menikmati tutorial dan mempelajari sesuatu yang berguna. Sekiranya anda mempunyai sebarang pertanyaan, tinggalkan di bahagian komen atau gunakan forum kami untuk pertanyaan teknikal yang lain.