- Būtini komponentai
- Gravitacinis infraraudonųjų spindulių CO2 jutiklis
- 0,96 'OLED ekrano modulis
- Grandinės schema
- Arduino kodas CO2 koncentracijai matuoti
- Gravitacinio infraraudonųjų spindulių CO2 jutiklio sąveikos testavimas
Didėjanti anglies dioksido koncentracija ore dabar tapo rimta problema. Remiantis NOAA ataskaita, ozono CO2 koncentracija pasiekė 0,0385 procentus (385 ppm) ir yra didžiausia suma per 2,1 milijono metų. Tai reiškia, kad milijone oro dalelių yra 385 anglies dioksido dalelės. Šis kylantis CO2 lygis blogai paveikė aplinką ir paskatino susidurti su klimato kaita ir visuotiniu atšilimu. Keliuose sumontuota daug oro kokybės matavimo prietaisų, leidžiančių nustatyti CO2 lygį, tačiau mes taip pat galime sukurti „ pasidaryk pats“ matavimo prietaisą ir jį įdiegti savo rajone.
Šioje pamokoje ketiname susieti gravitacinį infraraudonųjų spindulių CO2 jutiklį su „Arduino“, kad pamatuotume CO2 koncentraciją PPM. Gravitacinis infraraudonųjų spindulių CO2 jutiklis yra didelio tikslumo analoginis CO2 jutiklis. Jis matuoja CO2 kiekį nuo 0 iki 5000 ppm. Taip pat galite patikrinti ankstesnius mūsų projektus, kur oro kokybės monitoriui pastatyti naudojome MQ135 dujų jutiklį, „Sharp GP2Y1014AU0F“ jutiklį ir „Nova PM Sensor SDS011“.
Būtini komponentai
- „Arduino Nano“
- Gravitacinis infraraudonųjų spindulių CO2 jutiklis V1.1
- Šuolių laidai
- 0,96 'SPI OLED ekrano modulis
- Bandomoji Lenta
Gravitacinis infraraudonųjų spindulių CO2 jutiklis
„Gravity“ infraraudonųjų spindulių CO2 jutiklis V1.1 yra naujausias didelio tikslumo analoginis infraraudonųjų spindulių CO2 jutiklis, kurį išleido „DFRobot“. Šis jutiklis yra pagrįstas nedispersinės infraraudonųjų spindulių (NDIR) technologija ir turi gerą selektyvumą bei priklausomybę nuo deguonies. Jis integruoja temperatūros kompensavimą ir palaiko DAC išvestį. Efektyvus šio jutiklio matavimo diapazonas yra nuo 0 iki 5000 ppm, tikslumas ± 50 ppm + 3%. Šis infraraudonųjų spindulių CO2 jutiklis gali būti naudojamas ŠVOK, patalpų oro kokybės stebėjimui, pramoninių procesų ir saugumo stebėjimui, žemės ūkio ir gyvulininkystės gamybos procesų stebėjimui.
Infraraudonųjų spindulių CO2 jutiklio kištukas:
Kaip minėta anksčiau, infraraudonųjų spindulių CO2 jutiklis yra su 3 kontaktų jungtimi. Žemiau esančiame paveikslėlyje ir lentelėje pateikiami infraraudonųjų spindulių CO2 jutiklio kaiščių priskyrimai:
Smeigtukas Nr. |
PIN vardas |
apibūdinimas |
---|---|---|
1 |
Signalas |
Analoginis išėjimas (0,4 ~ 2 V) |
2 |
VCC |
VCC (4,5 ~ 5,5 V) |
3 |
BND |
BND |
Infraraudonųjų spindulių CO2 jutiklio specifikacijos ir savybės:
- Dujų aptikimas: anglies dioksidas (CO2)
- Darbinė įtampa: 4,5 ~ 5,5 V DC
- Įkaitinimo laikas: 3min
- Atsakymo laikas: 120s
- Darbinė temperatūra: 0 ~ 50 ℃
- Darbinis drėgnumas: 0 ~ 95% RH (be kondensato)
- Neperšlampamas ir antikorozinis
- Aukštas ciklo gyvenimas
- Anti-vandens garų trukdžiai
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:
Mes jau išsamiai aptarėme OLED ir jo tipus ankstesniame straipsnyje.
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 |
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ą.
Grandinės schema
Žemiau pateikiama „ Arduino“ gravitacijos analoginio infraraudonųjų spindulių CO2 jutiklio sąsajos schema:
Grandinė yra labai paprasta, nes mes sujungiame tik „Gravity“ infraraudonųjų spindulių CO2 jutiklį ir OLED ekrano modulį su „Arduino Nano“. Infraraudonųjų spindulių CO2 jutiklis ir OLED ekrano modulis tiekiami su + 5 V ir GND. CO2 jutiklio signalo (analoginio išėjimo) kaištis yra prijungtas prie „Arduino Nano“ A0 kaiščio. 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 |
Prijungę aparatūrą pagal grandinės schemą, ji turėtų atrodyti maždaug taip:
Arduino kodas CO2 koncentracijai matuoti
Visas šio „Arduino“ projekto „ Gravity Analog“ infraraudonųjų spindulių CO2 jutiklio kodas pateiktas dokumento pabaigoje. Čia mes paaiškiname keletą svarbių kodo dalių.
Kodas naudoja Adafruit_GFX , ir Adafruit_SSD1306 bibliotekas. Šias bibliotekas galima atsisiųsti iš „Arduino IDE“ esančios bibliotekos tvarkyklės ir ją įdiegti iš ten. Tam atidarykite „Arduino IDE“ ir eikite į „ Eskizas“> „Įtraukti biblioteką“> „Tvarkyti bibliotekas“ . Dabar ieškokite „Adafruit GFX“ ir įdiekite „ Adafruit GFX“ biblioteką.
Panašiai įdiekite „ Adafruit“ „SSD1306“ bibliotekas. Infraraudonųjų spindulių CO2 jutikliui nereikia jokios bibliotekos, nes įtampos reikšmes mes skaitome tiesiai iš „Arduino“ analoginio kaiščio.
Įdiegę bibliotekas „Arduino IDE“, paleiskite kodą įtraukdami reikalingus bibliotekos failus. Dulkių jutikliui nereikia jokios bibliotekos, nes skaitymas imamas tiesiai iš analoginio „Arduino“ kaiščio.
# įtraukti
Tada nustatykite OLED plotį ir aukštį. Šiame projekte mes naudojame 128 × 64 SPI OLED ekraną. Kintamuosius SCREEN_WIDTH ir SCREEN_HEIGHT galite pakeisti 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);
Po to nustatykite „Arduino“ kaištį, kur prijungtas CO2 jutiklis.
int jutiklisIn = A0;
Dabar, kai yra sąrankos () funkcija, inicializuokite „Serial Monitor“ 9600 perdavimo greičiu derinimo tikslais. Be to, inicializuokite OLED ekraną su pradžios () funkcija.
Serijos pradžia (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (Numatytasis);
Funkcijos ciklas () viduje pirmiausia perskaitykite signalo vertes „Arduino“ analoginiame kaište , paskambindami funkcija „ analogRead ()“ . Po to konvertuokite šias analoginio signalo reikšmes į įtampos vertes.
void loop () {int sensorValue = analogRead (sensorIn); plūdinė įtampa = sensorValue * (5000 / 1024,0);
Po to palyginkite įtampos vertes. Jei įtampa yra 0 V, tai reiškia, kad atsirado kokia nors jutiklio problema. Jei įtampa yra didesnė nei 0 V, bet mažesnė nei 400 V, vadinasi, jutiklis vis dar yra išankstinio kaitinimo procese.
if (įtampa == 0) {Serial.println ("Gedimas"); } else if (įtampa <400) {Serial.println ("pašildymas"); }
Jei įtampa lygi 400 V arba didesnė, konvertuokite ją į CO2 koncentracijos vertes.
else {int įtampos_skirtumas = įtampa-400; plūdės koncentracija = įtampos skirtumas * 50,0 / 16,0;
Po to nustatykite teksto dydį ir spalvą naudodami setTextSize () ir setTextColor () .
display.setTextSize (1); display.setTextColor (BALTAS);
Tada kitoje eilutėje apibrėžkite vietą, kurioje tekstas pradedamas naudoti naudojant setCursor (x, y) metodą. Ir išspausdinkite CO2 vertes OLED ekrane naudodamiesi funkcija display.println () .
display.println ("CO2"); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (koncentracija);
Paskutiniame, iškvieskite display () metodą, kad tekstas būtų rodomas OLED Display.
display.display (); display.clearDisplay ();
Gravitacinio infraraudonųjų spindulių CO2 jutiklio sąveikos testavimas
Kai aparatinė įranga ir kodas bus paruošti, laikas išbandyti jutiklį. Tam prijunkite „Arduino“ prie nešiojamojo kompiuterio, pasirinkite „Board and Port“ ir paspauskite mygtuką „Įkelti“. Tada atidarykite nuoseklųjį monitorių ir palaukite šiek tiek laiko (įkaitinimo procesas), tada pamatysite galutinius duomenis.
Vertės bus rodomos OLED ekrane, kaip parodyta žemiau:
Pastaba: Prieš naudodami jutiklį, leiskite jutikliui įkaisti maždaug 24 valandas, kad gautumėte teisingas PPM vertes. Kai pirmą kartą įjungiau jutiklį, išėjimo CO2 koncentracija buvo nuo 1500 iki 1700 ppm ir po 24 valandų kaitinimo išėjimo CO2 koncentracija sumažėjo iki 450 ppm iki 500 ppm, kurios yra teisingos PPM vertės. Taigi prieš naudojant jutiklį CO2 koncentracijai matuoti, reikia kalibruoti jutiklį.
Tokiu būdu infraraudonųjų spindulių CO2 jutikliu galima išmatuoti tikslią CO2 koncentraciją ore. Visas kodas ir veikiantis vaizdo įrašas pateikiami žemiau. Jei turite kokių nors abejonių, palikite jas komentarų skiltyje arba pasinaudokite mūsų forumais techninei pagalbai.