- Erforderliche Komponenten
- Scharfer GP2Y1014AU0F-Sensor
- OLED-Anzeigemodul
- Schaltplan
- Aufbau der Schaltung auf Perf Board
- Code Erklärung für Luftqualitätsanalysator
- Testen der Schnittstelle des scharfen GP2Y1014AU0F-Sensors mit Arduino
Luftverschmutzung ist in vielen Städten ein großes Problem und der Luftqualitätsindex wird von Tag zu Tag schlechter. Laut dem Bericht der Weltgesundheitsorganisation werden mehr Menschen durch die Auswirkungen gefährlicher Partikel in der Luft vorzeitig getötet als durch Autounfälle. Laut der Environmental Protection Agency (EPA) kann Innenluft zwei- bis fünfmal giftiger sein als Außenluft. Deshalb bauen wir hier ein Projekt zur Überwachung der Luftqualität durch Messung der Staubpartikeldichte in der Luft.
In Fortsetzung unserer früheren Projekte wie LPG-Detektor, Rauchmelder und Luftqualitätsmonitor werden wir hier den Sharp GP2Y1014AU0F-Sensor mit Arduino Nano verbinden, um die Staubdichte in Luft zu messen. Neben dem Staubsensor und Arduino Nano werden auch die Messwerte über ein OLED-Display angezeigt. Der Staubsensor GP2Y1014AU0F von Sharp erkennt sehr effektiv sehr feine Partikel wie Zigarettenrauch. Es ist für den Einsatz in Luftreinigern und Klimaanlagen konzipiert.
Erforderliche Komponenten
- Arduino Nano
- Scharfer GP2Y1014AU0F-Sensor
- 0,96 'SPI OLED-Anzeigemodul
- Überbrückungsdrähte
- 220 µf Kondensator
- 150 Ω Widerstand
Scharfer GP2Y1014AU0F-Sensor
Der GP2Y1014AU0F von Sharp ist ein winziger 6-poliger optischer Luftqualitäts- / optischer Staubsensor mit analogem Ausgang, der zur Erfassung von Staubpartikeln in der Luft entwickelt wurde. Es funktioniert nach dem Prinzip der Laserstreuung. Innerhalb des Sensormoduls sind eine Infrarot-Emissionsdiode und ein Photosensor diagonal in der Nähe des Lufteinlasslochs angeordnet, wie in der folgenden Abbildung gezeigt:
Wenn Luft, die Staubpartikel enthält, in die Sensorkammer eintritt, streuen die Staubpartikel das IR-LED-Licht zum Fotodetektor. Die Intensität des gestreuten Lichts hängt von den Staubpartikeln ab. Je mehr Staubpartikel sich in der Luft befinden, desto stärker ist das Licht. Die Ausgangsspannung am V OUT- Pin des Sensors ändert sich entsprechend der Intensität des gestreuten Lichts.
GP2Y1014AU0F Pinbelegung des Sensors:
Wie bereits erwähnt, verfügt der GP2Y1014AU0F-Sensor über einen 6-poligen Stecker. Die folgende Abbildung und Tabelle zeigt die Pinbelegung für GP2Y1014AU0F:
S. NO. |
Pin Name |
Pin Beschreibung |
1 |
V-LED |
LED Vcc Pin. Anschluss an 5V über 150Ω Widerstand |
2 |
LED-GND |
LED-Erdungsstift. Verbinden Sie sich mit GND |
3 |
LED |
Dient zum Ein- und Ausschalten der LED. Verbinden Sie sich mit einem beliebigen digitalen Pin von Arduino |
4 |
S-GND |
Sensor-Erdungsstift. Stellen Sie eine Verbindung zu GND von Arduino her |
5 |
V OUT |
Sensor Analogausgang Pin. Verbinden Sie jeden analogen Pin |
6 |
V CC |
Positiver Versorgungsstift. Verbinden Sie 5V von Arduino |
GP2Y1014AU0F Sensorspezifikationen:
- Niedriger Stromverbrauch: max. 20 mA
- Typische Betriebsspannung: 4,5 V bis 5,5 V.
- Minimale nachweisbare Staubgröße: 0,5 µm
- Staubdichtemessbereich: Bis zu 580 ug / m 3
- Erfassungszeit: Weniger als 1 Sekunde
- Abmessungen: 46,0 x 30,0 x 17,6 mm (1,81 x 1,18 x 0,69 '')
OLED-Anzeigemodul
OLED (Organic Light Emitting Diodes) ist eine selbstleuchtende Technologie, bei der eine Reihe organischer Dünnfilme zwischen zwei Leitern angeordnet werden. Ein helles Licht wird erzeugt, wenn ein elektrischer Strom an diese Filme angelegt wird. OLEDs verwenden dieselbe Technologie wie Fernseher, haben jedoch weniger Pixel als die meisten unserer Fernseher.
Für dieses Projekt verwenden wir ein monochromes 7-poliges SSD1306 0,96-Zoll-OLED-Display. Es kann mit drei verschiedenen Kommunikationsprotokollen arbeiten: SPI 3-Drahtmodus, SPI-Vierdrahtmodus und I2C-Modus. Die Stifte und ihre Funktionen werden in der folgenden Tabelle erläutert:
Wir haben OLED und seine Typen bereits im vorherigen Artikel ausführlich behandelt.
Pin Name |
Andere Namen |
Beschreibung |
Gnd |
Boden |
Erdungsstift des Moduls |
Vdd |
Vcc, 5V |
Stromanschluss (3-5V tolerierbar) |
SCK |
D0, SCL, CLK |
Dient als Clock. Wird sowohl für I2C als auch für SPI verwendet |
SDA |
D1, MOSI |
Daten-Pin des Moduls. Wird sowohl für IIC als auch für SPI verwendet |
RES |
RST, RESET |
Setzt das Modul zurück (nützlich während SPI) |
DC |
A0 |
Datenbefehls-Pin. Wird für das SPI-Protokoll verwendet |
CS |
Chipauswahl |
Nützlich, wenn mehr als ein Modul unter dem SPI-Protokoll verwendet wird |
OLED-Spezifikationen:
- OLED-Treiber-IC: SSD1306
- Auflösung: 128 x 64
- Sichtwinkel:> 160 °
- Eingangsspannung: 3,3 V ~ 6 V.
- Pixelfarbe: Blau
- Arbeitstemperatur: -30 ° C ~ 70 ° C.
Erfahren Sie mehr über OLED und seine Schnittstelle zu verschiedenen Mikrocontrollern, indem Sie dem Link folgen.
Schaltplan
Das Schaltbild für die Verbindung des scharfen GP2Y1014AU0F-Sensors mit Arduino ist unten angegeben:
Die Schaltung ist sehr einfach, da wir nur den GP2Y10-Sensor und das OLED-Anzeigemodul mit Arduino Nano verbinden. Der GP2Y10-Sensor und das OLED-Anzeigemodul werden beide mit +5 V und GND versorgt. Der V0-Pin ist mit dem A5-Pin von Arduino Nano verbunden. Der LED-Pin des Sensors ist mit dem digitalen Pin12 des Arduino verbunden. Da das OLED-Display-Modul SPI-Kommunikation verwendet, haben wir eine SPI-Kommunikation zwischen dem OLED-Modul und Arduino Nano hergestellt. Die Verbindungen sind in der folgenden Tabelle aufgeführt:
S.No. |
OLED-Modul-Pin |
Arduino Pin |
1 |
GND |
Boden |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.No. |
Sensor Pin |
Arduino Pin |
1 |
Vcc |
5V |
2 |
V O. |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V bis 150Ω Widerstand |
Aufbau der Schaltung auf Perf Board
Nachdem Sie alle Komponenten auf die Perf-Platine gelötet haben, sieht es wie folgt aus. Es kann aber auch auf einem Steckbrett gebaut werden. Ich habe den GP2Y1014-Sensor auf dieselbe Platine gelötet, auf der ich den SDS011-Sensor angeschlossen habe. Stellen Sie beim Löten sicher, dass Ihre Lötdrähte einen ausreichenden Abstand voneinander haben.
Code Erklärung für Luftqualitätsanalysator
Der vollständige Code für dieses Projekt ist am Ende des Dokuments angegeben. Hier erklären wir einige wichtige Teile des Codes.
Der Code verwendet die Adafruit_GFX , und Adafruit_SSD1306 Bibliotheken. Diese Bibliotheken können vom Bibliotheksmanager in der Arduino IDE heruntergeladen und von dort installiert werden. Öffnen Sie dazu die Arduino IDE und gehen Sie zu Skizze <Bibliothek einschließen <Bibliotheken verwalten . Suchen Sie nun nach Adafruit GFX und installieren Sie die Adafruit GFX-Bibliothek von Adafruit.
Installieren Sie in ähnlicher Weise die Adafruit SSD1306-Bibliotheken von Adafruit.
Starten Sie nach der Installation der Bibliotheken in Arduino IDE den Code, indem Sie die erforderlichen Bibliotheksdateien einschließen. Der Staubsensor benötigt keine Bibliothek, da wir die Spannungswerte direkt vom analogen Pin von Arduino lesen.
#einschließen
Definieren Sie dann die Breite und Höhe der OLED. In diesem Projekt verwenden wir ein 128 × 64 SPI OLED-Display. Sie können die Variablen SCREEN_WIDTH und SCREEN_HEIGHT entsprechend Ihrer Anzeige ändern.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Definieren Sie dann die SPI-Kommunikationspins, an denen das OLED-Display angeschlossen ist.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Erstellen Sie dann eine Adafruit-Anzeigeinstanz mit der zuvor mit dem SPI-Kommunikationsprotokoll definierten Breite und Höhe.
Adafruit_SSD1306-Anzeige (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Definieren Sie anschließend die Staubsensoren und die LED-Stifte. Der Sense-Pin ist der Ausgangs-Pin des Staubsensors, mit dem die Spannungswerte gelesen werden, während der LED-Pin zum Ein- und Ausschalten der IR-LED verwendet wird.
int sensePin = A5; int ledPin = 7;
Initialisieren Sie nun in der Funktion setup () den seriellen Monitor für Debugging-Zwecke mit einer Baudrate von 9600. Initialisieren Sie außerdem die OLED-Anzeige mit der Funktion begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Im Inneren der Schleife () Funktion, lesen die Spannungswerte von der analogen Pin 5 von Arduino Nano. Schalten Sie zuerst die IR-LED ein und warten Sie dann 0,28 ms, bevor Sie die Ausgangsspannung ablesen. Lesen Sie danach die Spannungswerte vom analogen Pin ab. Dieser Vorgang dauert etwa 40 bis 50 Mikrosekunden. Führen Sie daher eine Verzögerung von 40 Mikrosekunden ein, bevor Sie die LED des Staubsensors ausschalten. Gemäß den Spezifikationen sollte die LED alle 10 ms einmal eingeschaltet werden. Warten Sie daher auf den Rest des 10-ms-Zyklus = 10000 - 280 - 40 = 9680 Mikrosekunden .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Berechnen Sie dann in den nächsten Zeilen die Staubdichte anhand der Ausgangsspannung und des Signalwerts.
sigVolt = outVo * (5/1024); Staublevel = 0,17 * sigVolt - 0,1;
Stellen Sie danach die Textgröße und die Textfarbe mit setTextSize () und setTextColor () ein .
display.setTextSize (1); display.setTextColor (WHITE);
Definieren Sie dann in der nächsten Zeile die Position, an der der Text mit der Methode setCursor (x, y) beginnt. Drucken Sie die Staubdichtewerte mit der Funktion display.println () auf dem OLED-Display.
display.println ("Staub"); display.println ("Dichte"); display.setTextSize (3); display.println (DustLevel);
Rufen Sie im letzten Schritt die Methode display () auf, um den Text auf dem OLED-Display anzuzeigen.
display.display (); display.clearDisplay ();
Testen der Schnittstelle des scharfen GP2Y1014AU0F-Sensors mit Arduino
Sobald die Hardware und der Code fertig sind, ist es Zeit, den Sensor zu testen. Verbinden Sie dazu das Arduino mit dem Laptop, wählen Sie das Board und den Port aus und klicken Sie auf die Schaltfläche zum Hochladen. Wie Sie im folgenden Bild sehen können, wird die Staubdichte auf dem OLED-Display angezeigt.
Das vollständige Arbeitsvideo und der Code sind unten angegeben. Ich hoffe, Ihnen hat das Tutorial gefallen und Sie haben etwas Nützliches gelernt. Wenn Sie Fragen haben, lassen Sie diese im Kommentarbereich oder nutzen Sie unsere Foren für andere technische Fragen.