- Nepieciešamās sastāvdaļas
- Sharp GP2Y1014AU0F sensors
- OLED displeja modulis
- Ķēdes shēma
- Circuit veidošana uz Perf Board
- Gaisa kvalitātes analizatora koda skaidrojums
- Sharp GP2Y1014AU0F sensora saskarnes testēšana ar Arduino
Gaisa piesārņojums ir galvenā problēma daudzās pilsētās, un gaisa kvalitātes indekss katru dienu pasliktinās. Saskaņā ar Pasaules Veselības organizācijas ziņojumu, gaisā esošo bīstamo daļiņu iedarbība priekšlaicīgi nogalina vairāk cilvēku nekā autoavārijās. Saskaņā ar Vides aizsardzības aģentūras (EPA) datiem, iekštelpu gaiss var būt 2 līdz 5 reizes toksiskāks nekā āra gaiss. Tāpēc šeit mēs izveidojam projektu gaisa kvalitātes uzraudzībai, mērot putekļu daļiņu blīvumu gaisā.
Tātad, turpinot mūsu iepriekšējos projektus, piemēram, sašķidrinātas naftas gāzes detektoru, dūmu detektoru un gaisa kvalitātes monitoru, šeit mēs saskaramies ar Sharp GP2Y1014AU0F sensoru ar Arduino Nano, lai izmērītu putekļu blīvumu gaisā. Izmērīto vērtību parādīšanai, izņemot putekļu sensoru un Arduino Nano, tiek izmantots arī OLED displejs. Sharp GP2Y1014AU0F putekļu sensors ir ļoti efektīvs, lai noteiktu ļoti smalkas daļiņas, piemēram, cigarešu dūmus. Tas ir paredzēts izmantošanai gaisa attīrītājos un gaisa kondicionieros.
Nepieciešamās sastāvdaļas
- Arduino Nano
- Sharp GP2Y1014AU0F sensors
- 0,96 'SPI OLED displeja modulis
- Džemperu vadi
- 220 µf kondensators
- 150 Ω rezistors
Sharp GP2Y1014AU0F sensors
Sharp GP2Y1014AU0F ir mazs sešu kontaktu analogās izejas optiskais gaisa kvalitātes / optiskais putekļu sensors, kas paredzēts putekļu daļiņu uztveršanai gaisā. Tas darbojas pēc lāzera izkliedes principa. Sensora moduļa iekšpusē infrasarkano staru izstarojošais diode un fotosensors ir pa diagonāli izvietoti netālu no gaisa ieplūdes atveres, kā parādīts zemāk esošajā attēlā:
Kad sensora kamerā nonāk gaiss, kurā ir putekļu daļiņas, putekļu daļiņas izkliedē IR LED gaismu pret fotodetektoru. Izkliedētās gaismas intensitāte ir atkarīga no putekļu daļiņām. Jo vairāk putekļu daļiņu gaisā, jo lielāka ir gaismas intensitāte. Izejas spriegums sensora V OUT tapā mainās atkarībā no izkliedētās gaismas intensitātes.
GP2Y1014AU0F sensora pinout:
Kā minēts iepriekš, GP2Y1014AU0F sensors ir aprīkots ar 6 kontaktu savienotāju. Zemāk redzamajā attēlā un tabulā parādīti GP2Y1014AU0F piespraudes piešķiršana:
S. NĒ. |
Piespraudes nosaukums |
Piespraudes apraksts |
1 |
V-LED |
LED Vcc tapa. Pievienojiet 5V caur 150Ω rezistoru |
2 |
LED-GND |
LED zemējuma tapa. Izveidojiet savienojumu ar GND |
3 |
LED |
Izmanto, lai ieslēgtu / izslēgtu LED. Izveidojiet savienojumu ar jebkuru Arduino digitālo tapu |
4 |
S-GND |
Sensora zemējuma tapa. Izveidojiet savienojumu ar Arduino GND |
5 |
V OUT |
Sensora analogā izejas tapa. Savienojiet ar jebkuru analogo tapu |
6 |
V CC |
Pozitīva piegādes tapa. Savienojiet ar Arduino 5 V |
GP2Y1014AU0F sensora specifikācijas:
- Zems strāvas patēriņš: 20mA maks
- Tipisks darba spriegums: no 4,5 V līdz 5,5 V
- Minimālais nosakāms putekļu izmērs: 0,5 μm
- Putekļu blīvuma noteikšanas diapazons: līdz 580 ug / m 3
- Sensēšanas laiks: mazāk nekā 1 sekunde
- Izmēri: 1,81 x 1,18 x 0,69 "(46,0 x 30,0 x 17,6 mm)
OLED displeja modulis
OLED (organiskās gaismu izstarojošās diodes) ir automātiska gaismu izstarojoša tehnoloģija, kas konstruēta, starp diviem vadītājiem ievietojot vairākas organiskas plānas plēves. Spilgta gaisma rodas, ja šīm plēvēm tiek uzlikta elektriskā strāva. OLED izmanto to pašu tehnoloģiju kā televizori, taču tiem ir mazāk pikseļu nekā lielākajā daļā mūsu televizoru.
Šajā projektā mēs izmantojam vienkrāsainu 7 kontaktu SSD1306 0,96 ”OLED displeju. Tas var darboties trīs dažādos sakaru protokolos: SPI 3 vadu režīmā, SPI četru vadu režīmā un I2C režīmā. Adatas un tās funkcijas ir paskaidrotas zemāk esošajā tabulā:
Mēs jau detalizēti aplūkojām OLED un tā veidus iepriekšējā rakstā.
Piespraudes nosaukums |
Citi vārdi |
Apraksts |
Gnd |
Zeme |
Moduļa zemējuma tapa |
Vdd |
Vcc, 5V |
Barošanas tapa (3-5V pieļaujama) |
SCK |
D0, SCL, CLK |
Darbojas kā pulksteņa tapa. Izmanto gan I2C, gan SPI |
SDA |
D1, MOSI |
Moduļa datu tapa. Izmanto gan IIC, gan SPI |
RES |
RST, ATIESTATĪT |
Modulis tiek atiestatīts (noderīgs SPI laikā) |
DC |
A0 |
Datu komandas piespraude. Izmanto SPI protokolam |
CS |
Chip Select |
Noderīgi, ja SPI protokolā tiek izmantoti vairāki moduļi |
OLED specifikācijas:
- OLED draivera IC: SSD1306
- Izšķirtspēja: 128 x 64
- Vizuālais leņķis:> 160 °
- Ieejas spriegums: 3.3V ~ 6V
- Pikseļu krāsa: zila
- Darba temperatūra: -30 ° C ~ 70 ° C
Uzziniet vairāk par OLED un tā saskarni ar dažādiem mikrokontrolleriem, sekojot saitei.
Ķēdes shēma
Sharp GP2Y1014AU0F sensora un Arduino saskarnes shēmas shēma ir sniegta zemāk:
Ķēde ir ļoti vienkārša, jo mēs tikai savienojam GP2Y10 sensoru un OLED displeja moduli ar Arduino Nano. Gan GP2Y10 sensors, gan OLED displeja modulis tiek darbināts ar + 5V un GND. V0 tapa ir savienota ar Arduino Nano A5 tapu. Sensora LED tapa ir savienota ar Arduino digitālo tapu12. Tā kā OLED displeja modulis izmanto SPI komunikāciju, mēs esam izveidojuši SPI komunikāciju starp OLED moduli un Arduino Nano. Savienojumi ir parādīti zemāk esošajā tabulā:
S.No |
OLED moduļa tapa |
Arduino tapa |
1 |
GND |
Zeme |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
RES |
13 |
6 |
DC |
11 |
7 |
CS |
12 |
S.No |
Sensora tapa |
Arduino tapa |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V caur 150Ω rezistoru |
Circuit veidošana uz Perf Board
Pēc visu komponentu lodēšanas uz perf plāksnes tas izskatīsies kaut kas līdzīgs zemāk redzamajam. Bet to var uzcelt arī uz maizes dēļa. Esmu pielodējis GP2Y1014 sensoru tajā pašā dēlī, kuru izmantoju SDS011 sensora saskarnei. Lodēšanas laikā pārliecinieties, ka jūsu lodēšanas vadiem jābūt pietiekamā attālumā viens no otra.
Gaisa kvalitātes analizatora koda skaidrojums
Pilns šī projekta kods ir norādīts dokumenta beigās. Šeit mēs izskaidrojam dažas svarīgas koda daļas.
Kods izmanto Adafruit_GFX , un Adafruit_SSD1306 bibliotēkas. Šīs bibliotēkas var lejupielādēt no bibliotēku pārvaldnieka Arduino IDE un instalēt to no turienes. Lai to izdarītu, atveriet Arduino IDE un dodieties uz Skice <Iekļaut bibliotēku <Pārvaldīt bibliotēkas . Tagad meklējiet Adafruit GFX un instalējiet Adafruit GFX bibliotēku.
Līdzīgi instalējiet Adafruit SSD1306 bibliotēkas.
Pēc bibliotēku instalēšanas Arduino IDE sāciet kodu, iekļaujot nepieciešamos bibliotēku failus. Putekļu sensoram nav nepieciešama bibliotēka, jo sprieguma vērtības mēs nolasām tieši no Arduino analogās tapas.
# iekļaut
Pēc tam definējiet OLED platumu un augstumu. Šajā projektā mēs izmantojam 128 × 64 SPI OLED displeju. Mainītājus SCREEN_WIDTH un SCREEN_HEIGHT varat mainīt atbilstoši savam displejam.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Pēc tam definējiet SPI sakaru tapas, kur ir pievienots OLED displejs.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Pēc tam izveidojiet Adafruit displeja gadījumu ar platumu un augstumu, kas iepriekš noteikts ar SPI sakaru protokolu.
Adafruit_SSD1306 displejs (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Pēc tam definējiet putekļu sensoru sajūtu un vadāmās tapas. Sense pin ir putekļu sensora izvades tapa, ko izmanto, lai nolasītu sprieguma vērtības, savukārt led tapu izmanto, lai ieslēgtu / izslēgtu IR Led.
int jēgaPin = A5; int ledPin = 7;
Tagad iestatīšanas () funkcijas iekšpusē inicializējiet sērijas monitoru ar 9600 datu pārraides ātrumu atkļūdošanas vajadzībām. Inicializējiet arī OLED displeju ar sākuma () funkciju.
Sērijas sākums (9600); display.begin (SSD1306_SWITCHCAPVCC);
Funkcijas loop () iekšpusē nolasiet sprieguma vērtības no Arduino Nano 5. analogā kontakta. Vispirms ieslēdziet IR LED un pēc tam pagaidiet 0,28 ms, pirms nolasāt izejas spriegumu. Pēc tam nolasiet sprieguma vērtības no analogās tapas. Šī darbība prasa apmēram 40 līdz 50 mikrosekundes, tāpēc pirms putekļu sensora LED izslēgšanas ieviešiet 40 mikrosekunžu aizkavi. Saskaņā ar specifikācijām gaismas diode jāimpulē reizi 10 ms, tāpēc pagaidiet atlikušo 10 ms cikla laiku = 10000 - 280 - 40 = 9680 mikrosekundes .
digitalWrite (ledPin, LOW); kavēšanāsMikrosekundes (280); outVo = analogRead (sensePin); kavēšanāsMikrosekundes (40); digitalWrite (ledPin, HIGH); kavēšanāsMikrosekundes (9680);
Pēc tam nākamajās rindās aprēķiniet putekļu blīvumu, izmantojot izejas spriegumu un signāla vērtību.
sigVolt = outVo * (5/1024); dustLevel = 0,17 * sigVolt - 0,1;
Pēc tam iestatiet teksta izmēru un krāsu, izmantojot setTextSize () un setTextColor () .
display.setTextSize (1); display.setTextColor (BALTS);
Pēc tam nākamajā rindā definējiet vietu, kur teksts sākas, izmantojot metodi setCursor (x, y) . Un izdrukājiet putekļu blīvuma vērtības OLED displejā, izmantojot display.println () funkciju.
display.println ("Putekļi"); display.println ("Blīvums"); display.setTextSize (3); display.println (dustLevel);
Un pēdējā, izsauciet display () metodi, lai parādītu tekstu OLED Display.
display.display (); display.clearDisplay ();
Sharp GP2Y1014AU0F sensora saskarnes testēšana ar Arduino
Kad aparatūra un kods ir gatavi, ir pienācis laiks pārbaudīt sensoru. Lai to izdarītu, pievienojiet Arduino klēpjdatoram, atlasiet Board un Port un nospiediet augšupielādes pogu. Kā redzat zemāk esošajā attēlā, OLED displejā tas parādīs putekļu blīvumu.
Pilns darba video un kods ir norādīts zemāk. Ceru, ka jums patika apmācība un uzzinājāt kaut ko noderīgu. Ja jums ir kādi jautājumi, atstājiet tos komentāru sadaļā vai izmantojiet mūsu forumus citiem tehniskiem jautājumiem.