- Componenten vereist
- Scherpe GP2Y1014AU0F-sensor
- OLED-weergavemodule
- Schakelschema
- Het circuit bouwen op Perf Board
- Code verklaring voor luchtkwaliteitsanalysator
- Testen van de interface van de Sharp GP2Y1014AU0F-sensor met Arduino
Luchtverontreiniging is een groot probleem in veel steden en de luchtkwaliteitsindex wordt elke dag slechter. Volgens het rapport van de Wereldgezondheidsorganisatie komen meer mensen voortijdig om het leven door de effecten van gevaarlijke deeltjes in de lucht dan door auto-ongelukken. Volgens de Environmental Protection Agency (EPA) kan binnenlucht 2 tot 5 keer giftiger zijn dan buitenlucht. Dus hier bouwen we een project om de luchtkwaliteit te bewaken door de dichtheid van stofdeeltjes in de lucht te meten.
Dus in het verlengde van onze eerdere projecten, zoals LPG-detector, rookdetector en luchtkwaliteitsmonitor, gaan we hier de Sharp GP2Y1014AU0F-sensor koppelen aan Arduino Nano om de stofdichtheid in lucht te meten. Naast de stofsensor en Arduino Nano wordt ook een OLED-display gebruikt om de gemeten waarden weer te geven. De stofsensor GP2Y1014AU0F van Sharp is zeer effectief in het detecteren van zeer fijne deeltjes zoals sigarettenrook. Het is ontworpen voor gebruik in luchtreinigers en airconditioners.
Componenten vereist
- Arduino Nano
- Scherpe GP2Y1014AU0F-sensor
- 0.96 'SPI OLED-weergavemodule
- Doorverbindingsdraden
- 220 µf Condensator
- 150 Ω weerstand
Scherpe GP2Y1014AU0F-sensor
Sharp's GP2Y1014AU0F is een kleine zespolige sensor voor optische luchtkwaliteit / optische stof met analoge uitgang die is ontworpen om stofdeeltjes in de lucht te detecteren. Het werkt volgens het principe van laserverstrooiing. Binnen in de sensormodule zijn een infrarood-emitterende diode en een fotosensor diagonaal gerangschikt nabij het luchtinlaatgat, zoals weergegeven in de onderstaande afbeelding:
Wanneer lucht met stofdeeltjes de sensorkamer binnendringt, verstrooien de stofdeeltjes het IR LED-licht naar de fotodetector. De intensiteit van het verstrooide licht is afhankelijk van de stofdeeltjes. Hoe meer stofdeeltjes in de lucht, hoe groter de lichtintensiteit. De uitgangsspanning op de V OUT- pin van de sensor verandert volgens de intensiteit van het strooilicht.
GP2Y1014AU0F Sensor pinout:
Zoals eerder vermeld, wordt de GP2Y1014AU0F-sensor geleverd met een 6-pins connector. De onderstaande afbeelding en tabel tonen de pintoewijzingen voor GP2Y1014AU0F:
S. NO. |
Pin Naam |
Pin Beschrijving |
1 |
V-LED |
LED Vcc-pin. Verbind met 5V tot 150Ω weerstand |
2 |
LED-GND |
LED grondpen. Maak verbinding met GND |
3 |
LED |
Wordt gebruikt om LED aan / uit te zetten. Maak verbinding met een digitale pin van Arduino |
4 |
S-GND |
Sensor aardpen. Maak verbinding met de GND van Arduino |
5 |
V UIT |
Analoge uitgangspen van sensor. Maak verbinding met een analoge pin |
6 |
V CC |
Positieve toevoerpen. Maak verbinding met 5V Arduino |
GP2Y1014AU0F Sensor Specificaties:
- Laag stroomverbruik: 20mA max
- Typische bedrijfsspanning: 4,5V tot 5,5V
- Minimaal detecteerbare stofgrootte: 0,5 µm
- Detectiebereik stofdichtheid: tot 580 ug / m 3
- Detectietijd: minder dan 1 seconde
- Afmetingen: 1,81 x 1,18 x 0,69 '' (46,0 x 30,0 x 17,6 mm)
OLED-weergavemodule
OLED (Organic Light-Emitting Diodes) is een self light-emitting technologie, geconstrueerd door een reeks organische dunne films tussen twee geleiders te plaatsen. Een helder licht wordt geproduceerd wanneer een elektrische stroom op deze films wordt toegepast. OLED's gebruiken dezelfde technologie als televisies, maar hebben minder pixels dan bij de meeste van onze tv's.
Voor dit project gebruiken we een monochroom 7-pins SSD1306 0,96 ”OLED-scherm. Het kan werken op drie verschillende communicatieprotocollen: SPI 3-draadsmodus, SPI-vierdraadsmodus en I2C-modus. De pinnen en zijn functies worden uitgelegd in de onderstaande tabel:
We hebben OLED en zijn typen al in detail besproken in het vorige artikel.
Pin Naam |
Andere namen |
Omschrijving |
GND |
Grond |
Aardingspin van de module |
Vdd |
Vcc, 5V |
Power pin (3-5V aanvaardbaar) |
SCK |
D0, SCL, CLK |
Fungeert als de klokpen. Wordt gebruikt voor zowel I2C als SPI |
SDA |
D1, MOSI |
Datapin van de module. Wordt gebruikt voor zowel IIC als SPI |
RES |
RST, RESET |
Reset de module (handig tijdens SPI) |
DC |
A0 |
Data Command-pin. Gebruikt voor SPI-protocol |
CS |
Chip selecteren |
Handig als er meer dan één module wordt gebruikt onder het SPI-protocol |
OLED-specificaties:
- OLED-stuurprogramma IC: SSD1306
- Resolutie: 128 x 64
- Visuele hoek:> 160 °
- Ingangsspanning: 3.3V ~ 6V
- Pixelkleur: blauw
- Werktemperatuur: -30 ° C ~ 70 ° C
Lees meer over OLED en de koppeling met verschillende microcontrollers door de link te volgen.
Schakelschema
Het schakelschema voor het verbinden van de Sharp GP2Y1014AU0F-sensor met Arduino wordt hieronder weergegeven:
Het circuit is heel eenvoudig omdat we alleen de GP2Y10-sensor en OLED-displaymodule verbinden met Arduino Nano. GP2Y10-sensor en OLED-displaymodule worden beide gevoed met + 5V en GND. De V0-pin is verbonden met de A5-pin van Arduino Nano. De LED-pin van de sensor is verbonden met de digitale pin12 van de Arduino. Omdat de OLED-displaymodule SPI-communicatie gebruikt, hebben we een SPI-communicatie tot stand gebracht tussen de OLED-module en Arduino Nano. De aansluitingen zijn weergegeven in de onderstaande tabel:
S.No |
OLED-modulepen |
Arduino-pin |
1 |
GND |
Grond |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.No |
Sensorpin |
Arduino-pin |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V tot 150Ω weerstand |
Het circuit bouwen op Perf Board
Nadat alle componenten op de printplaat zijn gesoldeerd, ziet het er ongeveer zo uit als hieronder. Maar het kan ook op een breadboard worden gebouwd. Ik heb de GP2Y1014-sensor gesoldeerd op hetzelfde bord dat ik gebruikte om de SDS011-sensor te koppelen. Zorg er tijdens het solderen voor dat uw soldeerdraden zich op voldoende afstand van elkaar bevinden.
Code verklaring voor luchtkwaliteitsanalysator
De volledige code voor dit project staat aan het einde van het document. Hier leggen we enkele belangrijke delen van de code uit.
De code maakt gebruik van de Adafruit_GFX , en Adafruit_SSD1306 bibliotheken. Deze bibliotheken kunnen worden gedownload vanuit de Library Manager in de Arduino IDE en vanaf daar installeren. Open daarvoor de Arduino IDE en ga naar Sketch <Inclusief bibliotheek <Bibliotheken beheren . Zoek nu naar Adafruit GFX en installeer de Adafruit GFX-bibliotheek van Adafruit.
Installeer op dezelfde manier de Adafruit SSD1306-bibliotheken van Adafruit.
Na het installeren van de bibliotheken op Arduino IDE, start u de code door de benodigde bibliothekenbestanden op te nemen. Stofsensor heeft geen bibliotheek nodig, omdat we de spanningswaarden rechtstreeks van de analoge pin van Arduino lezen.
# omvatten
Definieer vervolgens de OLED-breedte en hoogte. In dit project gebruiken we een 128 × 64 SPI OLED-scherm. U kunt de variabelen SCREEN_WIDTH en SCREEN_HEIGHT aanpassen aan uw weergave.
# definiëren SCREEN_WIDTH 128 # definiëren SCREEN_HEIGHT 64
Definieer vervolgens de SPI-communicatiepinnen waarop het OLED-scherm is aangesloten.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Maak vervolgens een Adafruit-weergave-instantie met de breedte en hoogte die eerder zijn gedefinieerd met het SPI-communicatieprotocol.
Adafruit_SSD1306-scherm (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Definieer daarna de stofsensors sense en led pinnen. Sense pin is de output pin van de stofsensor die wordt gebruikt om de spanningswaarden af te lezen terwijl de led pin wordt gebruikt om de IR Led aan / uit te zetten.
int sensePin = A5; int ledPin = 7;
Initialiseer nu in de functie setup () de seriële monitor met een baudrate van 9600 voor foutopsporingsdoeleinden. Initialiseer ook het OLED-scherm met de functie begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
In de loop () functie, lees de spanningswaarden van analoge pin 5 van Arduino Nano. Schakel eerst de IR-led in en wacht vervolgens 0,28 ms voordat u de uitgangsspanning meet. Lees daarna de spanningswaarden van de analoge pin. Deze bewerking duurt ongeveer 40 tot 50 microseconden, dus introduceer een vertraging van 40 microseconden voordat u de led van de stofsensor uitschakelt. Volgens de specificaties moet de LED eenmaal per 10 ms worden gepulseerd, dus wacht tot de rest van de 10 ms-cyclus = 10000 - 280 - 40 = 9680 microseconden .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
Bereken vervolgens in de volgende regels de stofdichtheid met behulp van de uitgangsspanning en de signaalwaarde.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Stel daarna de tekstgrootte en tekstkleur in met behulp van setTextSize () en setTextColor () .
display.setTextSize (1); display.setTextColor (WIT);
Definieer vervolgens in de volgende regel de positie waar de tekst begint met de methode setCursor (x, y) . En druk de stofdichtheidswaarden af op het OLED-scherm met de functie display.println () .
display.println ("Dust"); display.println ("Dichtheid"); display.setTextSize (3); display.println (dustLevel);
En als laatste roept u de methode display () aan om de tekst op het OLED-scherm weer te geven.
display.display (); display.clearDisplay ();
Testen van de interface van de Sharp GP2Y1014AU0F-sensor met Arduino
Zodra de hardware en code klaar zijn, is het tijd om de sensor te testen. Sluit daarvoor de Arduino aan op de laptop, selecteer het bord en de poort en druk op de uploadknop. Zoals u in de onderstaande afbeelding kunt zien, wordt de stofdichtheid weergegeven op het OLED-scherm.
De volledige werkende video en code worden hieronder gegeven. Ik hoop dat je de tutorial leuk vond en iets nuttigs hebt geleerd. Als je vragen hebt, laat ze dan achter in het commentaargedeelte of gebruik onze forums voor andere technische vragen.