- Komponenter kreves
- Nova PM-sensor SDS011
- 0,96 'OLED-skjermmodul
- Kretsdiagram for luftkvalitetsanalysator
- Bygg kretsen på Perf Board
- Kodeforklaring for luftkvalitetsmonitor
- Testing av Arduino luftkvalitetsmonitor
Luftforurensning er et stort tema i mange byer, og luftkvalitetsindeksen blir verre for hver dag. I følge Verdens helseorganisasjons rapport blir flere drept for tidlig av virkningene av farlige partikler som presenteres i luften enn fra bilulykker. I følge Environmental Protection Agency (EPA) kan inneluft være 2 til 5 ganger mer giftig enn uteluft. Så her bygger vi en enhet for å overvåke luftkvaliteten ved å måle PM2.5 og PM10 partikler i luften.
Vi brukte tidligere MQ135 gassføler for luftkvalitetsmonitor og Sharp GP2Y1014AU0F-sensor for å måle støvtetthet i luften. Denne gangen bruker vi en SDS011-sensor med Arduino Nano for å bygge luftkvalitetsanalysator. SDS011-sensoren kan beregne konsentrasjonene av PM2.5- og PM10-partikler i luften. Her vises sanntidsverdiene PM2.5 og PM 10 på OLED-skjermen.
Komponenter kreves
- Arduino Nano
- Nova PM-sensor SDS011
- 0,96 'SPI OLED-skjermmodul
- Jumper Wires
Nova PM-sensor SDS011
SDS011-sensoren er en veldig nylig luftkvalitetssensor utviklet av Nova Fitness. Det fungerer på prinsippet om laserspredning og kan få partikkelkonsentrasjonen mellom 0,3 og 10μm i luften. Denne sensoren består av en liten vifte, luftinnløpsventil, laserdiode og fotodiode. Luften kommer inn gjennom luftinntaket der en lyskilde (Laser) lyser opp partiklene og det spredte lyset blir transformert til et signal av en fotodetektor. Disse signalene blir deretter forsterket og behandlet for å få partikkelkonsentrasjonen av PM2.5 og PM10.
SDS011 sensorspesifikasjoner:
- Utgang: PM2.5, PM10
- Måleområde: 0,0-999,9μg / m3
- Inngangsspenning: 4.7V til 5.3V
- Maksimal strøm: 100mA
- Søvnstrøm: 2mA
- Svartid: 1 sekund
- Seriell datautgangsfrekvens: 1 gang / sekund
- Partikkeldiameteroppløsning: ≤ 0,3 μm
- Relativ feil: 10%
- Temperaturområde: -20 ~ 50 ° C
0,96 'OLED-skjermmodul
OLED (Organic Light-Emitting Diodes) er en selvlysende teknologi, konstruert ved å plassere en serie organiske tynne filmer mellom to ledere. Et sterkt lys produseres når en elektrisk strøm tilføres disse filmene. OLED-er bruker samme teknologi som TV-apparater, men har færre piksler enn i de fleste av våre TV-er.
For dette prosjektet bruker vi en monokrom 7-pin SSD1306 0,96 ”OLED-skjerm. Den kan fungere på tre forskjellige kommunikasjonsprotokoller: SPI 3 Wire-modus, SPI firetrådsmodus og I2C-modus. Pinnene og dens funksjoner er forklart i tabellen nedenfor:
Pin-navn |
Andre navn |
Beskrivelse |
Gnd |
Bakke |
Jordingsstift på modulen |
Vdd |
Vcc, 5V |
Strømstift (3-5 V tolerabel) |
SCK |
D0, SCL, CLK |
Fungerer som klokken. Brukes til både I2C og SPI |
SDA |
D1, MOSI |
Datapinnen til modulen. Brukes til både IIC og SPI |
RES |
RST, RESET |
Tilbakestiller modulen (nyttig under SPI) |
DC |
A0 |
Data Command pin. Brukes til SPI-protokoll |
CS |
Chip Select |
Nyttig når mer enn én modul brukes under SPI-protokoll |
Vi har dekket en full artikkel om OLED-skjermer og dens typer her.
OLED Spesifikasjoner:
- OLED Driver IC: SSD1306
- Oppløsning: 128 x 64
- Visuell vinkel:> 160 °
- Inngangsspenning: 3,3V ~ 6V
- Pikselfarge: Blå
- Arbeidstemperatur: -30 ° C ~ 70 ° C
Lær mer om OLED og dets grensesnitt med forskjellige mikrokontrollere ved å følge lenken.
Kretsdiagram for luftkvalitetsanalysator
Kretsskjemaet for måling av PM2.5- og PM10-partikler ved bruk av Arduino er veldig enkelt og gitt nedenfor.
SDS011-sensor og OLED-skjermmodul er begge drevet med + 5V og GND. Senderen og mottakerpinnene til SDS011 er koblet til D3- og D4-pinnene på Arduino Nano. Siden OLED Display-modulen bruker SPI-kommunikasjon, har vi etablert en SPI-kommunikasjon mellom OLED-modulen og Arduino Nano. Tilkoblingene er vist i tabellen nedenfor:
S. nr |
OLED-modulstift |
Arduino Pin |
1 |
GND |
Bakke |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
1. 3 |
6 |
DC |
11 |
7 |
CS |
12 |
Bygg kretsen på Perf Board
Jeg har også loddet alle komponentene på perf-kortet for å få det til å se pent ut. Men du kan også lage dem på et brødbrett. Brettene jeg laget er nedenfor. Sørg for at du ikke sorterer ledningene mens du lodder. Perfektbrettet som jeg loddet er vist nedenfor:
Kodeforklaring for luftkvalitetsmonitor
Den komplette koden for dette prosjektet er gitt på slutten av dokumentet. Her forklarer vi noen viktige deler av koden.
Koden bruker SDS011, Adafruit_GFX , og Adafruit_SSD1306 biblioteker. Disse bibliotekene kan lastes ned fra Library Manager i Arduino IDE og kan installeres derfra. For det, åpne Arduino IDE og gå til Skisse> Inkluder bibliotek> Administrer biblioteker . Søk nå etter SDS011 og installer SDS Sensor-biblioteket av R. Zschiegner.
På samme måte installerer du Adafruit GFX og Adafruit SSD1306- bibliotekene av Adafruit.
Etter at du har installert bibliotekene på Arduino IDE, starter du koden ved å inkludere de nødvendige biblioteksfilene.
#inkludere
I de neste linjene definerer du to variabler for å lagre PM10- og PM2.5-verdiene.
flyte p10, p25;
Definer deretter OLED-bredde og høyde. I dette prosjektet bruker vi en 128 × 64 SPI OLED-skjerm. Du kan endre variablene SCREEN_WIDTH og SCREEN_HEIGHT i henhold til skjermen.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Definer deretter SPI-kommunikasjonspinnene der OLED Display er koblet til.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Opprett deretter en Adafruit-skjermforekomst med bredden og høyden definert tidligere med SPI-kommunikasjonsprotokollen.
Adafruit_SSD1306-skjerm (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Nå i setup () -funksjonen, initialiser du Serial Monitor med en overføringshastighet på 9600 for feilsøkingsformål. Initialiser også OLED-skjermen og SDS011-sensoren med start () -funksjonen.
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Inne i tomrummet (), les PM10- og PM2.5-verdiene fra SDS011-sensoren og skriv ut målingene på en seriell skjerm.
ugyldig sløyfe () {error = my_sds.read (& p25, & p10); hvis (! feil) {Serial.println ("P2.5:" + Streng (p25)); Serial.println ("P10:" + Streng (p10));
Deretter angir du tekststørrelse og tekstfarge ved å bruke setTextSize () og setTextColor () .
display.setTextSize (2); display.setTextColor (HVIT);
Så i neste linje, definer posisjonen for å starte teksten ved hjelp av setCursor (x, y) -metoden. Her vil vi vise PM2.5- og PM10-verdiene på OLED-skjermen, slik at den første linjen starter på (0,15) mens den andre linjen starter ved (0, 40) -koordinatene.
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 slutt, ring display () -metoden for å vise teksten på OLED Display.
display.display (); display.clearDisplay ();
Testing av Arduino luftkvalitetsmonitor
Når maskinvaren og koden er klar, er det på tide å teste enheten. For det, koble Arduino til den bærbare datamaskinen, velg Board og Port, og trykk på opplastingsknappen. Som du kan se på bildet nedenfor, vil det vise PM2.5- og PM10-verdier på OLED-skjerm.
Den komplette arbeidsvideoen og koden er gitt nedenfor. Håper du likte opplæringen og lærte noe nyttig. Hvis du har spørsmål, kan du legge dem i kommentarseksjonen eller bruke forumene våre for andre tekniske spørsmål.