- Būtini komponentai
- „Nova PM“ jutiklis SDS011
- 0,96 'OLED ekrano modulis
- Oro kokybės analizatoriaus grandinės schema
- Grandinės sukūrimas ant „Perf Board“
- Oro kokybės monitoriaus kodo paaiškinimas
- „Arduino“ oro kokybės monitoriaus testavimas
Oro tarša yra pagrindinė problema daugelyje miestų, o oro kokybės indeksas kasdien blogėja. Remiantis Pasaulio sveikatos organizacijos ataskaita, dėl ore esančių pavojingų dalelių poveikio anksčiau laiko žūsta daugiau žmonių nei dėl autoįvykių. Anot Aplinkos apsaugos agentūros (EPA), patalpų oras gali būti 2–5 kartus toksiškesnis nei lauko oras. Taigi čia mes pastatome prietaisą oro kokybei stebėti, matuodami ore esančias PM2,5 ir PM10 daleles.
Anksčiau dulkių tankiui ore matuoti naudojome dujų jutiklį MQ135 oro kokybės monitoriui ir „ Sharp GP2Y1014AU0F“ jutiklį. Šį kartą oro kokybės analizatoriui kurti naudojame SDS011 jutiklį su „Arduino Nano“. SDS011 jutiklis gali apskaičiuoti PM2,5 ir PM10 dalelių koncentraciją ore. Čia OLED ekrane bus rodomos realiojo laiko PM2,5 ir PM 10 vertės.
Būtini komponentai
- „Arduino Nano“
- „Nova PM“ jutiklis SDS011
- 0,96 'SPI OLED ekrano modulis
- Šuolių laidai
„Nova PM“ jutiklis SDS011
SDS011 jutiklis yra visai neseniai sukurtas „Nova Fitness“ oro kokybės jutiklis. Jis veikia lazerio sklaidos principu ir gali gauti dalelių koncentraciją ore nuo 0,3 iki 10μm. Šis jutiklis susideda iš mažo ventiliatoriaus, oro įleidimo vožtuvo, lazerinio diodo ir fotodiodo. Oras patenka per oro įleidimo angą, kur šviesos šaltinis (lazeris) apšviečia daleles, o išsklaidytą šviesą fotodetektorius paverčia signalu. Šie signalai sustiprinami ir apdorojami, kad gautų dalelių koncentraciją PM2,5 ir PM10.
SDS011 jutiklio specifikacijos:
- Išvestis: PM2,5, PM10
- Matavimo diapazonas: 0,0–999,9 μg / m3
- Įėjimo įtampa: nuo 4,7 V iki 5,3 V
- Maksimali srovė: 100mA
- Miego srovė: 2mA
- Atsakymo laikas: 1 sekundė
- Serijinių duomenų išvesties dažnis: 1 kartas per sekundę
- Dalelių skersmens skiriamoji geba: ≤ 0,3 μm
- Santykinė klaida: 10%
- Temperatūros diapazonas: -20 ~ 50 ° C
0,96 'OLED ekrano modulis
OLED (organiniai šviesą skleidžiantys diodai) yra savaime skleidžianti technologija, sukonstruota tarp dviejų laidininkų uždėjus organinių plonų plėvelių seriją. Ryški šviesa susidaro, kai šioms plėvelėms paduodama elektros srovė. OLED naudoja tą pačią technologiją kaip ir televizoriai, tačiau turi mažiau taškų nei daugumoje mūsų televizorių.
Šiam projektui naudojame vienspalvį 7 kontaktų SSD1306 0,96 ”OLED ekraną. Jis gali veikti trimis skirtingais ryšių protokolais: SPI 3 vielos režimu, SPI keturių laidų režimu ir I2C režimu. Smeigtukai ir jo funkcijos paaiškinti toliau pateiktoje lentelėje:
PIN vardas |
Kiti vardai |
apibūdinimas |
Gnd |
Žemė |
Įžemintas modulio kaištis |
Vdd |
Vcc, 5 V |
Maitinimo kaištis (3-5V toleruojamas) |
SCK |
D0, SCL, CLK |
Veikia kaip laikrodžio kaištis. Naudojamas tiek I2C, tiek SPI |
SDA |
D1, MOSI |
Modulio duomenų kaištis. Naudojamas tiek IIC, tiek SPI |
RES |
RST, RESET |
Iš naujo nustatomas modulis (naudinga SPI metu) |
DC |
A0 |
Duomenų komandos kaištis. Naudojamas SPI protokolui |
CS |
Chip Select |
Naudinga, kai pagal SPI protokolą naudojami daugiau nei vienas moduliai |
Čia apžvelgėme visą straipsnį apie OLED ekranus ir jo tipus.
OLED specifikacijos:
- OLED tvarkyklės IC: SSD1306
- Rezoliucija: 128 x 64
- Vaizdinis kampas:> 160 °
- Įėjimo įtampa: 3.3V ~ 6V
- Pikselių spalva: mėlyna
- Darbinė temperatūra: -30 ° C ~ 70 ° C
Sužinokite daugiau apie OLED ir jo sąsają su skirtingais mikrovaldikliais, spustelėdami nuorodą.
Oro kokybės analizatoriaus grandinės schema
PM2,5 ir PM10 dalelių matavimo naudojant „Arduino“ schema yra labai paprasta ir pateikta žemiau.
SDS011 jutiklis ir OLED ekrano modulis tiekiami su + 5 V ir GND. SDS011 siųstuvo ir imtuvo kaiščiai yra prijungti prie „Arduino Nano“ D3 ir D4 kaiščių. Kadangi „OLED Display“ modulis naudoja SPI ryšį, mes sukūrėme SPI ryšį tarp OLED modulio ir „Arduino Nano“. Jungtys parodytos žemiau esančioje lentelėje:
S.No |
OLED modulio kaištis |
Arduino kaištis |
1 |
BND |
Žemė |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
Grandinės sukūrimas ant „Perf Board“
Aš taip pat sulitavau visus komponentus ant lentos, kad ji atrodytų dailiai. Bet jūs taip pat galite juos pagaminti ant duonos lentos. Lentos, kurias aš padariau, yra žemiau. Lituodami įsitikinkite, kad nerūšiavote laidų. Puikios lentos, kurią litavau, parodyta žemiau:
Oro kokybės monitoriaus kodo paaiškinimas
Visas šio projekto kodas pateikiamas dokumento pabaigoje. Čia mes paaiškiname keletą svarbių kodo dalių.
Kodas naudoja SDS011, Adafruit_GFX , ir Adafruit_SSD1306 bibliotekas. Šias bibliotekas galima atsisiųsti iš „Arduino IDE“ esančios bibliotekos tvarkyklės ir jas įdiegti. Tam atidarykite „Arduino IDE“ ir eikite į „ Eskizas“> „Įtraukti biblioteką“> „Tvarkyti bibliotekas“ . Dabar ieškokite SDS011 ir įdiekite R. Zschiegner SDS Sensor biblioteką.
Panašiai įdiekite „ Adafruit GFX“ ir „ Adafruit SSD1306“ bibliotekas.
Įdiegę bibliotekas „Arduino IDE“, paleiskite kodą įtraukdami reikalingus bibliotekos failus.
# įtraukti
Kitose eilutėse apibrėžkite du kintamuosius, kad išsaugotumėte PM10 ir PM2,5 reikšmes.
plūdė p10, p25;
Tada nustatykite OLED plotį ir aukštį. Šiame projekte mes naudojame 128 × 64 SPI OLED ekraną. Galite pakeisti tuos kintamuosius SCREEN_WIDTH ir SCREEN_HEIGHT pagal savo ekraną.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Tada nustatykite SPI ryšio kaiščius, kur prijungtas OLED ekranas.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Tada sukurkite „Adafruit“ ekrano egzempliorių, kurio plotis ir aukštis buvo apibrėžti anksčiau naudojant SPI ryšio protokolą.
„Adafruit_SSD1306“ ekranas (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Dabar, kai yra sąrankos () funkcija, inicializuokite „Serial Monitor“ 9600 perdavimo greičiu derinimo tikslais. Be to, pradėkite OLED ekraną ir SDS011 jutiklį naudodami pradžios () funkciją.
my_sds.begin (3,4); Serijos pradžia (9600); display.begin (SSD1306_SWITCHCAPVCC);
Tuščiosios kilpos () viduje iš SDS011 jutiklio perskaitykite PM10 ir PM2,5 reikšmes ir atspausdinkite rodmenis ant nuoseklaus monitoriaus.
negaliojanti kilpa () {error = my_sds.read (& p25, & p10); jei (! klaida) {Serial.println ("P2.5:" + eilutė (p25)); Serial.println ("P10:" + eilutė (p10));
Po to nustatykite teksto dydį ir spalvą naudodami setTextSize () ir setTextColor () .
display.setTextSize (2); display.setTextColor (BALTAS);
Tada kitoje eilutėje nustatykite teksto pradžios vietą naudodami metodą setCursor (x, y) . Čia OLED ekrane rodysime PM2,5 ir PM10 reikšmes, taigi pirmoji eilutė prasideda nuo (0,15), o antroji - nuo (0, 40) koordinačių.
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);
Ir galiausiai, iškvieskite display () metodą, kad tekstas būtų rodomas OLED Display.
display.display (); display.clearDisplay ();
„Arduino“ oro kokybės monitoriaus testavimas
Kai aparatinė įranga ir kodas bus paruošti, laikas išbandyti įrenginį. Tam prijunkite „Arduino“ prie nešiojamojo kompiuterio, pasirinkite „Board and Port“ ir paspauskite mygtuką „Įkelti“. Kaip matote žemiau esančiame paveikslėlyje, OLED ekrane bus rodomos PM2,5 ir PM10 vertės.
Visas darbinis vaizdo įrašas ir kodas pateikiami žemiau. Tikiuosi, kad jums patiko pamoka ir sužinojote ką nors naudingo. Jei turite klausimų, palikite juos komentarų skiltyje arba naudokitės mūsų forumais kitoms techninėms užklausoms.