- Komponenter krävs
- Sharp GP2Y1014AU0F-sensor
- OLED-skärmmodul
- Kretsschema
- Bygga kretsen på Perf Board
- Kodförklaring för luftkvalitetsanalysator
- Testar gränssnittet mellan Sharp GP2Y1014AU0F-sensor och Arduino
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 ett projekt för att övervaka luftkvaliteten genom att mäta dammpartiklarnas densitet i luften.
Så i fortsättning av våra tidigare projekt som LPG-detektor, rökdetektor och luftkvalitetsmonitor, här kommer vi att ansluta Sharp GP2Y1014AU0F-sensorn med Arduino Nano för att mäta dammtätheten i luft. Bortsett från dammsensorn och Arduino Nano används också en OLED-skärm för att visa de uppmätta värdena. Sharps GP2Y1014AU0F Dammsensor är mycket effektiv för att upptäcka mycket fina partiklar som cigarettrök. Den är utformad för användning i luftrenare och luftkonditioneringsapparater.
Komponenter krävs
- Arduino Nano
- Sharp GP2Y1014AU0F-sensor
- 0,96 'SPI OLED-skärmmodul
- Bygeltrådar
- 220 µf kondensator
- 150 Ω motstånd
Sharp GP2Y1014AU0F-sensor
Sharps GP2Y1014AU0F är en liten sex stift analog utgång optisk luftkvalitet / optisk dammsensor som är utformad för att avkänning dammpartiklar i luften. Det fungerar på principen om laserspridning. Inuti sensormodulen är en infraröd sänddiod och en fotosensor diagonalt anordnade nära luftinloppshålet som visas i bilden nedan:
När luft som innehåller dammpartiklar kommer in i sensorkammaren sprider dammpartiklarna IR-LED-ljuset mot fotodetektorn. Intensiteten hos det spridda ljuset beror på dammpartiklarna. Ju fler dammpartiklar i luften desto större ljusintensitet. Utgångsspänningen vid sensorns V OUT- stift ändras beroende på spridningens ljusintensitet.
GP2Y1014AU0F Sensor Pinout:
Som tidigare nämnts kommer GP2Y1014AU0F-sensorn med en 6-polig kontakt. Nedanstående figur och tabell visar stifttilldelningarna för GP2Y1014AU0F:
S. NEJ. |
Pin-namn |
Stiftbeskrivning |
1 |
V-LED |
LED Vcc-stift. Anslut till 5V till 150Ω motstånd |
2 |
LED-GND |
LED-jordstift. Anslut till GND |
3 |
LED |
Används för att växla LED på / av. Anslut till valfri digital stift av Arduino |
4 |
S-GND |
Sensor jordstift. Anslut till GND of Arduino |
5 |
V UT |
Sensor analog utgångsstift. Anslut till valfri analog stift |
6 |
V CC |
Positiv matningsstift. Anslut till 5V Arduino |
GP2Y1014AU0F-sensorspecifikationer:
- Låg strömförbrukning: 20mA max
- Typisk driftspänning: 4,5V till 5,5V
- Minsta detekterbara dammstorlek: 0,5 µm
- Dammtäthetsavkänningsområde: Upp till 580 ug / m 3
- Avkänningstid: Mindre än 1 sekund
- Mått: 1,81 x 1,18 x 0,69 '' (46,0 x 30,0 x 17,6 mm)
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:
Vi har redan täckt OLED och dess typer i detaljer i föregående artikel.
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 |
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
Kretsschema för gränssnitt Sharp GP2Y1014AU0F-sensor med Arduino ges nedan:
Kretsen är väldigt enkel eftersom vi bara ansluter GP2Y10-sensorn och OLED-skärmmodulen med Arduino Nano. GP2Y10-sensorn och OLED-skärmmodulen drivs båda med + 5V och GND. V0-stiftet är anslutet till A5-stiftet på Arduino Nano. Sensorns LED-stift är ansluten till Arduinos digitala stift12. 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 |
S. nr |
Sensorstift |
Arduino Pin |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V genom 150Ω motstånd |
Bygga kretsen på Perf Board
Efter lödning av alla komponenter på perf-kortet ser det ut som nedan. Men det kan också byggas på en bräda. Jag har lödt GP2Y1014-sensorn på samma kort som jag använde för att koppla ihop SDS011-sensorn. Se till att lödkablarna ska vara tillräckligt långt från varandra under lödningen.
Kodförklaring för luftkvalitetsanalysator
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 Adafruit_GFX , och Adafruit_SSD1306 bibliotek. Dessa bibliotek kan laddas ner från Library Manager i Arduino IDE och installera det därifrån. För det, öppna Arduino IDE och gå till Skiss <Inkludera bibliotek <Hantera bibliotek . Sök nu efter Adafruit GFX och installera Adafruit GFX-biblioteket av Adafruit.
Installera på samma sätt Adafruit SSD1306-biblioteken av Adafruit.
Efter att ha installerat biblioteken till Arduino IDE, starta koden genom att inkludera de biblioteksfiler som behövs. Dammsensorn kräver inget bibliotek eftersom vi läser spänningsvärdena direkt från den analoga stiftet till Arduino.
#omfatta
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);
Därefter definierar du dammsensorns avkänning och ledstift. Sense pin är utgångsstiftet på Dammsensorn som används för att läsa av spänningsvärdena medan ledstiftet används för att slå på / av IR-ledningen.
int sensePin = A5; int ledPin = 7;
Nu inne i setup () funktion, initiera Serial Monitor vid en baudhastighet av 9600 för felsökning. Initiera även OLED-skärmen med funktionen start () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Inuti loop () -funktionen, läs spänningsvärdena från den analoga stift 5 i Arduino Nano. Slå först på IR-lysdioden och vänta sedan på 0,28 ms innan du läser utspänningen. Därefter läser du spänningsvärdena från den analoga stiftet. Denna åtgärd tar cirka 40 till 50 mikrosekunder, så inför en fördröjning på 40 mikrosekunder innan du stänger av dammsensorn. Enligt specifikationerna ska lysdioder pulsas på var 10: e sekund, så vänta på resten av 10 ms-cykeln = 10000 - 280 - 40 = 9680 mikrosekunder .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Beräkna sedan dammtätheten i nästa rader med utgångsspänningen och signalvärdet.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Därefter ställer du in textstorlek och textfärg med setTextSize () och setTextColor () .
display.setTextSize (1); display.setTextColor (WHITE);
Definiera sedan positionen där texten börjar med metoden setCursor (x, y) i nästa rad. Och skriv ut dammtäthetsvärdena på OLED-skärmen med funktionen display.println () .
display.println ("Damm"); display.println ("Density"); display.setTextSize (3); display.println (dustLevel);
Och till sist, ring display () -metoden för att visa texten på OLED Display.
display.display (); display.clearDisplay ();
Testar gränssnittet mellan Sharp GP2Y1014AU0F-sensor och Arduino
När hårdvaran och koden är klara är det dags att testa sensorn. 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 Dammtäthet 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.