- Wymagane składniki
- Czujnik Sharp GP2Y1014AU0F
- Moduł wyświetlacza OLED
- Schemat obwodu
- Tworzenie obwodu na tablicy perf
- Objaśnienie kodu dla analizatora jakości powietrza
- Testowanie połączenia czujnika Sharp GP2Y1014AU0F z Arduino
Zanieczyszczenie powietrza jest poważnym problemem w wielu miastach, a wskaźnik jakości powietrza pogarsza się każdego dnia. Według raportu Światowej Organizacji Zdrowia więcej ludzi ginie przedwcześnie na skutek niebezpiecznych cząstek unoszących się w powietrzu niż w wypadkach samochodowych. Według Agencji Ochrony Środowiska (EPA) powietrze w pomieszczeniach może być 2 do 5 razy bardziej toksyczne niż powietrze zewnętrzne. Więc tutaj budujemy projekt monitorowania jakości powietrza poprzez pomiar gęstości cząstek pyłu w powietrzu.
Kontynuując nasze poprzednie projekty, takie jak detektor LPG, detektor dymu i monitor jakości powietrza, tutaj połączymy czujnik Sharp GP2Y1014AU0F z Arduino Nano, aby zmierzyć gęstość pyłu w powietrzu. Oprócz czujnika kurzu i Arduino Nano do wyświetlania mierzonych wartości służy również wyświetlacz OLED. Czujnik kurzu GP2Y1014AU0F firmy Sharp jest bardzo skuteczny w wykrywaniu bardzo drobnych cząstek, takich jak dym papierosowy. Jest przeznaczony do użytku w oczyszczaczach powietrza i klimatyzatorach.
Wymagane składniki
- Arduino Nano
- Czujnik Sharp GP2Y1014AU0F
- 0,96 'moduł wyświetlacza SPI OLED
- Przewody połączeniowe
- Kondensator 220 µf
- Rezystor 150 Ω
Czujnik Sharp GP2Y1014AU0F
Sharp GP2Y1014AU0F to malutki, sześciostykowy, optyczny czujnik jakości powietrza / optyczny czujnik kurzu z wyjściem analogowym, zaprojektowany do wykrywania cząstek kurzu w powietrzu. Działa na zasadzie rozpraszania laserowego. Wewnątrz modułu czujnika dioda emitująca podczerwień i fotosensor są umieszczone ukośnie w pobliżu otworu wlotowego powietrza, jak pokazano na poniższym obrazku:
Kiedy powietrze zawierające cząsteczki kurzu dostanie się do komory czujnika, cząsteczki kurzu rozpraszają światło LED IR w kierunku fotodetektora. Intensywność rozproszonego światła zależy od cząstek pyłu. Im więcej cząstek pyłu w powietrzu, tym większe natężenie światła. Napięcie wyjściowe na pinie V OUT czujnika zmienia się w zależności od natężenia światła rozproszonego.
Pinout czujnika GP2Y1014AU0F:
Jak wspomniano wcześniej, czujnik GP2Y1014AU0F jest wyposażony w 6-pinowe złącze. Poniższy rysunek i tabela przedstawiają przypisanie pinów dla GP2Y1014AU0F:
S. NIE. |
Nazwa pinu |
Opis pinów |
1 |
V-LED |
Styk Vcc LED. Podłącz do 5 V przez rezystor 150 Ω |
2 |
LED-GND |
Styk uziemienia diody LED. Podłącz do GND |
3 |
DOPROWADZIŁO |
Służy do włączania / wyłączania diody LED. Podłącz do dowolnego cyfrowego pinu Arduino |
4 |
S-GND |
Styk uziemienia czujnika. Podłącz do GND Arduino |
5 |
V OUT |
Styk wyjścia analogowego czujnika. Podłącz do dowolnego pinu analogowego |
6 |
V CC |
Dodatni pin zasilania. Podłącz do 5 V Arduino |
Dane techniczne czujnika GP2Y1014AU0F:
- Niski pobór prądu: maks.20mA
- Typowe napięcie robocze: 4,5 V do 5,5 V.
- Minimalna wielkość wykrywalnego pyłu: 0,5 µm
- Zakres wykrywania gęstości pyłu: do 580 ug / m 3
- Czas wykrywania: mniej niż 1 sekunda
- Wymiary: 46,0 x 30,0 x 17,6 mm (1,81 x 1,18 x 0,69 '')
Moduł wyświetlacza OLED
OLED (organiczne diody elektroluminescencyjne) to technologia samoemitacji światła, skonstruowana przez umieszczenie szeregu cienkich warstw organicznych między dwoma przewodnikami. Po przyłożeniu prądu elektrycznego do tych filmów wytwarzane jest jasne światło. Diody OLED wykorzystują tę samą technologię co telewizory, ale mają mniej pikseli niż większość naszych telewizorów.
W tym projekcie używamy monochromatycznego 7-pinowego wyświetlacza OLED SSD1306 0,96 ”. Może pracować na trzech różnych protokołach komunikacyjnych: trybie SPI 3 Wire, trybie czteroprzewodowym SPI oraz trybie I2C. Piny i ich funkcje wyjaśniono w poniższej tabeli:
Omówiliśmy już szczegółowo OLED i jego rodzaje w poprzednim artykule.
Nazwa pinu |
Inne nazwy |
Opis |
Gnd |
Ziemia |
Pin uziemienia modułu |
Vdd |
Vcc, 5 V. |
Pin zasilania (tolerowane 3-5 V) |
SCK |
D0, SCL, CLK |
Działa jako pin zegara. Używany zarówno dla I2C, jak i SPI |
SDA |
D1, MOSI |
Pin danych modułu. Używany zarówno do IIC, jak i SPI |
RES |
RST, RESET |
Resetuje moduł (przydatne podczas SPI) |
DC |
A0 |
Pin polecenia danych. Używany do protokołu SPI |
CS |
Chip Select |
Przydatne, gdy w protokole SPI używany jest więcej niż jeden moduł |
Specyfikacje OLED:
- Układ scalony sterownika OLED: SSD1306
- Rozdzielczość: 128 x 64
- Kąt widzenia:> 160 °
- Napięcie wejściowe: 3,3 V ~ 6 V.
- Kolor piksela: niebieski
- Temperatura pracy: -30 ° C ~ 70 ° C
Dowiedz się więcej o OLED i jego interfejsach z różnymi mikrokontrolerami, klikając łącze.
Schemat obwodu
Schemat obwodu do połączenia czujnika Sharp GP2Y1014AU0F z Arduino jest podany poniżej:
Obwód jest bardzo prosty, ponieważ łączymy tylko czujnik GP2Y10 i moduł wyświetlacza OLED z Arduino Nano. Czujnik GP2Y10 i moduł wyświetlacza OLED są zasilane napięciem + 5 V i GND. Pin V0 jest połączony z pinem A5 Arduino Nano. Pin LED czujnika jest podłączony do cyfrowego pin12 Arduino. Ponieważ moduł OLED Display wykorzystuje komunikację SPI, ustanowiliśmy komunikację SPI między modułem OLED a Arduino Nano. Połączenia przedstawiono w poniższej tabeli:
S.Nr |
Pin modułu OLED |
Pin Arduino |
1 |
GND |
Ziemia |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.Nr |
Pin czujnika |
Pin Arduino |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
DOPROWADZIŁO |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
Rezystor 5 V przez 150 Ω |
Tworzenie obwodu na tablicy perf
Po wlutowaniu wszystkich komponentów na płytce perf będzie wyglądać mniej więcej jak poniżej. Ale można go również zbudować na płytce stykowej. Przylutowałem czujnik GP2Y1014 na tej samej płytce, której użyłem do połączenia czujnika SDS011. Podczas lutowania upewnij się, że przewody lutownicze znajdują się w odpowiedniej odległości od siebie.
Objaśnienie kodu dla analizatora jakości powietrza
Pełny kod tego projektu znajduje się na końcu dokumentu. Tutaj wyjaśniamy kilka ważnych części kodu.
Kod wykorzystuje Adafruit_GFX , i Adafruit_SSD1306 bibliotek. Biblioteki te można pobrać z Menedżera bibliotek w środowisku Arduino IDE i stamtąd zainstalować. W tym celu otwórz Arduino IDE i przejdź do Sketch <Include Library <Manage Libraries . Teraz wyszukaj Adafruit GFX i zainstaluj bibliotekę Adafruit GFX firmy Adafruit.
Podobnie zainstaluj biblioteki Adafruit SSD1306 firmy Adafruit.
Po zainstalowaniu bibliotek do Arduino IDE, uruchom kod, dołączając potrzebne pliki bibliotek. Czujnik kurzu nie wymaga żadnej biblioteki, ponieważ odczytujemy wartości napięć bezpośrednio z pinu analogowego Arduino.
#zawierać
Następnie zdefiniuj szerokość i wysokość OLED. W tym projekcie korzystamy z wyświetlacza SPI OLED 128 × 64. Można zmienić SCREEN_WIDTH i SCREEN_HEIGHT zmienne w zależności od wyświetlacza.
# zdefiniować SCREEN_WIDTH 128 # zdefiniować SCREEN_HEIGHT 64
Następnie zdefiniuj piny komunikacyjne SPI, do których podłączony jest wyświetlacz OLED.
# zdefiniować OLED_MOSI 9 # zdefiniować OLED_CLK 10 # zdefiniować OLED_DC 11 # zdefiniować OLED_CS 12 # zdefiniować OLED_RESET 13
Następnie utwórz instancję wyświetlacza Adafruit o szerokości i wysokości zdefiniowanej wcześniej za pomocą protokołu komunikacyjnego SPI.
Wyświetlacz Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Następnie zdefiniuj czujnik kurzu i piny led. Sense pin to pin wyjściowy czujnika kurzu, który służy do odczytu wartości napięcia, podczas gdy pin LED służy do włączania / wyłączania diody podczerwieni.
int sensePin = A5; int ledPin = 7;
Teraz w funkcji setup () , zainicjuj monitor szeregowy z szybkością transmisji 9600 w celu debugowania. Zainicjuj również wyświetlacz OLED za pomocą funkcji begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
W funkcji loop () odczytaj wartości napięcia z analogowego pinu 5 Arduino Nano. Najpierw włącz diodę podczerwieni, a następnie odczekaj 0,28 ms przed odczytem napięcia wyjściowego. Następnie odczytaj wartości napięcia z pinu analogowego. Ta operacja trwa około 40 do 50 mikrosekund, więc wprowadź 40-mikrosekundowe opóźnienie przed wyłączeniem diody czujnika kurzu. Zgodnie ze specyfikacją dioda LED powinna pulsować raz na 10 ms, więc poczekaj do końca cyklu 10 ms = 10000 - 280 - 40 = 9680 mikrosekund .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Następnie w następnych wierszach oblicz gęstość pyłu na podstawie napięcia wyjściowego i wartości sygnału.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Następnie ustaw rozmiar i kolor tekstu za pomocą setTextSize () i setTextColor () .
display.setTextSize (1); display.setTextColor (BIAŁY);
Następnie w następnym wierszu określ położenie, w którym zaczyna się tekst, za pomocą metody setCursor (x, y) . Następnie wydrukuj wartości gęstości pyłu na wyświetlaczu OLED za pomocą funkcji display.println () .
display.println ("Pył"); display.println ("Gęstość"); display.setTextSize (3); display.println (dustLevel);
Na koniec wywołaj metodę display () , aby wyświetlić tekst na wyświetlaczu OLED.
display.display (); display.clearDisplay ();
Testowanie połączenia czujnika Sharp GP2Y1014AU0F z Arduino
Gdy sprzęt i kod są gotowe, należy przetestować czujnik. W tym celu podłącz Arduino do laptopa, wybierz kartę i port, a następnie naciśnij przycisk przesyłania. Jak widać na poniższym obrazku, wyświetli on gęstość kurzu na wyświetlaczu OLED.
Pełen działający film i kod podano poniżej. Mam nadzieję, że spodobał Ci się samouczek i nauczyłeś się czegoś przydatnego. Jeśli masz jakieś pytania, zostaw je w sekcji komentarzy lub skorzystaj z naszych forów w celu uzyskania innych pytań technicznych.