- Komponenter, der kræves
- Nova PM-sensor SDS011
- 0,96 'OLED-skærmmodul
- Kredsløbsdiagram for luftkvalitetsanalysator
- Opbygning af kredsløbet på Perf Board
- Kode Forklaring til luftkvalitetsovervågning
- Arduino test af luftkvalitetsmonitor
Luftforurening er et stort problem i mange byer, og luftkvalitetsindekset bliver værre for hver dag. Ifølge rapporten fra Verdenssundhedsorganisationen dræbes flere mennesker for tidligt af virkningerne af farlige partikler, der præsenteres i luften end af bilulykker. I henhold til Environmental Protection Agency (EPA) kan indeluft være 2 til 5 gange mere giftig end udeluft. Så her bygger vi en enhed til at overvåge luftkvaliteten ved at måle PM2.5 og PM10 partikler i luften.
Vi har tidligere brugt MQ135-gassensoren til luftkvalitetsmonitor og Sharp GP2Y1014AU0F-sensoren til måling af støvtæthed i luften. Denne gang bruger vi en SDS011-sensor med Arduino Nano til at bygge luftkvalitetsanalysator. SDS011-sensoren kan beregne koncentrationerne af PM2.5- og PM10-partikler i luften. Her vises realtids PM2.5- og PM 10-værdierne på OLED-skærmen.
Komponenter, der kræves
- Arduino Nano
- Nova PM-sensor SDS011
- 0,96 'SPI OLED-skærmmodul
- Jumper Wires
Nova PM-sensor SDS011
SDS011-sensoren er en meget ny luftkvalitetssensor udviklet af Nova Fitness. Det fungerer på princippet om laserspredning og kan få partikelkoncentrationen mellem 0,3 og 10 μm i luften. Denne sensor består af en lille ventilator, luftindgangsventil, laserdiode og fotodiode. Luften kommer ind gennem luftindgangen, hvor en lyskilde (Laser) oplyser partiklerne, og det spredte lys omdannes til et signal ved hjælp af en fotodetektor. Disse signaler forstærkes derefter og behandles for at få partikelkoncentrationen af PM2.5 og PM10.
SDS011 sensor specifikationer:
- Output: PM2.5, PM10
- Måleområde: 0,0-999,9 μg / m3
- Indgangsspænding: 4.7V til 5.3V
- Maksimal strøm: 100mA
- Søvnstrøm: 2mA
- Svartid: 1 sekund
- Seriel dataoutputfrekvens: 1 gang / sekund
- Partikeldiameteropløsning: ≤ 0,3 μm
- Relativ fejl: 10%
- Temperaturområde: -20 ~ 50 ° C
0,96 'OLED-skærmmodul
OLED (Organic Light-Emitting Diodes) er en selvlysende teknologi, konstrueret ved at placere en række organiske tynde film mellem to ledere. Et stærkt lys produceres, når der tilføres en elektrisk strøm til disse film. OLED'er bruger den samme teknologi som fjernsyn, men har færre pixels end i de fleste af vores tv'er.
Til dette projekt bruger vi en monokrom 7-benet SSD1306 0,96 ”OLED-skærm. Det kan arbejde på tre forskellige kommunikationsprotokoller: SPI 3 Wire-tilstand, SPI-firetrådstilstand og I2C-tilstand. Stifterne og dens funktioner forklares i nedenstående tabel:
Pin-navn |
Andre navne |
Beskrivelse |
Gnd |
Jord |
Jordstiften på modulet |
Vdd |
Vcc, 5V |
Power pin (3-5V tolerabel) |
SCK |
D0, SCL, CLK |
Fungerer som urstiften. Bruges til både I2C og SPI |
SDA |
D1, MOSI |
Modulets datapind. Bruges til både IIC og SPI |
RES |
RST, RESET |
Nulstiller modulet (nyttigt under SPI) |
DC |
A0 |
Data Command pin. Bruges til SPI-protokol |
CS |
Chip Select |
Nyttigt, når der bruges mere end et modul under SPI-protokol |
Vi har dækket en komplet artikel om OLED-skærme og dens typer her.
OLED Specifikationer:
- OLED Driver IC: SSD1306
- Opløsning: 128 x 64
- Visuel vinkel:> 160 °
- Indgangsspænding: 3,3V ~ 6V
- Pixelfarve: Blå
- Arbejdstemperatur: -30 ° C ~ 70 ° C
Lær mere om OLED og dets grænseflade til forskellige mikrocontrollere ved at følge linket.
Kredsløbsdiagram for luftkvalitetsanalysator
Kredsløbsdiagrammet til måling af PM2.5 og PM10 partikler ved hjælp af Arduino er meget simpelt og angivet nedenfor.
SDS011-sensor og OLED-skærmmodul er begge forsynet med + 5V og GND. Senderen og modtagerstifterne på SDS011 er forbundet til D3 og D4-stifterne i Arduino Nano. Da OLED Display-modulet bruger SPI-kommunikation, har vi etableret en SPI-kommunikation mellem OLED-modulet og Arduino Nano. Forbindelserne er vist i nedenstående tabel:
S. nr |
OLED-modulstift |
Arduino Pin |
1 |
GND |
Jord |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
Opbygning af kredsløbet på Perf Board
Jeg har også loddet alle komponenterne på perf-kortet for at få det til at se pænt ud. Men du kan også lave dem på et brødbræt. Brædderne, som jeg lavede, er nedenfor. Sørg for ikke at sortere ledningerne under lodning. Perfbrættet, som jeg lodde, er vist nedenfor:
Kode Forklaring til luftkvalitetsovervågning
Den komplette kode for dette projekt findes i slutningen af dokumentet. Her forklarer vi nogle vigtige dele af koden.
Koden bruger SDS011, Adafruit_GFX , og Adafruit_SSD1306 biblioteker. Disse biblioteker kan downloades fra Library Manager i Arduino IDE og kan installeres derfra. For det skal du åbne Arduino IDE og gå til Skitse> Inkluder bibliotek> Administrer biblioteker . Søg nu efter SDS011, og installer SDS Sensor-biblioteket af R. Zschiegner.
Installer ligeledes Adafruit GFX og Adafruit SSD1306- bibliotekerne af Adafruit.
Efter installation af bibliotekerne til Arduino IDE skal du starte koden ved at inkludere de nødvendige biblioteksfiler.
#omfatte
I de næste linjer skal du definere to variabler til at gemme PM10- og PM2.5-værdierne.
flyde p10, p25;
Definer derefter OLED-bredde og højde. I dette projekt bruger vi en 128 × 64 SPI OLED-skærm. Du kan ændre SCREEN_WIDTH- og SCREEN_HEIGHT- variablerne i henhold til din skærm.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Definer derefter SPI-kommunikationsnålene, hvor OLED Display er tilsluttet.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Opret derefter en Adafruit-skærmforekomst med bredden og højden defineret tidligere med SPI-kommunikationsprotokollen.
Adafruit_SSD1306 skærm (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Initialiser nu Serial Monitor med en baudhastighed på 9600 til fejlfindingsformål inden for setup () -funktionen. Initialiser også OLED-displayet og SDS011-sensoren med funktionen begin () .
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Inde i hulrummet () skal du læse PM10- og PM2.5-værdierne fra SDS011-sensoren og udskrive aflæsningerne på en seriel skærm.
ugyldig sløjfe () {error = my_sds.read (& p25, & p10); hvis (! fejl) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + streng (p10));
Derefter skal du indstille tekststørrelsen og tekstfarven ved hjælp af setTextSize () og setTextColor () .
display.setTextSize (2); display.setTextColor (HVID);
Derefter defineres positionen for at starte teksten ved hjælp af metoden setCursor (x, y) i den næste linje. Her viser vi PM2.5- og PM10-værdierne på OLED-display, så den første linje starter ved (0,15), mens den anden linje starter ved (0, 40) -koordinaterne.
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);
Og til sidst skal du ringe til display () -metoden for at få vist teksten på OLED Display.
display.display (); display.clearDisplay ();
Arduino test af luftkvalitetsmonitor
Når hardware og kode er klar, er det tid til at teste enheden. Til det, tilslut Arduino til den bærbare computer, vælg Board og Port, og tryk på upload-knappen. Som du kan se i nedenstående billede, vises PM2.5- og PM10-værdier på OLED-skærm.
Den komplette arbejdsvideo og kode er angivet nedenfor. Håber du nød tutorialen og lærte noget nyttigt. Hvis du har spørgsmål, skal du lade dem være i kommentarsektionen eller bruge vores fora til andre tekniske forespørgsler.