- Tarvittavat komponentit
- Sharp GP2Y1014AU0F -anturi
- OLED-näyttömoduuli
- Piirikaavio
- Piirin rakentaminen Perf Boardille
- Koodiselvitys ilmanlaadun analysaattorille
- Sharp GP2Y1014AU0F -anturin ja Arduinon rajapinnan testaaminen
Ilmansaasteet ovat tärkeä asia monissa kaupungeissa, ja ilmanlaatuindeksi pahenee joka päivä. Maailman terveysjärjestön raportin mukaan ilmassa olevien vaarallisten hiukkasten vaikutukset kuolevat ennenaikaisesti enemmän ihmisiä kuin auto-onnettomuuksissa. Ympäristönsuojeluviraston (EPA) mukaan sisäilma voi olla 2-5 kertaa myrkyllisempi kuin ulkoilma. Joten tässä rakennamme projektin ilmanlaadun seuraamiseksi mittaamalla pölyhiukkasten tiheys ilmassa.
Joten jatkaaksemme aiempia hankkeitamme, kuten nestekaasunilmaisinta, savunilmaisinta ja ilmanlaadunvalvontaa, liitämme Sharp GP2Y1014AU0F -anturin Arduino nanoon mittaamaan ilman pölytiheyttä. Pölyanturin ja Arduino Nanon lisäksi OLED-näyttöä käytetään myös mitattujen arvojen näyttämiseen. Sharpin GP2Y1014AU0F-pölyanturi on erittäin tehokas erittäin hienojen hiukkasten, kuten tupakansavun, havaitsemiseen. Se on suunniteltu käytettäväksi ilmanpuhdistimissa ja ilmastointilaitteissa.
Tarvittavat komponentit
- Arduino Nano
- Sharp GP2Y1014AU0F -anturi
- 0,96 tuuman SPI OLED -näyttömoduuli
- Neulalangat
- 220 µf kondensaattori
- 150 Ω vastus
Sharp GP2Y1014AU0F -anturi
Sharpin GP2Y1014AU0F on pieni 6-nastainen analoginen ulostulon optinen ilmanlaatu / optinen pölyanturi, joka on suunniteltu havaitsemaan ilman pölyhiukkasia. Se toimii lasersironnan periaatteella. Anturimoduulin sisällä infrapunaa lähettävä diodi ja valotunnistin on järjestetty vinosti lähellä ilmanottoaukkoa, kuten alla olevassa kuvassa näkyy:
Kun pölyhiukkasia sisältävä ilma pääsee anturikammioon, pölyhiukkaset sirottavat IR-LED-valon kohti valotunnistinta. Hajavalon voimakkuus riippuu pölyhiukkasista. Mitä enemmän pölyhiukkasia ilmassa on, sitä suurempi valon voimakkuus. Lähtöjännite anturin V OUT -tapissa muuttuu hajavalon voimakkuuden mukaan.
GP2Y1014AU0F-anturin pinout:
Kuten aiemmin mainittiin, GP2Y1014AU0F-anturissa on 6-napainen liitin. Alla oleva kuva ja taulukko esittävät GP2Y1014AU0F: n pin-määritykset:
S. EI. |
PIN-nimi |
Nastan kuvaus |
1 |
V-LED |
LED Vcc-tappi. Liitä 5V: n kautta 150Ω: n vastukseen |
2 |
LED-GND |
LED-maadoitustappi. Yhdistä GND: hen |
3 |
LED |
Käytetään kytkemään LED päälle / pois. Yhdistä mihin tahansa Arduinon digitaaliseen nastaan |
4 |
S-GND |
Anturin maadoitettu tappi. Yhdistä Arduinon GND: hen |
5 |
V OUT |
Anturin analoginen lähtöliitin. Yhdistä mihin tahansa analogiseen tapiin |
6 |
V CC |
Positiivinen syöttötappi. Yhdistä 5 V Arduinoon |
GP2Y1014AU0F-anturin tekniset tiedot:
- Pieni virrankulutus: enintään 20 mA
- Tyypillinen käyttöjännite: 4,5 - 5,5 V
- Pienin havaittavissa oleva pölyn koko: 0,5 µm
- Pölyn tiheyden tunnistusalue: Jopa 580 ug / m 3
- Tunnistusaika: Alle 1 sekunti
- Mitat: 1,81 x 1,18 x 0,69 '' (46,0 x 30,0 x 17,6 mm)
OLED-näyttömoduuli
OLED (Organic Light-Emitting Diodes) on itse valoa lähettävä tekniikka, joka on rakennettu asettamalla sarja orgaanisia ohuita kalvoja kahden johtimen väliin. Kirkas valo syntyy, kun sähkövirta kohdistetaan näihin kalvoihin. OLED-laitteet käyttävät samaa tekniikkaa kuin televisiot, mutta niissä on vähemmän pikseleitä kuin useimmissa televisioissamme.
Tässä projektissa käytämme yksiväristä 7-nastaista SSD1306 0,96 tuuman OLED-näyttöä. Se voi toimia kolmella eri tiedonsiirtoprotokollalla: SPI 3 -johdotila, nelijohtiminen SPI-tila ja I2C-tila. Nastat ja sen toiminnot on selitetty alla olevassa taulukossa:
Olemme jo käsitelleet OLED: ää ja sen tyyppejä yksityiskohtaisesti edellisessä artikkelissa.
PIN-nimi |
Muut nimet |
Kuvaus |
Gnd |
Maa |
Moduulin maadoitettu tappi |
Vdd |
Vcc, 5 V |
Virtatappi (3-5V siedettävä) |
SCK |
D0, SCL, CLK |
Toimii kellotapina. Käytetään sekä I2C: lle että SPI: lle |
SDA |
D1, MOSI |
Moduulin datanasta. Käytetään sekä IIC: lle että SPI: lle |
RES |
RST, NOLLAA |
Nollaa moduulin (hyödyllinen SPI: n aikana) |
DC |
A0 |
Data Command -tappi. Käytetään SPI-protokollaan |
CS |
Sirun valinta |
Hyödyllinen, kun SPI-protokollassa käytetään useampaa kuin yhtä moduulia |
OLED-tekniset tiedot:
- OLED-ohjaimen IC: SSD1306
- Tarkkuus: 128 x 64
- Visuaalinen kulma:> 160 °
- Tulojännite: 3,3 V ~ 6 V
- Pikselin väri: sininen
- Käyttölämpötila: -30 ° C ~ 70 ° C
Lue lisää OLED: stä ja sen liitännöistä eri mikro-ohjaimiin linkkiä seuraamalla.
Piirikaavio
Piirikaavio liitettävän Sharp GP2Y1014AU0F -anturin ja Arduinon välillä on annettu alla:
Piiri on hyvin yksinkertainen, koska yhdistämme vain GP2Y10-anturin ja OLED-näyttömoduulin Arduino nanoon. GP2Y10-anturi ja OLED-näyttömoduuli saavat virran + 5 V: lla ja GND: llä. V0-nasta on kytketty Arduino nanon A5-nastaan. Anturin LED-tappi on kytketty Arduinon digitaaliseen nastaan12. Koska OLED-näyttömoduuli käyttää SPI-viestintää, olemme perustaneet SPI-tiedonsiirron OLED-moduulin ja Arduino Nanon välille. Liitännät on esitetty alla olevassa taulukossa:
S. ei |
OLED-moduulin tappi |
Arduino Pin |
1 |
GND |
Maa |
2 |
VCC |
5 V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S. ei |
Anturin tappi |
Arduino Pin |
1 |
Vcc |
5 V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V 150Ω: n kautta |
Piirin rakentaminen Perf Boardille
Juotettuaan kaikki komponentit perf-levylle, se näyttää jotain alla olevalta. Mutta se voidaan rakentaa myös leipälaudalle. Olen juotettu GP2Y1014-anturi samalle levylle, jolla käytin SDS011-anturin liitäntää. Juottaessasi varmista, että juotosjohtimien on oltava riittävän kaukana toisistaan.
Koodiselvitys ilmanlaadun analysaattorille
Tämän projektin täydellinen koodi on asiakirjan lopussa. Tässä selitämme joitain tärkeitä koodin osia.
Koodi käyttää Adafruit_GFX , ja Adafruit_SSD1306 kirjastot. Nämä kirjastot voidaan ladata Arduino IDE: n Library Managerista ja asentaa se sieltä. Tätä varten avaa Arduino IDE ja siirry kohtaan Luonnos <Sisällytä kirjasto <Hallitse kirjastoja . Etsi nyt Adafruit GFX ja asenna Adafruit GFX -kirjasto.
Asenna vastaavasti Adafruit SSD1306 -kirjastot.
Kun olet asentanut kirjastot Arduino IDE -ohjelmaan, käynnistä koodi sisällyttämällä tarvittavat kirjastotiedostot. Pölyanturi ei vaadi kirjastoa, koska luemme jännitearvot suoraan Arduinon analogisesta nastasta.
#sisältää
Määritä sitten OLED-leveys ja -korkeus. Tässä projektissa käytämme 128 × 64 SPI OLED -näyttöä. Voit muuttaa muuttujia SCREEN_WIDTH ja SCREEN_HEIGHT näytön mukaan.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Määritä sitten SPI-tiedonsiirtonastat, joihin OLED-näyttö on kytketty.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Luo sitten Adafruit-näyttöesimerkki, jonka leveys ja korkeus on määritelty aiemmin SPI-yhteyskäytännöllä.
Adafruit_SSD1306-näyttö (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Määritä sen jälkeen pölyantureiden tunnistus ja led-nastat. Sense pin on pölyanturin ulostulotappi, jota käytetään jännitearvojen lukemiseen, kun led-tappiä käytetään IR-ledin kytkemiseen päälle / pois.
int sensePin = A5; int ledPin = 7;
Aloita nyt setup () -toiminnon sisällä Serial Monitor 9600 -siirtonopeudella virheenkorjausta varten. Alusta myös OLED-näyttö Start () -toiminnolla.
Sarjan alku (9600); display.begin (SSD1306_SWITCHCAPVCC);
Sisällä silmukka () funktio, lue jännitteen arvot analogisen pin 5 Arduino Nano. Kytke ensin IR-LED päälle ja odota sitten 0,28 ms ennen lähtöjännitteen lukemista. Tämän jälkeen lue jännitearvot analogisesta nastasta. Tämä toiminto kestää noin 40-50 mikrosekuntia, joten ota käyttöön 40 mikrosekunnin viive ennen pölyanturin ledin sammuttamista. Spesifikaatioiden mukaan LED: n tulisi syttyä kerran 10 ms: n välein, joten odota jäljellä olevaa 10 ms: n jaksoa = 10000 - 280 - 40 = 9680 mikrosekuntia .
digitalWrite (ledPin, LOW); viive mikrosekuntia (280); outVo = analogRead (sensePin); viive mikrosekuntia (40); digitalWrite (ledPin, HIGH); viive mikrosekuntia (9680);
Laske sitten seuraavilla riveillä pölytiheys lähtöjännitteen ja signaalin arvon avulla.
sigVolt = outVo * (5/1024); pölytaso = 0,17 * sigVolt - 0,1;
Tämän jälkeen määritä tekstin koko ja tekstin väri käyttämällä setTextSize () ja setTextColor () .
display.setTextSize (1); display.setTextColor (VALKOINEN);
Määritä sitten seuraavalla rivillä sijainti, josta teksti alkaa käyttää setCursor (x, y) -menetelmää. Ja tulosta pölytiheysarvot OLED-näytölle käyttämällä toimintoa display.println () .
display.println ("Pöly"); display.println ("Tiheys"); display.setTextSize (3); display.println (pölyn taso);
Ja viimeisessä, kutsu näyttö () -menetelmää näyttääksesi tekstin OLED-näytössä.
display.display (); display.clearDisplay ();
Sharp GP2Y1014AU0F -anturin ja Arduinon rajapinnan testaaminen
Kun laitteisto ja koodi ovat valmiit, on aika testata anturi. Liitä Arduino kannettavaan tietokoneeseen, valitse alusta ja portti ja paina latauspainiketta. Kuten alla olevasta kuvasta näet, se näyttää pölytiheyden OLED-näytöllä.
Täydellinen työvideo ja koodi on annettu alla. Toivottavasti pidit opetusohjelmasta ja opit jotain hyödyllistä. Jos sinulla on kysyttävää, jätä ne kommenttiosioon tai käytä foorumeitamme muihin teknisiin kysymyksiin.