- Szükséges alkatrészek
- Sharp GP2Y1014AU0F érzékelő
- OLED kijelző modul
- Kördiagramm
- Az áramkör felépítése Perf Board-ra
- Kódmagyarázat a levegőminőség-elemzőhöz
- A Sharp GP2Y1014AU0F érzékelő és az Arduino interfészének tesztelése
A légszennyezés számos városban kiemelt kérdés, és a levegőminőségi index minden nap romlik. Az Egészségügyi Világszervezet jelentése szerint több embert ölnek meg idő előtt a levegőben megjelenő veszélyes részecskék, mint autóbalesetek következtében. A Környezetvédelmi Ügynökség (EPA) szerint a beltéri levegő 2–5-szer mérgezőbb lehet, mint a kültéri levegő. Tehát itt építünk egy projektet a levegő minőségének ellenőrzésére a porszemcsék sűrűségének mérésével.
Tehát korábbi projektjeink folytatásaként, mint az LPG-érzékelő, a füstérzékelő és a levegőminőség-figyelő, itt fogjuk összekapcsolni a Sharp GP2Y1014AU0F érzékelőt az Arduino Nano-val, hogy megmérjük a levegő por sűrűségét. A por érzékelőn és az Arduino Nano mellett OLED kijelzőt is használnak a mért értékek megjelenítésére. A Sharp GP2Y1014AU0F porérzékelője nagyon hatékonyan érzékeli a nagyon finom részecskéket, például a cigarettafüstöt. Légtisztítókban és légkondicionálókban való használatra tervezték.
Szükséges alkatrészek
- Arduino Nano
- Sharp GP2Y1014AU0F érzékelő
- 0,96 'SPI OLED kijelző modul
- Jumper huzalok
- 220 µf kondenzátor
- 150 Ω ellenállás
Sharp GP2Y1014AU0F érzékelő
A Sharp GP2Y1014AU0F egy apró hat tűs analóg kimeneti optikai levegőminőségi / optikai porérzékelő, amelyet a levegőben lévő porszemcsék érzékelésére terveztek. Ez azon az elven működik a lézerszóródással. Az érzékelő modul belsejében egy infravörös sugárzó dióda és egy fényérzékelő van átlósan elrendezve a levegőbemeneti furat közelében, az alábbi képen látható módon:
Amikor porszemcséket tartalmazó levegő jut be az érzékelő kamrájába, a porszemcsék szétszórják az IR LED fényt a fotódetektor felé. A szórt fény intenzitása a porszemcséktől függ. Minél több porrész van a levegőben, annál nagyobb a fény intenzitása. A kimeneti feszültség az érzékelő V OUT csatlakozójánál a szórt fény intenzitása szerint változik.
GP2Y1014AU0F érzékelő kivezetése:
Mint korábban említettük, a GP2Y1014AU0F érzékelő 6 tűs csatlakozóval rendelkezik. Az alábbi ábra és táblázat a GP2Y1014AU0F tűkiosztásait mutatja:
S. NEM. |
PIN neve |
PIN leírás |
1 |
V-LED |
LED Vcc tű. Csatlakoztassa az 5V-ot 150Ω ellenállással |
2 |
LED-GND |
LED földelőcsap. Csatlakozzon a GND-hez |
3 |
VEZETTE |
A LED be- és kikapcsolására szolgál. Csatlakozzon az Arduino bármely digitális tűjéhez |
4 |
S-GND |
Érzékelő földelő csap. Csatlakozzon az Arduino GND-jéhez |
5. |
V OUT |
Érzékelő analóg kimeneti csap. Csatlakoztassa bármelyik analóg csaphoz |
6. |
V CC |
Pozitív tápcsap. Csatlakoztassa az Arduino 5 V-jához |
GP2Y1014AU0F érzékelő műszaki adatai:
- Alacsony áramfelvétel: 20mA max
- Tipikus üzemi feszültség: 4,5–5,5 V
- Minimális detektálható porméret: 0,5µm
- Por sűrűség érzékelési tartomány: Legfeljebb 580 ug / m 3
- Érzékelési idő: kevesebb, mint 1 másodperc
- Méretek: 1,81 x 1,18 x 0,69 "(46,0 x 30,0 x 17,6 mm)
OLED kijelző modul
Az OLED (Organic Light-Emitting Diodes) egy önfénykibocsátó technológia, amelyet úgy állítottak elő, hogy két vezető közé szerves vékony filmeket helyeztek el. Erős fény keletkezik, ha ezekre a filmekre elektromos áramot vezetnek. Az OLED-k ugyanazt a technológiát használják, mint a televíziók, de kevesebb pixel van, mint a legtöbb tévénknél.
Ehhez a projekthez monokróm 7 tűs SSD1306 0,96 ”OLED kijelzőt használunk. Három különböző kommunikációs protokollon működhet: SPI 3 vezetékes mód, SPI négyvezetékes és I2C mód. A csapokat és funkcióit az alábbi táblázat ismerteti:
Az OLED-et és annak típusait már részletesen ismertettük az előző cikkben.
PIN neve |
Más nevek |
Leírás |
Gnd |
Talaj |
A modul földelt csapja |
Vdd |
Vcc, 5V |
Tápcsatlakozó (3-5V tolerálható) |
SCK |
D0, SCL, CLK |
Óraszegként működik. I2C és SPI esetén egyaránt használható |
SDA |
D1, MOSI |
A modul adatlapja. IIC-hez és SPI-hez egyaránt használják |
RES |
RST, RESET |
Visszaállítja a modult (SPI során hasznos) |
DC |
A0 |
Data Command pin. SPI protokollhoz használják |
CS |
Chip Select |
Hasznos, ha több modult használ SPI protokoll alatt |
OLED specifikációk:
- OLED illesztőprogram IC: SSD1306
- Felbontás: 128 x 64
- Vizuális szög:> 160 °
- Bemeneti feszültség: 3,3 V ~ 6 V
- Pixel színe: kék
- Működési hőmérséklet: -30 ° C ~ 70 ° C
Tudjon meg többet az OLED-ről és a különböző mikrovezérlőkkel való összekapcsolásáról a link követésével.
Kördiagramm
Az Sharp GP2Y1014AU0F érzékelő és az Arduino interfészének áramköri diagramja az alábbiakban látható:
Az áramkör nagyon egyszerű, mivel csak a GP2Y10 érzékelőt és az OLED kijelző modult csatlakoztatjuk az Arduino Nano-hoz. A GP2Y10 érzékelő és az OLED kijelző modul egyaránt + 5 V és GND tápellátást kap. A V0 tű csatlakozik az Arduino Nano A5 tűjéhez. Az érzékelő LED-csapja az Arduino digitális érintkezőjéhez12 csatlakozik. Mivel az OLED Display modul SPI kommunikációt használ, létrehoztunk egy SPI kommunikációt az OLED modul és az Arduino Nano között. A csatlakozásokat az alábbi táblázat mutatja:
S.No |
OLED modul csap |
Arduino Pin |
1 |
GND |
Talaj |
2 |
VCC |
5V |
3 |
D0 |
10. |
4 |
D1 |
9. |
5. |
RES |
13. |
6. |
DC |
11. |
7 |
CS |
12. |
S.No |
Érzékelő csap |
Arduino Pin |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
VEZETTE |
7 |
5. |
LED-GND |
GND |
6. |
V-LED |
5V 150Ω ellenállással |
Az áramkör felépítése Perf Board-ra
Miután forrasztotta az összes alkatrészt a perf táblán, valami olyasmi fog kinézni, mint az alábbiakban. De kenyérlapra is építhető. Forrasztottam a GP2Y1014 érzékelőt ugyanarra a táblára, mint az SDS011 érzékelő összekapcsolására. Forrasztás közben ellenőrizze, hogy a forrasztási huzalok kellő távolságban legyenek-e egymástól.
Kódmagyarázat a levegőminőség-elemzőhöz
A projekt teljes kódja a dokumentum végén található. Itt elmagyarázzuk a kód néhány fontos részét.
A kód az Adafruit_GFX , és Adafruit_SSD1306 könyvtárak. Ezek a könyvtárak letölthetők az Arduino IDE könyvtárkezelőjéből, és onnan telepíthetők. Ehhez nyissa meg az Arduino IDE-t, és lépjen a Sketch <Könyvtár belefoglalása <Könyvtárak kezelése oldalra . Most keresse meg az Adafruit GFX szót, és telepítse az Adafruit GFX könyvtárat.
Hasonlóképpen telepítse az Adafruit SSD1306 könyvtárait is.
Miután telepítette a könyvtárakat az Arduino IDE-be, indítsa el a kódot a szükséges könyvtárak fájljainak beillesztésével. A porérzékelő nem igényel könyvtárat, mivel a feszültségértékeket közvetlenül az Arduino analóg tűjéről olvassuk le.
#include
Ezután adja meg az OLED szélességét és magasságát. Ebben a projektben egy 128 × 64 SPI OLED kijelzőt használunk. Megváltoztathatja a SCREEN_WIDTH és a SCREEN_HEIGHT változókat a megjelenítésnek megfelelően.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Ezután adja meg az SPI kommunikációs csapokat, ahová az OLED kijelző csatlakozik.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Ezután hozzon létre egy Adafruit megjelenítési példányt az SPI kommunikációs protokollal korábban meghatározott szélességgel és magassággal.
Adafruit_SSD1306 kijelző (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Ezután határozza meg a Por érzékelők érzékelő és led csapokat. A Sense pin a por érzékelő kimeneti csapja, amely a feszültségértékek leolvasására szolgál, míg a led csap az IR Led be- és kikapcsolására szolgál.
int értelembenPin = A5; int ledPin = 7;
Most a setup () funkción belül inicializálja a soros monitort 9600-as sebességgel hibakeresés céljából. Ezenkívül inicializálja az OLED kijelzőt a begin () függvénnyel.
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
A loop () függvényben olvassa el az Arduino Nano 5. analóg érintkezőjének feszültségértékeit. Először kapcsolja be az IR LED-et, majd várjon 0,28 ms-ot, mielőtt leolvassa a kimeneti feszültséget. Ezt követően olvassa le a feszültségértékeket az analóg csapról. Ez a művelet körülbelül 40-50 mikroszekundumot vesz igénybe, ezért állítson be egy 40 mikrosekundumos késleltetést, mielőtt kikapcsolná a porérzékelő ledjét. A specifikációk szerint a LED-et 10 ms-onként egyszer kell bekapcsolni, ezért várja meg a 10 ms-os ciklus hátralévő részét = 10000 - 280 - 40 = 9680 mikroszekundum .
digitalWrite (ledPin, LOW); késleltetés mikroszekundum (280); outVo = analogRead (sensePin); késleltetés mikroszekundum (40); digitalWrite (ledPin, HIGH); késleltetés mikroszekundum (9680);
Ezután a következő sorokban számítsa ki a por sűrűségét a kimeneti feszültség és a jelérték segítségével.
sigVolt = outVo * (5/1024); porszint = 0,17 * sigVolt - 0,1;
Ezt követően állítsa be a szöveg méretét és színét a setTextSize () és a setTextColor () használatával .
display.setTextSize (1); display.setTextColor (FEHÉR);
Ezután a következő sorban adja meg a szöveg kezdési helyét a setCursor (x, y) módszerrel. És a display.println () függvény segítségével nyomtassa ki a por sűrűségértékeit az OLED kijelzőre.
display.println ("Por"); display.println ("Sűrűség"); display.setTextSize (3); display.println (dustLevel);
És az utolsóban hívja meg a display () metódust a szöveg OLED kijelzőn való megjelenítéséhez.
display.display (); display.clearDisplay ();
A Sharp GP2Y1014AU0F érzékelő és az Arduino interfészének tesztelése
Miután elkészült a hardver és a kód, ideje tesztelni az érzékelőt. Ehhez csatlakoztassa az Arduino-t a laptophoz, válassza ki a Board és a Port elemet, majd nyomja meg a feltöltés gombot. Amint az alábbi képen látható, az OLED kijelzőn megjelenik a Por sűrűsége.
A teljes működő videó és kód az alábbiakban található. Remélem, tetszett a bemutató, és valami hasznosat tanultál. Ha bármilyen kérdése van, hagyja a megjegyzés rovatban, vagy használja fórumunkat egyéb technikai kérdésekhez.