- Potrebne komponente
- Nova PM senzor SDS011
- 0,96-palčni zaslon OLED
- Shema vezja za analizator kakovosti zraka
- Gradnja vezja na Perf Board
- Pojasnilo kode za Monitor kakovosti zraka
- Testiranje monitorja kakovosti zraka Arduino
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. Tukaj torej zgradimo napravo za spremljanje kakovosti zraka z merjenjem delcev PM2,5 in PM10 v zraku.
Pred tem smo za merjenje gostote prahu v zraku uporabljali senzor za plin MQ135 za monitor kakovosti zraka in senzor Sharp GP2Y1014AU0F. Tokrat za izdelavo analizatorja kakovosti zraka uporabljamo senzor SDS011 z Arduino Nano. Tipalo SDS011 lahko izračuna koncentracije delcev PM2,5 in PM10 v zraku. Tu bodo na zaslonu OLED prikazane vrednosti PM2,5 in PM 10 v realnem času.
Potrebne komponente
- Arduino Nano
- Nova PM senzor SDS011
- 0,96-palčni zaslon SPI OLED
- Jumper žice
Nova PM senzor SDS011
Senzor SDS011 je najnovejši senzor kakovosti zraka, ki ga je razvila Nova Fitness. Deluje na principu laserskega razprševanja in lahko doseže koncentracijo delcev med 0,3 in 10 μm v zraku. Ta senzor je sestavljen iz majhnega ventilatorja, vstopnega ventila za zrak, laserske diode in fotodiode. Zrak vstopi skozi dovod zraka, kjer svetlobni vir (laser) osvetli delce, razpršena svetloba pa se s fotodetektorjem pretvori v signal. Ti signali se nato ojačajo in obdelajo, da dobijo koncentracijo delcev PM2,5 in PM10.
Specifikacije tipala SDS011:
- Izhod: PM2,5, PM10
- Območje merjenja: 0,0-999,9 μg / m3
- Vhodna napetost: 4,7 V do 5,3 V
- Največji tok: 100mA
- Tok spanja: 2mA
- Odzivni čas: 1 sekunda
- Pogostnost serijskih izhodnih podatkov: 1 čas / sekundo
- Ločljivost premera delcev: ≤ 0,3 μm
- Relativna napaka: 10%
- Temperaturno območje: -20 ~ 50 ° C
0,96-palčni zaslon 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:
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 |
Tukaj smo zajeli celoten članek o OLED zaslonih in njihovih vrstah.
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 za analizator kakovosti zraka
Shema vezij za merjenje delcev PM2,5 in PM10 z uporabo Arduina je zelo preprosta in podana spodaj.
Senzor SDS011 in modul OLED zaslona sta napajana z + 5V in GND. Zatiči oddajnika in sprejemnika SDS011 so povezani z zatiči D3 in D4 Arduino Nano. 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. |
Gradnja vezja na Perf Board
Prav tako sem spajkal vse komponente na plošči za perf, da je videti lepo. Lahko pa jih naredite tudi na plošči. Plošče, ki sem jih naredil, so spodaj. Med spajkanjem pazite, da žic ne razvrstite. Spodnja plošča, ki sem jo spajkal, je prikazana spodaj:
Pojasnilo kode za Monitor kakovosti zraka
Popolna koda za ta projekt je podana na koncu dokumenta. Tukaj razlagamo nekatere pomembne dele kode.
Koda uporablja SDS011, Adafruit_GFX , in Adafruit_SSD1306 knjižnice. Te knjižnice lahko prenesete iz upravitelja knjižnic v IDE Arduino in jih lahko namestite od tam. Za to odprite Arduino IDE in pojdite na Sketch> Include Library> Manage Libraries . Zdaj poiščite SDS011 in namestite knjižnico SDS Sensor R. Zschiegnerja.
Podobno namestite knjižnici Adafruit GFX in Adafruit SSD1306 podjetja Adafruit.
Po namestitvi knjižnic v Arduino IDE zaženite kodo tako, da vključite potrebne knjižnične datoteke.
#include
V naslednjih vrsticah določite dve spremenljivki za shranjevanje vrednosti PM10 in PM2.5.
plovec p10, p25;
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);
Zdaj znotraj funkcije setup () inicializirajte serijski monitor s hitrostjo prenosa 9600 za namene odpravljanja napak. Prav tako inicializirajte zaslon OLED in senzor SDS011 s funkcijo start () .
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Znotraj void zanke () preberite vrednosti PM10 in PM2.5 s senzorja SDS011 in odčitke natisnite na serijski monitor.
void loop () {error = my_sds.read (& p25, & p10); if (! error) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + String (p10));
Po tem nastavite velikost besedila in barvo besedila s pomočjo setTextSize () in setTextColor () .
display.setTextSize (2); display.setTextColor (BELA);
Nato v naslednji vrstici z metodo setCursor (x, y) določite položaj za začetek besedila. Tu bomo na zaslonu OLED prikazali vrednosti PM2,5 in PM10, tako da se prva vrstica začne pri (0,15), druga vrstica pa pri (0, 40) koordinatah.
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);
In na koncu pokličite metodo display () za prikaz besedila na OLED zaslonu.
display.display (); display.clearDisplay ();
Testiranje monitorja kakovosti zraka Arduino
Ko sta strojna oprema in koda pripravljena, je čas, da napravo preizkusite. 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 zaslonu OLED prikazal vrednosti PM2,5 in PM10.
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.