- Tarvittavat komponentit
- Nova PM -anturi SDS011
- 0,96 tuuman OLED-näyttömoduuli
- Piirikaavio ilmanlaadun analysaattorille
- Piirin rakentaminen Perf Boardille
- Koodiselvitys ilmanlaadunvalvontaan
- Arduino-ilmanlaadunvalvontatestaus
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 laitteen ilmanlaadun seuraamiseksi mittaamalla ilmassa olevat PM2,5- ja PM10-hiukkaset.
Aikaisemmin käytimme MQ135-kaasuanturia ilmanlaadun seurantaan ja Sharp GP2Y1014AU0F -anturia ilman pölytiheyden mittaamiseen. Tällä kertaa käytämme SDS011-anturia Arduino Nanon kanssa ilmanlaadun analysaattorin rakentamiseen. SDS011-anturi voi laskea PM2,5- ja PM10-hiukkasten pitoisuudet ilmassa. Tässä reaaliaikaiset PM2.5- ja PM 10 -arvot näytetään OLED-näytössä.
Tarvittavat komponentit
- Arduino Nano
- Nova PM -anturi SDS011
- 0,96 tuuman SPI OLED -näyttömoduuli
- Neulalangat
Nova PM -anturi SDS011
SDS011-anturi on hyvin uusi ilmanlaadun anturi, jonka on kehittänyt Nova Fitness. Se toimii lasersironnan periaatteella ja voi saada hiukkaspitoisuuden välillä 0,3-10 μm ilmassa. Tämä anturi koostuu pienestä tuulettimesta, ilmanottoventtiilistä, laserdiodista ja valodiodista. Ilma pääsee ilman sisääntulon kautta, jossa valonlähde (Laser) valaisee hiukkaset ja sironnut valo muuttuu signaaliksi valodetektorilla. Nämä signaalit vahvistetaan ja prosessoidaan sitten hiukkaspitoisuuden PM2,5 ja PM10 saamiseksi.
SDS011-anturin tekniset tiedot:
- Lähtö: PM2,5, PM10
- Mittausalue: 0,0-999,9 μg / m3
- Tulojännite: 4,7 V - 5,3 V
- Suurin virta: 100mA
- Lepovirta: 2mA
- Vasteaika: 1 sekunti
- Sarjatietojen lähtötaajuus: 1 aika / sekunti
- Hiukkasten halkaisijan tarkkuus: ≤ 0,3 μm
- Suhteellinen virhe: 10%
- Lämpötila-alue: -20 ~ 50 ° C
0,96 tuuman 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:
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 |
Olemme käsittäneet koko artikkelin OLED-näytöistä ja sen tyypeistä täällä.
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 ilmanlaadun analysaattorille
Piirikaavion mittaamiseksi PM2,5 ja PM10 hiukkasia käyttämällä Arduino on hyvin yksinkertainen ja alla.
SDS011-anturi ja OLED-näyttömoduuli saavat virran + 5 V: lla ja GND: llä. SDS011: n lähetin- ja vastaanotintapit on kytketty Arduino nanon D3- ja D4-nastoihin. 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 |
Piirin rakentaminen Perf Boardille
Olen myös juotanut kaikki osat perf-levylle, jotta se näyttää siistiltä. Mutta voit tehdä ne myös leipälaudalle. Valmistamani levyt ovat alla. Juotettaessa varmista, ettet lajittele johtoja. Juotettu perf-levy on esitetty alla:
Koodiselvitys ilmanlaadunvalvontaan
Tämän projektin täydellinen koodi on asiakirjan lopussa. Tässä selitämme joitain tärkeitä koodin osia.
Koodi käyttää SDS011, Adafruit_GFX , ja Adafruit_SSD1306 kirjastot. Nämä kirjastot voidaan ladata Arduino IDE: n kirjastonhallinnasta ja asentaa sieltä. Tätä varten avaa Arduino IDE ja siirry kohtaan Luonnos> Sisällytä kirjasto> Hallinnoi kirjastoja . Etsi nyt SDS011 ja asenna R. Zschiegnerin SDS Sensor -kirjasto.
Asenna vastaavasti Adafruit GFX- ja Adafruit SSD1306 -kirjastot.
Kun olet asentanut kirjastot Arduino IDE -ohjelmaan, käynnistä koodi sisällyttämällä tarvittavat kirjastotiedostot.
#sisältää
Määritä seuraavilla riveillä kaksi muuttujaa PM10- ja PM2,5-arvojen tallentamiseksi.
uimuri p10, p25;
Määritä sitten OLED-leveys ja -korkeus. Tässä projektissa käytämme 128 × 64 SPI OLED -näyttöä. Voit muuttaa kyseisiä 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);
Aloita nyt setup () -toiminnon sisällä Serial Monitor 9600 -siirtonopeudella virheenkorjausta varten. Alusta myös OLED-näyttö ja SDS011-anturi Aloita () -toiminnolla.
my_sds.begin (3,4); Sarjan alku (9600); display.begin (SSD1306_SWITCHCAPVCC);
Sisällä void loop (), lue PM10 ja PM2.5 arvot SDS011 anturin ja tulostaa lukemat serial seurata.
void loop () {virhe = omat_sds.read (& p25, & p10); if (! error) {Serial.println ("P2.5:" + Merkkijono (s25)); Serial.println ("P10:" + merkkijono (p10));
Tämän jälkeen määritä tekstin koko ja tekstin väri käyttämällä setTextSize () ja setTextColor () .
display.setTextSize (2); display.setTextColor (VALKOINEN);
Määritä sitten seuraavalla rivillä teksti aloituskohta käyttämällä setCursor (x, y) -menetelmää. Tässä näytetään PM2.5- ja PM10-arvot OLED-näytössä, joten ensimmäinen rivi alkaa (0,15), kun taas toinen rivi alkaa (0, 40) -koordinaateista.
display.setCursor (0,15); display.println ("PM2.5"); display.setCursor (67,15); display.println (p25); display.setCursor (0,40); display.println ("PM10"); display.setCursor (67,40); display.println (p10);
Lopuksi, kutsu näyttö () -menetelmää näyttääksesi tekstin OLED-näytössä.
display.display (); display.clearDisplay ();
Arduino-ilmanlaadunvalvontatestaus
Kun laitteisto ja koodi ovat valmiit, on aika testata laite. Liitä Arduino kannettavaan tietokoneeseen, valitse alusta ja portti ja paina latauspainiketta. Kuten alla olevasta kuvasta näet, se näyttää PM2.5- ja PM10-arvot OLED-näytössä.
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.