- Súčasti sú povinné
- Sharp GP2Y1014AU0F senzor
- OLED displejový modul
- Schéma zapojenia
- Budovanie obvodu na doske Perf
- Vysvetlenie kódu pre analyzátor kvality vzduchu
- Testovanie prepojenia senzora Sharp GP2Y1014AU0F s Arduino
Znečistenie ovzdušia je hlavným problémom mnohých miest a index kvality ovzdušia sa každým dňom zhoršuje. Podľa správy Svetovej zdravotníckej organizácie je účinkami nebezpečných častíc prítomných vo vzduchu predčasne zabitých viac ľudí ako pri autonehodách. Podľa Agentúry na ochranu životného prostredia (EPA) môže byť vnútorný vzduch 2 až 5-krát toxickejší ako vonkajší. Takže tu budujeme projekt na sledovanie kvality vzduchu meraním hustoty prachových častíc vo vzduchu.
Takže v pokračovaní našich predchádzajúcich projektov, ako sú detektor LPG, detektor dymu a monitor kvality ovzdušia, budeme tu prepojiť senzor Sharp GP2Y1014AU0F s Arduino Nano na meranie hustoty prachu vo vzduchu. Na meranie nameraných hodnôt sa okrem Dust senzora a Arduino Nano používa aj OLED displej. Prachový senzor Sharp GP2Y1014AU0F je veľmi efektívny pri detekcii veľmi jemných častíc, ako je cigaretový dym. Je určený na použitie v čističkách vzduchu a klimatizáciách.
Súčasti sú povinné
- Arduino Nano
- Sharp GP2Y1014AU0F senzor
- 0,96 'SPI OLED displejový modul
- Prepojovacie drôty
- 220 µf kondenzátor
- Rezistor 150 Ω
Sharp GP2Y1014AU0F senzor
Sharp GP2Y1014AU0F je malý šesťpinový analógový výstupný optický snímač kvality vzduchu / optický snímač prachu, ktorý je navrhnutý tak, aby snímal prachové častice vo vzduchu. Funguje na princípe laserového rozptylu. Vo vnútri modulu snímača sú v blízkosti otvoru na nasávanie vzduchu diagonálne usporiadané dióda vyžarujúca infračervené žiarenie a fotosenzor, ako je to znázornené na nasledujúcom obrázku:
Keď vzduch obsahujúci prachové častice vstupuje do komory snímača, rozptýlia prachové častice IR LED svetlo smerom k fotodetektoru. Intenzita rozptýleného svetla závisí od prachových častíc. Čím viac prachových častíc vo vzduchu, tým väčšia intenzita svetla. Výstupné napätie na kolíku V OUT snímača sa mení podľa intenzity rozptýleného svetla.
GP2Y1014AU0F Pinout snímača:
Ako už bolo spomenuté skôr, snímač GP2Y1014AU0F sa dodáva so 6-pólovým konektorom. Nasledujúci obrázok a tabuľka zobrazuje priradenie pinov GP2Y1014AU0F:
S. NO. |
Názov špendlíka |
Popis špendlíka |
1 |
V-LED |
Pin LED Vcc. Pripojte k 5V cez 150Ω rezistor |
2 |
LED-GND |
Uzemňovací kolík LED. Pripojte k GND |
3 |
LED |
Slúži na zapnutie / vypnutie LED. Pripojte k ľubovoľnému digitálnemu kolíku Arduino |
4 |
S-GND |
Uzemňovací kolík snímača. Pripojte k GND Arduina |
5 |
V OUT |
Pin analógového výstupu snímača. Pripojte k ľubovoľnému analógovému kolíku |
6 |
V CC |
Pozitívny kolík dodávky. Pripojte k 5V Arduina |
Špecifikácie snímača GP2Y1014AU0F:
- Nízka spotreba prúdu: max. 20 mA
- Typické prevádzkové napätie: 4,5 V až 5,5 V.
- Minimálna detekovateľná veľkosť prachu: 0,5 µm
- Rozsah snímania hustoty prachu: až 580 ug / m 3
- Čas snímania: menej ako 1 sekunda
- Rozmery: 46,0 x 30,0 x 17,6 mm (1,81 x 1,18 x 0,69 ")
OLED displejový modul
OLED (Organic Light Emitting Diodes) je technológia samočinného vyžarovania svetla skonštruovaná umiestnením série organických tenkých vrstiev medzi dva vodiče. Keď sa na tieto filmy privádza elektrický prúd, vytvára sa jasné svetlo. OLED používajú rovnakú technológiu ako televízory, ale majú menej pixelov ako vo väčšine našich televízorov.
Pre tento projekt používame Monochrome 7-pin SSD1306 0,96 ”OLED displej. Môže pracovať na troch rôznych komunikačných protokoloch: režim SPI 3 Wire, režim SPI so štyrmi vodičmi a režim I2C. Kolíky a ich funkcie sú vysvetlené v nasledujúcej tabuľke:
OLED a jeho typom sme sa už podrobne venovali v predchádzajúcom článku.
Názov špendlíka |
Ostatné mená |
Popis |
Gnd |
Uzemnenie |
Uzemňovací kolík modulu |
Vdd |
Vcc, 5V |
Napájací kolík (tolerovateľný 3 - 5 V) |
SCK |
D0, SCL, CLK |
Funguje ako špendlík hodín. Používa sa pre I2C aj SPI |
SDA |
D1, MOSI |
Dátový kolík modulu. Používa sa pre IIC aj SPI |
OZE |
RST, RESET |
Resetuje modul (užitočné počas SPI) |
DC |
A0 |
PIN príkazového riadku. Používa sa pre protokol SPI |
CS |
Vyberte čip |
Užitočné, ak sa v protokole SPI používa viac ako jeden modul |
Špecifikácie OLED:
- Ovládač OLED IC: SSD1306
- Rozlíšenie: 128 x 64
- Vizuálny uhol:> 160 °
- Vstupné napätie: 3,3 V ~ 6 V
- Farba pixelov: modrá
- Pracovná teplota: -30 ° C ~ 70 ° C
Viac informácií o OLED a jeho prepojení s rôznymi mikrokontrolérmi sa dozviete po kliknutí na tento odkaz.
Schéma zapojenia
Schéma zapojenia senzora Sharp GP2Y1014AU0F s Arduino je uvedená nižšie:
Obvod je veľmi jednoduchý, pretože pripájame iba senzor GP2Y10 a modul OLED Display k Arduino Nano. Senzor GP2Y10 a modul OLED Display sú napájané s napätím + 5 V a GND. Pin V0 je spojený s pinom A5 Arduino Nano. Kolík LED snímača je pripojený k digitálnemu kolíku Arduino12. Pretože modul OLED Display využíva komunikáciu SPI, nadviazali sme komunikáciu SPI medzi modulom OLED a Arduino Nano. Pripojenia sú zobrazené v nasledujúcej tabuľke:
S.No |
Pin modulu OLED |
Pin Arduino |
1 |
GND |
Uzemnenie |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
OZE |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.No |
Pin snímača |
Pin Arduino |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V cez 150Ω rezistor |
Budovanie obvodu na doske Perf
Po spájkovaní všetkých komponentov na doske perf bude vyzerať niečo ako nižšie. Dá sa ale postaviť aj na prkénku. Senzor GP2Y1014 som pripájal na tú istú dosku, ktorú som použil na prepojenie senzora SDS011. Počas spájkovania sa uistite, či sú spájkovacie vodiče v dostatočnej vzdialenosti od seba.
Vysvetlenie kódu pre analyzátor kvality vzduchu
Celý kód tohto projektu je uvedený na konci dokumentu. Tu vysvetľujeme niektoré dôležité časti kódu.
Kód používa Adafruit_GFX , a Adafruit_SSD1306 knižnice. Tieto knižnice je možné stiahnuť z aplikácie Library Manager v Arduino IDE a odtiaľ ich nainštalovať. Za týmto účelom otvorte Arduino IDE a choďte na Skica <Zahrnúť knižnicu <Spravovať knižnice . Teraz vyhľadajte Adafruit GFX a nainštalujte si knižnicu Adafruit GFX od spoločnosti Adafruit.
Podobne nainštalujte knižnice Adafruit SSD1306 od spoločnosti Adafruit.
Po inštalácii knižníc do Arduino IDE spustite kód zahrnutím potrebných súborov knižníc. Prachový senzor nevyžaduje žiadnu knižnicu, pretože čítame hodnoty napätia priamo z analógového kolíka Arduina.
#include
Potom definujte šírku a výšku OLED. V tomto projekte používame 128 × 64 SPI OLED displej. Premenné SCREEN_WIDTH a SCREEN_HEIGHT môžete zmeniť podľa svojho zobrazenia.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Potom definujte komunikačné piny SPI, kde je pripojený OLED displej.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Potom vytvorte inštanciu displeja Adafruit so šírkou a výškou definovanou skôr pomocou komunikačného protokolu SPI.
Displej Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Potom definujte snímače a senzory prachu. Sense pin je výstupný pin prachového senzora, ktorý sa používa na čítanie hodnôt napätia, zatiaľ čo led pin sa používa na zapnutie / vypnutie IR LED.
int sensePin = A5; int ledPin = 7;
Teraz vo vnútri funkcie setup () inicializujte Serial Monitor s prenosovou rýchlosťou 9600 na účely ladenia. Inicializujte tiež OLED displej pomocou funkcie start () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Vo vnútri funkcie loop () prečítajte hodnoty napätia z analógového kolíka 5 modulu Arduino Nano. Najskôr zapnite IR LED a potom počkajte 0,28 ms, až potom odčítajte výstupné napätie. Potom prečítajte hodnoty napätia z analógového kolíka. Táto operácia trvá asi 40 až 50 mikrosekúnd, takže pred vypnutím LED senzora prachu nastavte 40-mikrosekundové oneskorenie. Podľa špecifikácií by mala byť LED dióda pulzovaná raz za 10 ms, takže počkajte na zvyšok 10ms cyklu = 10 000 - 280 - 40 = 9680 mikrosekúnd .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Potom v ďalších riadkoch vypočítajte hustotu prachu pomocou výstupného napätia a hodnoty signálu.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Potom nastavte veľkosť a farbu textu pomocou metód setTextSize () a setTextColor () .
display.setTextSize (1); display.setTextColor (BIELA);
Potom v ďalšom riadku definujte pozíciu, kde text začína, pomocou metódy setCursor (x, y) . A vytlačte hodnoty hustoty prachu na OLED displeji pomocou funkcie display.println () .
display.println ("prach"); display.println ("Hustota"); display.setTextSize (3); display.println (dustLevel);
A v poslednej zavoláme metódu display () na zobrazenie textu na OLED displeji.
display.display (); display.clearDisplay ();
Testovanie prepojenia senzora Sharp GP2Y1014AU0F s Arduino
Keď je hardvér a kód pripravený, je čas testovať snímač. Za týmto účelom pripojte Arduino k notebooku, vyberte dosku a port a stlačte tlačidlo nahrávania. Ako môžete vidieť na nasledujúcom obrázku, na OLED displeji sa zobrazí hustota prachu.
Kompletné pracovné video a kód sú uvedené nižšie. Dúfam, že sa vám výukový program páčil a dozvedeli ste sa niečo užitočné. Ak máte akékoľvek otázky, nechajte ich v sekcii komentárov alebo použite naše fóra na ďalšie technické otázky.