- Kinakailangan ang Mga Bahagi
- Biglang GP2Y1014AU0F Sensor
- OLED Display Module
- Diagram ng Circuit
- Pagbuo ng Circuit on Perf Board
- Paliwanag sa Code para sa Air Quality Analyzer
- Pagsubok sa Interfacing ng Sharp GP2Y1014AU0F Sensor kasama si Arduino
Ang polusyon sa hangin ay isang pangunahing isyu sa maraming mga lungsod at ang index ng kalidad ng hangin ay lumalala araw-araw. Ayon sa ulat ng World Health Organization, maraming tao ang napatay ng maaga sa mga epekto ng mapanganib na mga maliit na butil na ipinakita sa hangin kaysa sa mga aksidente sa sasakyan. Ayon sa Environmental Protection Agency (EPA), ang panloob na hangin ay maaaring 2 hanggang 5 beses na mas nakakalason kaysa sa panlabas na hangin. Kaya dito nagtatayo kami ng isang proyekto upang subaybayan ang kalidad ng hangin sa pamamagitan ng pagsukat ng density ng mga dust particle sa hangin.
Kaya't sa pagpapatuloy ng aming mga nakaraang proyekto tulad ng LPG detector, Smoke detector, at Air Quality Monitor, narito sasabihin namin ang Sharp GP2Y1014AU0F Sensor kasama si Arduino Nano upang masukat ang Dust Density in Air. Bukod sa sensor ng Dust at Arduino Nano, ginagamit din ang isang OLED display upang maipakita ang mga sinusukat na halaga. Ang Shar2's GP2Y1014AU0F Dust Sensor ay napaka epektibo sa pagtuklas ng napakahusay na mga particle tulad ng usok ng sigarilyo. Ito ay dinisenyo para magamit sa Air purifiers at Air conditioner.
Kinakailangan ang Mga Bahagi
- Arduino Nano
- Biglang GP2Y1014AU0F Sensor
- 0.96 'SPI OLED Display Module
- Jumper Wires
- 220 µf Capacitor
- 150 Ω Resistor
Biglang GP2Y1014AU0F Sensor
Ang Shar2's GP2Y1014AU0F ay isang maliit na anim na pin na analog output na kalidad ng optical air / optical dust sensor na idinisenyo upang maunawaan ang mga dust dust sa hangin. Gumagana ito sa prinsipyo ng pagsabog ng laser. Sa loob ng module ng sensor, isang infrared emitting diode at isang photosensor ay nakaayos na pahilis malapit sa butas ng papasok ng hangin tulad ng ipinakita sa imaheng nasa ibaba:
Kapag ang hangin na naglalaman ng mga dust particle ay pumasok sa silid ng sensor, ang mga dust particle ay nagkalat ang IR LED light patungo sa photo-detector. Ang tindi ng nakakalat na ilaw ay nakasalalay sa mga dust particle. Ang mas maraming mga dust particle sa hangin, mas malaki ang tindi ng ilaw. Ang boltahe ng output sa V OUT na pin ng sensor ay nagbabago ayon sa tindi ng nakakalat na ilaw.
GP2Y1014AU0F Sensor Pinout:
Tulad ng nabanggit kanina, ang sensor ng GP2Y1014AU0F ay may kasamang 6-pin na konektor. Ipinapakita ng numero sa ibaba at talahanayan ang mga takdang-pin para sa GP2Y1014AU0F:
S. HINDI |
Pangalan ng Pin |
Paglalarawan ng Pin |
1 |
V-LED |
LED Vcc Pin. Kumonekta sa 5V sa pamamagitan ng 150Ω Resistor |
2 |
LED-GND |
LED Ground Pin. Kumonekta sa GND |
3 |
LED |
Ginamit upang I-toggle ang LED On / Off. Kumonekta sa anumang digital pin ng Arduino |
4 |
S-GND |
Sensor Ground Pin. Kumonekta sa GND ng Arduino |
5 |
V OUT |
Pin ng Output ng Sensor ng Analog. Kumonekta sa anumang Analog Pin |
6 |
V CC |
Positibong Supply Pin. Kumonekta sa 5V ng Arduino |
Mga pagtutukoy ng GP2Y1014AU0F Sensor:
- Mababang Kasalukuyang Pagkonsumo: 20mA max
- Karaniwang Boltahe sa Pagpapatakbo: 4.5V hanggang 5.5V
- Minimum na Natutukoy na Laki ng Alikabok: 0.5µm
- Saklaw ng Sensing ng Dustity ng Dustity: Hanggang sa 580 ug / m 3
- Oras ng Pagdamdam: Mas mababa sa 1 Segundo
- Mga Dimensyon: 1.81 x 1.18 x 0.69 "(46.0 x 30.0 x 17.6mm)
OLED Display Module
Ang OLED (Organic Light-Emitting Diodes) ay isang teknolohiyang nagpapalabas ng ilaw, na itinayo sa pamamagitan ng paglalagay ng isang serye ng mga organikong manipis na pelikula sa pagitan ng dalawang conductor. Ang isang maliwanag na ilaw ay ginawa kapag ang isang kasalukuyang kuryente ay inilalapat sa mga pelikulang ito. Gumagamit ang OLED ng parehong teknolohiya sa mga telebisyon, ngunit may mas kaunting mga pixel kaysa sa karamihan sa aming mga TV.
Para sa proyektong ito, gumagamit kami ng isang display na Monochrome 7-pin SSD1306 0.96 ”OLED. Maaari itong gumana sa tatlong magkakaibang Mga Protocol ng komunikasyon: SPI 3 Wire mode, SPI mode na apat na kawad, at I2C mode. Ang mga pin at mga pag-andar nito ay ipinaliwanag sa talahanayan sa ibaba:
Natakpan na namin ang OLED at ang mga uri nito sa mga detalye sa nakaraang artikulo.
Pangalan ng Pin |
Ibang pangalan |
Paglalarawan |
Gnd |
Lupa |
Ground pin ng modyul |
Vdd |
Vcc, 5V |
Power pin (3-5V matitiis) |
SCK |
D0, SCL, CLK |
Gumagawa bilang pin ng orasan. Ginamit para sa parehong I2C at SPI |
SDA |
D1, MOSI |
Data pin ng modyul. Ginamit para sa parehong IIC at SPI |
RES |
RST, I-reset |
I-reset ang module (kapaki-pakinabang sa panahon ng SPI) |
DC |
A0 |
Data Command pin. Ginamit para sa SPI protocol |
CS |
Piliin ang Chip |
Kapaki-pakinabang kapag higit sa isang module ang ginamit sa ilalim ng SPI protocol |
Mga pagtutukoy ng OLED:
- OLED Driver IC: SSD1306
- Resolusyon: 128 x 64
- Angulo ng Biswal:> 160 °
- Boltahe ng Pag-input: 3.3V ~ 6V
- Kulay ng Pixel: Asul
- Paggawa ng temperatura: -30 ° C ~ 70 ° C
Matuto nang higit pa tungkol sa OLED at ang pag-interfaced nito sa iba't ibang mga microcontroller sa pamamagitan ng pagsunod sa link.
Diagram ng Circuit
Ang Circuit Diagram para sa Interfacing Sharp GP2Y1014AU0F Sensor na may Arduino ay ibinibigay sa ibaba:
Napakadali ng circuit dahil kumokonekta lamang kami sa GP2Y10 Sensor at OLED Display module kay Arduino Nano. Ang module ng GP2Y10 Sensor at OLED Display ay parehong pinalakas ng + 5V at GND. Ang V0 pin ay konektado sa A5 pin ng Arduino Nano. Ang LED pin ng sensor ay konektado sa digital pin12 ng Arduino. Dahil ang module ng OLED Display ay gumagamit ng komunikasyon sa SPI, nagtaguyod kami ng isang komunikasyon sa SPI sa pagitan ng OLED module at Arduino Nano. Ang mga koneksyon ay ipinapakita sa talahanayan sa ibaba:
S.Hindi |
OLED Module Pin |
Arduino Pin |
1 |
GND |
Lupa |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.Hindi |
Sensor Pin |
Arduino Pin |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V Sa pamamagitan ng 150Ω Resistor |
Pagbuo ng Circuit on Perf Board
Matapos ang paghihinang ng lahat ng mga bahagi sa perf board, magkakaroon ito ng hitsura sa ibaba. Ngunit maaari rin itong maitayo sa isang breadboard. Na-solder ko ang sensor ng GP2Y1014 sa parehong board na ginamit ko upang i-interface ang sensor ng SDS011. Habang naghihinang, siguraduhin na ang iyong mga wire ng panghinang ay dapat na may sapat na distansya mula sa bawat isa.
Paliwanag sa Code para sa Air Quality Analyzer
Ang kumpletong code para sa proyektong ito ay ibinibigay sa dulo ng dokumento. Narito ipinapaliwanag namin ang ilang mahahalagang bahagi ng code.
Gumagamit ang code ng mga aklatan ng Adafruit_GFX , at Adafruit_SSD1306 . Ang mga aklatan na ito ay maaaring ma-download mula sa Library Manager sa Arduino IDE at mai-install ito mula doon. Para doon, buksan ang Arduino IDE at pumunta sa Sketch <Isama ang Library <Pamahalaan ang Mga Aklatan . Maghanap ngayon para sa Adafruit GFX at i-install ang Adafruit GFX library ng Adafruit.
Katulad nito, i-install ang mga aklatan ng Adafruit SSD1306 ng Adafruit.
Matapos mai-install ang mga aklatan sa Arduino IDE, simulan ang code sa pamamagitan ng pagsasama ng mga kinakailangang file ng mga library. Ang dust sensor ay hindi nangangailangan ng anumang library habang binabasa namin ang mga halaga ng boltahe nang direkta mula sa analog pin ng Arduino.
# isama
Pagkatapos, tukuyin ang lapad at taas ng OLED. Sa proyektong ito, gumagamit kami ng isang 128 × 64 SPI OLED display. Maaari mong baguhin ang mga variable ng SCREEN_WIDTH , at SCREEN_HEIGHT ayon sa iyong display.
# tukuyin ang SCREEN_WIDTH 128 # tukuyin ang SCREEN_HEIGHT 64
Pagkatapos tukuyin ang mga pin ng komunikasyon ng SPI kung saan nakakonekta ang OLED Display.
#define OLED_MOSI 9 # tukuyin ang OLED_CLK 10 # tukuyin ang OLED_DC 11 # tukuyin ang OLED_CS 12 # tukuyin ang OLED_RESET 13
Pagkatapos, lumikha ng isang halimbawa ng pagpapakita ng Adafruit na may lapad at taas na tinukoy nang mas maaga sa protocol ng komunikasyon ng SPI.
Display ng Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Pagkatapos nito, tukuyin ang kahulugan ng Dust sensors at humantong pin. Ang Sense pin ay ang output pin ng Dust sensor na ginagamit upang basahin ang mga halaga ng boltahe habang ang led pin ay ginagamit upang i-on / i-off ang IR Led.
int sensePin = A5; int ledPin = 7;
Sa loob ng pag- andar ng pag- setup () , ipasimula ang Serial Monitor sa isang rate ng baud na 9600 para sa mga layuning pag-debug. Gayundin, ipasimula ang pagpapakita ng OLED sa pagsisimula ng () pagpapaandar.
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Sa loob ng pag- andar ng loop () , basahin ang Mga Halaga ng boltahe mula sa analog pin 5 ng Arduino Nano. Una, i-on ang IR LED at pagkatapos maghintay para sa 0.28ms bago kumuha ng pagbabasa ng output boltahe. Pagkatapos nito, basahin ang mga halaga ng boltahe mula sa analog pin. Ang operasyon na ito ay tumatagal ng halos 40 hanggang 50 microseconds, kaya ipakilala ang isang pagkaantala ng 40-microsecond bago i-off ang dust sensor. Ayon sa mga pagtutukoy, ang LED ay dapat na pulsed sa isang beses bawat 10ms, kaya maghintay para sa natitirang 10ms cycle = 10000 - 280 - 40 = 9680 microseconds .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Pagkatapos sa mga susunod na linya, kalkulahin ang Dust density gamit ang output boltahe at halaga ng signal.
sigVolt = outVo * (5/1024); dustLevel = 0.17 * sigVolt - 0.1;
Pagkatapos nito, itakda ang laki ng teksto at kulay ng teksto gamit ang setTextSize () at setTextColor () .
display.setTextSize (1); display.setTextColor (PUTI);
Pagkatapos sa susunod na linya, tukuyin ang posisyon kung saan nagsisimula ang teksto gamit ang setCursor (x, y) na pamamaraan. At i-print ang Mga Halaga ng Dustity Dustity sa OLED Display gamit ang display.println () function.
display.println ("Alikabok"); display.println ("Density"); display.setTextSize (3); display.println (dustLevel);
At sa huli, tawagan ang paraan ng pagpapakita () upang maipakita ang teksto sa OLED Display.
display.display (); display.clearDisplay ();
Pagsubok sa Interfacing ng Sharp GP2Y1014AU0F Sensor kasama si Arduino
Kapag handa na ang hardware at code, oras na upang subukan ang sensor. Para doon, ikonekta ang Arduino sa laptop, piliin ang Lupon at Port, at pindutin ang pindutan ng pag-upload. Tulad ng nakikita mo sa larawan sa ibaba, ipapakita nito ang Dustity Dustity sa OLED Display.
Ang kumpletong gumaganang video at code ay ibinibigay sa ibaba. Inaasahan kong nasiyahan ka sa tutorial at natutunan ang isang bagay na kapaki-pakinabang. Kung mayroon kang anumang mga katanungan, iwanan ang mga ito sa seksyon ng komento o gamitin ang aming mga forum para sa iba pang mga teknikal na query.