- Komponenter kreves
- Skarp GP2Y1014AU0F-sensor
- OLED-skjermmodul
- Kretsdiagram
- Bygg kretsen på Perf Board
- Kode Forklaring for luftkvalitetsanalysator
- Testing av grensesnittet til Sharp GP2Y1014AU0F-sensor med Arduino
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 et prosjekt for å overvåke luftkvaliteten ved å måle støvpartikkeltettheten i luften.
Så i fortsettelse av våre tidligere prosjekter som LPG-detektor, Røykdetektor og Air Quality Monitor, her skal vi grensesnitt Sharp GP2Y1014AU0F-sensoren med Arduino Nano for å måle støvtettheten i luft. Bortsett fra støvsensoren og Arduino Nano, brukes også en OLED-skjerm for å vise de målte verdiene. Sharps GP2Y1014AU0F støvsensor er veldig effektiv til å oppdage veldig fine partikler som sigarettrøyk. Den er designet for bruk i luftrensere og klimaanlegg.
Komponenter kreves
- Arduino Nano
- Skarp GP2Y1014AU0F-sensor
- 0,96 'SPI OLED-skjermmodul
- Jumper Wires
- 220 µf kondensator
- 150 Ω motstand
Skarp GP2Y1014AU0F-sensor
Sharps GP2Y1014AU0F er en liten seks-pin optisk luftkvalitets / optisk støvsensor med analog utgang som er designet for å føle støvpartikler i luften. Det fungerer på prinsippet om laserspredning. Inne i sensormodulen er en infrarød emitterende diode og en fotosensor diagonalt anordnet nær luftinntakshullet som vist på bildet nedenfor:
Når luft som inneholder støvpartikler kommer inn i sensorkammeret, sprer støvpartiklene IR-LED-lyset mot fotodetektoren. Intensiteten til det spredte lyset avhenger av støvpartiklene. Jo flere støvpartikler i luften, jo større lysintensitet. Utgangsspenningen ved V OUT- pinnen til sensoren endres i henhold til intensiteten av spredt lys.
GP2Y1014AU0F Sensor Pinout:
Som nevnt tidligere, kommer GP2Y1014AU0F-sensoren med en 6-pinners kontakt. Figuren og tabellen nedenfor viser pin-tildelingene for GP2Y1014AU0F:
S. NO. |
Pin-navn |
Pin Beskrivelse |
1 |
V-LED |
LED Vcc Pin. Koble til 5V gjennom 150Ω motstand |
2 |
LED-GND |
LED bakkenål. Koble til GND |
3 |
LED |
Brukes til å slå LED på / av. Koble til hvilken som helst digital pin av Arduino |
4 |
S-GND |
Jordingsstift for sensor. Koble til GND of Arduino |
5 |
V UT |
Sensor analog utgangsstift. Koble til en hvilken som helst analog pin |
6 |
V CC |
Positiv forsyningspinne. Koble til 5V Arduino |
GP2Y1014AU0F sensorspesifikasjoner:
- Lavt strømforbruk: 20mA maks
- Typisk driftsspenning: 4,5V til 5,5V
- Minimum detekterbar støvstørrelse: 0,5 µm
- Støvtetthetsfølsomhet: Opptil 580 ug / m 3
- Sensing Time: Mindre enn 1 sekund
- Dimensjoner: 1,81 x 1,18 x 0,69 '' (46,0 x 30,0 x 17,6 mm)
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:
Vi har allerede dekket OLED og dens typer i detaljer i forrige artikkel.
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 |
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
Kretsdiagram for grensesnitt Sharp GP2Y1014AU0F-sensor med Arduino er gitt nedenfor:
Kretsen er veldig enkel ettersom vi bare kobler til GP2Y10-sensor og OLED-skjermmodul med Arduino Nano. GP2Y10-sensoren og OLED-skjermmodulen drives begge med + 5V og GND. V0-pinnen er koblet til A5-pinnen til Arduino Nano. LED-pinnen til sensoren er koblet til Arduinos digitale pin12. 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 |
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 gjennom 150Ω motstand |
Bygg kretsen på Perf Board
Etter å ha loddet alle komponentene på perf-kortet, vil det se ut som nedenfor. Men den kan også bygges på et brødbrett. Jeg har loddet GP2Y1014-sensoren på samme kort som jeg brukte til å grensesnittet til SDS011-sensoren. Mens du lodder, må du sørge for at loddetrådene skal være i tilstrekkelig avstand fra hverandre.
Kode Forklaring for luftkvalitetsanalysator
Den komplette koden for dette prosjektet er gitt på slutten av dokumentet. Her forklarer vi noen viktige deler av koden.
Koden bruker Adafruit_GFX , og Adafruit_SSD1306 biblioteker. Disse bibliotekene kan lastes ned fra Library Manager i Arduino IDE og installere den derfra. For det, åpne Arduino IDE og gå til Sketch <Include Library <Manage Libraries . Søk nå etter Adafruit GFX og installer Adafruit GFX-biblioteket av Adafruit.
På samme måte installerer du Adafruit SSD1306-bibliotekene av Adafruit.
Etter at du har installert bibliotekene til Arduino IDE, starter du koden ved å inkludere de nødvendige biblioteksfilene. Støvsensor krever ikke noe bibliotek da vi leser spenningsverdiene direkte fra den analoge pinnen til Arduino.
#inkludere
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);
Deretter definerer du støvfølere og ledepinner. Sense pin er utgangspinnen til støvsensoren som brukes til å lese spenningsverdiene mens ledepinnen brukes til å slå på / av IR-ledningen.
int sensePin = A5; int ledPin = 7;
Nå i setup () -funksjonen, initialiser du Serial Monitor med en overføringshastighet på 9600 for feilsøkingsformål. Initialiser også OLED-skjermen med start () -funksjonen.
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Inne i loop () -funksjonen, les spenningsverdiene fra den analoge pin 5 på Arduino Nano. Slå først på IR-lysdioden og vent deretter på 0,28ms før du leser utgangsspenningen. Etter det, les spenningsverdiene fra den analoge pinnen. Denne operasjonen tar rundt 40 til 50 mikrosekunder, så innfør en forsinkelse på 40 mikrosekunder før du slår av støvføleren. I følge spesifikasjonene skal LED pulses på hver 10. ms, så vent til resten av 10 ms syklusen = 10000 - 280 - 40 = 9680 mikrosekunder .
digitalWrite (ledPin, LOW); forsinkelse Mikrosekunder (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Deretter beregner du støvtettheten ved hjelp av utgangsspenningen og signalverdien i de neste linjene.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Deretter angir du tekststørrelse og tekstfarge ved å bruke setTextSize () og setTextColor () .
display.setTextSize (1); display.setTextColor (HVIT);
Definere deretter posisjonen der teksten begynner å bruke metoden setCursor (x, y) i neste linje. Og skriv ut støvdensitetsverdiene på OLED-skjermen ved hjelp av display.println () -funksjonen.
display.println ("Dust"); display.println ("Tetthet"); display.setTextSize (3); display.println (dustLevel);
Og til slutt, ring display () -metoden for å vise teksten på OLED Display.
display.display (); display.clearDisplay ();
Testing av grensesnittet til Sharp GP2Y1014AU0F-sensor med Arduino
Når maskinvaren og koden er klar, er det på tide å teste sensoren. For det, koble Arduino til den bærbare datamaskinen, velg Board og Port, og trykk på opplastingsknappen. Som du kan se i bildet nedenfor, vil det vise støvtetthet 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.