- Componente necesare
- Senzor Nova PM SDS011
- Modul de afișaj OLED de 0,96 '
- Diagrama circuitului pentru analizorul calității aerului
- Construirea circuitului pe placa de perfecționare
- Explicația codului pentru monitorul calității aerului
- Testarea monitorului calității aerului Arduino
Poluarea aerului este o problemă majoră în multe orașe, iar indicele calității aerului se înrăutățește în fiecare zi. Potrivit raportului Organizației Mondiale a Sănătății, mai multe persoane sunt ucise prematur de efectele particulelor periculoase prezentate în aer decât din cauza accidentelor de mașină. Potrivit Agenției pentru Protecția Mediului (EPA), aerul din interior poate fi de 2 până la 5 ori mai toxic decât aerul din exterior. Deci, aici construim un dispozitiv pentru monitorizarea calității aerului prin măsurarea particulelor PM2.5 și PM10 din aer.
Am folosit anterior senzorul de gaz MQ135 pentru monitorul calității aerului și senzorul Sharp GP2Y1014AU0F pentru măsurarea densității prafului în aer. De data aceasta folosim un senzor SDS011 cu Arduino Nano pentru a construi un Analizor de calitate a aerului. Senzorul SDS011 poate calcula concentrațiile particulelor de PM2.5 și PM10 din aer. Aici valorile PM2.5 și PM 10 în timp real vor fi afișate pe afișajul OLED.
Componente necesare
- Arduino Nano
- Senzor Nova PM SDS011
- Modul de afișaj SPI OLED de 0,96 '
- Sârme jumper
Senzor Nova PM SDS011
Senzorul SDS011 este un senzor de calitate a aerului foarte recent dezvoltat de Nova Fitness. Funcționează pe principiul împrăștierii cu laser și poate obține concentrația particulelor între 0,3 și 10 μm în aer. Acest senzor este format dintr-un ventilator mic, supapă de admisie a aerului, diodă laser și fotodiodă. Aerul intră prin orificiul de admisie a aerului unde o sursă de lumină (Laser) luminează particulele, iar lumina împrăștiată este transformată într-un semnal de către un fotodetector. Aceste semnale sunt apoi amplificate și procesate pentru a obține concentrația de particule de PM2.5 și PM10.
Specificații senzor SDS011:
- Ieșire: PM2.5, PM10
- Domeniu de măsurare: 0,0-999,9 μg / m3
- Tensiunea de intrare: 4.7V la 5.3V
- Curent maxim: 100mA
- Curent de somn: 2mA
- Timp de răspuns: 1 secundă
- Frecvența de ieșire a datelor seriale: 1 dată / secundă
- Rezoluția diametrului particulelor: ≤ 0,3μm
- Eroare relativă: 10%
- Gama de temperatură: -20 ~ 50 ° C
Modul de afișaj OLED de 0,96 '
OLED (Organic Light-Emitting Diodes) este o tehnologie auto-emitentă de lumină, construită prin plasarea unei serii de filme organice subțiri între doi conductori. O lumină puternică este produsă atunci când se aplică un curent electric acestor filme. OLED-urile folosesc aceeași tehnologie ca și televizoarele, dar au mai puțini pixeli decât în majoritatea televizoarelor noastre.
Pentru acest proiect, folosim un ecran OLED monocrom cu 7 pini SSD1306 0,96 ”. Poate funcționa pe trei protocoale de comunicații diferite: modul SPI 3 Wire, modul SPI cu patru fire și modul I2C. Pinii și funcțiile sale sunt explicate în tabelul de mai jos:
Nume PIN |
Alte nume |
Descriere |
Gnd |
Sol |
Pinul de masă al modulului |
Vdd |
Vcc, 5V |
Pin de alimentare (3-5V tolerabil) |
SCK |
D0, SCL, CLK |
Acționează ca știftul ceasului. Folosit atât pentru I2C, cât și pentru SPI |
SDA |
D1, MOSI |
Pinul de date al modulului. Folosit atât pentru IIC, cât și pentru SPI |
RES |
RST, RESET |
Resetează modulul (util în timpul SPI) |
DC |
A0 |
Pinul de comandă a datelor. Folosit pentru protocolul SPI |
CS |
Chip Select |
Util când sunt utilizate mai multe module în cadrul protocolului SPI |
Am acoperit aici un articol complet despre afișajele OLED și tipurile sale.
Specificații OLED:
- IC driver OLED: SSD1306
- Rezoluție: 128 x 64
- Unghi vizual:> 160 °
- Tensiunea de intrare: 3.3V ~ 6V
- Culoare pixel: albastru
- Temperatura de lucru: -30 ° C ~ 70 ° C
Aflați mai multe despre OLED și interfața acestuia cu diferite microcontrolere, urmând linkul.
Diagrama circuitului pentru analizorul calității aerului
Diagrama circuitului pentru măsurarea particulelor PM2.5 și PM10 folosind Arduino este foarte simplă și este prezentată mai jos.
Senzorul SDS011 și modulul OLED Display sunt alimentate cu + 5V și GND. Pinii emițătorului și receptorului SDS011 sunt conectați la pinii D3 și D4 ai Arduino Nano. Deoarece modulul OLED Display utilizează comunicarea SPI, am stabilit o comunicare SPI între modulul OLED și Arduino Nano. Conexiunile sunt prezentate în tabelul de mai jos:
S. Nu |
Pin modul OLED |
Pinul Arduino |
1 |
GND |
Sol |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
Construirea circuitului pe placa de perfecționare
De asemenea, am lipit toate componentele de pe placa perf pentru a face să arate bine. Dar le puteți face și pe o placă de măsurare. Plăcile pe care le-am făcut sunt mai jos. În timpul lipirii, asigurați-vă că nu sortați firele. Tabloul de perfecție pe care l-am lipit este prezentat mai jos:
Explicația codului pentru monitorul calității aerului
Codul complet pentru acest proiect este dat la sfârșitul documentului. Aici explicăm câteva părți importante ale codului.
Codul utilizează SDS011, Adafruit_GFX , și Adafruit_SSD1306 biblioteci. Aceste biblioteci pot fi descărcate din Managerul de biblioteci din Arduino IDE și pot fi instalate de acolo. Pentru aceasta, deschideți IDE-ul Arduino și accesați Sketch> Include Library> Manage Libraries . Acum căutați SDS011 și instalați biblioteca SDS Sensor de R. Zschiegner.
În mod similar, instalați bibliotecile Adafruit GFX și Adafruit SSD1306 de la Adafruit.
După instalarea bibliotecilor pe Arduino IDE, porniți codul incluzând fișierele bibliotecii necesare.
#include
În rândurile următoare, definiți două variabile pentru a stoca valorile PM10 și PM2.5.
plutitor p10, p25;
Apoi, definiți lățimea și înălțimea OLED. În acest proiect, folosim un ecran OLED 128 × 64 SPI. Aveți posibilitatea să modificați că SCREEN_WIDTH și SCREEN_HEIGHT variabile în funcție de ecran.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Apoi definiți pinii de comunicație SPI unde este conectat ecranul OLED.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Apoi, creați o instanță de afișare Adafruit cu lățimea și înălțimea definite anterior cu protocolul de comunicație SPI.
Afișaj Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Acum, în interiorul funcției setup () , inițializați Serial Monitor la o rată de transmisie de 9600 în scopuri de depanare. De asemenea, inițializați afișajul OLED și senzorul SDS011 cu funcția begin () .
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
În interiorul buclei de gol (), citiți valorile PM10 și PM2.5 de la senzorul SDS011 și imprimați citirile pe un monitor serial.
bucla nulă () {error = my_sds.read (& p25, & p10); if (! error) {Serial.println ("P2.5:" + Șir (p25)); Serial.println ("P10:" + Șir (p10));
După aceea, setați dimensiunea și culoarea textului folosind setTextSize () și setTextColor () .
display.setTextSize (2); display.setTextColor (ALB);
Apoi, în linia următoare, definiți poziția pentru a începe textul folosind metoda setCursor (x, y) . Aici vom afișa valorile PM2.5 și PM10 pe afișajul OLED, astfel încât prima linie să înceapă de la (0,15), în timp ce a doua linie începe cu coordonatele (0, 40).
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);
Și, în cele din urmă, apelați metoda display () pentru a afișa textul pe ecranul OLED.
display.display (); display.clearDisplay ();
Testarea monitorului calității aerului Arduino
Odată ce hardware-ul și codul sunt gata, este timpul să testați dispozitivul. Pentru aceasta, conectați Arduino la laptop, selectați placa și portul și apăsați butonul de încărcare. După cum puteți vedea în imaginea de mai jos, acesta va afișa valorile PM2.5 și PM10 pe afișajul OLED.
Videoclipul complet de lucru și codul sunt date mai jos. Sper că ți-a plăcut tutorialul și ai învățat ceva util. Dacă aveți întrebări, lăsați-le în secțiunea de comentarii sau utilizați forumurile noastre pentru alte întrebări tehnice.