- Požadované komponenty
- Sharp GP2Y1014AU0F senzor
- OLED displejový modul
- Kruhový diagram
- Stavba obvodu na desce Perf
- Vysvětlení kódu pro analyzátor kvality vzduchu
- Testování propojení snímače Sharp GP2Y1014AU0F s Arduino
Znečištění ovzduší je hlavním problémem mnoha měst a index kvality ovzduší se každým dnem zhoršuje. Podle zprávy Světové zdravotnické organizace je více lidí předčasně zabito účinky nebezpečných částic přítomných ve vzduchu než při autonehodách. Podle Agentury pro ochranu životního prostředí (EPA) může být vnitřní vzduch 2 až 5krát toxičtější než venkovní vzduch. Zde tedy stavíme projekt monitorování kvality vzduchu měřením hustoty prachových částic ve vzduchu.
Takže v pokračování našich předchozích projektů, jako je detektor LPG, detektor kouře a monitor kvality vzduchu, zde propojíme senzor Sharp GP2Y1014AU0F s Arduino Nano pro měření hustoty prachu ve vzduchu. Kromě snímače prachu a Arduino Nano se k zobrazení naměřených hodnot používá také OLED displej. Senzor prachu GP2Y1014AU0F společnosti Sharp je velmi účinný při detekci velmi jemných částic, jako je cigaretový kouř. Je určen pro použití v čističkách vzduchu a klimatizacích.
Požadované komponenty
- Arduino Nano
- Sharp GP2Y1014AU0F senzor
- 0,96 'SPI OLED displejový modul
- Propojovací dráty
- 220 µf kondenzátor
- 150 Ω rezistor
Sharp GP2Y1014AU0F senzor
Sharp GP2Y1014AU0F je malý šestikolíkový analogový výstupní optický snímač kvality vzduchu / optický snímač prachu, který je navržen tak, aby snímal prachové částice ve vzduchu. Funguje na principu laserového rozptylu. Uvnitř modulu snímače je poblíž otvoru pro přívod vzduchu diagonálně uspořádána infračervená emisní dioda a fotosenzor, jak je znázorněno na následujícím obrázku:
Když vzduch obsahující prachové částice vstoupí do komory senzoru, rozptýlí prachové částice IR LED světlo směrem k fotodetektoru. Intenzita rozptýleného světla závisí na prachových částicích. Čím více prachových částic ve vzduchu, tím větší intenzita světla. Výstupní napětí na kolíku V OUT snímače se mění podle intenzity rozptýleného světla.
GP2Y1014AU0F Pinout snímače:
Jak již bylo zmíněno dříve, snímač GP2Y1014AU0F je dodáván s 6kolíkovým konektorem. Níže uvedený obrázek a tabulka ukazuje přiřazení pinů pro GP2Y1014AU0F:
S. NO. |
Název PIN |
Popis kolíku |
1 |
V-LED |
LED Vcc Pin. Připojte k 5V přes 150Ω rezistor |
2 |
LED-GND |
LED uzemňovací kolík. Připojte se k GND |
3 |
VEDENÝ |
Slouží k zapnutí / vypnutí LED. Připojte se k libovolnému digitálnímu kolíku Arduina |
4 |
S-GND |
Uzemňovací kolík snímače. Připojte se ke GND Arduina |
5 |
V OUT |
Pin analogového výstupu snímače. Připojte k libovolnému analogovému kolíku |
6 |
V CC |
Pozitivní kolík napájení. Připojte k 5V Arduina |
Specifikace snímače GP2Y1014AU0F:
- Nízká spotřeba proudu: max. 20 mA
- Typické provozní napětí: 4,5 V až 5,5 V.
- Minimální detekovatelná velikost prachu: 0,5 µm
- Rozsah snímání hustoty prachu: až 580 ug / m 3
- Doba snímání: Méně než 1 sekunda
- Rozměry: 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 technologie samovolného vyzařování světla, konstruovaná umístěním řady organických tenkých vrstev mezi dva vodiče. Když je na tyto filmy aplikován elektrický proud, produkuje se jasné světlo. OLED používají stejnou technologii jako televizory, ale mají méně pixelů než ve většině našich televizorů.
Pro tento projekt používáme monochromatický 7pinový SSD1306 0,96 ”OLED displej. Může pracovat na třech různých komunikačních protokolech: režim SPI 3 Wire, režim SPI se čtyřmi vodiči a režim I2C. Piny a jejich funkce jsou vysvětleny v následující tabulce:
OLED a jeho typy jsme již podrobně popsali v předchozím článku.
Název PIN |
Ostatní jména |
Popis |
Gnd |
Přízemní |
Uzemňovací kolík modulu |
Vdd |
Vcc, 5V |
Napájecí kolík (tolerovatelný 3-5 V) |
SCK |
D0, SCL, CLK |
Funguje jako hodinový kolík. Používá se pro I2C i SPI |
SDA |
D1, MOSI |
Datový kolík modulu. Používá se pro IIC i SPI |
RES |
RST, RESET |
Resetuje modul (užitečné během SPI) |
DC |
A0 |
Datový příkazový kolík. Používá se pro protokol SPI |
CS |
Výběr čipu |
Užitečné, když se v protokolu SPI používá více než jeden modul |
Specifikace OLED:
- Ovladač OLED IC: SSD1306
- Rozlišení: 128 x 64
- Vizuální úhel:> 160 °
- Vstupní napětí: 3,3 V ~ 6 V
- Barva pixelu: modrá
- Pracovní teplota: -30 ° C ~ 70 ° C
Další informace o OLED a jeho propojení s různými mikrokontroléry získáte kliknutím na odkaz.
Kruhový diagram
Schéma zapojení rozhraní Sharp GP2Y1014AU0F senzor s Arduino je uvedeno níže:
Obvod je velmi jednoduchý, protože připojujeme pouze senzor GP2Y10 a modul OLED Display k Arduino Nano. Senzor GP2Y10 a OLED displej jsou napájeny + 5 V a GND. Pin V0 je spojen s pinem A5 Arduino Nano. Kolík LED snímače je připojen k digitálnímu kolíku Arduino12. Protože modul OLED Display využívá komunikaci SPI, navázali jsme komunikaci SPI mezi modulem OLED a Arduino Nano. Připojení jsou uvedena v následující tabulce:
S.No |
Pin modulu OLED |
Pin Arduino |
1 |
GND |
Přízemní |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.No |
Pin snímače |
Pin Arduino |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
VEDENÝ |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V přes 150Ω rezistor |
Stavba obvodu na desce Perf
Po připájení všech komponentů na desce perf bude vypadat něco jako níže. Lze jej však postavit také na prkénku. Připájel jsem senzor GP2Y1014 na stejnou desku, kterou jsem použil k propojení senzoru SDS011. Během pájení se ujistěte, že jsou vaše pájecí vodiče v dostatečné vzdálenosti od sebe.
Vysvětlení kódu pro analyzátor kvality vzduchu
Celý kód tohoto projektu je uveden na konci dokumentu. Zde vysvětlujeme některé důležité části kódu.
Kód používá Adafruit_GFX , a Adafruit_SSD1306 knihovny. Tyto knihovny lze stáhnout ze správce knihoven v prostředí Arduino IDE a odtud je nainstalovat. Za tímto účelem otevřete Arduino IDE a přejděte na Sketch <Zahrnout knihovnu <Spravovat knihovny . Nyní vyhledejte Adafruit GFX a nainstalujte knihovnu Adafruit GFX od společnosti Adafruit.
Podobně nainstalujte knihovny Adafruit SSD1306 od společnosti Adafruit.
Po instalaci knihoven do Arduino IDE spusťte kód zahrnutím potřebných souborů knihoven. Senzor prachu nevyžaduje žádnou knihovnu, protože čteme hodnoty napětí přímo z analogového pinu Arduina.
#zahrnout
Poté definujte šířku a výšku OLED. V tomto projektu používáme 128 × 64 SPI OLED displej. Proměnné SCREEN_WIDTH a SCREEN_HEIGHT můžete změnit podle svého zobrazení.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Poté definujte komunikační piny SPI, kde je připojen OLED displej.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Poté vytvořte instanci displeje Adafruit s šířkou a výškou definovanou dříve pomocí komunikačního protokolu SPI.
Adafruit_SSD1306 display (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Poté definujte snímání prachu a vodicí kolíky. Sense pin je výstupní pin snímače prachu, který se používá ke čtení hodnot napětí, zatímco pin led se používá k zapnutí / vypnutí IR LED.
int sensePin = A5; int ledPin = 7;
Nyní uvnitř funkce setup () inicializujte Serial Monitor s přenosovou rychlostí 9600 pro účely ladění. Inicializujte také OLED displej pomocí funkce begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Ve funkci loop () načtěte hodnoty napětí z analogového pinu 5 Arduino Nano. Nejprve zapněte IR LED a poté počkejte 0,28 ms, než odečtete výstupní napětí. Poté odečtěte hodnoty napětí z analogového kolíku. Tato operace trvá přibližně 40 až 50 mikrosekund, proto před vypnutím LED snímače prachu zavádějte zpoždění 40 mikrosekund. Podle specifikací by měla být LED pulzována jednou za 10 ms, takže počkejte na zbytek 10ms cyklu = 10 000 - 280 - 40 = 9680 mikrosekund .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Poté v dalších řádcích vypočítejte hustotu prachu pomocí výstupního napětí a hodnoty signálu.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Poté nastavte velikost a barvu textu pomocí setTextSize () a setTextColor () .
display.setTextSize (1); display.setTextColor (BÍLÁ);
Na dalším řádku pak pomocí metody setCursor (x, y) definujte pozici, kde text začíná. A vytiskněte hodnoty hustoty prachu na OLED displeji pomocí funkce display.println () .
display.println ("prach"); display.println ("Hustota"); display.setTextSize (3); display.println (dustLevel);
A v poslední zavolejte metodu display () pro zobrazení textu na OLED displeji.
display.display (); display.clearDisplay ();
Testování propojení snímače Sharp GP2Y1014AU0F s Arduino
Jakmile je hardware a kód připraven, je čas otestovat senzor. Za tímto účelem připojte Arduino k notebooku, vyberte desku a port a stiskněte tlačítko nahrávání. Jak můžete vidět na následujícím obrázku, na OLED displeji se zobrazí Hustota prachu.
Kompletní pracovní video a kód jsou uvedeny níže. Doufám, že se vám výukový program líbil a naučili jste se něco užitečného. Máte-li jakékoli dotazy, nechte je v sekci komentářů nebo použijte naše fóra pro další technické dotazy.