- Komponenter krävs
- Nova PM-sensor SDS011
- 0,96-tums OLED-skärmmodul
- Kretsschema för luftkvalitetsanalysator
- Bygga kretsen på Perf Board
- Kodförklaring för luftkvalitetsövervakare
- Arduino Air Quality Monitor Testing
Luftföroreningar är en stor fråga i många städer och luftkvalitetsindex förvärras varje dag. Enligt rapporten från Världshälsoorganisationen dödas fler människor i förtid av effekterna av farliga partiklar som presenteras i luften än från bilolyckor. Enligt Environmental Protection Agency (EPA) kan inomhusluften vara 2 till 5 gånger mer giftig än utomhusluften. Så här bygger vi en enhet för att övervaka luftkvaliteten genom att mäta PM2.5- och PM10-partiklar i luften.
Vi använde tidigare MQ135-gassensorn för luftkvalitetsmonitor och Sharp GP2Y1014AU0F-sensorn för att mäta dammtätheten i luften. Den här gången använder vi en SDS011-sensor med Arduino Nano för att bygga luftkvalitetsanalysator. SDS011-sensorn kan beräkna koncentrationerna av PM2.5- och PM10-partiklar i luften. Här visas realtidsvärdena PM2.5 och PM 10 på OLED-skärmen.
Komponenter krävs
- Arduino Nano
- Nova PM-sensor SDS011
- 0,96 'SPI OLED-skärmmodul
- Bygeltrådar
Nova PM-sensor SDS011
SDS011-sensorn är en mycket ny luftkvalitetssensor utvecklad av Nova Fitness. Det fungerar på principen om laserspridning och kan få partikelkoncentrationen mellan 0,3 och 10 μm i luften. Denna sensor består av en liten fläkt, luftinloppsventil, laserdiod och fotodiod. Luften kommer in genom luftinloppet där en ljuskälla (Laser) lyser upp partiklarna och det spridda ljuset omvandlas till en signal av en fotodetektor. Dessa signaler förstärks och bearbetas för att få partikelkoncentrationen PM2.5 och PM10.
SDS011-sensorspecifikationer:
- Utgång: PM2.5, PM10
- Mätområde: 0,0-999,9 μg / m3
- Ingångsspänning: 4.7V till 5.3V
- Maximal ström: 100mA
- Sovström: 2mA
- Svarstid: 1 sekund
- Seriell datainmatningsfrekvens: 1 gång / sekund
- Partikeldiameterupplösning: ≤ 0,3 μm
- Relativt fel: 10%
- Temperaturområde: -20 ~ 50 ° C
0,96-tums OLED-skärmmodul
OLED (Organic Light-Emitting Diodes) är en självljusemitterande teknik, konstruerad genom att placera en serie organiska tunna filmer mellan två ledare. Ett starkt ljus produceras när en elektrisk ström appliceras på dessa filmer. OLED-enheter använder samma teknik som tv-apparater, men har färre pixlar än i de flesta av våra tv-apparater.
För detta projekt använder vi en monokrom 7-stifts SSD1306 0,96 ”OLED-skärm. Det kan fungera på tre olika kommunikationsprotokoll: SPI 3 Wire-läge, SPI-fyrtrådsläge och I2C-läge. Stiften och dess funktioner förklaras i tabellen nedan:
Pin-namn |
Andra namn |
Beskrivning |
Gnd |
Jord |
Jordens stift på modulen |
Vdd |
Vcc, 5V |
Strömstift (3-5 V acceptabelt) |
SCK |
D0, SCL, CLK |
Fungerar som klockstift. Används för både I2C och SPI |
SDA |
D1, MOSI |
Modulens datapinne. Används för både IIC och SPI |
RES |
RST, RESET |
Återställer modulen (användbar under SPI) |
DC |
A0 |
Data Command pin. Används för SPI-protokoll |
CS |
Chip Select |
Användbar när mer än en modul används under SPI-protokollet |
Vi har täckt en fullständig artikel om OLED-skärmar och dess typer här.
OLED-specifikationer:
- OLED Driver IC: SSD1306
- Upplösning: 128 x 64
- Synvinkel:> 160 °
- Ingångsspänning: 3,3V ~ 6V
- Pixelfärg: Blå
- Arbetstemperatur: -30 ° C ~ 70 ° C
Läs mer om OLED och dess gränssnitt med olika mikrokontroller genom att följa länken.
Kretsschema för luftkvalitetsanalysator
Kretsschemat för att mäta PM2.5- och PM10-partiklar med Arduino är väldigt enkelt och ges nedan.
SDS011-sensorn och OLED-skärmmodulen drivs båda med + 5V och GND. Sändaren och mottagarstiftet på SDS011 är anslutna till D3- och D4-stiften på Arduino Nano. Eftersom OLED Display-modulen använder SPI-kommunikation har vi upprättat en SPI-kommunikation mellan OLED-modulen och Arduino Nano. Anslutningarna visas i nedanstående tabell:
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 |
Bygga kretsen på Perf Board
Jag har också lödt alla komponenter på perf-kortet så att det ser snyggt ut. Men du kan också göra dem på en bräda. Brädorna som jag gjorde är nedan. Se till att du inte sorterar ledningarna under lödningen. Perf-kortet som jag lödde visas nedan:
Kodförklaring för luftkvalitetsövervakare
Den fullständiga koden för detta projekt ges i slutet av dokumentet. Här förklarar vi några viktiga delar av koden.
Koden använder SDS011, Adafruit_GFX , och Adafruit_SSD1306 bibliotek. Dessa bibliotek kan laddas ner från Library Manager i Arduino IDE och kan installeras därifrån. För det, öppna Arduino IDE och gå till Skiss> Inkludera bibliotek> Hantera bibliotek . Sök nu efter SDS011 och installera SDS Sensor-biblioteket av R. Zschiegner.
Installera på samma sätt Adafruit GFX och Adafruit SSD1306- biblioteken av Adafruit.
När du har installerat biblioteken på Arduino IDE startar du koden med de biblioteksfiler som behövs.
#omfatta
Definiera två variabler i nästa rad för att lagra PM10- och PM2.5-värdena.
flottör p10, p25;
Definiera sedan OLED-bredd och höjd. I det här projektet använder vi en 128 × 64 SPI OLED-skärm. Du kan ändra variablerna SCREEN_WIDTH och SCREEN_HEIGHT enligt din skärm.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Definiera sedan SPI-kommunikationsnålarna där OLED Display är ansluten.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Skapa sedan en Adafruit-skärminstans med bredden och höjden definierad tidigare med SPI-kommunikationsprotokollet.
Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Nu inne i setup () funktion, initiera Serial Monitor vid en baudhastighet av 9600 för felsökning. Initiera också OLED-skärmen och SDS011-sensorn med funktionen start () .
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Inom tomrumsslingan (), läs PM10- och PM2.5-värdena från SDS011-sensorn och skriv ut avläsningarna på en seriell bildskärm.
void loop () {error = my_sds.read (& p25, & p10); if (! error) {Serial.println ("P2.5:" + Sträng (p25)); Serial.println ("P10:" + Sträng (p10));
Därefter ställer du in textstorlek och textfärg med setTextSize () och setTextColor () .
display.setTextSize (2); display.setTextColor (WHITE);
Sedan i nästa rad, definiera positionen för att starta texten med metoden setCursor (x, y) . Här visar vi PM2.5- och PM10-värdena på OLED-skärmen så att den första raden börjar vid (0,15) medan den andra raden börjar vid (0, 40) -koordinaterna.
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);
Och slutligen, ring display () -metoden för att visa texten på OLED Display.
display.display (); display.clearDisplay ();
Arduino Air Quality Monitor Testing
När hårdvaran och koden är redo är det dags att testa enheten. För det ansluter du Arduino till den bärbara datorn, väljer styrelsen och porten och trycker på uppladdningsknappen. Som du kan se i bilden nedan visar den PM2.5- och PM10-värdena på OLED-skärmen.
Den fullständiga arbetsvideo och koden ges nedan. Hoppas att du gillade självstudien och lärde dig något användbart. Om du har några frågor lämnar du dem i kommentarsektionen eller använder våra forum för andra tekniska frågor.