Please use this identifier to cite or link to this item:
https://er.chdtu.edu.ua/handle/ChSTU/8056Full metadata record
| DC Field | Value | Language |
|---|---|---|
| dc.contributor.advisor | Клопотовський, Павло Анатолійович | - |
| dc.contributor.author | Чередник, Максим Андрійович | - |
| dc.date.accessioned | 2026-03-12T13:42:15Z | - |
| dc.date.available | 2026-03-12T13:42:15Z | - |
| dc.date.issued | 2024 | - |
| dc.identifier.uri | https://er.chdtu.edu.ua/handle/ChSTU/8056 | - |
| dc.description.abstract | Об’єкт дослідження – пристрій для моніторингу якості повітря з використанням платформи NodeMCU. Мета роботи – розробка сучасного бездротового пристрою з цифровою індикацією для реалізації моніторингу якості повітря згідно з вимогами ТЗ, розробка повного пакету конструкторської документації. Методи дослідження – інформаційний пошук та огляд існуючих рішень, обґрунту-вання технічного завдання, розробка структурної схеми, розробка програмно- технічного рішення проектованого пристрою. В роботі розглянуто: налаштування середовища програмування Arduino IDE, про-грами, що забезпечують під’єднання пристрою до мережі інтернет за допомогою бездро-тової технології WiFi, запит до спеціалізованого погодного сервісу та обробку його відпо-віді з подальшим виведенням на LCD дисплей. Реалізовано програмно- технічного рішення проектованого пристрою з використан-ням платформи Node MCU та LCD дисплею 1602, який взаємоліє з віддаленим погодним сервісом через бездротову мережу WiFi. | uk_UA |
| dc.language.iso | uk | uk_UA |
| dc.subject | якість повітря | uk_UA |
| dc.subject | моніторинг | uk_UA |
| dc.subject | nodemcu | uk_UA |
| dc.subject | arduino | uk_UA |
| dc.subject | rest api | uk_UA |
| dc.subject | індикація | uk_UA |
| dc.title | Розробка мережевого пристрою для моніторингу якості повітря з використанням платформи NodeMCU | uk_UA |
| dc.type | Bachelor Thesis | uk_UA |
| Appears in Collections: | 172 Електронні комунікації та радіотехніка (Телекомунікації) | |
Files in This Item:
| File | Description | Size | Format | |
|---|---|---|---|---|
| Б_172_Чередник_Клопотовський.pdf Restricted Access | 2.31 MB | Adobe PDF | View/Open Request a copy |
Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.
Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
ФАКУЛЬТЕТ ЕЛЕКТРОННИХ ТЕХНОЛОГІЙ, АВТОТРАНСПОРТУ ТА
МАШИНОБУДУВАННЯ
КАФЕДРА РОБОТОТЕХНІЧНИХ І ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ
ТА КІБЕРБЕЗПЕКИ
До захисту допущено
Завідувач кафедри
д.т.н., професор________Володимир ПАЛАГІН
"_____" __________________ 2024 року
Пояснювальна записка
до кваліфікаційної роботи
бакалавра
(освітній рівень)
на тему Розробка мережевого пристрою для моніторингу якості повітря з
використанням платформи NodeMCU
Виконав: студент 4 курсу, групи ТК-206ск
напряму підготовки (спеціальності)
172 «Телекомунікації та радіотехніка»
Освітня програма «Телекомунікації»
(шифр і назва напряму підготовки, спеціальності)
Чередник М.А.
(прізвище та ініціали)
Керівник Клопотовський П.А
(прізвище та ініціали)
Рецензент Бондаренко М.О.
Черкаси – 2024 року
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ
Факультет електронних технологій, автотранспорту та машинобудування
Кафедра робототехнічних і телекомунікаційних систем та кібербезпеки
Освітньо-кваліфікаційний рівень бакалавр
Спеціальність 172 «Телекомунікації та радіотехніка»,
Освітня
програма «Телекомунікації»
ЗАТВЕРДЖУЮ:
Завідувач кафедри Володимир ПАЛАГІН
« » 2024 р.
ЗАВДАННЯ
НА ВИПУСКНУ РОБОТУ СТУДЕНТУ
Чередника Максима Андрійовича
(прізвище, ім’я, по батькові)
1. Тема проекту (роботи) Розробка мережевого пристрою для моніторингу якості повітря
з використанням платформи NodeMCU
Керівник проекту (роботи) Клопотовський Павло Анатолійович
(прізвище, ім’я, по батькові, науковий ступінь, вчене звання)
затверджені наказом по університету від « 20 » лютого 2024 р. № 49/04
2. Термін здачі студентом закінченої роботи 10 червня 2024 року
3. Вихідні дані до проекту (роботи) використання платформи NodeMCU, моніторинг
стану повітря за основними якісними показниками, використання спеціалізованих мережевих
сервісів моніторингу та прогнозування погоди, наочна індикація показників якості повітря
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить розробити)
1 Патентний пошук та огляд наявних рішень; 2 Платформа розробки NodeMCU
3 Реалізація програмно-технічного рішення проектованого пристрою 4. Охорона праці
5. Перелік графічного матеріалу (з точним зазначенням обов’язкових креслень)
Презентаційний матеріал з зазначенням мети роботи та основних результатів випускної
Роботи, Плакат з охорони праці
6. Консультанти розділів проекту (роботи)
Розділ Прізвище, ініціали та посада Підпис, дата
консультанта завдання видав завдання прийняв
Охорона праці Кожем’якін О.С., старший
викладач кафедри безпеки
життєдіяльності
7. Дата видачі завдання 15 січня 2024 року
КАЛЕНДАРНИЙ ПЛАН
№ Назва етапів дипломного Строк виконання етапів
з/п проекту (роботи) проекту (роботи) Примітка
1. Інформаційно-технічний пошук
та огляд літератури 20.02.2024 - 15.03.2024
2. Патентний пошук
та огляд наявних рішень 16.03.2024 – 07.04.2024
3. Розробка структури мережевого
пристрою 08.04.2023 - 14.04.2024
4. Реалізація програмно-технічного рішення
проектованого пристрою 15.04.2024 - 02.06.2024
5. Охорона праці 03.06.2024 - 27.05.2024
6. Оформлення пояснювальної записки 28.05.2024 - 06.06.2024
7. Оформлення презентаційного матеріалу 07.06.2024 -10.06.2024
Студент-дипломник Максим ЧЕРЕДНИК
(підпис)
Керівник проекту Павло КЛОПОТОВСЬКИЙ
(підпис)
ЗМІСТ
Вступ 4
1. Патентний пошук та огляд наявних рішень
1.1 Важливість моніторигу якості повітря та вплив на здоров’я
людини 5
1.2 Сучасні системи моніторингу якості повітря 6
1.3 Інтернет сервіси відслідковування погоди 11
1.4 Інтеграція погодних сервісів з користувацькими платформами 13
2. Платформа розробки NodeMCU.
2.1 Порівняння NodeMCU з іншими платформами IoT 17
2.2. Особливості роботи з платформою NodeMCU 19
2.3 Обгрунування вибору структурних складових системи
моніторингу повітря. моніторингу повітря 24
3. Реалізація програмно-технічного рішення проектованого пристрою.
3.1 Налаштування базової взаємодії між середовищем розробки
Arduino IDE та платформи Node MCU. 34
3.2 Реалізація інтернет запиту погодного інтернет сервісу та
обробка його відповіді 41
3.3 Підключення LCD екрану 1602 з I2C модулем до NodeMCU 47
4. Охорона праці
4.1 Аналіз небезпек та шкідливостей, які виникають при виконанні 49
робіт в приміщенні науково-технічного відділу
4.2 Розрахунок системи водяного опалення в приміщенні відділу 54
Висновок. 60
Список використаної літератури. 62
ДОДАТКИ
ТК206СК.024.413.248 ПЗ
Змн. Арк. № докум. Підпис Дата
Розроб. Чередник Пристрій моніторингу якості Літ. Арк. Акрушів
Перевір. Клопотовський повітря 3 63
Реценз. А.В.
Пояснювальна записка
Н. Контр. Клопотовський ЧДТУ 2024
Затверд.
ВСТУП
Системи моніторингу якості навколишнього середовища призначені для
відстеження та аналізу різних параметрів навколишнього середовища, таких як
повітря, вода, ґрунт. Ці системи допомагають виявляти забруднення, оцінювати
стан екосистем та вживати заходів для захисту здоров'я людини та природи.
Важливе місце серед систем моніторингу займають системи моніторингу
якості повітря. Вони призначені для вимірювання та аналізу забруднюючих
речовин в атмосфері. Ці системи відіграють важливу роль в охороні здоров'я
населення, запобіганні екологічним катастрофам та розробці ефективних заходів
щодо покращення якості повітря.
Автономні системи моніторингу якості повітря – це незалежні пристрої або
мережі пристроїв, які можуть працювати без постійного втручання людини. Вони
призначені для постійного спостереження за якістю повітря та збору даних у
режимі реального часу. Дані системи, в залежності від джерела отримання даних
про стан повітря, можна поділити на: повністю автономні, які можуть проводити
аналіз стан уповітря з використанням власних вбудованих датчиків (автономні
метереологічні станції) і системи, які отримуються данні про стан середовища з
ресурсів метереологічних служб в режимі реального часу або за запитом.
В роботі проводиться дослідження в сфері сучасних систем моніторингу
якості навколишнього середовища і пропонується розробка переносного
мережевого пристрою для моніторингу якості повітря з використанням платформи
NodeMCU. Розроблюваний пристрій повинен відображати дані про якість повітря,
такі, концентрація пилу та концентрація газів (наприклад, CO, NO2). В якості
джерела інформації виступатимуть інтернет сервіси моніторингу навколишнього
середовища, таких як Open-Meteo, OpenWeather.
Арк.
ТК206СК.024.413.248 ПЗ
4
Змн. Арк. № докум. Підпис Дата
1 ПАТЕНТНИЙ ПОШУК ТА ОГЛЯД НАЯВНИХ РІШЕНЬ
1.1 Важливість моніторигу якості повітря та вплив на здоров’я людини
Моніторинг якості повітря є дуже важливим з погляду здоров'я людини та
довкілля. Ключові аспекти його важливості та впливу на здоров'я[1-5]:
Здоров'я дихальної системи: Погіршення якості повітря може призвести до
розвитку або загострення захворювань дихальної системи, таких як астма, бронхіт,
хронічний обструктивний захворювання легень (ХОЗЛ), алергічні реакції тощо.
Кардіоваскулярне здоров'я: Забруднення повітря може також впливати на
серцево-судинну систему, збільшуючи ризик інфаркту, інсульту, аритмій та інших
серцево-судинних захворювань.
Вплив на дитинство та розвиток: Діти, особливо немовлята та діти з
алергіями або астмою, можуть бути особливо вразливими до погіршення якості
повітря, що може вплинути на їх розвиток та здоров'я.
Ризики для вагітних жінок: Погіршення якості повітря може також мати
негативний вплив на вагітність та розвиток плоду, збільшуючи ризик передчасних
пологів, низької ваги новонароджених та інших ускладнень.
Екологічний вплив: На погіршення якості повітря впливають різні фактори,
такі як викиди з промислових підприємств, автомобільний рух, сільське
господарство, а також пожежі та інші природні катастрофи. Це може мати
шкідливий вплив на екосистеми та різноманітні види.
Економічні втрати: Погіршення якості повітря також призводить до
економічних втрат через збільшення витрат на охорону здоров'я, втрати
продуктивності працівників та зменшення туристичного потоку.
З урахуванням цих факторів моніторинг якості повітря стає надзвичайно
важливим для забезпечення безпеки та здоров'я населення, а також для збереження
довкілля. Регулярний моніторинг дозволяє вчасно виявляти забруднення та
вживати заходів для його запобігання та мінімізації негативного впливу на здоров'я
та екосистеми.
Арк.
ТК206СК.024.413.248 ПЗ
5
Змн. Арк. № докум. Підпис Дата
1.2 Сучасні системи моніторингу якості повітря
Сучасні системи моніторингу якості повітря є високотехнологічними
рішеннями, що поєднують передові датчики, інтернет речей (IoT), великі дані та
штучний інтелект для забезпечення точного та безперервного контролю якості
повітря. Розглянемо ключові компоненти, технології та приклади таких систем[6-
9].
Ключовими компонентами та технологіями сучасних систем моніторингу є:
Датчики та сенсори
Технології передачі
Системи обробки та аналіз даних
Платформи для візуалізації та звітності
Серед датчиків та сенсорів для моніторингу можна виділити наступні:
Газові датчики ,які вимірюють концентрації газів, таких як CO, NOx, SO2,
O3, VOCs.
Датчики твердих частинок, які вимірюють концентрації PM2.5 та PM10.
Метеорологічні сенсори, які відстежують параметри, такі як температура,
вологість, швидкість та напрям вітру.
В якості технологій передачі даних від датчиків до систем моніторингу і
збору даних використовуються:
Бездротові мережі (Wi-Fi, GSM, LTE, LoRa, NB-IoT), які використовуються
для передачі даних у режимі реального часу на центральні сервери або хмарні
сховища.
Інтернет речей (IoT): забезпечує підключення великої кількості пристроїв
для створення мереж моніторингу.
Серед систем обробки та аналіз даних від систем сбору можна виділити:
Системи збору і аналізу великих даних (Big Data), які дозволяють обробляти
та аналізувати величезні обсяги даних, отриманих від сенсорів.
Арк.
ТК206СК.024.413.248 ПЗ
6
Змн. Арк. № докум. Підпис Дата
Штучний інтелект (ІІ) та машинне навчання, які використовуються для
аналізу даних, прогнозування та виявлення закономірностей.
Платформи для візуалізації та звітності результатів аналізу:
Хмарні послуги, які надають зберігання даних, інструменти для аналізу та
візуалізації.
Інтерфейси для користувачів такі як веб-портали та мобільні програми для
доступу до даних, звітів та оповіщень.
Серед сучасних систем моніторингу якості повітря можна виділити:
PurpleAir.
Ця ситстема використовує недорогі сенсори для вимірювання PM2.5 та
PM10. Сенсори підключаються до Wi-Fi та передають дані на хмарну платформу
для аналізу та візуалізації.
Clarity Node-S.
Це компактна система, що вимірює концентрації PM2.5, NO2 та O3.
В якості джерела живлення використовується сонячна енергія. передача
даних здійснюється через мережу IoT.
AirVisual Pro:
Це система домашнього моніторингу якості повітря, що вимірює PM2.5,
CO2, температуру та вологість. Є можливість отримувати доступ до даних через
мобільний додаток та веб-портал.
BreezoMeter:
Хмарна платформа, що збирає дані з різних датчиків та надає інформацію
про якість повітря у реальному часі. Вона використовує ШІ для прогнозування та
аналізу забруднення повітря.
AQMesh:
Модульна система моніторингу, яка дозволяє створювати мережі датчиків
для локального та регіонального моніторингу. Ця система здійснює вимірювання
широкого спектру забруднюючих речовин, включаючи NO2, O3, SO2, CO та PM.
Арк.
ТК206СК.024.413.248 ПЗ
7
Змн. Арк. № докум. Підпис Дата
Застосування сучасних систем моніторингу якості повітря:
Серед основних областей застосування систем моніторингу повітря можна
виділити[5]:
Моніторинг навколишнього середовища в міських та промислових зонах:
Моніторинг забруднення повітря у мегаполісах та промислових районах.
Оцінка впливу транспортних засобів та промислових викидів.
Моніторинг навколишнього середовища в зонах з високою щільністю
населення:
Захист здоров'я населення за рахунок контролю якості повітря у місцях із
високою щільністю населення.
Моніторинг в віддалених та важкодоступні районах:
Моніторинг якості повітря у сільських та віддалених районах.
Вивчення впливу природних факторів та антропогенної діяльності.
Моніторинг на заповідних природніх територіях:
Контроль за станом довкілля у заповідниках та національних парках.
Збереження екосистем та рідкісних видів.
Моніторинг на транспортних системах:
Основна ідея полягає в встановленні датчиків на транспортних засобах для
моніторингу повітря в різних зонах. Що забезпечує використання даних для
оптимізації маршрутів та зменшення викидів.
Досягнення визначають особливості сучасних систем моніторингу якості
повітря:
Висока точність та надійність:
Сучасні датчики забезпечують високу точність вимірювань та стійкість до
зовнішніх впливів.
3 Безперервний моніторинг:
Можливість цілодобового контролю за якістю повітря в реальному часі.
Доступність даних:
Легкий доступ до даних через інтернет, мобільні програми та веб-портали.
Арк.
ТК206СК.024.413.248 ПЗ
8
Змн. Арк. № докум. Підпис Дата
Аналіз та прогнозування:
Використання ШІ та машинного навчання для аналізу даних та
прогнозування змін якості повітря.
Гнучкість та масштабованість:
Можливість масштабування систем моніторингу як невеликих локальних
зон, і великих регіонів.
Сучасні системи моніторингу якості повітря надають комплексне рішення
для контролю та покращення екологічної обстановки, сприяючи захисту здоров'я
населення та навколишнього середовища.
Ці системи відіграють ключову роль у підтримці екологічної безпеки та
сталого розвитку, допомагаючи своєчасно виявляти та усувати екологічні
проблеми.
Огляд існуючих рішень аналізаторів якості повітря
ChemWatch — це високоякісний вимірювач чистоти повітря від Freudenberg.
Цей прилад вимірює та контролює ступінь забруднення - показник корозії - за
допомогою мідних і срібних датчиків. Це єдиний прилад для вимірювання корозії,
який чітко відображає всі виміряні значення одночасно на дуже великому
кольоровому дисплеї.
Фахівеці з промислової фільтрації повітря та газу, пропонують надійний
захист для всього вашого електронного обладнання. Нова система онлайн-
моніторингу ChemWatch у поєднанні з нашими інноваційними рішеннями для
фільтрації дуже надійно фіксує швидкість корозії в реальному часі в чутливому
середовищі. Виміряні значення зберігаються протягом 18 місяців. Крім того, лише
метод тестового купона забезпечує повні вимірювання. Інформація отримується
лише протягом 30 днів за допомогою цього методу тестового купона. Онлайн-
система моніторингу ChemWatch визначає клас корозії корозійних газів відповідно
до стандарту ANSI/ISA-71.04-2013. Система розраховує коефіцієнт корозії,
використовуючи як мідь, так і срібло, температуру, відносну вологість і
надлишковий тиск у приміщенні, щоб забезпечити цілеспрямований аналіз.
Арк.
ТК206СК.024.413.248 ПЗ
9
Змн. Арк. № докум. Підпис Дата
Система пропонує постійний моніторинг і генерує швидкі результати за
допомогою інноваційної сенсорної технології, заснованої на вимірюванні
електричного опору
Рисунок 1.1 – Вимірювач чистоти повітря від Freudenberg
Він простий в установці, стійкий до вібрації, відповідає стандартам CE і
точно відображає показники корозії. Важливо ефективно захистити ваші
електричні та електронні пристрої від корозії через шкідливі гази. Це запобігає
несправності, втраті ефективності ваших процесів і заміні дорогих друкованих
плат. Завдяки нашому досвіду ми можемо порадити вам, що найкраще.
Ranger - портативний монітор якості повітря
Рисунок. 1.2 – Ranger - портативний монітор якості повітря
Арк.
ТК206СК.024.413.248 ПЗ
10
Змн. Арк. № докум. Підпис Дата
Aeroqual Ranger™ — це портативний монітор для професійних користувачів,
який працює в режимі реального часу з активною дискретизацією та має
неймовірний час автономної роботи. Проста, гнучка та економічно ефективна
альтернатива традиційним моніторам Ranger може бути налаштована за
допомогою широкого діапазону змінних голівок датчиків твердих часток (PM) і
газів. Підключення Wi-Fi і кабельна передача даних включені.
Портативний монітор може вимірювати до 15 поширених небезпек і
забруднюючих речовин у приміщенні та на вулиці:
Тверді частинки: PM 1 , PM 2,5 , PM resp , PM 10 , TSP
Гази: CO, CO 2 , NO 2 , ЛОС, O 3 , SO 2 , H 2 , H 2 S, Cl 2 , формальдегід,
CH 4 , NMHC, аміак, C 2 Cl 4
1.3 Інтернет-сервіси відстежування погоди
Слід відзначити, що процес збору інформації про стан навколишнього
середовища є досить технологічним процесом, який потребує залучення великої
кількості обладнання, датчиків для моніторингу і програмних засобів для обробки
масиву даних.
Іншим видом є системи моніторингу повітря, робота яких базується на
використанні можливостей API інтеграції з інтернет сервісами погоди, для
отримання даних про стан повітря в необхідному регіоні [10]. Розробка таких
систем вимагає застосування схемотехнічних і програмних рішень і може бути
реалізовано на популярних платформа для розробки IoT-проектів.
Існує достатньо інтернет-сервісів, які спеціалізовані на відстежуванні стану
навколишнього середовища і можуть надавати доступ до актуальної інформації
про погодні умови, прогноз погоди, а також різні метеорологічні дані.
Ці сервіси використовують дані від метеостанцій, супутників, радарів та
інших джерел для формування точних і своєчасних прогнозів.
При побудові систем моніторингу, які в якості джерела даних икористовують
Інтернет-сервіси відстежування погоди є наявність відкритих АРІ.
Арк.
ТК206СК.024.413.248 ПЗ
11
Змн. Арк. № докум. Підпис Дата
Далі наведені кілька популярних сервісів відстежування погоди та їх основні
характеристики:
Weather.com (The Weather Channel)
До основних можливостей сервісу відносять: відображення актуальних
погодні умов в довільній точці світу, можливість відображення погодинного і
довгострокового прогнозу погоди, функція радару погоди, відображення новин та
попередженнь про екстремальні погодні умови.
Доступний мобільний додаток (iOS та Android )для відображення
AccuWeather
До основних можливостей сервісу відносять: Погодні умови в реальному
часі, точний прогноз погоди на 15 днів, погодні радіолокаційні карти, індекси
комфорту, Hyper-local MinuteCast, який надає прогноз погоди на наступні
хвилини.
Доступний мобільний додаток (iOS та Android )
Weather Underground
До основних можливостей сервісу відносять: Дані від місцевих
метеостанцій, погодні умови в реальному часі, прогноз на 10 днів, інтерактивні
погодні карти.
Доступний мобільний додаток для iOS та Android.
Особливості: Спільнота користувачів, які надають власні метеорологічні
дані.
Meteo.ua
До основних можливостей сервісу відносять: відомості про погодні умови
для України та світу, прогноз на 7 днів, погодні карти, радар опадів.
Доступний мобільний додаток: Доступний для iOS та Android.
Особливості: Детальний прогноз погоди для окремих населених пунктів
України.
Yr.no
Арк.
ТК206СК.024.413.248 ПЗ
12
Змн. Арк. № докум. Підпис Дата
До основних можливостей сервісу відносять: відображення погодніх умов в
реальному часі, прогноз на 10 днів, інтерактивні погодні карти, погодні графіки.
Доступний мобільний додаток: для iOS та Android.
Особливості: Надійні дані від Норвезького метеорологічного інституту.
Windy
До основних можливостей сервісу відносять: Інтерактивні погодні карти,
дані про вітер, опади, температуру, атмосферний тиск та інші параметри.
Доступний мобільний додаток: Доступний для iOS та Android.
Особливості: Візуалізація різних метеорологічних даних, детальні прогнози
для авіації та водних видів спорту.
Слід відмітити додаткові можливості сучасних погодних сервісів:
Оповіщення про екстремальні погодні умови:
Багато сервісів пропонують оповіщення про небезпечні погодні умови, такі
як урагани, шторми, повені та інші екстремальні явища.
Персоналізовані прогнози:
Можливість налаштування персональних оповіщень та прогнозів для
конкретних локацій.
Інтерактивні карти та радар погоди:
Візуалізація метеорологічних даних у реальному часі, включаючи рух хмар,
опади та інші погодні явища.
Спільноти користувачів:
Деякі сервіси дозволяють користувачам ділитися своїми метеорологічними
даними та фотографіями погоди.
1.4 Інтеграція погодних сервісів з користувацькими платформами
Інтернет-сервіси відстежування погоди корисні для різних груп
користувачів, включаючи мандрівників, фермерів, спортсменів, а також звичайних
людей, які бажають знати прогноз погоди на кожен день. Вони допомагають
планувати діяльність, приймати обґрунтовані рішення та залишатися в безпеці під
час екстремальних погодних умов.
Арк.
ТК206СК.024.413.248 ПЗ
13
Змн. Арк. № докум. Підпис Дата
Розглянемо можливості інтеграції вище наведених сервісів з
користувацькими платформами
API (Application Programming Interface) інтернет-сервісів погоди дозволяють
розробникам інтегрувати погодні дані в свої додатки, веб-сайти та інші програмні
рішення. Вони надають доступ до актуальної інформації про погодні умови,
прогнозів погоди, даних про опади, вітер, температуру та інші метеорологічні
параметри. Нижче наведено огляд популярних API для відстежування погоди:
Розглянемо можливості найбільш популярних API інтернет-сервісів погоди:
OpenWeatherMap API
Основні можливості: Актуальні погодні умови, прогноз на 5 днів,
погодинний прогноз, історичні дані, інформація про опади, вітер та інші
параметри.
Документація: OpenWeatherMap API Documentation
Ціна: Безкоштовний план з обмеженнями, платні плани з розширеними
можливостями.
Особливості: Широкий набір погодних даних, доступність API для кількох
мов програмування.
Weatherstack API
Основні можливості: Актуальні погодні умови, погодинний та
довгостроковий прогноз, історичні дані, погодні оповіщення.
Документація: Weatherstack API Documentation
Ціна: Безкоштовний план з обмеженнями, платні плани з розширеними
можливостями.
Особливості: Простий у використанні API, швидка інтеграція.
Weatherbit API (рис. 1.3).
Основні можливості: Актуальні погодні умови, прогноз на 16 днів,
погодинний прогноз, історичні дані, дані про алергени.
Документація: Weatherbit API Documentation
Арк.
ТК206СК.024.413.248 ПЗ
14
Змн. Арк. № докум. Підпис Дата
Ціна: Безкоштовний план з обмеженнями, платні плани з розширеними
можливостями.
Особливості: Підтримка великої кількості метеорологічних параметрів,
висока точність даних.
Рисунок 1.3 – Web-сторінка налаштування АРІ інтеграції на ресурсі
Weatherbit
AccuWeather API
Основні можливості: Актуальні погодні умови, прогноз на 15 днів,
погодинний прогноз, погодні оповіщення.
Документація: AccuWeather API Documentation
Ціна: Безкоштовний план з обмеженнями, платні плани з розширеними
можливостями.
Особливості: Надійний прогноз погоди, розширені можливості для бізнесу.
WeatherAPI (раніше Weatherstack):
Основні можливості: Актуальні погодні умови, прогноз на 14 днів, історичні
дані, погодні оповіщення.
Документація: WeatherAPI Documentation
Ціна: Безкоштовний план з обмеженнями, платні плани з розширеними
можливостями.
Особливості: Простий у використанні API, широкий набір даних.
Climacell (Tomorrow.io) API
Арк.
ТК206СК.024.413.248 ПЗ
15
Змн. Арк. № докум. Підпис Дата
Основні можливості: Актуальні погодні умови, прогноз на 15 днів,
погодинний прогноз, дані про опади, вітер та інші параметри.
Ціна: Безкоштовний план з обмеженнями, платні плани з розширеними
можливостями.
Особливості: Висока точність прогнозів, підтримка розширених
метеорологічних параметрів.
Для використання API для відстежування погоди необхідна реєстрація та
отримання ключа API:
Більшість сервісів вимагають реєстрації для отримання унікального ключа
API, який використовується для аутентифікації запитів.
Для інтеграція API в додатки користувачів необхідне:
Використання бібліотек і SDK для інтеграції API у ваші програми. Більшість
сервісів надають приклади коду для різних мов програмування (Python,
JavaScript, Java, PHP тощо).
Формування запитів і обробка відповідей: Запити до API зазвичай
формуються у форматі URL, з параметрами для вказівки локації, типу даних
та інших налаштувань.
Обробка відповідей, які зазвичай повертаються у форматі JSON або XML,
для отримання необхідних даних.
Візуалізація даних: Виведення отриманих даних у користувацьких
інтерфейсах, включаючи інтерактивні карти, графіки та текстову
інформацію.
API інтернет-сервісів погоди забезпечують розробників усіма необхідними
інструментами для створення додатків, які надають точну та актуальну інформацію
про погодні умови, допомагаючи користувачам залишатися в курсі змін погоди і
планувати свою діяльність відповідно до погодних умов. В наступному розділі
проводиться огляд популярних платформ для розробки IoT-проектів і
обгрунтування вибору платформи NodeMCU для проведення розробки системи
моніторингу стану повітря.
Арк.
ТК206СК.024.413.248 ПЗ
16
Змн. Арк. № докум. Підпис Дата
2 РОЗДІЛ ПЛАТФОРМА РОЗРОБКИ NodeMCU
2.1 Порівняння NodeMCU з іншими платформами IoT
NodeMCU - це одна з популярних платформ для розробки IoT-проектів, але
є інші платформи, які також активно використовуються(Arduino, Raspberry Pi,
Particle Photon) [11-16]. Нижче наведені особливості кожної з платформ і
порівняння їх з NodeMCU:
1. Arduino - це інша популярна платформа для IoT-розробки[16]. В
порівнянні з NodeMCU, Arduino може бути більш гнучким, оскільки ви можете
вибирати мікроконтролери, такі як Arduino Uno, Arduino Mega тощо, що дає вам
більше варіантів з урахуванням вашого проекту.
2. Raspberry Pi - це потужна одноплатна система, яка може виконувати ОС,
такі як Linux, що робить її більш придатною для складних IoT-проектів, які
потребують обробки даних або взаємодії з веб-службами. У порівнянні з
NodeMCU, Raspberry Pi може бути більш потужним, але також більш вимогливим
до енергозабезпечення[17].
3. NodeMCU базується на мікроконтролерах ESP8266 або ESP32, які також
можна використовувати без NodeMCU власне[12]. У порівнянні з NodeMCU,
використання простого ESP8266 або ESP32 може бути менш витратним і
компактним, але ви повинні будувати свою власну інфраструктуру для розробки.
4. Particle Photon - це інша платформа IoT, яка пропонує хмарні послуги для
розробки та керування IoT-проектами. В порівнянні з NodeMCU, Particle Photon
може бути більш простою у використанні, оскільки вона включає інтегровані
хмарні сервіси для керування вашими пристроями.
Вибір між цими платформами залежить від проекту, його потреб та
обмежень.
Порівняльна таблиця основних параметрів і вартості модулів платформ IoT
наведена в таблиці 2.1
Arduino UNO та NodeMCU
Арк.
ТК206СК.024.413.248 ПЗ
17
Змн. Арк. № докум. Підпис Дата
Arduino UNO та NodeMCU - налагоджувальні плати для розробки різних
пристроїв. За допомогою них ми можемо збирати дані з різних датчиків, керувати
сервоприводами, модулями реле, світлодіодами, дисплеями, робити запити до
інтернет срвісів і обробляти ці запити і багато чим ще.
Таблиця 2.1 Основні параметри і вартість модулів платформ IoT
В таблиці 2.2 наведена порівняльна характеристика технічних особливостей
платформ Arduino UNO та NodeMCU
Таблиця 2.2 Основні параметри модулів Arduino UNO та NodeMCU
Arduino UNO NodeMCU v3
Параметр Значення Додатково Параметр Значення Додатково
Розрядні Разрядніс
сть 8 бит ть 32 бит
Flash Flash
32 Кб до 4 Мб
Пам’ять Пам’ять
SRAM 2 Кб SRAM 64 Кб
EPROM 1 Кб EPROM 512 байт
тактова 0-16 тактова 80-160
частота МГц частота МГи
АЦП 1 пін (AIX'O). ШІМ 9 пінів
(GPIOO.2.4.5 (dl-d4>.
GPIO14.12.13.15 (d5-d8)).
АЦП 6 пінів (14-19). SDIOO підключення sd-карти.
ШІМ 6 пінів SDD3/GPIO10.SDD2'GPI09.SDD
(3.5.6.9.10.11). I2C 1/ SI.
Кількість (SDA(I8).SCL0(19)). Кількість SDC.MD SC.SDDO MISO
20 18
виводів SPI виводів SD.SDCL KSK).
(MOSLil.MISO/12,SCK SPI(HSCLK/OPIOI4 D5.I1MISO
/13). Sеrial(TXl/l. GP IO12 D6.HMODSI
RX1/0) GPIO1307.1 ICS' С.РЮ15 08).
UART 2 111т. (RX.TX. RX2-
D7.TX2/D8). SPI (D5-D8.
SI. SC.SD.SK I)
2 по 8-
4 таймера
Таймери біт. 1 16- Таймери
по 64 біт
біт
Арк.
ТК206СК.024.413.248 ПЗ
18
Змн. Арк. № докум. Підпис Дата
Як видно з таблиці платформа NodeMCU має ряд переваг а сами більший
обєм памяті, вища тактова частота, вбудований WI-FI модуль.
З міркувань покращених технічних характристик в роботі пропонується
використати саме платформу NodeMCU для робробки системи моніторингу.
2.2 Особливості роботи з платформою NodeMCU
Розглянемо основні аспекти роботи з NodeMCU, його можливості та
приклади використання.
NodeMCU – це популярна платформа для розробки мікроконтролерних
проектів, заснована на чіпі ESP8266/ESP32. Вона підтримує програмування на
мовах Lua та C++ і часто використовується для проектів Інтернету речей (IoT) і
домашньої автоматизації [11, 12].
Основні компоненти NodeMCU:
ESP32 і ESP8266 - поширені мікроконтролери на яких побудована
платформа NodeMCU (рис. 2.1).
а) б)
Рисунок 2.1 – Модулі ESP8266 (а) і ESP32 (б)
Обидва чіпи мають 32-розрядний процесор. ESP32 — це двоядерний
процесор із тактовою частотою від 160 МГц до 240 МГц, тоді як ESP8266 —
одноядерний процесор, який працює на частоті 80 МГц.
Ці модулі постачаються з GPIO, які підтримують різні протоколи, такі як SPI,
I2C, UART, ADC, DAC і PWM. Перевагою модулів ESP32 і ESP8266 є те, що ці
Арк.
ТК206СК.024.413.248 ПЗ
19
Змн. Арк. № докум. Підпис Дата
плати оснащені бездротовою мережею, що відрізняє їх від інших мікроконтролерів,
таких як Arduino . Це дозвооляє керувати роботою пристроїв віддалено через Wi-
Fi або Bluetooth (у випадку ESP32) за дуже низьку ціну.
Крім того є можливість використовувати ESP32/ESP8266 для керування
входами та виходами, як це реалізовано в Arduino. Слід враховувати, що в той час
як Arduino працює з логікою 5 В, ESP32 і ESP8266 працюють з 3,3 В.
Технічні характеристики: ESP32 і ESP8266
ESP32 є наступником ESP8266. ESP32 має додаткове ядро ЦП, швидший Wi-
Fi, більше GPIO і підтримує Bluetooth 4.2 і Bluetooth low energy. Крім того, ESP32
оснащено сенсорними контактами, які можна використовувати для виведення
ESP32 із глибокого сну , вбудованим датчиком ефекту Холла та вбудованим
датчиком температури (останні версії ESP32 не постачаються з вбудований датчик
температури більше).
В таблиці 2.3 показані основні відмінності між мікросхемами ESP8266 і
ESP32.
Плата з мікроконтролером ESP8266, на якій розміщені необхідні компоненти
для розробки, такі як USB-UART перетворювач, стабілізатор напруги, кнопки для
скидання та завантаження.
Порти вводу/виводу (GPIO):
Плата має кілька цифрових та аналогових портів для підключення датчиків,
реле, світлодіодів та інших периферійних пристроїв (рис. 2.2).
Інтерфейси:
GPIO (General Purpose Input/Output): 17 багатофункціональних GPIO-пінів
UART (Universal Asynchronous Receiver Transmitter): 2 порти UART
SPI (Serial Peripheral Interface): 1 порт SPI
I2C (Inter-Integrated Circuit): 1 порт I2C
ADC (Analog-to-Digital Converter): 12-бітний АЦП
Арк.
ТК206СК.024.413.248 ПЗ
20
Змн. Арк. № докум. Підпис Дата
Таблиця 2.3– Основні параметри мікросхем ESP8266 і ESP32
Рисунок 2.2 – Порти і інтерфейси плати з мікроконтролером ESP8266
Арк.
ТК206СК.024.413.248 ПЗ
21
Змн. Арк. № докум. Підпис Дата
Периферійні пристрої:
PWM (Pulse Width Modulation): 3 канали ШІМ
RTC (Real-Time Clock): Вбудований годинник реального часу
WDT (Watchdog Timer): Сторожовий таймер
URT (Universal Random Number Generator): Генератор випадкових чисел
Технічні характеристики модуля ESP8266 наведені в таблиці 2.4
Таблиця 2.4– Технічні характеристики модуля ESP8266
Мікроконтролер ESP8266
Напруга живлення, В 4,5 ... 9
Робоча частота, МГц 80
Об'єм Flash пам'яті, Мб 4
USB-UART конвертер CH340
Кількість цифрових входів/виходів 11
Кількість аналогових входів 1
Обсяг пам'яті для коду, Кб 64
Максимальний споживаний струм, мА 220
Розміри модуля, мм 58 х 31
Вага, г 18
Протоколи, які підтримує NodeMCU
NodeMCU підтримує широкий спектр мережевих протоколів, що робить її
універсальною платформою для різних проектів, пов'язаних з мережею.
Найпоширеніші протоколи, які використовуються NodeMCU [20]:
Wi-Fi: NodeMCU має вбудований модуль Wi-Fi, який дозволяє їй
підключатися до бездротових мереж. Це робить її ідеальною для проектів, які
потребують підключення до Інтернету або локальної мережі.
TCP/IP: TCP/IP - це основний мережевий протокол, який використовується
в Інтернеті. NodeMCU підтримує TCP/IP, що дозволяє їй спілкуватися з іншими
пристроями в мережі.
HTTP: HTTP - це протокол, який використовується для передачі даних між
веб-серверами та веб-браузерами. NodeMCU може бути використана як веб-сервер
або веб-клієнт, що робить її ідеальною для розробки веб-додатків.
Арк.
ТК206СК.024.413.248 ПЗ
22
Змн. Арк. № докум. Підпис Дата
MQTT: MQTT - це протокол обміну повідомленнями, який
використовується в Інтернеті речей (IoT). NodeMCU може бути використана як
MQTT-клієнт або MQTT-брокер, що робить її ідеальною для збору даних з датчиків
та надсилання їх на сервер.
DNS: DNS - це система доменних імен, яка використовується для
перетворення доменних імен на IP-адреси. NodeMCU підтримує DNS, що дозволяє
їй знаходити веб-сайти та інші мережеві ресурси.
Окрім цих протоколів, NodeMCU також підтримує ряд інших протоколів,
таких як UDP, ICMP, SSL/TLS та SNTP.
Вибір правильного мережевого протоколу для проекту залежить від
поставлених задач. Якщо потрібно підключити пристрій до Інтернету, ви можете
використовувати Wi-Fi та HTTP. Якщо потрібно збирати дані з датчиків, ви можна
використовувати MQTT. Якщо потрібно обмінюватися даними з іншими
пристроями в локальній мережі можна використовувати TCP/IP.
Інструменти для розробки NodeMCU:
В якості програмного забезпечення NodeMCU використовує два основних
типи прошивок [20]:
1. Прошивка ESP8266 Core: Це прошивка низького рівня, яка забезпечує
базові функції мікроконтролера ESP8266, такі як управління пам'яттю, підтримка
Wi-Fi та робота з периферійними пристроями.
2. Прошивка Arduino Core - надає бібліотеки та API для програмування
ESP8266 за допомогою мови Arduino.
В якості середовища для програмування в NodeMCU використовують:
Arduino IDE: Це інтегроване середовище розробки (IDE), яке
використовується для написання, компіляції та завантаження програм Arduino на
NodeMCU.
Espressif IDF: Це фреймворк розробки програмного забезпечення, який
можна використовувати для створення власних програм для ESP8266.
Арк.
ТК206СК.024.413.248 ПЗ
23
Змн. Арк. № докум. Підпис Дата
Прошивка NodeMCU зазвичай поставляється попередньо завантаженою на
плату. Можна оновити прошивку, якщо потрібні нові функції або виправлення
помилок.
Arduino Core - це популярний вибір для програмування NodeMCU, завдяки
його простоті використання та широкому спектру бібліотек. Ви можете
використовувати Arduino IDE для написання програм Arduino, які потім
компілюються та завантажуються на NodeMCU.
Espressif IDF - це більш потужний фреймворк, який дає вам більше контролю
над програмним забезпеченням. Ви можете використовувати IDF для створення
власних програм для ESP8266, які можуть бути більш ефективними та
оптимізованими для ваших потреб.
Вибір правильного програмного забезпечення для NodeMCU залежить від
ваших потреб та досвіду. Якщо ви новачок у програмуванні, Arduino Core - це
хороший вибір для початку. Якщо вам потрібні більше можливостей та контролю,
ви можете використовувати Espressif IDF.
2.3 Обгрунування вибору структурних складових системи моніторингу
повітря.
Вибір структурних складових для будь-якого проекту базується на ряді
факторів, таких як функціональні вимоги проекту, вартість, доступність
компонентів, технічні характеристики, легкість використання та розвитку.
Для розробки платформи моніторингу стану повітря знадобиться
компонентна база NodeMCU:
Модуль NodeMCU
Блок живлення
Рідкокристалічний екран
Схема проектованого пристрою матиме вигляд наведений на рисунку 2.3.
Арк.
ТК206СК.024.413.248 ПЗ
24
Змн. Арк. № докум. Підпис Дата
Рисунок 2.3 – Структура мережевого пристрою моніторингу якості повітря на
платформі Node MCU
Блок живлення забезпечує складові пристрою необхідними рівнями напруги
та струму.
Node MCU забезпечує реалізацію бездротового WiFi з’єднання з мережею
інтернет, формує HTTP/API запит на спеціалізований веб сервіс контролю погоди,
обробляє отриману відповідь та керує виведенням інформації на дисплей.
Розглянемо обгрунтування вибору кожного зі складових для проекту
моніторингу стану повітря.
Платформа розробки NodeMCU:
NodeMCU - це платформа на основі мікроконтролера ESP8266, яка має
вбудований Wi-Fi. Вона дуже популярна серед розробників IoT-пристроїв через
свою доступність, невеликі розміри, потужність та можливості підключення до
Інтернету. NodeMCU відмінно підходить для проектів з IoT, де потрібна
можливість збирання даних та їх передача через Wi-Fi. Детальний опис і
обгрунтува.
Порівнюючи можливості платформи NodeMCU для розробки системи
моніторингу повітря з наведеними рішеннями можна виділити наступні переваги:
1. Простота використання:
Арк.
ТК206СК.024.413.248 ПЗ
25
Змн. Арк. № докум. Підпис Дата
NodeMCU проста у використанні, завдяки чому вона доступна для широкого
кола користувачів, як для досвідчених розробників, так і для початківців. Її можна
програмувати за допомогою мови Arduino, яка є простою та зрозумілою.
2. Низька вартість:
NodeMCU є дуже доступною платформою, що робить її ідеальною для
проектів з обмеженим бюджетом. Її можна купити за ціною близько 5 доларів
США.
3. Широкий спектр можливостей:
NodeMCU має широкий спектр функцій, що робить її універсальною
платформою для різних проектів. Її можна використовувати для підключення до
датчиків та актуаторів, керування Wi-Fi, створення мережевих пристроїв IoT,
розробки носимих пристроїв тощо.
4. Зростаюча спільнота:
NodeMCU має велику та активну спільноту користувачів, які завжди готові
допомогти та поділитися своїми знаннями. Це робить розробку проектів на цій
платформі ще більш простою та приємною.
5. Інновації:
NodeMCU постійно розвивається та вдосконалюється. Розробники постійно
випускають нові модулі та бібліотеки, що розширюють можливості цієї
платформи.
Враховуючи наведенні обгрунтування вибору платформи NodeMCU для
розробок користувацьких проектів в наступному розділі запропонована схемна і
програмна реалізація мобільної, портативної системи моніторингу стану повітря на
платформі NodeMCU. Пропонується прлдшовести АРІ інтеграцію пристрою з
інтернет-сервісами моніторингу погоди, які розглянуті в розділі 1. Отримані
результати будуть відображатися на дисплеї розроблювального пристрою.
API запити (REST API):
REST (Representational State Transfer) API є широко використовуваним
протоколом для взаємодії між різними системами. Використання REST API
Арк.
ТК206СК.024.413.248 ПЗ
26
Змн. Арк. № докум. Підпис Дата
дозволить пристрою обмінюватися даними з іншими пристроями або зовнішніми
сервісами через Інтернет. Прпонується використовувати REST API для запиту і
отримання даних з інтернет сервісів погоди.
Блок живлення:
Блок живлення необхідний для постачання електроенергії до пристрою.
Вибір блоку живлення залежить від вимог щодо напруги та потужності.
Згідно технічних характеристик модуль потребкє живлення: 4.5 - 9В (10В
максимум), живлення від USB з наданням отладочного інтерфейсу
Також значною перевагою проеткованого пристрою э можливість
використання будь якого сучасного блоку живлення вихідна напруга якого
дорівнює 5 В та має вихідний інтерфес підключення Micro USB
Рідкокристалічний диисплей:
Рідкокристалічний екран (LCD) дозволить вам виводити інформацію
користувачеві або відображати статус вашого пристрою. Він може
використовуватися для відображення даних з датчиків, текстової інформації або
графічних інтерфейсів. Вибір конкретного типу LCD залежить від вашого
бюджету, потреб у роздільній здатності та інших вимог проекту.
Мікроконтролер ESP8266 може запропонувати два поширених інтерфейси
для підключеня дисплею:
Програмну реалізацію послідовної шини I2C;
Апаратну реалізацію послідовного інтерфейсу SPI.
Примітка: дисплей з паралельним інтерфейсом підключення не
розглядаємо, адже він потребує, у більшості випадків, додаткового розширювача
портів вводу-виводу, хоча підтримку подібних дисплеїв в NodeMCU, теж
реалізовано у вигляді Lua-модуля LyquidCrystal (LiquidCrystal Module).
Поміж згаданих двох основних варіантів потрібно обирати – апаратний SPI
чи програмний I2C. Кожен варіант має свої переваги та недоліки.
Арк.
ТК206СК.024.413.248 ПЗ
27
Змн. Арк. № докум. Підпис Дата
Послідовна шина I2C в прошивці NodeMCU за замовчуванням може
працювати лише в режимі Standard(Slow, 100kHz), а якщо ви самостійно складаєте
і компілюєте прошивку, також є можливість працювати з швидкостями
Fast(400kHz) та FastPlus(1MHz) з оновленим драйвером I2C. Надшвидкий режим
HIGH-speed mode (3.5MHz clock) – не підтримується.
Послідовний інтерфейс SPI тактується частотою процесора через поділювач
частоти у налаштуваннях ініціалізації. За замовчуванням швидкість процесора
ESP8266 80 МГц, а поділювач на SPI дорівнює 8. Таким чином частота швидкодії
інтерфейсу SPI знаходиться на рівні 10 МГц за замовчуванням. І це значно краща
швидкість (порівняно з I2C) для роботи з дисплеями високої розподільної здатності
і глибини кольору на піксель.
Графічна бібліотека UCG, що є в прошивці у вигляді C-модуля, дозволяє
задавати глибину кольора восьми бітами на кожен канал R, G, B. А тому маємо
можливу глибину кольорів 8 * 3 = 24 біт (2^24 = 16 777 216 варіантів), хоча це
також залежить від конкретного дисплея і вбудованого спеціалізованого
контролера. Наприклад, контролер SSD1351, як і більшість LCD-контролерів,
дозволяє передавати до 18 біт для кодування кольору на піксель (2^18 = 262 144
варіантів).
Таким чином, якщо ми маємо картинку 128 х 128 пікселів з глибиною
кольору 24 біт, тобто розмір картинки 393 216 біт, або 49.15 КБайт, то ми повинні
мати спроможність її обробляти і передавати на дисплей через обраний інтерфейс
з потрібною частотою оновлення кадрів, яку, в свою чергу, має бути здатен
підтримувати вбудований у дисплей контролер. В SSD1351 частота чіпа приблизно
дорівнює 2.8 МГц, що за замовчуванням забезпечує дисплею з картинкою
128х128х18, частоту у 74.4 Гц оновлення кадрів.
Примітка: Для порівняння, частота оновлення кадрів у іншого OLED
контролера – SSD1327, монохромного 1.5” 128 х 128 з 16-біт відтінками сірого,
знаходиться на рівні 113.4 Гц, при тому, що його чіп працює на частоті лише 595
КГц. Відсутність необхідності встановлювати 384 драйвери (128 * 3) для кожного
Арк.
ТК206СК.024.413.248 ПЗ
28
Змн. Арк. № докум. Підпис Дата
з кольорів, як у SSD1351, дає SSD1327 відчутне підвищення продуктивності всієї
обчислювальної системи модуля дисплея.
Якщо потрібно оновлювати повним кадром, то нам потрібно забезпечити
швидкість на інтерфейсі SPI на рівні 44,9 Мбіт / с, що теоретично цілком можливо,
враховуючи частоту тактування SPI у 10 МГц і відповідну можливу граничну
швидкість у 10 Мбіт/с, що може забезпечити оновлення 25 кадрів на секунду. Frame
rate у 25 кадрів на секунду цілком достатньо, щоб спробувати виводити відео на
такий дисплей, але звісно, Lua для цієї задачі буде слабкою ланкою.
На інтерфейсі I2C оновлювати повним кадром не можливо, тому що цей
інтерфейс складний і вибагливий по обчислювальним ресурсам.
Вбудовані контролери дисплеїв
Більшість дисплеїв має вбудований спеціалізований мікроконтролер.
Вбудований у дисплей контролер відповідає не лише за побудову зображення, а і
за перелік наявних інтерфейсів комунікації, що підтримується.
Підтримувані інтерфейси:
паралельний інтерфейс;
послідовний інтерфейс:
I2C;
3-провідний SPI;
4-провідний SPI.
Інші.
Також на ринку є універсальні дисплеї без явно детермінованого виробником
вбудованого контролера. Зазвичай такі дисплеї підтримують достуступний
широкому загалу інтерфейс, наприклад SPI. Але такі дисплеї потрібно
програмувати на низькому рівні, що вимагає від головного контролера потужних
обчислювальних ресурсів – оперативної пам’яті насамперед, а від розробника –
кодування команд контролера на низькому рівні.
З точки зору підключення до головного контролера, потрібно обирати
дисплей з таким вбудованим контролером, який без складнощів і зручно
Арк.
ТК206СК.024.413.248 ПЗ
29
Змн. Арк. № докум. Підпис Дата
підключається і підтримується як на апаратному рівні, так і на рівні програмних
графічних драйверів та мови програмування.
Графічні бібліотеки адаптовані і інтегровані у NodeMCU
Для прошивки NodeMCU і контролера ESP8266 розроблено дві основні
графічні бібліотеки U8G2 та UCG, які в свою чергу підтримують перелік
конкретних вбудованих дисплейних чіпів, а також підтримують інтерфейс SPI
та/чи шину I2C.
Програмна платформа NodeMCU підтримує дві поширені бібліотеки тому,
що у них є відмінності у призначенні:
U8G2 – бібліотека для монохроматичних дисплеїв;
UCG – бібліотека для TFT/LCD кольорових дисплеїв.
Кожна з цих бібліотек, в межах впровадження під NodeMCU, має свої
особливості, не дивлячись на їх зовнішню схожість.
Наприклад, бібліотека U8G2 підтримує як дисплеї з інтерфейсом I2C, так і з
інтерфейсом SPI. В той же час, бібліотека UCG, підтримує лише дисплеї з
інтерфейсом SPI. Так пішлося не через рішення розробників бібліотеки, а тому що
кольорових дисплеїв з повільною шиною I2C просто не виробляють.
У той же час, бібліотека U8G2 вміє керувати яскравістю OLED дисплеїв
через окремий метод, який доступний розробнику з рівня Lua, як і всі інші методи
бібліотеки.
Споживання дисплея залежить від заповненості площини дисплея
інформацією і встановленої яскравості. Кольорові дисплеї споживають значно
більше монохроматичних. Електроніка (вбудований спеціалізований контролер)
дисплеїв різних технологій з екраном без інформації, споживає приблизно
однаково.
Розміри дисплеїв
Для мініатюрних пристроїв, найпоширенішим варіантом вважається OLED
монохромний дисплей з діагоналлю 0.96 дюйма з вбудованим чіпом SSD1306.
Арк.
ТК206СК.024.413.248 ПЗ
30
Змн. Арк. № докум. Підпис Дата
Але як це зазвичай це буває, дизайн корпусу пристрою може потребувати
значно більших розмірів дисплея. В такому випадку на вибір розробника може бути
такий ряд розмірів: 1.3”, 1.4”, 1.5”, 1.8”, 2”, 3.2” і так далі.
Дисплей для NodeMCU – вибір найкращого варіанта – це завжди компроміс:
розмірів,
споживання,
роздільної здатності,
яскравості,
кількості графіки та тексту на один кадр,
підтримки україномовних шрифтів.
Дисплеї, що підтримуються прошивкою NodeMCU / Lua для ESP8266 і доступні в
Україні в таблиці 2.5.
Таблиця 2.5 –Дисплеї, що підтримуються прошивкою NodeMCU / Lua для
ESP8266
Діагональ/
Чіп Кольорів Тачскрін Технологія Бібліотека Інтерфейс
пікселів
ili9486 3.5” 480х320 65K colors XPT2046 TFT UCG SPI
ili9486 4” 480х320 65K colors XPT2046 TFT UCG SPI
ST7735S 0.96” 160×80 65K colors XPT2046 IPS UCG SPI
SH1107 1.3” 64×128 Mono – OLED U8G2 SPI/I2C
Grayscale
SSD1327 1.5” 128×128 – OLED U8G2 SPI/I2C
16
SSD1306 0.96” 128×64 Mono – OLED U8G2 SPI/I2C
SH1106 0.96” 128×64 Mono – OLED U8G2 SPI/I2C
SH1107 1.3” 64×128 Mono – OLED U8G2 SPI/I2C
SSD1351 1.5” 128×128 65K colors – OLED UCG SPI
HD44780 16×2 символи Mono - LCD LiquidCrystal_I2C I2C
Для мініатюрних пристроїв можна використовувати дисплеї 128×64, 0.96inch
mono-color OLED display module (Таблиця 2.6)
Арк.
ТК206СК.024.413.248 ПЗ
31
Змн. Арк. № докум. Підпис Дата
Таблиця 2.6 – Дисплеї 128×64, 0.96inch mono-color OLED display module
CONTROLLER SSD1306
TYPE OLED
INTERFACE I2C / SPI or I2C only
TOUCH SCREEN TYPE –
TOUCH SCREEN CONTROLLER –
COLORS 1 mono
RESOLUTION 128 × 64 (Pixel)
I/O VOLTAGE 3.3V / 5V
DISPLAY SIZE (MM) 21.74×10.86
OUTLINE DIMENSION (MM) 27.3.5×27.3
Бібліотека NodeMCU U8G2 – з українською мовою, монохромний
.
Обидва варіанти підтримують програмне керування яскравістю засобами
бібліотеки, програмне обертання кадру екрана, програмний ресет буфера кадру.
Підтримуються дисплеї які працюють по шині SPI або IIC. В документації до
NodeMCU можна перевірити чи підтримується саме ваша модель дисплею[22].
Дисплей 1602 з інтерфейсом I2C є зручним рішенням для виведення
текстової інформації в багатьох проектах завдяки своїй простоті використання та
мінімальному набору з'єднань. Він не підтримує кольорове відображення чи
сенсорне управління, але є надійним та економічним вибором для базових потреб
відображення.
Основні технічні характеристики:
кількість символів: 16 символів на 2 рядки (16x2);
матриця символів: 5x8 точок на символ;
розміри дисплея: прибл. 80 мм x 36 мм x 12 мм;
тип підсвічування: світлодіодне (LED), колір може варіюватися (зазвичай
жовто-зелене, синє або біле);
робоча напруга: 3,3 В (для логіки);
робочий струм: залежить від конфігурації підсвічування, зазвичай близько 1-
2 мА без підсвічування і до 20 мА з підсвічуванням;
Арк.
ТК206СК.024.413.248 ПЗ
32
Змн. Арк. № докум. Підпис Дата
контролер дисплея: HD44780 або сумісний чіп;
I2C інтерфейс: зазвичай використовує PCF8574 або аналогічний чіп для
реалізації I2C;
підключення: 4-контактний роз'єм (VCC, GND, SDA, SCL);
підтримує роботу з різними мікроконтролерами, такими як Arduino,
Raspberry Pi та інші.
Схема підключення дисплея показана на рисунку 2.4
Рисунок. 2.4 – Схема підключення дисплею до модуля NodeMCU
Обиремо дисплей 1602 з інтерфейсом I2C є популярним рідкокристалічним
дисплеєм (LCD) з роздільною здатністю 16 символів на 2 рядки. Він широко
використовується в різноманітних проектах, завдяки своїй простоті використання
та низькій вартості.Цей дисплей зазвичай використовується для відображення
текстової інформації в різних електронних проектах. Завдяки використанню
інтерфейсу I2C, він дозволяє зменшити кількість необхідних проводів для
підключення до мікроконтролера, що спрощує конструкцію і економить місце на
друкованій платі.
Арк.
ТК206СК.024.413.248 ПЗ
33
Змн. Арк. № докум. Підпис Дата
3. РЕАЛІЗАЦІЯ ПРОГРАМНО-ТЕХНІЧНОГО РІШЕННЯ
ПРОЕКТОВАНОГО ПРИСТРОЮ
3.1 Налаштування базової взаємодії між середовищем розробки Arduino
IDE та платформи Node MCU.
Пред тим як безпосередньо писати програму для обраної платформи
розробки необхідно провести налаштування середовища розробки.
Таке налаштування є ключовим етапом, що забезпечує ефективну роботу з
апаратними та програмними компонентами проекту. Даний етап включає
встановлення необхідного програмного забезпечення, драйверів та бібліотек для
розробки, налагодження та тестування програмного забезпечення для мережевого
пристрою на платформі NodeMCU. Можна виділити обовязкові етапи поереднього
налаштування:
1) інсталяція середовища розробки Arduino IDE
Arduino IDE (Integrated Development Environment) є популярним
середовищем для розробки програм для мікроконтролерів, включаючи платформи
на базі ESP8266, до яких належить NodeMCU.
Необхідно перейти на офіційний сайт Arduino (arduino.cc) та завантажити
останню версію Arduino IDE, сумісну з вашою операційною системою (Windows,
macOS або Linux), запустити завантажений інсталятор та дотримуватись
інструкцій для завершення встановлення.
Приклад виду головного вікна середовища розробки Arduino IDE наведено
на рисунку 3.1.
Панель інструментів Arduino IDE містить низку іконок, які забезпечують
швидкий доступ до основних функцій середовища розробки. Кожна іконка виконує
певну функцію, що допомагає полегшити роботу з програмами для
мікроконтролерів. Нижче наведений опис призначення основних іконок на панелі
інструментів Arduino IDE.
Арк.
ТК206СК.024.413.248 ПЗ
34
Змн. Арк. № докум. Підпис Дата
Рисунок 3.1 – Головне вікно Arduino IDE
Панель інструментів Arduino IDE містить низку іконок, які забезпечують
швидкий доступ до основних функцій середовища розробки. Кожна іконка виконує
певну функцію, що допомагає полегшити роботу з програмами для
мікроконтролерів. Нижче наведений опис призначення основних іконок на панелі
інструментів Arduino IDE.
1. Verify (Перевірити)
Ця іконка запускає процес перевірки (компіляції) скетчу без завантаження
його на плату. Перевірка допомагає виявити синтаксичні помилки в коді та
забезпечує компіляцію програми для перевірки її коректності.
2. Upload (Вивавантажити)
Клік мишею по цій іконці запускає вивантаження скетчу на підключену
плату. Спочатку відбувається компіляція коду, після чого готовий файл
завантажується на плату, що дозволяє мікроконтролеру виконувати програму.
3. New (Новий)
Арк.
ТК206СК.024.413.248 ПЗ
35
Змн. Арк. № докум. Підпис Дата
Клік мишею по цій іконці створює новий скетч у новому вікні редактора.
Вона дозволяє швидко розпочати написання нового проекту, відкриваючи чистий
документ.
4. Open (Відкрити)
Клік мишею по цій іконці відкриває діалогове вікно для вибору існуючого
скетчу з вашого комп'ютера. Вона дозволяє завантажити та редагувати вже
створені проекти.
5. Save (Зберегти)
Клік мишею по цій іконці зберігає поточний скетч. Вона дозволяє зберегти
зміни, внесені у скетч, на диск для подальшої роботи з проектом.
6. Serial Monitor (Серійний монітор)
Клік мишею по цій іконці відкриває вікно серіального монітора, який
дозволяє взаємодіяти з платою через серійний порт. Серійний монітор
використовується для налагодження та обміну даними між комп’ютером та платою
розробки.
Кожна з цих іконок є важливою частиною процесу розробки та налагодження
програм для мікроконтролерів, забезпечуючи швидкий доступ до найчастіше
використовуваних функцій Arduino IDE.
2) Інсталяція драйверів для NodeMCU
Для того щоб ваш комп'ютер міг взаємодіяти з платою NodeMCU, необхідно
встановити відповідні драйвери. Необхідно визначити який саме тип чіпсета
перетворювача USB-to-Serial. Зазвичай, NodeMCU використовує чіпсети CP2102
або CH340G для USB-to-Serial конвертації. На наявній платі використано чіпсет
CH340G.Прейшовши на офіційний сайт виробника чіпсетів (WCH для CH340G)
заватажуємо та встановлюємо необхідні драйвери.
Для того щоб почати працювати з NodeMCU в середовищі Arduino IDE,
потрібно виконати декілька специфічних налаштувань.
Щоб Arduino IDE підтримувала NodeMCU, необхідно додати підтримку для
платформи ESP8266. Для цього необхідно:
Арк.
ТК206СК.024.413.248 ПЗ
36
Змн. Арк. № докум. Підпис Дата
відкрти Arduino IDE.
перйти до Файл > Налаштування.
у полі " Додаткові URL для менеджера плат " додайте наступний URL:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
натиснутиі "ОК", щоб зберегти налаштування.
Після додавання URL, потрібно встановити пакети для ESP8266. Для цього:
переходимо до Інструменти > Плата > Менеджер плат
у вікні, що відкрилося, знаходимо "esp8266 by ESP8266 Community".
Натисніть "Install" і дочекайтеся завершення встановлення
Після встановлення пакетів для ESP8266 необхідно вибрати відповідну
плату в Arduino IDE. Для цього переходимо до Інструменти > Плата та
обираємо NodeMCU 1.0 (ESP-12E Module)
NodeMCU підключається до комп'ютера через USB порт, який потрібно
вибрати в Arduino IDE. Для цього необхідно підключити NodeMCU до комп'ютера
за допомогою USB кабелю, перейти до Інструменти > Порт та обрати COM порт,
до якого підключено ваша NodeMCU ( рисунок 3.2)
Рисунок 3.2 – Налаштування NodeMCU в середовищі Arduino IDE
Арк.
ТК206СК.024.413.248 ПЗ
37
Змн. Арк. № докум. Підпис Дата
Для використання функціональних можливостей плати розробки необхіднм
кроком є використання відповідних бібліотек.
Бібліотеки в середовищі Arduino IDE значно спрощують процес розробки,
надаючи готові функції для взаємодії з різними компонентами, такими як датчики,
дисплеї, модулі зв’язку та інші периферійні пристрої. Вони дозволяють швидко
інтегрувати ці компоненти в проекти, не вимагаючи написання низькорівневого
коду.
Бібліотека ESP8266WiFi призначена для роботи з мікроконтролерами на базі
ESP8266, які підтримують Wi-Fi. Вона забезпечує функціонал для підключення до
Wi-Fi мереж, створення точок доступу (Access Points), обробки HTTP запитів та
обміну даними по мережі. Ця бібліотека дозволяє легко інтегрувати можливості
бездротового зв'язку у ваші IoT-проекти, роблячи мікроконтролери ESP8266
потужним інструментом для створення підключених пристроїв.
Щоб скористатися бібліотекою ESP8266WiFi (як і будь-якою іншою), перш
за все необхідно її встановити. Після цього її можна підключити в скетчі і
використовувати фунції бібліотеки.
Існує кілька способів встановлення бібліотек: через Library Manager, з ZIP-
архівів або вручну. Нижче описані основні методи.
1. Встановлення бібліотек через Library Manager
Library Manager – це вбудований інструмент Arduino IDE для пошуку та
встановлення бібліотек. Алгоритм його використання наступний: відкрийте
Arduino IDE, відкрийте Library Manager (перейдіть до Скетч > Додати Бібліотеку >
Керування бібліотеками). (рисунок 3.3)
У вікні Library Manager введіть назву бібліотеки в поле пошуку. Наприклад,
для пошуку бібліотеки ESP8266WiFi введіть "ESP8266WiFi".
Виберіть потрібну бібліотеку зі списку результатів. Встановіть її натиснувши
кнопку Install, розташовану біля назви бібліотеки.
Після встановлення бібліотеки, вона з'явиться у списку встановлених
бібліотек.
Арк.
ТК206СК.024.413.248 ПЗ
38
Змн. Арк. № докум. Підпис Дата
Рисунок 3.3 – Вікно Library Manager ( Менеджер бібліотек)
2. Встановлення бібліотеки з ZIP-архіву
Якщо бібліотека не доступна в Library Manager, ви можете встановити її з
ZIP-архіву. Для цього скачайте з сайту розробника або репозиторію, наприклад,
GitHub. Перейдіть до пункту меню Скетч > Додати Бібліотеку > Додати .ZIP
бібліотеку. У діалоговому вікні оберіть завантажений ZIP-файл і натисніть
Відкрити.
Після встановлення бібліотеки, вона буде доступна у списку бібліотек в
Arduino IDE та доступна для імпорту в скетч.
Після підключення в скетч бібліотеки ESP8266WiFi будуть доступні
наступні основні функції:
WiFi.begin(ssid, password). Старт підключення до Wi-Fi мережі з вказаним
SSID та паролем.
WiFi.status(). Повертає статус підключення до Wi-Fi мережі. Значення
WL_CONNECTED вказує на успішне підключення.
WiFi.localIP(). Повертає локальну IP-адресу, присвоєну пристрою.
Арк.
ТК206СК.024.413.248 ПЗ
39
Змн. Арк. № докум. Підпис Дата
WiFiServer server(port). Створює об'єкт веб-сервера на вказаному порту.
server.begin(). Запускає веб-сервер.
server.available(). Перевіряє наявність клієнта, підключеного до сервера, і
повертає об'єкт WiFiClient.
client.readStringUntil(char). Зчитує дані з клієнта до вказаного символу.
client.print(). Надсилання даних клієнту.
Перевіряємо працездатність та правільність налаштування WiFi модуля Node
MCU.
Для цього можна використати скетч, що налаштує ваш NodeMCU для
підключення до WiFi мережі і виведе статус підключення в серійний порт.
Рисунок 3.4 – Скетч підключення NodeMCU до WiFi мережі і відображення
статусу підключення через COM порт.
Арк.
ТК206СК.024.413.248 ПЗ
40
Змн. Арк. № докум. Підпис Дата
Результат виконання наведеного скетча наведено на рисунку 3.5
Рисунок 3.5 – Результат виконання скетчу підключення NodeMCU до WiFi
мережі.
3.2 Реалізація інтернет запиту погодного інтернет сервісу та обробка його
відповіді
Наступним кроком розробки є реалізація запиту на спеціалізований погодний
сервіс в мережі інтернет OpenWeatherMap, який на GET запит визначеного
формату за інтерфейсом API (Інтерфейс програмування застосунків). Успішним
результатом запиту буде відповідь в спеціальному структурованому вигляді
формату JSON (JavaScript Object Notation). Щоб здійснити GET запит до API
OpenWeatherMap для отримання даних про забруднення повітря, необхідно
реалізувати код скетчу таким чином, щоб реалізувалася не тільки підключення до
WiFi, але й виконання HTTP запиту.
Скетч матиме вигляд наведений в ДОДАТКУ А.
Для успішної роботи даного коду необхідно додатково встановити бібліотеки
ESP8266HTTPClient.h та WiFiClient.h
Бібліотека WiFiClient.h є частиною стандартного набору бібліотек для
ESP8266 і забезпечує низькорівневий інтерфейс для роботи з TCP-з'єднаннями.
Арк.
ТК206СК.024.413.248 ПЗ
41
Змн. Арк. № докум. Підпис Дата
Вона дозволяє створювати клієнтські підключення до серверів через TCP, що є
основою для багатьох мережевих протоколів, включаючи HTTP, MQTT тощо.
Основні функції:
Підключення до сервера: Створення TCP-з'єднання з віддаленим сервером.
Надсилання даних: Надсилання даних до сервера через відкрите TCP-
з'єднання.
Отримання даних: Прийом даних від сервера.
Закриття з'єднання: Закриття активного TCP-з'єднання.
Бібліотека ESP8266HTTPClient.h
Призначення
Призначення бібліотеки ESP8266HTTPClient.h надає високорівневий
інтерфейс для роботи з HTTP-запитами. Вона дозволяє легко виконувати HTTP
GET, POST, PUT, DELETE та інші HTTP-запити до веб-серверів. Ця бібліотека
використовує WiFiClient для низькорівневих TCP-з'єднань, але спрощує роботу з
HTTP протоколом, автоматизуючи більшість рутинних завдань.
Основні функції бібліотеки:
HTTP GET запити: Виконання запитів для отримання ресурсів з сервера.
HTTP POST запити: Надсилання даних на сервер.
HTTP PUT та DELETE запити: Оновлення та видалення ресурсів на сервері.
Обробка відповідей: Зчитування статусних кодів та відповідей від сервера.
Докладніше розглянемо структуру URL наведеного в коді вище HTTP GET
запиту:
http://api.openweathermap.org/data/2.5/air_pollution?lat=49.4447888&lon=32.05878
05&appid=599aaad9726df497d5925f6976cebc40
Компоненти URL
1. Протокол (Scheme): http://
o Вказує, що використовується протокол HTTP для з'єднання з сервером.
2. Домен (Host): api.openweathermap.org
Арк.
ТК206СК.024.413.248 ПЗ
42
Змн. Арк. № докум. Підпис Дата
o Доменне ім'я сервера API OpenWeatherMap, який надає доступ до
даних про якість повітря.
3. Шлях (Path): /data/2.5/air_pollution
o Вказує на конкретний ресурс API, який повертає інформацію про
забруднення повітря.
4. Запитальні параметри (Query Parameters):
o lat=49.4447888: Параметр lat з значенням 49.4447888, який вказує
широту місця для запиту даних про якість повітря.
o lon=32.0587805: Параметр lon з значенням 32.0587805, який вказує
довготу місця для запиту даних про якість повітря.
o appid=599aaad9726df497d5925f6976cebc40: Параметр appid з
значенням використаного API ключа, який необхідний для
автентифікації запиту до сервера API OpenWeatherMap
Широта та довгота наведеного запиту, згідно до документації сайту,
відповідає м. Черкаси Черкаської області України.
Для отримання API ключа необхідно пройти безкоштовну реєстрацію на
сайті та пперейти в відповідний розділ сайту (рисунок 3.6)
Рисунок 3.6 – Розділ сайту з API ключами
Якщо дану URL адресу в адресний рядок браузера отримаємо відповідь
серверу в форматі JSON. На рисунку 3.7 представлено цей результат в зручному
для прегляду вигляді
Арк.
ТК206СК.024.413.248 ПЗ
43
Змн. Арк. № докум. Підпис Дата
.Рисунок 3.7 – JSON відповідь серверу на запит.
Після прошивки Node MCU та при її наступному ввімкненю буде
проводитися запит та виведення результату в серійний порт (рисунок 3.8).
Рисунок 3.8 – JSON відповідь серверу на запит виведена в серійний порт.
В подальшому реалізуємо обробку відповіді сервера в JSON форматі (
парсинг) з виділеням значень окремих показників якості повітря в змінні з
аналогічним назвами та виведення значень змінних в серійний порт.
Для парсингу JSON відповіді та збереження значень специфічних ключів в
змінні, вам потрібно використати бібліотеку ArduinoJson. Ця бібліотека допомагає
легко розбирати, модифікувати і генерувати JSON-дані
Арк.
ТК206СК.024.413.248 ПЗ
44
Змн. Арк. № докум. Підпис Дата
Скетч, що реалізує описаний функціонал наведено в ДОДАТОКУ Б а
резултат виконання на рисунку 3.9.
Рисунок 3.9 – Виведення опрацьованої JSON відповіді серверу в серійний порт
Важлиіо розглянутипринципи формування значення Air Quality Index
(AQI) при використанні шкали OpenWeather scale.
OpenWeather використовує спеціальну шкалу для визначення рівня якості
повітря на основі концентрацій різних забруднювачів. AQI визначається на основі
концентрацій восьми основних забруднювачів:
1. CO (Моноксид вуглецю)
2. NO (Оксид азоту)
3. NO2 (Діоксид азоту)
4. O3 (Озон)
5. SO2 (Діоксид сірки)
6. PM2.5 (Тверді частинки діаметром до 2.5 мікрометрів)
7. PM10 (Тверді частинки діаметром до 10 мікрометрів)
8. NH3 (Аміак)
Шкала AQI від OpenWeather має п'ять рівнів якості повітря:
1. 1 Добре (Good): Якість повітря вважається хорошою, і забруднення повітря
не становить жодного або мінімального ризику для здоров'я.
Арк.
ТК206СК.024.413.248 ПЗ
45
Змн. Арк. № докум. Підпис Дата
2. 2 Задовільно (Fair): Якість повітря є прийнятною; однак, для деяких
забруднювачів може бути помірний ризик для дуже чутливих людей.
3. 3 Помірно (Moderate): Якість повітря є помірною, що може бути
неприйнятним для людей з хронічними захворюваннями.
4. 4 Погано (Poor): Зростає ймовірність негативного впливу на здоров'я всього
населення.
5. 5 Дуже погано (Very Poor): Всі люди можуть відчувати серйозні проблеми
зі здоров'ям, і це може мати довготривалий вплив.
Формування AQI базується на даних концентрацій зазначених
забруднювачів (рисунок 3.10). Дані про концентрації забруднювачів передаються
у відповідь на запит до API OpenWeather, і на їх основі визначається поточний
рівень якості повітря.
Модифікуємо код скетчу таким чином, щоб запит на сервер відбувався не
лише при вімкненні пристрою але і періодично (з періодом, що дорівнює 1 годині).
Код наведено в ДОДАТКУ В.
Результат виконання цього коду наведено на рисунку 3.11.
Рисунок 3.10 – Допустимі межі складових показників якості повітря
Арк.
ТК206СК.024.413.248 ПЗ
46
Змн. Арк. № докум. Підпис Дата
Рисунок 3.11 –Періодичне виведення опрацьованої JSON відповіді серверу в
серійний порт
3.3 Підключення LCD екрану 1602 з I2C модулем до NodeMCU.
Для підключення LCD (рідкокрісталічного) екрану типу LCD 1602 з модулем
І2С необхідно виконати наступні дії.
Знайти і встановити бібліотеки LiquidCrystal_I2C та Wire
За допомогою дротів робимо такі з’єднання:
VCC: Підключіть до 3.3V NodeMCU.
GND: Підключіть до GND NodeMCU.
SDA: Підключіть до D2 (GPIO4) NodeMCU.
SCL: Підключіть до D1 (GPIO5) NodeMCU.
При реалізації кінцевого варіанту коду також забезпечимо виведення на на
дисплей трьох варіантів екранів: на першому виводиться значення Індексу якості
Арк.
ТК206СК.024.413.248 ПЗ
47
Змн. Арк. № докум. Підпис Дата
повітря (Air Quality Index (AQI)) та його словесна інтерпретація, а на другому та
третьому екранах: назви та значення основних 8 забруднювачів повітря.
Час між змінами кожного ерану задано в змінній displayInterval = 10000, що
задана в мілісекундах (10 секунд = 10000 мілісекунд). Зміна екранів відбувається
циклічно.
Код, що забезпечує функціонування проектованого мережевого пристрою
для моніторингу якості повітря з використанням платформи NodeMCU наведено в
ДОДАТКУ Г.
Результат виведення інформації на дисплей наведено на рисунку 3.12
Рисунок 3.12 –Виведення стану повітря на дисплей.
Арк.
ТК206СК.024.413.248 ПЗ
48
Змн. Арк. № докум. Підпис Дата
4 ОХОРОНА ПРАЦІ.
4.1 Аналіз небезпек та шкідливостей, які виникають при виконанні
робіт в приміщенні науково-технічного відділу
В даному розділі кваліфікаційної роботи аналізуються умови праці
спеціаліста при проектуванні мережевого пристрою в приміщенні науково-
технічного відділу. Виконання цих робіт не можливе без використання
персонального комп’ютера (ПК), укомплектованого різними периферійними
пристроями та необхідними для розрахунків прикладними програмами. Працюючи
з ПК, розробник має прямий візуальний контакт з монітором, а враховуючи те, що
деякі обчислення можуть тривати довгий час, то виникає потреба раціональної та
безпечної організації праці спеціаліста при роботі з монітором.
Проаналізуємо фактори, що впливають на здоров'я і працездатність
співробітника, який працює у відділі на комп’ютері. За рівнем фізичних
навантажень дана робота відноситься до категорії I а.
Робоче місце співробітника є постійним і являє собою робочий стіл, на якому
встановлений персональний комп'ютер, принтер та інші периферійні пристрої.
Воно знаходиться в науково-технічному відділі, що являє собою окреме
приміщення, мебльоване робочими столами у кількості 5 шт, зі встановленими на
них комп’ютерами. Монітори розміщені так, щоб відстань від очей користувача до
екрану складала не менше 70 cм, кут зору 30о. Руки користувача розташовуються
на робочому столі в горизонтальному положенні, передбачена гарна опора для
спини.
Розміри приміщення відділу становлять: ширина – 6 м, довжина – 10 м,
висота стелі – 3 м, відповідно площа стелі складає 60 м2. Приміщення розраховане
на максимальну кількість працюючих 5 осіб. Звідси площа, яка припадає на одну
людину, дорівнює 12 м2. Об’єм приміщення складає 180 м3. Звідси об'єм, який
припадає на одну людину, дорівнює 36 м3, що відповідає вимогам ДБН В.2.2.28-
2010.
Арк.
ТК206СК.024.413.248 ПЗ
49
Змн. Арк. № докум. Підпис Дата
Приміщення відділу розташоване в північній частині лівого крила
чотириповерхової цегляної будівлі. Стіни приміщення світло-рожевого
забарвлення із коефіцієнтом відбиття світла 27-45%.
На здоров’я та самопочуття співробітника відділу, під час його роботи, в
першу чергу безпосередньо впливають фактори мікроклімату в робочому
приміщенні.
Згідно з ДСН 3.3.6.042-99 нормативні значення основних факторів
мікроклімату наступні:
1. Температури повітря:
- в теплий період року – 21 - 23 °С (допустима – 20 - 28 °С);
- в холодний період року – 22 - 24 °С (допустима – 21 - 25 °С).
2. Вологість повітря:
- в теплий період року – 40 - 60 %;
- в холодний період року – 40 - 60 %.
3. Швидкість руху повітря:
- в теплий період року – 0,1 м/с (допустима – 0,1 - 0,2 м/с);
- в холодний період року – 0,1 м/с (допустима – менше 0,1 м/с) .
Фактичні значення даних параметрів становлять відповідно:
1. Температури повітря:
- в теплий період року – 24 - 27 °С;
- в холодний період року – 20 - 23 °С .
2. Вологість повітря:
- в теплий період року – 50 - 55 %;
- в холодний період року – 42 - 48 %.
3. Швидкість руху повітря:
- в теплий період року – 0,1 - 0,12 м/с;
- в холодний період року – 0,07 - 0,1 м/с.
Температура повітря в холодний період року не відповідає нормативним
вимогам.
Арк.
ТК206СК.024.413.248 ПЗ
50
Змн. Арк. № докум. Підпис Дата
У відділу в холодний період року функціонує система централізованого
водяного опалення, яка не забезпечує підтримання нормативної температури
повітря і тому, не відповідаючи ДБН В.2.5.67-2013 «Опалення, вентиляція та
кондиціювання», потребує модернізації. Для її забезпечення пропонується
використати сучасні опалювальні радіатори.
Природне освітлення приміщення відділу є однобічним, з північною
орієнтацією віконних отворів та здійснюється через чотири вікна, розміри яких
становлять 21,80 м.
Робочі столи розташовані таким чином, що вікна знаходяться збоку від
працюючого. Вікна обладнані світлорозсіюючими шторками. При цьому у полі
зору працюючого забезпечується оптимальне співвідношення яскравості робочих
та навколишніх поверхонь та обмежене відбивання світла від екрану та
функціональної клавіатури.
Згідно з нормами проектування ДБН В.2.5-28-2018 «Природне і штучне
освітлення» нормування природного освітлення проводиться за допомогою
коефіцієнта природного освітлення (КПО), вираженого в відсотках, який для
даного типу зорової праці складає 1,5 %. Фактичне значення КПО становить 22-25
%. Тому рівень природного освітлення є достатнім.
Оскільки дослідник візуально працює з монітором, де найменший об’єкт
розрізнення являється крапка, що становить близько – 0,25 мм, то його робота
відповідає найвищому ступеню точності зорової праці. Розряд зорової праці – II г,
що відповідає великому контрасту об’єкту розрізнення та фону. Контрастність
найменшого об’єкту розрізнення та фонів: між текстом на моніторі та фоном, між
текстом на аркуші паперу та аркушем, букв на клавіатурі являється великою, що
сприяє до зменшення напруги зорової праці та зменшення загальної кількості
помилок.
Приміщення відділу має штучне освітлення. При штучному освітленні
величина освітленості нормується в люксах (Лк), яка вибирається в залежності від
Арк.
ТК206СК.024.413.248 ПЗ
51
Змн. Арк. № докум. Підпис Дата
характеристик зорової праці з урахуванням найменшого розміру об'єкта
розрізнення, фону, контрасту об'єкта розрізнення з фоном.
Приміщення відділу обладнане світильниками типу ЛСП 02В - 2×40 у
кількості 12 шт., кожний з яких має дві люмінесцентні лампи денного світла.
Необхідна величина штучного загального освітлення для даного типу зорової праці
складає 400 лк, а фактичне значення даного параметра складає 450 лк. Отже, рівень
штучного освітлення на робочому місці є достатнім відповідно до ДБН В.2.5-28-
2018 «Природне і штучне освітлення».
Особливістю роботи співробітника відділу з монітором є підвищене зорове
напруження, що пов'язане із спостереженням за інформацією на екрані, а також з
іншими негативними факторами. Спеціаліст втомлюється від тривалого
перебування біля монітора, оскільки його органи зору підлягають таким
шкідливим факторам як: ефект миготіння дисплея, нестійкість та нечіткість
зображення, необхідності частої переадаптації очей до рівня освітлення екрану
дисплея та загального освітлення приміщення.
Шум також являється важливим фактором виробничого середовища.
Головним джерелом шуму є вентилятори охолодження в системних блоках
комп’ютерів та робочий шум периферійних пристроїв. Нормативне значення
еквівалентного рівня шуму при даному видові діяльності та типу робочого місця
складає 60 дБА. Фактичне значення становить 42-44 дБА. Відповідно до цього дане
робоче місце відповідає допустимим вимогам по даному фактору згідно ДСН
3.3.6.037-99.
Іншим важливим фактором виробничого середовища являється
напруженість електромагнітного поля. На робочому місці співробітник підлягає
впливу електромагнітних полів, джерелом яких є ПК та периферійні пристрої,
проте, оскільки вони в більшості є екранованими, то даний вплив електромагнітних
полів незначний і не перевищує нормативне значення, визначене в ДСН 3.3.6.096-
2002 «Державні санітарні норми та правила при роботі з джерелами
електромагнітних полів».
Арк.
ТК206СК.024.413.248 ПЗ
52
Змн. Арк. № докум. Підпис Дата
Умови праці співробітників відділу при роботі з комп'ютером крім стану
параметрів виробничого середовища, визначаються також характеристиками
використовуваного устаткування, якістю робочих матеріалів у робочій зоні,
конструкцією робочих меблів та її розмірними характеристиками. Тип робочого
крісла обирається у відповідності ДСТУ 7951:2015 «Дизайн і ергономіка. Крісло
оператора. Загальні ергономічні вимоги» та в залежності від тривалості роботи: при
тривалій - масивне, при короткочасній - крісло легкої конструкції, яке легко
пересувати. Ширина столу 1,2 м, усі предмети, що знаходяться на ньому
розташовані на відстані не більш 75 см від працівника, отже вони знаходяться в
робочій зоні. Висота столу 74 см; висота стільця 40 см.
Робоча поза працюючого безпосередньо пов’язана з тривалим очікуванням
закінчення обрахунків комп’ютером, що в свою чергу призводить до періодичного
перебування в незручній, фіксованій позі до 25% від загальної тривалості роботи.
До психологічного навантаження доцільно віднести роботу дослідника з
великим обсягом інформації та великою розумовою активністю. Його діяльність
характеризується тривалим тривожним очікуванням вірних результатів, що
виснажує людину більш ніж сама робота. Однотипність даних на екрані та
очікування закінчення розрахунків може привести до додаткового виснаження
ресурсів організму, швидке стомлення, значне зниження працездатності.
Ступінь складності завдання полягає в виконанні обчислень, обробці
отриманих результатів, визначаючи їх вірність та коректність, що відповідає
допустимому класові умов праці.
Електропроводка мережі змінного струму в приміщенні відділу є
прихованого типу. Приміщення відноситься до 3 типу: приміщення без підвищеної
небезпеки. Обладнання, встановлене в ньому живиться напругою 220 В і споживає
потужність більше ніж 3500 Вт. Оскільки комп’ютери мають металевий корпус,
тому згідно ДНАОП 0.00-1.32-01 «Правила будови електроустановок.
Електрообладнання спеціальних установок» та ДСТУ Б В.2.5-82:2016 усі корпуси
обладнання під'єднані до загальної системи захисного заземлення.
Арк.
ТК206СК.024.413.248 ПЗ
53
Змн. Арк. № докум. Підпис Дата
Приміщення відділу відноситься до приміщень з категорією пожежобезпеки
типу В, згідно з ДСТУ Б В.1.1-36:2016. У відділу забезпечуються всі необхідні
заходи щодо протидії виникнення пожежонебезпечних ситуацій згідно з та НАПБ
А.01.001-2014 «Правила пожежної безпеки України». План евакуації розміщений
на стіні з вільним доступом до неї. Для попередження пожеж в ній
використовується електрична пожежна сигналізація променевого типу та теплові
датчики типу (ИП-105-2) у кількості 6 шт у відповідності з ДБН В.2.5.56-2014.
Приміщення обладнане вуглекислотним вогнегасником ВВК-5, який знаходиться
у зручному місці, відповідно до Правил експлуатації та типових норм належності
вогнегасників.
Для підвищення продуктивності праці необхідна правильна організація
режиму роботи дослідника. Аналізуючи специфіку роботи, йому цілком достатньо
чотирьох годин на добу для проведення розрахунків на комп'ютері у світлий час
доби, коли освітлення повністю задовольняє вимогам стандарту (ДБН В.2.5-28-
2018), а в іншу частину дня необхідно аналізувати отримані результати та
проводити підготовку нових даних для подальших розрахунків. Для зняття
напруженості органів зору необхідно щогодини робити перерву. Оскільки
температура повітря в приміщенні відділу в холодний період року не відповідає
допустимим нормам, то для покращення умов праці співробітників в даному
приміщенні необхідно модернізувати систему водяного опалення.
4.2 Розрахунок системи водяного опалення в приміщенні відділу
Системи опалення являють собою комплекс елементів, необхідних для
нагрівання приміщень в холодний період року. До основних елементів системи
опалення належать джерела тепла, теплопроводи, нагрівальні прилади.
Теплоносіями можуть бути нагріта вода, пара чи повітря. Системи опалення
повинні компенсувати втрати тепла через огороджуючи зовнішні будівельні
конструкції та підігрівати холодне повітря, яке надходить ззовні через вікна, двері,
ворота та ін. Для підприємств та організацій проектується, як правило, центральна
Арк.
ТК206СК.024.413.248 ПЗ
54
Змн. Арк. № докум. Підпис Дата
водяна система опалення низького тиску або системи повітряного опалення. При
проектуванні системи опалення визначають: категорію вибухопожежної небезпеки
виробництва; внутрішню температуру повітря в приміщенні, залежно від категорії
роботи (легка, середньої важкості, важка); розрахункову зовнішню температуру
повітря для даного кліматичного району; орієнтовні втрати тепла будинком;
тепловиділення від: людей, електродвигунів, нагрітих поверхонь котлів,
сушильних установок, світильників, розплавленого металу та ін.; необхідну
систему опалення, вид теплоносія, тип опалювальних приладів; кількість тепла на
опалення приміщення; поверхню нагрівальних приладів; кількість елементів
секцій в одному нагрівальному приладі, загальну кількість секцій; годинні витрати
води (повітря) на опалення; необхідну поверхню нагріву, тип та ККД котла.
В холодний період року температура в приміщенні становить +18 °С, що
не відповідає ДСН 3.3.6.042-99, для цього проведемо розрахунковий аналіз
приміщення. В якості обігрівача приймаємо радіатор біметалевий Calgoni BRAVA
500, які встановлюємо у відділу, який знаходиться на 2-му поверсі. Теплові
витрати огородження кімнати відділу – 8000 ккал/год. Система водяна двохтрубна
з верхньою розводкою, природною циркуляцією; температурний перепад в
системі 95 – 70 0С . Прокладка трубопроводу відкрита, тому враховуємо
корисну тепловіддачу труб. Гаряча вода поступає через верхню та відводиться
через нижню пробку (зверху униз).
Біметалевий радіатор - це один з видів нагрівальних приладів для систем
опалення, в конструкції якого присутні два метали - алюміній і сталь. Завдяки своїм
особливостям, такі радіатори відрізняються підвищеною міцністю і надійністю.
Цими якостями вони зобов'язані сталевим трубкам теплоносія, які запресовані в
алюмінієвий корпус. Радіатор біметалевий здатний витримувати високий тиск і
несприятливий вплив неякісного теплоносія. Такі характеристики роблять ці
нагрівальні прилади відмінним варіантом для використання в вітчизняних
централізованих системах опалення, в яких бувають гідро удари і застосовуються
хімікати для прочищення труб.
Арк.
ТК206СК.024.413.248 ПЗ
55
Змн. Арк. № докум. Підпис Дата
Кожна секція біметалевих радіаторів виготовляється шляхом заливання
сталевих труб алюмінієм у відповідну форму. Далі на неї наносять спеціальне
міцне декоративне покриття. Потім готові секції з'єднуються в цілісний радіатор,
який може складатися з різної їх кількості. Біметалеві радіатори поєднують у собі
переваги сталевих і алюмінієвих аналогів. Вони мають гарну тепловіддачу, завдяки
високій теплопровідності алюмінію, а також стійкість до перепадів тиску і
хімікатів, завдяки міцності властивостями стали. Крім того, біметалеві нагрівачі
мають малу вагу, що полегшує їх монтаж, невелику теплову інерцію і привабливий
сучасний дизайн, що дозволяє вписати їх в будь-який інтер'єр.
Термін експлуатації радіаторів зі сталі та алюмінію є досить великим. З
огляду на їх міцність, такі прилади можуть встановлюватись в системах опалення
на досить багато років. Однак довго і надійно працювати будуть тільки якісно
виготовлені нагрівачі. Тому, при виборі біметалевих радіаторів варто звернути
особливу увагу на кілька важливих характеристик. Такими є - тепловіддача,
заявлений термін експлуатації, якість покриття і збірки, а також країна-виробник.
Радіатор біметалевий Calgoni BRAVA 500 - радіатор нової лінійки торгової
марки CALGONI має максимальну тепловіддачу при мінімальних витратах.
Біметалевий радіатор BRAVA 500, виготовлений методом лиття під тиском,
гарантовано працює при тиску 35 бар.
Маючи значний запас міцності, радіатор Calgoni BRAVA дає можливість
використовувати його для роботи в досить нестандартних, складних умовах, таких
як низька якість води, високі тиск і температура. У свою чергу, збільшена поверхня
тепловіддачі і спеціальний дизайн забезпечують високу теплову потужність.
Гарантією добрих експлуатаційних характеристик є, в першу чергу,
суцільнометалевий каркас, підвищена товщина втулок і висока якість спеціального
алюмінієвого сплаву. Радіатор Calgoni BRAVA 500 безперебійно працює при тиску
35 бар. Проведені випробування в лабораторіях показали, що тиск на розрив
перевищує 100 бар. Весь процес виробництва радіатора підлягає постійним
перевіркам якості. Бездоганний зовнішній вигляд радіатору забезпечує
Арк.
ТК206СК.024.413.248 ПЗ
56
Змн. Арк. № докум. Підпис Дата
забарвлення методом анафорезу. Ретельна упаковка радіаторів забезпечує
збереження якості при транспортуванні.
Розрахункова поверхня нагрівачів Fp визначається в еквівалентних
квадратних метрах (екм) за формулою:
Q
F 1 2 3 FTp
qe 4 5 (4.1)
де Q – розрахункова кількість тепла, яка віддається приладом, ккал/год;
β1 – коефіцієнт, який враховує спосіб установки приладу, β1=1,03;
β2 – коефіцієнт, який враховує зниження температури внаслідок її
охолодження, β2=1,05;
β3– коефіцієнт, який враховує кількість секцій радіатора;
Fтр – поверхня відкрито прокладених трубопроводів, які віддають тепло в
приміщення, в якому встановлюється обігрівач, екм;
qe – щільність теплового потоку на 1 екм обігрівача, ккал/(год·екм),
β4 – коефіцієнт, який враховує спосіб приєднання підводок до приладу; β4=1;
β5 – коефіцієнт, який враховує вплив витрат води на тепловіддачу; так як β5
= f ( G ), вплив витрат G теплоносія на тепловіддачу приладу визначається за
його відносного значення:
q
G e
17,4 t c (4.2)
де 17,4 – нормальна витрата води, кг/год;
t = tвх – tвых;
с – питома теплоємність теплоносія (води).
Розрахунок системи опалення виконуємо в наступній послідовності:
Визначаємо G за формулою 4.2:
375
G 0,865
17,4 (9570) 1
При G = 0,865 - коефіцієнт β5 =0,99.
Визначимо, поверхню корисної тепловіддачі відкрито прокладених труб Fтр.
Арк.
ТК206СК.024.413.248 ПЗ
57
Змн. Арк. № докум. Підпис Дата
В приміщенні відділу проходять дві підводки до радіатора d = 15 мм
довжиною кожна в 0,5 м, гарячий стояк d = 25 мм з l = 3 м; те ж, зворотна проводка
d = 15 мм з l = 0,50 м; те ж, частина стояка зворотного d = 25 мм з l = 0,10 м.
FTp (0,12 0,12) 0,50 3 0,10 (0,50 0,10) 0.06 0.456
екм (4.3)
Після підстановки знайдемо
8000 1,03 1,05
F 0,456 21,48
375 10,99
екм
Визначаємо кількість секцій без врахування коефіцієнта β3
21,48
n 13,02
1,65 (4.4)
де 1,65 м2 – поверхня нагріву однієї секції радіатора Calgoni BRAVA 500.
При кількості секцій 6 коефіцієнт β3 = 0,92. Тоді
n 13,02 0,92 11,98
До установки приймаємо два радіатори Calgoni BRAVA 500 з 6 секцій.
Таблиця 4.1 –Технічні характеристики радіатору Calgoni BRAVA 500
Габарити Міжосьова Площа
Тепловий Температура Робочий
радіатора відстань, обігріву
потік, Вт теплоносія, °С 2 тиск, атм
мм мм секції, м
582х80х85 500 165 90 1,65 35
Рисунок 4.1 - Зовнішній вигляд радіатора Calgoni BRAVA 500
Арк.
ТК206СК.024.413.248 ПЗ
58
Змн. Арк. № докум. Підпис Дата
Рисунок 4.2 – Способи під’єднання опалювальних приладів
Арк.
ТК206СК.024.413.248 ПЗ
59
Змн. Арк. № докум. Підпис Дата
ВИСНОВОК
В даній кваліфікаційній роботі проведено розробку мережевого пристрою
для моніторингу якості повітря з використанням платформи NodeMCU
В першому розділі розглянуто: питання важливості моніторигу якості
повітря та її вплив на здоров’я людини; сучасні технічні пристрої моніторингу
якості повітря, спеціалізовані інтернет сервіси відслідковування погоди. Також
проаналізовано можливості інтеграції погодних сервісів з користувацькими
платформами.
Наведена інформація підтверджує актуальність розробки пропонованого
малогабаритного пристрою широким колом користувачів. Він дозволить їм
отримувати актуальну інформацію про якість повітря в обраній місцевості за
основними показникам, що сприятиме збереженню здоров’я людей та
ефективному плануванню їх діяльності.
В другому розділі докладно розглянуто особливості роботи, налаштування
та використання платформи розробки NodeMCU для реалізації IoT проектів
(проектів «Інтеренету речей») різної складності та призначення.
В результаті запропонована структура проектованого пристрою та зв’язки
між її складовими. В ній можна виділити наступні основні складові: блок
живлення, платформа Node MCU, погодний сервіс, дисплей. Основною новизною
проектованого пристрою є використання: функціональної платформи розроьки
NodeMCU (ESP8266), спеціалізованих мережевих сервісів моніторингу та
прогнозування погоди, наочна LED індикація, малі габарити пристрою.
В третьому розділі описано практичну реалізацію програмно технічного
рішення проектованого пристрою. Розглянуто: налаштування середовища
програмування Arduino IDE, програми, що забезпечують під’єднання пристрою до
мережі інтернет за допомогою бездротової технології WiFi, запит до
спеціалізованого погодного сервісу та обробку його відповіді з подальним
виведенням на LCD дисплей.
Арк.
ТК206СК.024.413.248 ПЗ
60
Змн. Арк. № докум. Підпис Дата
В розділі охорони праці було проведено аналіз шкідливих та небезпечних
факторів, що які виникають при виконанні робіт в приміщенні науково-технічного
відділу. Також виконано розрахунок системи водяного опалення в приміщенні
відділу.
Арк.
ТК206СК.024.413.248 ПЗ
61
Змн. Арк. № докум. Підпис Дата
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ
1. Запорожець А. О. Аналіз засобів моніторингу забруднення повітря
навколишнього середовища. Science-Based Technologies. № 35 (3). 2017. С. 242–
252.
2. Бахарєв В. С., Маренич А. В. Аналітичний огляд результатів наукових
досліджень з проблем моніторингу довкілля в Україні. Екологічна безпека. № 2.
2016. С. 35–42.
3. Fuller R, Landrigan PJ, Balakrishnan K, et al. Pollution and health: a progress
update. Lancet Planetary Health. 2022. № 6. Р. 535–547. DOI:
https://doi.org/10.1016/S2542-5196(22)00090-0
4 . Національна доповідь про стан навколишнього природного середовища в
Україні у 2021 році. URL: https://mepr.gov.ua/wp-
content/uploads/2023/01/Natsdopovid-2021-n.pdf
5. Raju S, Siddharthan T, McCormack MC. Indoor Air Pollution and Respiratory
Health. Clin Chest Med. 2020. № 41(4). Р. 825-843. doi: 10.1016/j.ccm.2020.08.014.
PMID: 33153698; PMCID: PMC7665158.
6. Живага В.В., Малахова М.О., Шевченко Д.О. Система моніторингу якості
повітря на базі IoT. Вісник Харківського національного університету імені В.Н.
Каразіна серія «Математичне моделювання. Інформаційні технології.
Автоматизовані системи управління». 2021. № 49. С. 49–57.
7. Z. Wan, Y. Song, and Z. Cao, “Environment Dynamic Monitoring and Remote
Control of Greenhouse with ESP8266 NodeMCU,” in 2019 IEEE 3rd Information
Technology, Networking, Electronic and Automation Control Conference (ITNEC),
Chengdu, China, 2019, pp. 377–382.
8. K. Bounnady, P. Sibounnavong, K. Chanthavong, and S. Saypadith, “Smart
Crop Cultivation Monitoring System by Using IoT,” in 2019 5th International
Conference on Engineering, Applied Sciences and Technology (ICEAST), Luang
Prabang, Laos, 2019, pp. 1–3.
Арк.
ТК206СК.024.413.248 ПЗ
62
Змн. Арк. № докум. Підпис Дата
9. “ESP8266 Overview | Espressif Systems.” [Online]. Available:
https://www.espressif.com/en/products/hardware/esp8266ex/overview. [Accessed: 20-
Nov-2019].
10. "Weather APIs: A Developer's Guide to Creating Powerful Applications" by
HockSang Liaw
11. “NodeMcu -- An open-source firmware based on ESP8266 wifi-soc.” [Online].
Available: https://www.nodemcu.com/index_en.html. [Accessed: 18-Nov-2019].
12. “Overview - NodeMCU Documentation.” [Online]. Available:
https://nodemcu.readthedocs.io/en/master/. [Accessed: 18-Nov-2019].
13. “Espruino on ESP8266 WiFi.” [Online]. Available:
https://www.espruino.com/EspruinoESP8266. [Accessed: 20-Nov2019].
14. “Mongoose OS - an IoT Operating System.” [Online]. Available:
https://mongoose-os.com/mos.html. [Accessed: 20-Nov2019].
15. “ESP-SDK | Espressif Systems.” [Online]. Available:
https://www.espressif.com/en/products/software/esp-sdk/overview. [Accessed: 20-Nov-
2019].
16. “Arduino - Software.” [Online]. Available:
https://www.arduino.cc/en/main/software. [Accessed: 20-Nov-2019].
17. Raspberry Pi Cookbook: Software and Hardware Problems and Solutions 4th
Edition, Simon Monk
18. "Internet of Things with ESP8266" by Marco Schwartz. 2016
19. "IoT Projects with NodeMCU and ESP8266" by Marco Schwartz and Agus
Kurniawan
20. "Programming the ESP8266 with NodeMCU" by Julien Delange
21. "Beginning IoT Programming with ESP8266" by Peter Waher
22. https://nodemcu.readthedocs.io/en/master/en/modules/u8g/.
Арк.
ТК206СК.024.413.248 ПЗ
63
Змн. Арк. № докум. Підпис Дата
ДОДАТКИ
ДОДАТОК А
Скетч реалізації HTTP запиту на сервер прогнозу погоди
#include <ESP8266WiFi.h> // Підключення бібліотеки для роботи з WiFi
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
const char* ssid = "point+";
const char* password = "12345678";
void setup() {
Serial.begin(115200); // Ініціалізація серійного порту
delay(10);
// Підключення до WiFi мережі
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); // Функція підключення до WiFi
while (WiFi.status() != WL_CONNECTED) { // Чекаємо підключення
delay(500);
Serial.print("."); }
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); // Виведення IP адреси у серійний порт
if (WiFi.status() == WL_CONNECTED) { // перевірка підключення до WiFi
WiFiClient client;
HTTPClient http; // Об'єкт класу HTTPClient
// URL запиту
String serverPath =
"http://api.openweathermap.org/data/2.5/air_pollution?lat=49.4447888&lon=32.0587805&appid=599a
aad9726df497d5925f6976cebc40";
http.begin(client, serverPath); //Ініціалізація об’єку HTTPClient за допомогою WiFiClient і
URL-адреси
int httpResponseCode = http.GET(); // Здійснюємо GET запит
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString(); // Отрмання зміст запиту
Serial.println(payload);
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
http.end(); // Закриваємо з'єднання
}
}
void loop() {}
ДОДАТОК Б
Скетч реалізації опрацювання JSON відповіді погодного сервісу
#include <ESP8266WiFi.h> // Підключення бібліотеки для роботи з WiFi
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <ArduinoJson.h> // Включення бібліотеки ArduinoJson
// Замініть наступні рядки своїм ім'ям мережі (SSID) та паролем
const char* ssid = "point+";
const char* password = "12345678";
void setup() {
Serial.begin(115200); // Ініціалізація серійного порту
delay(10);
// Підключення до WiFi мережі
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); // Функція підключення до WiFi
while (WiFi.status() != WL_CONNECTED) { // Чекаємо підключення
delay(500);
Serial.print("."); }
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); // Виведення IP адреси у серійний порт
if (WiFi.status() == WL_CONNECTED) { // перевірка підключення до WiFi
WiFiClient client;
HTTPClient http; // Об'єкт класу HTTPClient
String serverPath =
"http://api.openweathermap.org/data/2.5/air_pollution?lat=49.4447888&lon=32.0587805&appid=599a
aad9726df497d5925f6976cebc40";
http.begin(client, serverPath); //Ініціалізація об’єку HTTPClient за допомогою
WiFiClient і URL-адреси
int httpResponseCode = http.GET(); // Здійснюємо GET запит
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString(); // Отримання відповіді у формі рядка
DynamicJsonDocument doc(1024); // Створення JSON документа
DeserializationError error = deserializeJson(doc, payload); //Парсинг JSON даних
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.c_str());
return; }
// Витягування значень
float co = doc["list"][0]["components"]["co"];
float no = doc["list"][0]["components"]["no"];
float no2 = doc["list"][0]["components"]["no2"];
float o3 = doc["list"][0]["components"]["o3"];
float so2 = doc["list"][0]["components"]["so2"];
float pm2_5 = doc["list"][0]["components"]["pm2_5"];
float pm10 = doc["list"][0]["components"]["pm10"];
float nh3 = doc["list"][0]["components"]["nh3"];
int aqi = doc["list"][0]["main"]["aqi"];
// Виведення значень на серійний монітор
Serial.println("Air Quality Index Values:");
Serial.print("CO: "); Serial.println(co);
Serial.print("NO: "); Serial.println(no);
Serial.print("NO2: "); Serial.println(no2);
Serial.print("O3: "); Serial.println(o3);
Serial.print("SO2: "); Serial.println(so2);
Serial.print("PM2.5: "); Serial.println(pm2_5);
Serial.print("PM10: "); Serial.println(pm10);
Serial.print("NH3: "); Serial.println(nh3);
Serial.print("AQI: "); Serial.println(aqi); }
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode); }
http.end(); // Закриття з'єднання } }
void loop() {}
ДОДАТОК В
Скетч реалізації періодичного запиту про стан якості повітря
#include <ESP8266WiFi.h> // Підключення бібліотеки для роботи з WiFi
#include <ESP8266HTTPClient.h> // Підключення бібліотеки для HTTP запитів
#include <WiFiClient.h> // Підключення бібліотеки WiFi клієнта
#include <ArduinoJson.h> // Підключення бібліотеки для роботи з JSON
const char* ssid = "point+";
const char* password = "12345678";
// Інтервал між запитами (1 година = 3600000 мілісекунд)
const unsigned long requestInterval = 3600000;
unsigned long previousMillis = 0;
void setup() {
Serial.begin(115200); // Ініціалізація серійного порту
delay(10);
// Підключення до WiFi мережі
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); // Підключення до WiFi
while (WiFi.status() != WL_CONNECTED) { // Чекаємо підключення
delay(500);
Serial.print("."); }
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); // Виведення IP адреси у серійний порт
// Виконання першого запиту одразу після підключення
makeHttpRequest();
}
void loop() {
unsigned long currentMillis = millis();
// Перевірка, чи минув інтервал часу
if (currentMillis - previousMillis >= requestInterval) {
previousMillis = currentMillis;
Serial.println("");
Serial.println("Оновленні дані:");
Serial.println("");
makeHttpRequest(); } }
void makeHttpRequest() {
if (WiFi.status() == WL_CONNECTED) { // Перевірка підключення до WiFi
WiFiClient client;
HTTPClient http; // Об'єкт класу HTTPClient
String serverPath =
"http://api.openweathermap.org/data/2.5/air_pollution?lat=49.4447888&lon=32.0587805&appid=599a
aad9726df497d5925f6976cebc40";
http.begin(client, serverPath); // Ініціалізація об’єкту HTTPClient за допомогою
WiFiClient і URL-адреси
int httpResponseCode = http.GET(); // Здійснення GET запиту
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString(); // Отримання відповіді у формі рядка
DynamicJsonDocument doc(1024); // Створення JSON документа
DeserializationError error = deserializeJson(doc, payload); // Парсинг JSON даних
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.c_str());
return; }
// Витягування значень
float co = doc["list"][0]["components"]["co"];
float no = doc["list"][0]["components"]["no"];
float no2 = doc["list"][0]["components"]["no2"];
float o3 = doc["list"][0]["components"]["o3"];
float so2 = doc["list"][0]["components"]["so2"];
float pm2_5 = doc["list"][0]["components"]["pm2_5"];
float pm10 = doc["list"][0]["components"]["pm10"];
float nh3 = doc["list"][0]["components"]["nh3"];
int aqi = doc["list"][0]["main"]["aqi"];
// Виведення значень на серійний монітор
Serial.println("Air Quality Index Values:");
Serial.print("CO: "); Serial.println(co);
Serial.print("NO: "); Serial.println(no);
Serial.print("NO2: "); Serial.println(no2);
Serial.print("O3: "); Serial.println(o3);
Serial.print("SO2: "); Serial.println(so2);
Serial.print("PM2.5: "); Serial.println(pm2_5);
Serial.print("PM10: "); Serial.println(pm10);
Serial.print("NH3: "); Serial.println(nh3);
Serial.print("AQI: "); Serial.println(aqi); }
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode); }
http.end(); // Закриття з'єднання
} }
ДОДАТОК Г
Лістинг програми по циклічному відображенню на LCD екрані загальних та
детальних показників якості повітря
#include <ESP8266WiFi.h> // Підключення бібліотеки для роботи з WiFi
#include <ESP8266HTTPClient.h> // Підключення бібліотеки для HTTP запитів
#include <WiFiClient.h> // Підключення бібліотеки WiFi клієнта
#include <ArduinoJson.h> // Підключення бібліотеки для роботи з JSON
#include <Wire.h> // Підключення бібліотеки для I2C
#include <LiquidCrystal_I2C.h> // Підключення бібліотеки для LCD дисплеїв через I2C
// Ініціалізація екрану з адресою 0x27 з кількістю колонок 16 і рядків 2
LiquidCrystal_I2C lcd(0x27, 16, 2);
// за необхідності замініть наступні рядки своїм ім'ям мережі (SSID) та паролем
const char* ssid = "point+";
const char* password = "12345678";
// Інтервал між GET запитами (1 година = 3600000 мілісекунд)
const unsigned long requestInterval = 3600000;
unsigned long previousMillis = 0;
// Інтервал між оновленням виводу на екран (10 секунд = 10000 мілісекунд)
const unsigned long displayInterval = 10000;
unsigned long previousDisplayMillis = 0;
// Флаг для відстеження стану виводу (AQI або детальні показники)
bool displayAQI = true;
// Змінні для зберігання даних якості повітря
float co, no, no2, o3, so2, pm2_5, pm10, nh3;
int aqi; //значення Air Quality Index (AQI)
String aqiDescription; // текстове значення Air Quality Index (AQI)
void setup() {
Serial.begin(115200); // Ініціалізація серійного порту
delay(10);
Wire.begin(D2,D1); //Ініціалізація портів підключених до LCD
// Ініціалізація екрану
lcd.begin(D2,D1); // Запуск екрану
lcd.backlight();
// Підключення до WiFi мережі
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); // Підключення до WiFi
while (WiFi.status() != WL_CONNECTED) { // Чекаємо підключення до WIFI
delay(500);
Serial.print(".");
lcd.setCursor(0, 0);
lcd.print("Connecting to ");
lcd.setCursor(0, 1);
lcd.print(ssid);
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); // Виведення IP адреси у серійний порт
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("WiFi connected.");
lcd.setCursor(0, 1);
lcd.print("IP: ");
lcd.print(WiFi.localIP());
// Виконання першого запиту одразу після підключення
makeHttpRequest();
}
void loop() {
unsigned long currentMillis = millis();
// Перевірка, чи минув інтервал часу для запиту
if (currentMillis - previousMillis >= requestInterval) {
previousMillis = currentMillis;
Serial.println("");
Serial.println("Оновленні дані:");
Serial.println("");
makeHttpRequest();
}
// Перевірка, чи минув інтервал часу для оновлення дисплею та зміна екрану
відображення інформації
if (currentMillis - previousDisplayMillis >= displayInterval) {
previousDisplayMillis = currentMillis;
displayAQI = !displayAQI;
updateDisplay();
}
}
void makeHttpRequest() {
if (WiFi.status() == WL_CONNECTED) { // Перевірка підключення до WiFi
WiFiClient client;
HTTPClient http; // Об'єкт класу HTTPClient
String serverPath =
"http://api.openweathermap.org/data/2.5/air_pollution?lat=49.4447888&lon=32.0587805&appid=599a
aad9726df497d5925f6976cebc40";
http.begin(client, serverPath); // Ініціалізація об’єкту HTTPClient за допомогою
WiFiClient і URL-адреси
int httpResponseCode = http.GET(); // Здійснення GET запиту
if (httpResponseCode > 0) {
Serial.print("HTTP Response code: ");
Serial.println(httpResponseCode);
String payload = http.getString(); // Отримання відповіді у формі рядка
DynamicJsonDocument doc(1024); // Створення JSON документа
DeserializationError error = deserializeJson(doc, payload); // Парсинг JSON даних
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.c_str());
return;
}
// Витягування значень
co = doc["list"][0]["components"]["co"];
no = doc["list"][0]["components"]["no"];
no2 = doc["list"][0]["components"]["no2"];
o3 = doc["list"][0]["components"]["o3"];
so2 = doc["list"][0]["components"]["so2"];
pm2_5 = doc["list"][0]["components"]["pm2_5"];
pm10 = doc["list"][0]["components"]["pm10"];
nh3 = doc["list"][0]["components"]["nh3"];
aqi = doc["list"][0]["main"]["aqi"];
// Визначення словесного значення AQI
switch (aqi) {
case 1:
aqiDescription = "Good";
break;
case 2:
aqiDescription = "Fair";
break;
case 3:
aqiDescription = "Moderate";
break;
case 4:
aqiDescription = "Poor";
break;
case 5:
aqiDescription = "Very Poor";
break;
default:
aqiDescription = "Unknown";
}
// Оновлення дисплею
updateDisplay();
}
else {
Serial.print("Error code: ");
Serial.println(httpResponseCode);
}
http.end(); // Закриття з'єднання
}
}
//Функція оновлення виведенних на дисплей даних
void updateDisplay() {
lcd.clear(); // Очищення екрану
if (displayAQI) {
lcd.setCursor(0, 0);
lcd.print("AQI: ");
lcd.print(aqi);
lcd.setCursor(0, 1);
lcd.print("Desc: ");
lcd.print(aqiDescription);
delay(displayInterval); // Затримка для показу на дисплеї
} else {
lcd.setCursor(0, 0);
lcd.print("CO:"); lcd.print(co);
lcd.setCursor(9, 0);
lcd.print("NO:"); lcd.print(no);
lcd.setCursor(0, 1);
lcd.print("NO2:"); lcd.print(no2);
lcd.setCursor(9, 1);
lcd.print("O3:"); lcd.print(o3);
delay(displayInterval); // Затримка для показу на дисплеї
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SO2:"); lcd.print(so2);
lcd.setCursor(9, 0);
lcd.print("PM25:"); lcd.print(pm2_5);
lcd.setCursor(0, 1);
lcd.print("PM10:"); lcd.print(pm10);
lcd.setCursor(9, 1);
lcd.print("NH3:"); lcd.print(nh3);
delay(displayInterval); // Затримка для показу на дисплеї
}
}