- Potrebne komponente
- Sharp senzor GP2Y1014AU0F
- Zaslonski modul OLED
- Shema vezja
- Gradnja vezja na Perf Board
- Pojasnilo kode za analizator kakovosti zraka
- Preizkušanje povezave senzorja Sharp GP2Y1014AU0F z Arduinom
Onesnaženost zraka je v številnih mestih glavna težava, indeks kakovosti zraka pa je vsak dan slabši. Po poročilu Svetovne zdravstvene organizacije je zaradi učinkov nevarnih delcev v zraku več ljudi prezgodaj usmrčenih kot zaradi prometnih nesreč. Po podatkih Agencije za varstvo okolja (EPA) je zrak v zaprtih prostorih lahko 2 do 5-krat bolj strupen kot zunanji zrak. Torej tukaj gradimo projekt za spremljanje kakovosti zraka z merjenjem gostote delcev prahu v zraku.
V nadaljevanju naših prejšnjih projektov, kot so detektor utekočinjenega naftnega plina, detektor dima in monitor kakovosti zraka, bomo tukaj povezali senzor Sharp GP2Y1014AU0F z Arduino Nano za merjenje gostote prahu v zraku. Za prikaz izmerjenih vrednosti se poleg senzorja za prah in Arduino Nano uporablja tudi zaslon OLED. Sharpov senzor za prah GP2Y1014AU0F je zelo učinkovit pri zaznavanju zelo drobnih delcev, kot je cigaretni dim. Zasnovan je za uporabo v čistilcih zraka in klimatskih napravah.
Potrebne komponente
- Arduino Nano
- Sharp senzor GP2Y1014AU0F
- 0,96-palčni zaslon SPI OLED
- Jumper žice
- 220 µf kondenzator
- 150 Ω upor
Sharp senzor GP2Y1014AU0F
Sharpov GP2Y1014AU0F je majhen šest-pinski analogni izhodni optični senzor za kakovost zraka / optični prah, zasnovan za zaznavanje prašnih delcev v zraku. Deluje na principu laserskega razprševanja. Znotraj senzorskega modula sta v bližini vstopne odprtine za zrak diagonalno razporejena infrardeča dioda in fotosenzor, kot je prikazano na spodnji sliki:
Ko zrak, ki vsebuje prašne delce, vstopi v senzorsko komoro, prašni delci razpršijo IR LED svetlobo proti foto detektorju. Intenzivnost razpršene svetlobe je odvisna od prašnih delcev. Več kot je prašnih delcev v zraku, večja je jakost svetlobe. Izhodna napetost na zatiču V OUT senzorja se spreminja glede na jakost razpršene svetlobe.
GP2Y1014AU0F Izhod senzorja:
Kot smo že omenili, ima senzor GP2Y1014AU0F 6-pinski priključek. Spodnja slika in tabela prikazuje dodelitve nožic za GP2Y1014AU0F:
S. ŠT. |
Pripnite ime |
Opis pin |
1. |
V-LED |
LED Vcc Pin. Priključite na 5V skozi 150Ω upor |
2. |
LED-GND |
LED ozemljitveni zatič. Povežite se z GND |
3. |
LED |
Uporablja se za vklop / izklop LED. Povežite se s katerim koli digitalnim zatičem Arduino |
4. |
S-GND |
Ozemljitveni zatič senzorja. Povežite se z GND v Arduinu |
5. |
V OUT |
Analogni izhodni zatič senzorja. Povežite se s katerim koli analognim zatičem |
6. |
V CC |
Pozitiven napajalni zatič. Priključite se na 5V Arduino |
Specifikacije senzorja GP2Y1014AU0F:
- Nizka poraba toka: 20mA max
- Tipična delovna napetost: 4,5 V do 5,5 V
- Najmanjša zaznavna velikost prahu: 0,5 µm
- Območje zaznavanja gostote prahu: do 580 ug / m 3
- Čas zaznavanja: Manj kot 1 sekunda
- Dimenzije: 1,81 x 1,18 x 0,69 "(46,0 x 30,0 x 17,6 mm)
Zaslonski modul OLED
OLED (organske diode, ki oddajajo svetlobo) je samosevalna tehnologija, izdelana tako, da med dva vodnika postavi vrsto organskih tankih filmov. Ko na te filme deluje električni tok, nastane močna svetloba. OLED uporabljajo enako tehnologijo kot televizorji, vendar imajo manj slikovnih pik kot pri večini naših televizorjev.
Za ta projekt uporabljamo enobarvni 7-pinski SSD1306 0,96-palčni OLED zaslon. Deluje lahko na treh različnih komunikacijskih protokolih: SPI 3 Wire način, SPI štirižični način in I2C način. Zatiči in njegove funkcije so razloženi v spodnji tabeli:
V prejšnjem članku smo podrobno obravnavali OLED in njegove vrste.
Pripnite ime |
Druga imena |
Opis |
Gnd |
Tla |
Ozemljitveni zatič modula |
Vdd |
Vcc, 5V |
Napajalni zatič (3-5V sprejemljivo) |
SCK |
D0, SCL, CLK |
Deluje kot zatič ure. Uporablja se za I2C in SPI |
SDA |
D1, MOSI |
Podatkovni zatič modula. Uporablja se za IIC in SPI |
OVE |
RST, PONASTAVI |
Ponastavi modul (uporabno med SPI) |
DC |
A0 |
Podatkovni ukazni zatič. Uporablja se za protokol SPI |
CS |
Chip Select |
Uporabno, če se po protokolu SPI uporablja več modulov |
Specifikacije OLED:
- Gonilna enota OLED: SSD1306
- Ločljivost: 128 x 64
- Vidni kot:> 160 °
- Vhodna napetost: 3.3V ~ 6V
- Barva piksla: modra
- Delovna temperatura: -30 ° C ~ 70 ° C
Na povezavi preberite več o OLED in njegovem povezovanju z različnimi mikrokrmilniki.
Shema vezja
Shema vezja za povezovanje ostrega senzorja GP2Y1014AU0F z Arduinom je podana spodaj:
Vezje je zelo preprosto, saj s Arduino Nano povezujemo samo senzor GP2Y10 in modul OLED Display. Senzor GP2Y10 in modul OLED zaslona sta napajana z + 5V in GND. Zatič V0 je povezan z zatičem A5 Arduino Nano. LED zatič senzorja je povezan z Arduinovim digitalnim zatičem12. Ker modul OLED Display uporablja komunikacijo SPI, smo vzpostavili komunikacijo SPI med modulom OLED in Arduino Nano. Povezave so prikazane v spodnji tabeli:
S. Št |
Zatič modula OLED |
Arduino Pin |
1. |
GND |
Tla |
2. |
VCC |
5V |
3. |
D0 |
10. |
4. |
D1 |
9. |
5. |
OVE |
13. |
6. |
DC |
11. |
7. |
CS |
12. |
S. Št |
Zatič senzorja |
Arduino Pin |
1. |
Vcc |
5V |
2. |
V O |
A5 |
3. |
S-GND |
GND |
4. |
LED |
7. |
5. |
LED-GND |
GND |
6. |
V-LED |
5V skozi 150Ω upor |
Gradnja vezja na Perf Board
Po spajkanju vseh komponent na ploščo za perf, bo videti nekako takole spodaj. Lahko pa ga zgradimo tudi na tabli. Senčnik GP2Y1014 sem prilepil na isto ploščo, s katero sem vmesnik povezal s senzorjem SDS011. Med spajkanjem poskrbite, da morajo biti žice za spajkanje med seboj dovolj oddaljene.
Pojasnilo kode za analizator kakovosti zraka
Popolna koda za ta projekt je podana na koncu dokumenta. Tukaj razlagamo nekatere pomembne dele kode.
Koda uporablja Adafruit_GFX , in Adafruit_SSD1306 knjižnice. Te knjižnice lahko prenesete iz upravitelja knjižnic v IDE Arduino in jih namestite od tam. Za to odprite Arduino IDE in pojdite na Sketch <Include Library <Manage Libraries . Zdaj poiščite Adafruit GFX in namestite Adafruit GFX knjižnico Adafruit.
Podobno namestite Adafruit knjižnice Adafruit SSD1306.
Po namestitvi knjižnic v Arduino IDE zaženite kodo tako, da vključite potrebne datoteke knjižnic. Senzor za prah ne potrebuje knjižnice, saj napetost beremo neposredno z analognega zatiča Arduino.
#include
Nato določite širino in višino OLED. V tem projektu uporabljamo 128 x 64 SPI OLED zaslon. Spremenljivki SCREEN_WIDTH in SCREEN_HEIGHT lahko spremenite glede na zaslon.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Nato določite komunikacijske nožice SPI, kamor je povezan OLED zaslon.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Nato ustvarite prikazni primerek Adafruit s prej definirano širino in višino s komunikacijskim protokolom SPI.
Zaslon Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Po tem določite zaznavala senzorjev prahu in vodilne zatiče. Sense pin je izhodni zatič senzorja za prah, ki se uporablja za odčitavanje napetostnih vrednosti, medtem ko led zatič služi za vklop / izklop IR Led.
int sensePin = A5; int ledPin = 7;
Zdaj znotraj funkcije setup () inicializirajte serijski monitor s hitrostjo prenosa 9600 za namene odpravljanja napak. Prav tako inicializirajte zaslon OLED s funkcijo start () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Znotraj funkcije zanke () preberite vrednosti napetosti z analognega zatiča 5 Arduino Nano. Najprej vklopite IR LED in nato počakajte 0,28 ms, preden odčitate izhodno napetost. Po tem odčitajte vrednosti napetosti z analognega zatiča. Ta postopek traja približno 40 do 50 mikrosekund, zato uvedite 40-mikrosekundno zakasnitev, preden izklopite senzor za prah. V skladu s specifikacijami je treba LED prižgati enkrat na 10 ms, zato počakajte na preostanek 10 ms cikla = 10000 - 280 - 40 = 9680 mikrosekund .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Nato v naslednjih vrsticah izračunajte gostoto prahu z uporabo izhodne napetosti in vrednosti signala.
sigVolt = outVo * (5/1024); nivo prahu = 0,17 * sigVolt - 0,1;
Po tem nastavite velikost besedila in barvo besedila s pomočjo setTextSize () in setTextColor () .
display.setTextSize (1); display.setTextColor (BELA);
Nato v naslednji vrstici z metodo setCursor (x, y) določite položaj, na katerem se besedilo začne. In na OLED zaslon natisnite vrednosti gostote prahu s funkcijo display.println () .
display.println ("Prah"); display.println ("Gostota"); display.setTextSize (3); display.println (dustLevel);
In zadnji, pokličite metodo display () za prikaz besedila na OLED zaslonu.
display.display (); display.clearDisplay ();
Preizkušanje povezave senzorja Sharp GP2Y1014AU0F z Arduinom
Ko sta strojna oprema in koda pripravljeni, je čas, da preizkusite senzor. Za to Arduino priključite na prenosni računalnik, izberite ploščo in vrata ter pritisnite gumb za prenos. Kot lahko vidite na spodnji sliki, bo na OLED zaslonu prikazana gostota prahu.
Celoten delujoči video in koda so navedeni spodaj. Upam, da ste uživali v vadnici in se naučili kaj koristnega. Če imate kakršna koli vprašanja, jih pustite v oddelku za komentarje ali uporabite druge forume za druga tehnična vprašanja.