- Необходими компоненти
- Sharp GP2Y1014AU0F сензор
- OLED дисплеен модул
- Електрическа схема
- Изграждане на веригата на Perf Board
- Обяснение на кода за анализатор за качеството на въздуха
- Тестване на взаимодействието на сензор Sharp GP2Y1014AU0F с Arduino
Замърсяването на въздуха е основен проблем в много градове и индексът на качеството на въздуха се влошава всеки ден. Според доклада на Световната здравна организация повече хора са убити преждевременно от въздействието на опасни частици, представени във въздуха, отколкото от автомобилни катастрофи. Според Агенцията за опазване на околната среда (EPA) въздухът в помещенията може да бъде 2 до 5 пъти по-токсичен от външния въздух. Така че тук изграждаме проект за наблюдение на качеството на въздуха чрез измерване на плътността на праховите частици във въздуха.
В продължение на предишните ни проекти като LPG детектор, детектор на дим и монитор за качество на въздуха, тук ще свържем сензора Sharp GP2Y1014AU0F с Arduino Nano за измерване на плътността на праха във въздуха. Освен сензора за прах и Arduino Nano, за показване на измерените стойности се използва и OLED дисплей. Сензорът за прах на GP2Y1014AU0F на Sharp е много ефективен при откриване на много фини частици като цигарен дим. Предназначен е за използване в пречистватели на въздух и климатици.
Необходими компоненти
- Arduino Nano
- Sharp GP2Y1014AU0F сензор
- 0.96 'SPI OLED дисплеен модул
- Джъмперни проводници
- Кондензатор 220 µf
- 150 Ω резистор
Sharp GP2Y1014AU0F сензор
GP2Y1014AU0F на Sharp е малък шест пинов аналогов изходен оптичен сензор за качество на оптичния въздух / оптичен прах, който е проектиран да усеща прахови частици във въздуха. Работи на принципа на лазерното разсейване. Вътре в сензорния модул, инфрачервен излъчващ диод и фотосензор са разположени диагонално в близост до отвора за вход на въздуха, както е показано на изображението по-долу:
Когато въздух, съдържащ прахови частици, попадне в сензорната камера, праховите частици разпръскват инфрачервената LED светлина към фотодетектора. Интензивността на разсеяната светлина зависи от праховите частици. Колкото повече прахови частици във въздуха, толкова по-голяма е интензивността на светлината. Изходното напрежение на V OUT щифта на сензора се променя в зависимост от интензивността на разсеяната светлина.
GP2Y1014AU0F Сензор Pinout:
Както бе споменато по-рано, сензорът GP2Y1014AU0F се предлага с 6-пинов конектор. Фигурата и таблицата по-долу показват заданията на щифтовете за GP2Y1014AU0F:
S. БР. |
Име на ПИН |
Описание на щифта |
1 |
V-LED |
LED Vcc щифт. Свържете към 5V през 150Ω резистор |
2 |
LED-GND |
LED заземен щифт. Свържете се с GND |
3 |
LED |
Използва се за включване / изключване на LED. Свържете се с всеки цифров щифт на Arduino |
4 |
S-GND |
Заземен щифт на сензора. Свържете се с GND на Arduino |
5 |
V OUT |
Аналогов изходен щифт на сензора. Свържете се с всеки аналогов щифт |
6 |
V CC |
Положителен щифт за доставка. Свържете се с 5V на Arduino |
Спецификации на сензора GP2Y1014AU0F:
- Консумация на нисък ток: 20mA макс
- Типично работно напрежение: 4.5V до 5.5V
- Минимален откриваем размер на праха: 0.5µm
- Диапазон на чувствителност на праховата плътност: До 580 ug / m 3
- Време за усещане: По-малко от 1 секунда
- Размери: 1,81 x 1,18 x 0,69 "(46,0 x 30,0 x 17,6 mm)
OLED дисплеен модул
OLED (Organic Light-Emitting Diodes) е технология за самоизлъчване, конструирана чрез поставяне на серия от органични тънки филми между два проводника. Ярка светлина се получава, когато към тези филми се прилага електрически ток. OLED използват същата технология като телевизорите, но имат по-малко пиксели, отколкото в повечето от нашите телевизори.
За този проект използваме монохромен 7-пинов SSD1306 0.96 ”OLED дисплей. Може да работи върху три различни комуникационни протокола: SPI 3 Wire режим, SPI четирижилен режим и I2C режим. Щифтовете и неговите функции са обяснени в таблицата по-долу:
Вече разгледахме OLED и неговите видове в подробности в предишната статия.
Име на ПИН |
Други имена |
Описание |
Gnd |
Земя |
Заземен щифт на модула |
Vdd |
Vcc, 5V |
Захранващ щифт (3-5V поносим) |
SCK |
D0, SCL, CLK |
Действа като щифт на часовника. Използва се както за I2C, така и за SPI |
SDA |
D1, MOSI |
ПИН за данни на модула. Използва се както за IIC, така и за SPI |
ВЕИ |
RST, RESET |
Нулира модула (полезно по време на SPI) |
DC |
A0 |
ПИН за команда за данни. Използва се за протокол SPI |
CS |
Избор на чип |
Полезно, когато по протокол SPI се използват повече от един модул |
Спецификации на OLED:
- ИС на драйвери за OLED: SSD1306
- Разделителна способност: 128 x 64
- Визуален ъгъл:> 160 °
- Входно напрежение: 3.3V ~ 6V
- Цвят на пиксела: син
- Работна температура: -30 ° C ~ 70 ° C
Научете повече за OLED и неговото взаимодействие с различни микроконтролери, като следвате връзката.
Електрическа схема
Схема за свързване на Sharp GP2Y1014AU0F сензор с Arduino е дадена по-долу:
Веригата е много проста, тъй като свързваме само сензор GP2Y10 и модул OLED дисплей с Arduino Nano. Сензорът GP2Y10 и модулът OLED дисплей се захранват с + 5V и GND. Пинът V0 е свързан с щифт A5 на Arduino Nano. Светодиодният щифт на сензора е свързан с цифровия щифт на Arduino12. Тъй като OLED дисплейният модул използва SPI комуникация, ние установихме SPI комуникация между OLED модула и Arduino Nano. Връзките са показани в таблицата по-долу:
S.No |
ПИН на модула OLED |
Arduino Pin |
1 |
GND |
Земя |
2 |
VCC |
5V |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
ВЕИ |
13 |
6 |
DC |
11. |
7 |
CS |
12 |
S.No |
ПИН на сензора |
Arduino Pin |
1 |
Vcc |
5V |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
LED |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
5V през 150Ω резистор |
Изграждане на веригата на Perf Board
След запояване на всички компоненти на перфектната платка, тя ще изглежда нещо като по-долу. Но може да се изгради и върху макет. Запоял съм сензора GP2Y1014 на същата платка, с която използвах интерфейса на сензора SDS011. Докато запоявате, уверете се, че кабелите ви за запояване трябва да са на достатъчно разстояние един от друг.
Обяснение на кода за анализатор за качеството на въздуха
Пълният код за този проект е даден в края на документа. Тук обясняваме някои важни части от кода.
Кодът използва Adafruit_GFX , и Adafruit_SSD1306 библиотеки. Тези библиотеки могат да се изтеглят от Мениджъра на библиотеки в IDE на Arduino и да се инсталират от там. За това отворете IDE на Arduino и отидете на Скица <Включване на библиотека <Управление на библиотеки . Сега потърсете Adafruit GFX и инсталирайте библиотеката Adafruit GFX от Adafruit.
По същия начин инсталирайте библиотеките на Adafruit SSD1306 от Adafruit.
След като инсталирате библиотеките в Arduino IDE, стартирайте кода, като включите необходимите библиотечни файлове. Сензорът за прах не изисква никаква библиотека, тъй като четем стойностите на напрежението директно от аналоговия щифт на Arduino.
#include
След това дефинирайте OLED ширината и височината. В този проект използваме 128 × 64 SPI OLED дисплей. Можете да промените променливите SCREEN_WIDTH и SCREEN_HEIGHT според дисплея си.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
След това дефинирайте връзките за комуникация SPI, където е свързан OLED дисплеят.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
След това създайте екземпляр на дисплей Adafruit с дефинираната по-рано ширина и височина с протокола за комуникация SPI.
Дисплей Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
След това дефинирайте щифтовете на сензорите за прах и светодиодите. Sense pin е изходният щифт на сензора за прах, който се използва за отчитане на стойностите на напрежението, докато led щифтът се използва за включване / изключване на IR Led.
int sensePin = A5; int ledPin = 7;
Сега във функцията setup () инициализирайте Serial Monitor със скорост на предаване 9600 за целите на отстраняване на грешки. Също така инициализирайте OLED дисплея с функцията begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Вътре във функцията loop () прочетете стойностите на напрежението от аналогов щифт 5 на Arduino Nano. Първо включете IR светодиода и след това изчакайте 0,28 ms, преди да отчетете изходното напрежение. След това прочетете стойностите на напрежението от аналоговия щифт. Тази операция отнема около 40 до 50 микросекунди, така че въведете 40 микросекундно забавяне, преди да изключите сензора за прах. Според спецификациите светодиодът трябва да се импулсира веднъж на всеки 10 ms, така че изчакайте остатъка от цикъла от 10 ms = 10000 - 280 - 40 = 9680 микросекунди .
digitalWrite (ledPin, LOW); delayMicroseconds (280); outVo = analogRead (sensePin); delayMicroseconds (40); digitalWrite (ledPin, HIGH); delayMicroseconds (9680);
След това в следващите редове изчислете праховата плътност, като използвате изходното напрежение и стойността на сигнала.
sigVolt = outVo * (5/1024); ниво на прах = 0,17 * sigVolt - 0,1;
След това задайте размера на текста и цвета на текста, като използвате setTextSize () и setTextColor () .
display.setTextSize (1); display.setTextColor (БЯЛ);
След това в следващия ред дефинирайте позицията, в която текстът започва, използвайки метода setCursor (x, y) . И отпечатайте стойностите на плътността на праха на OLED дисплей, като използвате функцията display.println () .
display.println ("Прах"); display.println ("Плътност"); display.setTextSize (3); display.println (прахово ниво);
И в последния извикайте метода display () , за да покажете текста на OLED дисплей.
display.display (); display.clearDisplay ();
Тестване на взаимодействието на сензор Sharp GP2Y1014AU0F с Arduino
След като хардуерът и кодът са готови, е време да тествате сензора. За това свържете Arduino към лаптопа, изберете платката и порта и натиснете бутона за качване. Както можете да видите на изображението по-долу, той ще покаже Плътност на прах на OLED дисплей.
Пълното работещо видео и код са дадени по-долу. Надявам се, че ви е харесал урока и сте научили нещо полезно. Ако имате въпроси, оставете ги в раздела за коментари или използвайте форумите ни за други технически въпроси.