- Потрібні компоненти
- Датчик Sharp GP2Y1014AU0F
- Модуль дисплея OLED
- Кругова діаграма
- Побудова схеми на платі Perf
- Пояснення коду для аналізатора якості повітря
- Тестування взаємодії датчика Sharp GP2Y1014AU0F з Arduino
Забруднення повітря є головною проблемою у багатьох містах, і показник якості повітря з кожним днем погіршується. Згідно з доповіддю Всесвітньої організації охорони здоров’я, більше людей вбиваються передчасно внаслідок дії небезпечних частинок, що знаходяться в повітрі, ніж від автомобільних аварій. За даними Агентства з охорони навколишнього середовища (EPA), повітря в приміщеннях може бути в 2–5 разів токсичнішим, ніж повітря на відкритому повітрі. Тож тут ми будуємо проект моніторингу якості повітря шляхом вимірювання щільності частинок пилу в повітрі.
Отже, у продовження наших попередніх проектів, таких як детектор зрідженого газу, детектор диму та монітор якості повітря, тут ми збираємось взаємодіяти датчик Sharp GP2Y1014AU0F з Arduino Nano для вимірювання щільності пилу в повітрі. Окрім датчика пилу та Arduino Nano, для відображення виміряних значень також використовується OLED-дисплей. Датчик пилу від Sharp GP2Y1014AU0F дуже ефективний при виявленні дуже дрібних частинок, таких як сигаретний дим. Він призначений для використання в очищувачах повітря та кондиціонерах.
Потрібні компоненти
- Arduino Nano
- Датчик Sharp GP2Y1014AU0F
- 0,96 'SPI OLED-модуль дисплея
- Провід перемички
- Конденсатор 220 мкф
- Резистор 150 Ом
Датчик Sharp GP2Y1014AU0F
GP2Y1014AU0F від Sharp - це крихітний аналоговий вихідний оптичний датчик якості / пилу з аналоговим шістьма виводами, призначений для виявлення частинок пилу в повітрі. Він працює за принципом лазерного розсіювання. Усередині модуля датчика, інфрачервоний випромінюючий діод і фотодатчик розташовані по діагоналі біля отвору для впуску повітря, як показано на зображенні нижче:
Коли повітря, що містить частинки пилу, потрапляє в камеру датчика, частинки пилу розсіюють ІЧ-світлодіодне світло у напрямку до фотодетектора. Інтенсивність розсіяного світла залежить від частинок пилу. Чим більше частинок пилу в повітрі, тим більша інтенсивність світла. Вихідна напруга на виводі V OUT датчика змінюється відповідно до інтенсивності розсіяного світла.
GP2Y1014AU0F Виведення датчика:
Як вже згадувалося раніше, датчик GP2Y1014AU0F постачається з 6-контактним роз'ємом. На малюнку та в таблиці нижче показано призначення контактів для GP2Y1014AU0F:
С. НІ. |
Ім'я PIN-коду |
Опис штифта |
1 |
V-LED |
Світлодіодний штифт Vcc. Підключіть до резистора від 5 В до 150 Ом |
2 |
LED-GND |
Світлодіодний штифт заземлення. Підключіться до GND |
3 |
СВІТЛОДІОДНИЙ |
Використовується для включення / вимкнення світлодіода. Підключіть будь-який цифровий штифт Arduino |
4 |
S-GND |
Штифт заземлення датчика. Підключіться до GND Arduino |
5 |
V ВИХІД |
Висновок аналогового виходу датчика. Підключіть до будь-якого аналогового контакту |
6 |
V КК |
Позитивний контактний штифт. Підключіться до 5В Arduino |
Характеристики датчика GP2Y1014AU0F:
- Низьке споживання струму: макс. 20 мА
- Типова робоча напруга: від 4,5 до 5,5 В.
- Мінімальний розмір пилу, який можна виявити: 0,5 мкм
- Діапазон зондування щільності пилу: до 580 мкг / м 3
- Час зондування: менше 1 секунди
- Розміри: 1,81 x 1,18 x 0,69 '' (46,0 x 30,0 x 17,6 мм)
Модуль дисплея OLED
OLED (органічні світлодіоди) - це самовипромінююча технологія, побудована шляхом розміщення низки органічних тонких плівок між двома провідниками. Яскраве світло утворюється, коли до цих плівок подається електричний струм. OLED використовують ту саму технологію, що і телевізори, але мають менше пікселів, ніж у більшості наших телевізорів.
Для цього проекту ми використовуємо монохромний 7-контактний OLED-дисплей SSD1306 0,96 ”. Він може працювати на трьох різних протоколах зв'язку: SPI 3 Wire, SPI 4-wire і I2C. Шпильки та її функції пояснюються в таблиці нижче:
Ми вже детально висвітлювали OLED та його типи в попередній статті.
Ім'я PIN-коду |
Інші імена |
Опис |
Gnd |
Земля |
Штифт заземлення модуля |
Vdd |
Vcc, 5 В. |
Штифт живлення (3-5 В допустимий) |
SCK |
D0, SCL, CLK |
Діє як годинниковий штифт. Використовується як для I2C, так і для SPI |
SDA |
D1, MOSI |
Штифт даних модуля. Використовується як для IIC, так і для SPI |
ВДЕ |
RST, RESET |
Скидає модуль (корисно під час SPI) |
Постійного струму |
A0 |
Командний штифт даних. Використовується для протоколу SPI |
CS |
Вибір чіпа |
Корисно, коли за протоколом SPI використовується більше одного модуля |
Технічні характеристики OLED:
- Схема драйвера OLED: SSD1306
- Роздільна здатність: 128 x 64
- Кут зору:> 160 °
- Вхідна напруга: 3,3 В ~ 6 В
- Колір пікселя: синій
- Робоча температура: -30 ° C ~ 70 ° C
Дізнайтеся більше про OLED та його взаємодію з різними мікроконтролерами, перейшовши за посиланням.
Кругова діаграма
Принципова схема для взаємодії датчика Sharp GP2Y1014AU0F з Arduino наведена нижче:
Схема дуже проста, оскільки ми лише підключаємо датчик GP2Y10 та модуль OLED-дисплея до Arduino Nano. Датчик GP2Y10 і OLED-модуль дисплея живляться від + 5 В і GND. Висновок V0 з'єднаний з висновком A5 Arduino Nano. Світлодіодний штифт датчика підключений до цифрового штифта Arduino12. Оскільки модуль дисплея OLED використовує зв'язок SPI, ми встановили зв'язок SPI між модулем OLED та Arduino Nano. З'єднання показані в таблиці нижче:
С.Ні |
PIN-код модуля OLED |
Pin Arduino |
1 |
GND |
Земля |
2 |
VCC |
5 В |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
ВДЕ |
13 |
6 |
Постійного струму |
11 |
7 |
CS |
12 |
С.Ні |
Штифт датчика |
Pin Arduino |
1 |
Vcc |
5 В |
2 |
V O |
A5 |
3 |
S-GND |
GND |
4 |
СВІТЛОДІОДНИЙ |
7 |
5 |
LED-GND |
GND |
6 |
V-LED |
Резистор від 5 В до 150 Ом |
Побудова схеми на платі Perf
Після спайки всіх компонентів на платі перф, це буде виглядати приблизно так, як показано нижче. Але його також можна побудувати на макеті. Я припаяв датчик GP2Y1014 на тій самій платі, на якій я використовував інтерфейс датчика SDS011. Під час пайки переконайтеся, що паяні дроти повинні знаходитися на достатній відстані один від одного.
Пояснення коду для аналізатора якості повітря
Повний код цього проекту наведено в кінці документа. Тут ми пояснюємо деякі важливі частини коду.
Код використовує Adafruit_GFX , і Adafruit_SSD1306 бібліотеки. Ці бібліотеки можна завантажити з Менеджера бібліотек в IDE Arduino та встановити звідти. Для цього відкрийте IDE Arduino і перейдіть до Sketch <Include Library <Manage Libraries . Тепер шукайте Adafruit GFX та встановіть бібліотеку Adafruit GFX від Adafruit.
Подібним чином встановіть бібліотеки Adafruit SSD1306 фірми Adafruit.
Після встановлення бібліотек в Arduino IDE запустіть код, включивши необхідні файли бібліотек. Датчику пилу не потрібна бібліотека, оскільки ми зчитуємо значення напруги безпосередньо з аналогового штифта Arduino.
#включати
Потім визначте ширину та висоту OLED. У цьому проекті ми використовуємо OLED-дисплей 128 × 64 SPI. Ви можете змінити змінні 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);
Після цього визначте сенсор пилу та світлодіодні штифти. Сенсорний штифт - вихідний штифт датчика пилу, який використовується для зчитування значень напруги, тоді як світлодіодний штифт використовується для ввімкнення / вимкнення ІЧ-світлодіода.
int sensePin = A5; int ledPin = 7;
Тепер усередині функції setup () ініціалізуйте послідовний монітор зі швидкістю передачі в 9600 для цілей налагодження. Крім того, ініціалізуйте OLED-дисплей за допомогою функції begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC);
Усередині функції loop () зчитуйте значення напруги з аналогового виводу 5 Arduino Nano. Спочатку увімкніть інфрачервоний світлодіод, а потім почекайте 0,28 мс, перш ніж знімати показники вихідної напруги. Після цього зчитайте значення напруги з аналогового штифта. Ця операція займає близько 40-50 мікросекунд, тому введіть затримку в 40 мікросекунд перед тим, як вимкнути світлодіодний датчик пилу. Відповідно до технічних характеристик, світлодіод слід вмикати один раз на 10 мс, тому зачекайте залишок циклу 10 мс = 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 (dustLevel);
І нарешті, зателефонуйте методу display () для відображення тексту на OLED-дисплеї.
display.display (); display.clearDisplay ();
Тестування взаємодії датчика Sharp GP2Y1014AU0F з Arduino
Коли обладнання та код готові, настав час протестувати датчик. Для цього підключіть Arduino до ноутбука, виберіть плату та порт і натисніть кнопку завантаження. Як ви можете бачити на зображенні нижче, воно буде відображати щільність пилу на OLED-дисплеї.
Повне робоче відео та код наведені нижче. Сподіваюся, вам сподобався підручник і ви дізналися щось корисне. Якщо у вас виникли запитання, залиште їх у розділі коментарів або скористайтеся нашими форумами для інших технічних запитань.