- Componenten vereist
- Nova PM-sensor SDS011
- 0.96 'OLED-weergavemodule
- Schakelschema voor luchtkwaliteitsanalysator
- Het circuit bouwen op Perf Board
- Code Verklaring voor Monitor Luchtkwaliteit
- Arduino Air Quality Monitor testen
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 apparaat om de luchtkwaliteit te monitoren door PM2,5- en PM10-deeltjes in de lucht te meten.
We gebruikten eerder de MQ135-gassensor voor luchtkwaliteitsmonitor en de Sharp GP2Y1014AU0F-sensor voor het meten van stofdichtheid in de lucht. Deze keer gebruiken we een SDS011-sensor met Arduino Nano om een Air Quality Analyzer te bouwen. De SDS011-sensor kan de concentraties PM2,5- en PM10-deeltjes in de lucht berekenen. Hier worden de real-time PM2.5- en PM 10-waarden weergegeven op het OLED-display.
Componenten vereist
- Arduino Nano
- Nova PM-sensor SDS011
- 0.96 'SPI OLED-weergavemodule
- Doorverbindingsdraden
Nova PM-sensor SDS011
De SDS011 Sensor is een zeer recente luchtkwaliteitssensor ontwikkeld door Nova Fitness. Het werkt volgens het principe van laserverstrooiing en kan de deeltjesconcentratie tussen 0,3 en 10 μm in de lucht krijgen. Deze sensor bestaat uit een kleine ventilator, luchtinlaatklep, laserdiode en fotodiode. De lucht komt binnen via de luchtinlaat waar een lichtbron (laser) de deeltjes verlicht en het verstrooide licht wordt door een fotodetector omgezet in een signaal. Deze signalen worden vervolgens versterkt en verwerkt om de deeltjesconcentratie van PM2.5 en PM10 te krijgen.
SDS011 Sensor Specificaties:
- Uitgang: PM2.5, PM10
- Meetbereik: 0,0-999,9 μg / m3
- Ingangsspanning: 4.7V tot 5.3V
- Maximale stroom: 100mA
- Slaapstroom: 2mA
- Reactietijd: 1 seconde
- Uitvoerfrequentie seriële gegevens: 1 keer / seconde
- Resolutie deeltjesdiameter: ≤ 0,3 μm
- Relatieve fout: 10%
- Temperatuurbereik: -20 ~ 50 ° C
0.96 '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:
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 |
We hebben hier een volledig artikel over OLED-schermen en de typen ervan behandeld.
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 voor luchtkwaliteitsanalysator
Het schakelschema voor het meten van PM2.5- en PM10-deeltjes met Arduino is heel eenvoudig en wordt hieronder weergegeven.
SDS011-sensor en OLED-displaymodule worden beide gevoed met + 5V en GND. De zender- en ontvangerpinnen van SDS011 zijn verbonden met D3- en D4-pinnen van Arduino Nano. 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 |
Het circuit bouwen op Perf Board
Ik heb ook alle componenten op het perf board gesoldeerd om het er netjes uit te laten zien. Maar je kunt ze ook op een breadboard maken. De planken die ik heb gemaakt staan hieronder. Let er tijdens het solderen op dat u de draden niet sorteert. Het perfboard dat ik heb gesoldeerd, wordt hieronder weergegeven:
Code Verklaring voor Monitor Luchtkwaliteit
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 SDS011, Adafruit_GFX , en Adafruit_SSD1306 bibliotheken. Deze bibliotheken kunnen worden gedownload vanuit de Library Manager in de Arduino IDE en kunnen van daaruit worden geïnstalleerd. Open daarvoor de Arduino IDE en ga naar Sketch> Bibliotheek opnemen> Bibliotheken beheren . Zoek nu naar SDS011 en installeer de SDS-sensorbibliotheek van R. Zschiegner.
Op dezelfde manier, installeert u de Adafruit GFX en Adafruit SSD1306 bibliotheken door Adafruit.
Nadat u de bibliotheken op Arduino IDE hebt geïnstalleerd, start u de code door de benodigde bibliotheekbestanden op te nemen.
# omvatten
Definieer in de volgende regels twee variabelen om de PM10- en PM2.5-waarden op te slaan.
float p10, p25;
Definieer vervolgens de OLED-breedte en hoogte. In dit project gebruiken we een 128 × 64 SPI OLED-scherm. U kunt die SCREEN_WIDTH- en SCREEN_HEIGHT- variabelen 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);
Initialiseer nu in de functie setup () de seriële monitor met een baudrate van 9600 voor foutopsporingsdoeleinden. Initialiseer ook het OLED-scherm en de SDS011-sensor met de functie begin () .
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Lees in de lege lus () de PM10- en PM2.5-waarden van de SDS011-sensor en druk de metingen af op een seriële monitor.
void loop () {error = my_sds.read (& p25, & p10); if (! fout) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + String (p10));
Stel daarna de tekstgrootte en tekstkleur in met behulp van setTextSize () en setTextColor () .
display.setTextSize (2); display.setTextColor (WIT);
Definieer vervolgens in de volgende regel de positie waar de tekst moet beginnen met de methode setCursor (x, y) . Hier zullen we de PM2.5- en PM10-waarden weergeven op het OLED-scherm, zodat de eerste regel begint bij (0,15) terwijl de tweede regel begint bij (0, 40) coördinaten.
display.setCursor (0,15); display.println ("PM2.5"); display.setCursor (67,15); display.println (p25); display.setCursor (0,40); display.println ("PM10"); display.setCursor (67,40); display.println (p10);
En tot slot, roep de display () -methode aan om de tekst op het OLED-scherm weer te geven.
display.display (); display.clearDisplay ();
Arduino Air Quality Monitor testen
Zodra de hardware en code klaar zijn, is het tijd om het apparaat 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, worden de PM2.5- en PM10-waarden 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.