- Komponenter, der kræves
- Sharp GP2Y1014AU0F-sensor
- OLED-skærmmodul
- Kredsløbsdiagram
- Opbygning af kredsløbet på Perf Board
- Kode Forklaring til luftkvalitetsanalysator
- Test af grænsefladen mellem Sharp GP2Y1014AU0F-sensor og Arduino
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 et projekt til overvågning af luftkvaliteten ved at måle støvpartiklernes tæthed i luften.
Så i forlængelse af vores tidligere projekter som LPG-detektor, røgdetektor og luftkvalitetsmonitor skal vi her interface Sharp GP2Y1014AU0F-sensoren med Arduino Nano for at måle støvtætheden i luft. Bortset fra støvsensoren og Arduino Nano bruges en OLED-skærm også til at vise de målte værdier. Sharps GP2Y1014AU0F støvsensor er meget effektiv til at detektere meget fine partikler som cigaretrøg. Det er designet til brug i luftrensere og klimaanlæg.
Komponenter, der kræves
- Arduino Nano
- Sharp GP2Y1014AU0F-sensor
- 0,96 'SPI OLED-skærmmodul
- Jumper Wires
- 220 µf kondensator
- 150 Ω modstand
Sharp GP2Y1014AU0F-sensor
Sharps GP2Y1014AU0F er en lille seks-pin optisk luftkvalitets / optisk støvsensor med analog udgang, der er designet til at føle støvpartikler i luften. Det fungerer på princippet om laserspredning. Inde i sensormodulet er en infrarød emitterende diode og en fotosensor diagonalt anbragt nær luftindgangshullet som vist i nedenstående billede:
Når luft, der indeholder støvpartikler, kommer ind i sensorkammeret, spreder støvpartiklerne IR-LED-lyset mod fotodetektoren. Intensiteten af det spredte lys afhænger af støvpartiklerne. Jo flere støvpartikler i luften, jo større lysintensitet. Udgangsspænding ved sensorens V OUT- stift ændres i henhold til intensiteten af spredt lys.
GP2Y1014AU0F Sensor pinout:
Som tidligere nævnt leveres GP2Y1014AU0F-sensoren med et 6-polet stik. Nedenstående figur og tabel viser pin-tildelingen til GP2Y1014AU0F:
S. NO. |
Pin-navn |
Pin Beskrivelse |
1 |
V-LED |
LED Vcc-stift. Tilslut til 5V gennem 150Ω modstand |
2 |
LED-GND |
LED jordstift. Opret forbindelse til GND |
3 |
LED |
Bruges til at skifte LED til / fra. Opret forbindelse til enhver digital pin af Arduino |
4 |
S-GND |
Sensor jordstift. Opret forbindelse til GND of Arduino |
5 |
V UD |
Sensor analog udgangsstift. Tilslut til enhver analog pin |
6 |
V CC |
Positiv forsyningsstift. Tilslut til 5V Arduino |
GP2Y1014AU0F sensor specifikationer:
- Lavt strømforbrug: 20mA maks
- Typisk driftsspænding: 4,5V til 5,5V
- Minimum detekterbar støvstørrelse: 0,5 µm
- Støvtæthedsregistreringsområde: Op til 580 ug / m 3
- Sensing Time: Mindre end 1 sekund
- Mål: 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) 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:
Vi har allerede dækket OLED og dens typer i detaljer i den forrige artikel.
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 |
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
Circuit Diagram for Interfacing Sharp GP2Y1014AU0F Sensor med Arduino er angivet nedenfor:
Kredsløbet er meget simpelt, da vi kun forbinder GP2Y10-sensor og OLED-skærmmodul med Arduino Nano. GP2Y10-sensor og OLED-skærmmodul er begge forsynet med + 5V og GND. V0-stiften er forbundet med A5-stiften i Arduino Nano. Sensorens LED-pin er tilsluttet Arduinos digitale pin12. 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 |
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 gennem 150Ω modstand |
Opbygning af kredsløbet på Perf Board
Efter lodning af alle komponenterne på perf-kortet ser det ud som nedenfor. Men det kan også bygges på et brødbræt. Jeg har loddet GP2Y1014-sensoren på det samme kort, som jeg brugte til at grænsefladen til SDS011-sensoren. Under lodning skal du sørge for, at dine loddetråde skal være i tilstrækkelig afstand fra hinanden.
Kode Forklaring til luftkvalitetsanalysator
Den komplette kode for dette projekt findes i slutningen af dokumentet. Her forklarer vi nogle vigtige dele af koden.
Koden bruger Adafruit_GFX , og Adafruit_SSD1306 biblioteker. Disse biblioteker kan downloades fra Library Manager i Arduino IDE og installere det derfra. For det skal du åbne Arduino IDE og gå til Skitse <Inkluder bibliotek <Administrer biblioteker . Søg nu efter Adafruit GFX og installer Adafruit GFX-biblioteket af Adafruit.
Installer ligeledes Adafruit SSD1306-bibliotekerne af Adafruit.
Efter installation af bibliotekerne til Arduino IDE skal du starte koden ved at inkludere de nødvendige biblioteksfiler. Støvsensor kræver ikke noget bibliotek, da vi læser spændingsværdierne direkte fra den analoge pin fra Arduino.
#omfatte
Definer derefter OLED-bredde og højde. I dette projekt bruger vi en 128 × 64 SPI OLED-skærm. Du kan ændre variablerne SCREEN_WIDTH og SCREEN_HEIGHT 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);
Derefter defineres støvsensorernes følelse og ledede ben. Sense pin er udgangsstiften på støvsensoren, der bruges til at aflæse spændingsværdierne, mens den ledede pin bruges til at tænde / slukke for IR-ledningen.
int sensePin = A5; int ledPin = 7;
Initialiser nu Serial Monitor med en baudhastighed på 9600 til fejlfindingsformål inden for setup () -funktionen. Initialiser også OLED-displayet med funktionen start () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Inde i loop () -funktionen skal du læse spændingsværdierne fra den analoge pin 5 i Arduino Nano. Tænd først IR-lysdioden, og vent derefter på 0,28ms, før du tager en aflæsning af udgangsspændingen. Læs derefter spændingsværdierne fra den analoge pin. Denne handling tager omkring 40 til 50 mikrosekunder, så indfør en 40-mikrosekund forsinkelse, inden du slukker for støvføleren. I henhold til specifikationerne skal LED lyses op en gang hver 10 ms, så vent på resten af 10 ms cyklus = 10000 - 280 - 40 = 9680 mikrosekunder .
digitalWrite (ledPin, LOW); forsinkelse Mikrosekunder (280); outVo = analogRead (sensePin); forsinkelseMikrosekunder (40); digitalWrite (ledPin, HIGH); forsinkelseMikrosekunder (9680);
Beregn derefter støvtætheden i de næste linjer ved hjælp af udgangsspændingen og signalværdien.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Derefter skal du indstille tekststørrelsen og tekstfarven ved hjælp af setTextSize () og setTextColor () .
display.setTextSize (1); display.setTextColor (HVID);
Derefter defineres i næste linje positionen, hvor teksten starter ved hjælp af setCursor (x, y) -metoden. Og udskriv støvtæthedsværdier på OLED-skærm ved hjælp af display.println () -funktionen.
display.println ("Dust"); display.println ("Density"); display.setTextSize (3); display.println (dustLevel);
Og til sidst skal du ringe til display () -metoden for at få vist teksten på OLED Display.
display.display (); display.clearDisplay ();
Test af grænsefladen mellem Sharp GP2Y1014AU0F-sensor og Arduino
Når hardware og kode er klar, er det tid til at teste sensoren. 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, vil det vise støvtæthed 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.