- Необходими компоненти
- Nova PM сензор SDS011
- 0.96 'OLED дисплеен модул
- Електрическа схема за анализатор на качеството на въздуха
- Изграждане на веригата на Perf Board
- Обяснение на кода за монитор за качеството на въздуха
- Тестване на монитора за качество на въздуха Arduino
Замърсяването на въздуха е основен проблем в много градове и индексът на качеството на въздуха се влошава всеки ден. Според доклада на Световната здравна организация повече хора са убити преждевременно от въздействието на опасни частици, представени във въздуха, отколкото от автомобилни катастрофи. Според Агенцията за опазване на околната среда (EPA) въздухът в помещенията може да бъде 2 до 5 пъти по-токсичен от външния въздух. Така че тук изграждаме устройство за наблюдение на качеството на въздуха чрез измерване на частици PM2,5 и PM10 във въздуха.
Преди това използвахме газовия сензор MQ135 за монитор за качество на въздуха и сензора Sharp GP2Y1014AU0F за измерване на плътността на праха във въздуха. Този път използваме сензор SDS011 с Arduino Nano за изграждане на анализатор за качеството на въздуха. Сензорът SDS011 може да изчисли концентрациите на частици PM2,5 и PM10 във въздуха. Тук стойностите на PM2.5 и PM 10 в реално време ще бъдат показани на OLED дисплея.
Необходими компоненти
- Arduino Nano
- Nova PM сензор SDS011
- 0.96 'SPI OLED дисплеен модул
- Джъмперни проводници
Nova PM сензор SDS011
Сензорът SDS011 е съвсем нов сензор за качество на въздуха, разработен от Nova Fitness. Той работи на принципа на лазерното разсейване и може да достигне концентрацията на частиците между 0,3 до 10 μm във въздуха. Този сензор се състои от малък вентилатор, входящ клапан за въздух, лазерен диод и фотодиод. Въздухът влиза през входа на въздуха, където източник на светлина (лазер) осветява частиците и разсеяната светлина се преобразува в сигнал от фотодетектор. След това тези сигнали се усилват и обработват, за да се получи концентрацията на частиците на PM2.5 и PM10.
Спецификации на сензора SDS011:
- Изход: PM2.5, PM10
- Обхват на измерване: 0.0-999.9μg / m3
- Входно напрежение: 4.7V до 5.3V
- Максимален ток: 100mA
- Ток на заспиване: 2mA
- Време за реакция: 1 секунда
- Честота на изходящите серийни данни: 1 път / секунда
- Разделителна способност на диаметъра на частиците: ≤ 0,3μm
- Относителна грешка: 10%
- Температурен обхват: -20 ~ 50 ° C
0.96 'OLED дисплеен модул
OLED (Organic Light-Emitting Diodes) е технология за самоизлъчване, конструирана чрез поставяне на серия от органични тънки филми между два проводника. Ярка светлина се получава, когато към тези филми се прилага електрически ток. OLED използват същата технология като телевизорите, но имат по-малко пиксели, отколкото в повечето от нашите телевизори.
За този проект използваме монохромен 7-пинов SSD1306 0.96 ”OLED дисплей. Може да работи върху три различни комуникационни протокола: SPI 3 Wire режим, SPI четирижилен режим и I2C режим. Щифтовете и неговите функции са обяснени в таблицата по-долу:
Име на ПИН |
Други имена |
Описание |
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:
- ИС на драйвери за OLED: SSD1306
- Разделителна способност: 128 x 64
- Визуален ъгъл:> 160 °
- Входно напрежение: 3.3V ~ 6V
- Цвят на пиксела: син
- Работна температура: -30 ° C ~ 70 ° C
Научете повече за OLED и неговото взаимодействие с различни микроконтролери, като следвате връзката.
Електрическа схема за анализатор на качеството на въздуха
Схемата за измерване на частици PM2.5 и PM10 с помощта на Arduino е много проста и е дадена по-долу.
Сензорът SDS011 и модулът OLED дисплей се захранват с + 5V и GND. Щифтовете на предавателя и приемника на SDS011 са свързани към щифтове D3 и D4 на Arduino Nano. Тъй като 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 |
Изграждане на веригата на Perf Board
Също така съм запоил всички компоненти на перфектната дъска, за да изглежда чист. Но можете да ги направите и на макет. Дъските, които направих, са отдолу. Докато запоявате, уверете се, че не сортирате проводниците. Перфектната дъска, която споях, е показана по-долу:
Обяснение на кода за монитор за качеството на въздуха
Пълният код за този проект е даден в края на документа. Тук обясняваме някои важни части от кода.
Кодът използва SDS011, Adafruit_GFX , и Adafruit_SSD1306 библиотеки. Тези библиотеки могат да бъдат изтеглени от Мениджъра на библиотеки в IDE на Arduino и могат да бъдат инсталирани от там. За това отворете IDE на Arduino и отидете на Sketch> Include Library> Manage Libraries . Сега потърсете SDS011 и инсталирайте библиотеката на SDS Sensor от R. Zschiegner.
По същия начин инсталирайте библиотеките Adafruit GFX и Adafruit SSD1306 от Adafruit.
След като инсталирате библиотеките в Arduino IDE, стартирайте кода, като включите необходимите библиотечни файлове.
#include
В следващите редове дефинирайте две променливи за съхранение на стойностите PM10 и PM2.5.
плувка p10, p25;
След това дефинирайте 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);
Сега във функцията setup () инициализирайте Serial Monitor със скорост на предаване 9600 за целите на отстраняване на грешки. Също така инициализирайте OLED дисплея и сензора SDS011 с функцията start () .
my_sds.begin (3,4); Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Вътре в празния контур () прочетете стойностите PM10 и PM2.5 от сензора SDS011 и отпечатайте показанията на сериен монитор.
невалиден цикъл () {грешка = my_sds.read (& p25, & p10); ако (! грешка) {Serial.println ("P2.5:" + String (p25)); Serial.println ("P10:" + String (p10));
След това задайте размера на текста и цвета на текста, като използвате setTextSize () и setTextColor () .
display.setTextSize (2); display.setTextColor (БЯЛ);
След това в следващия ред дефинирайте позицията за стартиране на текста, използвайки метода setCursor (x, y) . Тук ще покажем стойностите PM2.5 и PM10 на OLED дисплея, така че първият ред започва от (0,15), докато вторият ред започва от (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);
И накрая, извикайте метода display () , за да покажете текста на OLED дисплей.
display.display (); display.clearDisplay ();
Тестване на монитора за качество на въздуха Arduino
След като хардуерът и кодът са готови, е време да тествате устройството. За това свържете Arduino към лаптопа, изберете платката и порта и натиснете бутона за качване. Както можете да видите на изображението по-долу, той ще показва стойности PM2.5 и PM10 на OLED дисплей.
Пълното работещо видео и код са дадени по-долу. Надявам се, че ви е харесал урока и сте научили нещо полезно. Ако имате въпроси, оставете ги в раздела за коментари или използвайте форумите ни за други технически въпроси.