Please use this identifier to cite or link to this item: https://er.chdtu.edu.ua/handle/ChSTU/5827
Full metadata record
DC FieldValueLanguage
dc.contributor.advisorГончаров, Артем Володимирович-
dc.contributor.authorРясик, Віктор Станіславович-
dc.date.accessioned2025-07-08T12:56:42Z-
dc.date.available2025-07-08T12:56:42Z-
dc.date.issued2025-
dc.identifier.urihttps://er.chdtu.edu.ua/handle/ChSTU/5827-
dc.description.abstractМетою роботи є розробка мережевого пристрою на базі NodeMCU ESP32 для моніторингу якості параметрів виробничого середовища з передачею даних на локальний сервер і локальною індикацією. У роботі здійснено аналіз наявних рішень для моніторингу, мікроконтролерів, існуючих протоколів бездротової передачі даних (MQTT, HTTP, WebSocket, ESP-NOW, ZigBee), обґрунтовано вибір сенсорів для контролю температури, вологості та якості повітря, а також індикаторів для локального відображення інформації. Розроблено алгоритм роботи пристрою у середовищі Arduino IDE, реалізовано передачу даних через Wi-Fi, запропоновано схему інтеграції в локальну мережу.uk_UA
dc.language.isoukuk_UA
dc.subjectплатформа NodeMCUuk_UA
dc.subjectмікроконтролерuk_UA
dc.subjectмережевий пристрійuk_UA
dc.subjectсенсорuk_UA
dc.subjectвебінтерфейсuk_UA
dc.subjectпротокол httpuk_UA
dc.titleРозробка мережевого пристрою для моніторингу якості параметрів виробництва з використанням платформи NodeMCUuk_UA
dc.typeBachelor Thesisuk_UA
Appears in Collections:172 Електронні комунікації та радіотехніка (Телекомунікації)

Files in This Item:
File Description SizeFormat 
Б_172_Рясик_Гончаров.pdf
  Restricted Access
4.61 MBAdobe PDFView/Open Request a copy


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ  
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ  
ФАКУЛЬТЕТ ЕЛЕКТРОННИХ ТЕХНОЛОГІЙ, АВТОТРАНСПОРТУ ТА 
МАШИНОБУДУВАННЯ 
КАФЕДРА РОБОТОТЕХНІЧНИХ І ТЕЛЕКОМУНІКАЦІЙНИХ СИСТЕМ ТА 
КІБЕРБЕЗПЕКИ 
 
 
 
Пояснювальна записка 
до кваліфікаційної роботи 
 бакалавра  
освітній ступінь 
 
 
 
на тему «Розробка мережевого пристрою для моніторингу якості параметрів 
виробництва з використанням платформи NodeMCU» 
 
 
 
Виконав: студент  4  курсу, групи   ТК-16  
спеціальності 
 172 Телекомунікації та радіотехніка   
шифр і назва напряму підготовки, спеціальності 
 освітня програма – «Телекомунікації»  
 Рясик В.С.  
прізвище та ініціали 
Керівник  Гончаров А.В.  
прізвище та ініціали 
Рецензент Протасов С.Ю.  
прізвище та ініціали 
 
 
 
Черкаси 2025  
Черкаський державний технологічний університет 
(назва ЗВО) 
Факультет електронних технологій, автотранспорту та машинобудування 
Кафедра Робототехнічних і телекомунікаційних систем та кібербезпеки 
Освітня програма Телекомунікації 
Спеціальність 172 Телекомунікації та радіотехніка 
  
 ЗАТВЕРДЖУЮ 
 Зав. кафедри РТСК 
 д.т.н., професор Володимир ПАЛАГІН 
   
 «  »   2025 року 
 
ЗАВДАННЯ 
на кваліфікаційну роботу здобувачу освітнього ступеня 
«бакалавр» 
(назва ступеня) 
Рясику Віктору Станіславовичу  
(прізвище, ім'я, по батькові) 
1. Тема проекту (роботи)  Розробка мережевого пристрою для моніторингу якості параметрів  
виробництва з використанням платформи NodeMCU 
затверджена наказом по університету від « 05 »   березня    2025 року  № 63/03 
2. Термін здачі студентом закінченого проекту (роботи) 09  червня 2025 року 
3. Вихідні дані до проекту (роботи) в пристрої має бути забезпечено: 
- вимірювання температури, вологості, кількості летких органічних сполук; 
- бездротова передача даних на локальний сервер; 
- робота від мережі з наявністю резервного джерела живлення; 
- програмне забезпечення для зчитування, попередньої обробки, індикації та  
передачі даних з можливістю адаптації для різних виробництв. 
 
4. Зміст розрахунково-пояснювальної записки (перелік питань, що їх належить 
розробити)_________________________________________________________________________ 
1. Аналіз наявних рішень для моніторингу параметрів середовища. 
2. Аналіз та вибір компонентів для пристрою. 
3. Вибір технологій передачі, програмного забезпечення та вебінтерфейсів. 
4. Розробка апаратної та програмної частини.  
5. Охорона праці. 
 
 
 
 
 
 
 
6. Консультанти з проекту (роботи) із зазначенням розділів проекту, що їх стосуються 
  Підпис, дата 
Розділ Консультант завдання         видав завдання 
прийняв 
1. Охорона праці Кожем’якін Олексій Сергійович   
    
    
    
    
    
    
7. Дата видачі завдання 05.03.2025 
Керівник   Артем ГОНЧАРОВ 
 (підпис) (ім’я, прізвище) 
Студент   Віктор РЯСИК 
 (підпис) (ім’я, прізвище) 
 
Календарний план 
Пор. Назва етапів дипломного  Т  е  р  м  і  н         виконання етапів  П   р  и  м ітка 
№ проекту (роботи) проекту (роботи) 
1. Збір та вивчення джерел 05.03.2025-  
 інформації за темою кваліфікаційної 15.03.2025  
 роботи   
2. Патентний пошук та огляд наявних 16.03.2025-  
 рішень 01.04.2025  
3. Вибір мікроконтролерної платформи, 02.04.2025-  
 сенсорів та індикаторів 25.04.2025  
4. Розробка програмного забезпечення 26.04.2025-  
  15.05.2025  
6. Виконання розділу з охорони праці 16.05.2025-25.05.2025  
7. Оформлення пояснювальної записки 26.05.2025-30.05.2025  
    
    
    
 Студент  Віктор РЯСИК 
  (підпис)  
 Керівник проекту  Артем ГОНЧАРОВ 
  (підпис)  
 
 
  
ЗМІСТ 
ВСТУП ………………………………………………………………………………….4 
1. АНАЛІЗ НАЯВНИХ РІШЕНЬ ДЛЯ МОНІТОРИНГУ ПАРАМЕТРІВ 
СЕРЕДОВИЩА …………………………………………………………………….6 
1.1. Комерційні пристрої моніторингу …………………………………………….6 
1.2. Аналіз розглянутих продуктів та виявлення їх переваг і недолiкiв………....19 
2. АНАЛІЗ ТА ВИБІР КОМПОНЕНТІВ ДЛЯ ПРИСТРОЮ ………………………23 
2.1. Розгляд мікроконтролерних платформ ………………………………………24 
2.2. Датчики температури, вологості та якості повітря ………………………….35 
2.3. Індикатори стану та звукова сигналізація ……………………………………40 
2.4. Живлення пристрою та резервні джерела енергії ……………………………42  
3. ВИБІР ТЕХНОЛОГІЙ ПЕРЕДАЧІ, ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ  
ТА ВЕБІНТЕРФЕЙСІВ ……………..……………………………..……………..44 
3.1. Вибір протоколу для передачі даних ……………………….………………...44 
3.2. Вибір платформи вебінтерфейсу для відображення даних…...……………..50 
3.3. Вибір  програмного середовища для розробки програмного забезпечення...53 
4. РОЗРОБКА АПАРАТНОЇ ТА ПРОГРАМНОЇ ЧАСТИНИ …………………….57 
4.1. Розробка апаратної частини пристрою………...……………………………..58 
4.2. Програмне забезпечення мікроконтролера…………………………………..59 
4.3. Написання скрипта для серверної частини…………………………………...67 
4.4. Візуалізація даних за допомогою Node-RED………………………………...75 
5. ОХОРОНА ПРАЦІ………………………………………………………………...78 
5.1. Аналіз небезпек та шкідливостей, що виникають на підприємстві під час 
розробки пристрою…………………………………………………………….78 
5.2. Модернізація системи загального штучного освітлення в лабораторії……..85 
ВИСНОВКИ …………………………………………………………………………..87 
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ……………………………………………..90 
ТК16.025033.001 ПЗ 
Змн. Арк. № докум. Підпис Дата 
Розробив Рясик В.С.  
Розробка мережевого пристрою для Літ. Арк. Аркушів 
 Перевірив Гончаров А.В. моніторингу якості параметрів 4 90 
Рецезент Протасов С.Ю. виробництва з використанням 
 Н. Контр.  платформи NodeMCU ЧДТУ 
 Затвердив   
ВСТУП 
 
У контексті впровадження сучасних технологій у виробничі процеси все 
більшої актуальності набуває застосування пристроїв, які здатні автоматично 
контролювати умови середовища, забезпечувати стабільність технологічних 
параметрів та підвищувати безпеку праці. Одним з найбільш критичних чинників 
у таких умовах є якість повітря, що впливає як на сам процес виробництва, так і на 
здоров’я працівників. Параметри, такі як температура, вологість, атмосферний 
тиск, а також вміст шкідливих речовин у повітрі, потребують постійного 
моніторингу, особливо в закритих або важкодоступних приміщеннях. 
Темою кваліфікаційної роботи є розробка мережевого пристрою для 
моніторингу якості параметрів виробництва з використанням платформи 
NodeMCU. Предметом розробки є апаратно-програмний пристрій, що забезпечує 
безперервний моніторинг параметрів повітря, їх локальну обробку та передачу 
даних з пристрою до сервера для подальшого аналізу та відображення. Розробка не 
є принципово новою, але поєднує сучасні доступні технології. 
Необхідність у такій розробці зумовлена відсутністю на підприємствах 
доступних, відкритих і адаптивних засобів для оперативного контролю 
екологічних умов. Існуючі промислові системи часто є надто дорогими, їх важко 
конфігурувати, або вони є складними в обслуговуванні. Проєкт також має 
потенціал масштабування, що дозволяє адаптувати його до різних задач і 
середовищ застосування. 
Станом на сьогодні подібні технічні рішення перебувають на стадії активного 
розвитку. На ринку є окремі модулі та сенсори для збору інформації про зовнішнє 
середовище, однак повністю завершені, відкриті системи, які поєднують апаратну 
і програмну частину, доступні для доопрацювання та повторення, трапляються 
рідко. Саме тому запропонована розробка має прикладне значення і спрямована на 
розв’язання прикладної задачі з реальним потенціалом впровадження. 
У межах кваліфікаційної роботи поставлено наступні задачі: 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
3 
Змн. Арк. № докум. Підпис Дата  
 
 
 здійснити аналіз існуючих апаратних і програмних рішень у сфері 
екологічного моніторингу; 
 обґрунтувати вибір мікроконтролера, сенсора і допоміжної елементної бази; 
 розробити програмне забезпечення для зчитування та попередньої обробки 
даних; 
 створити механізм передачі даних до локального сервера з використанням 
бездротового з’єднання; 
 розробити візуальну та звукову системи індикації для виявлення відхилень 
без потреби використання телефону, комп’ютера тощо; 
 провести тестування пристрою. 
Очікуваними результатами виконання кваліфікаційної роботи є створення 
прототипу пристрою, який буде зчитувати параметри повітря: температуру, 
вологість та вміст летких органічних сполук; здійснювати індикацію критичних 
значень за допомогою світлодіодів та звукового сигналу; виконувати передачу 
даних у локальну мережу для подальшого аналізу. 
 
  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
4 
Змн. Арк. № докум. Підпис Дата  
 
 
1. АНАЛІЗ НАЯВНИХ РІШЕНЬ ДЛЯ МОНІТОРИНГУ ПАРАМЕТРІВ 
СЕРЕДОВИЩА 
 
На сьогодні існує велика кількість як комерційних, так і саморобних рішень 
для моніторингу навколишнього середовища. Вони відрізняються складністю, 
масштабом застосування, функціоналом, точністю вимірювань, способами 
передачі даних і особливостями візуалізації інформації. У зв’язку з цим постає 
необхідність детального аналізу існуючих систем з метою визначення переваг, 
недоліків та можливості адаптації до конкретних умов виробничих приміщень 
даних систем. В даному розділі буде розглянуто поширені рішення для 
автоматизованого контролю параметрів виробничого середовища, проведено 
порівняльний аналіз їхніх технічних характеристик, обґрунтовано доцільність 
використання певних компонентів та технологій. Отримані результати аналізу 
допоможуть сформулювати вимоги до пристрою, що розробляється, та 
запропонувати найбільш ефективну конфігурацію для реалізації поставленого 
завдання. 
1.1. Комерційні пристрої для моніторингу якості параметрів повітря 
Пристрій Ajax LifeQuality [1] – портативний монітор якості повітря, що 
контролює концентрацію вуглекислого газу (CO₂), температуру та відносну 
вологість повітря. У його основі лежать високотехнологічні сенсори: NDIR-датчик 
CO₂ Senseair Sunrise із точністю ±30 ppm(particles per million – частинок на мільйон) 
+ 3 % від показу та сенсор відносної вологості/температури Sensirion SHT40 з 
похибкою ±0,2 °C і ±2 %. Пристрій вимірює CO₂ раз на хвилину та відображає 
рівень CO₂ кольоровим LED-індикатором з трьома кольорами: зелений – безпечно, 
жовтий – норма, червоний – висока концентрація. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
5 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 1.1 – Монітор якості повітря Ajax LifeQualit 
Ajax LifeQuality не має власного дисплея, окрім світлодіодного індикатора, 
зате зберігає дані в хмарі Ajax Cloud до 2 років та локально до 72 годин у разі втрати 
зв’язку. Підключається винятково до хаба Ajax Hub через радіопротокол Jeweller 
(868 МГц), який забезпечує великий радіус дії, близький до 1700 м на відкритій 
місцевості, і шифрування зв’язку. Живиться від двох стандартних батарейок 
CR123A, яких вистачає приблизно на 3 роки роботи. Корпус компактний, 
77×77×34,5 мм, 127 г, і може встановлюватися на стіл або кріпитися на стіну за 
допомогою магнітного кріплення. У мобільному додатку Ajax, який доступний на 
IOS та Android, можна відслідковувати історію вимірювань, а також налаштовувати 
сповіщення і сценарії автоматизації з іншими пристроями системи. Цільова 
аудиторія – користувачі систем безпеки та розумного дому, яким потрібен надійний 
датчик CO₂ і мікроклімату у приміщенні. 
104.ua Air – український інтелектуальний монітор якості повітря для дому чи 
офісу. Має вбудовані сенсори CO₂ (NDIR однощілинний), температури і вологості. 
На кольоровому LED-дисплеї в режимі реального часу відображається 
концентрація CO₂ (мг/м³), температура, вологість, дата і час  . Окрім цифрових 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
6 
Змн. Арк. № докум. Підпис Дата  
 
 
показів, світлодіод екрану змінює колір залежно від рівня CO₂: зелений (низький), 
жовтий (нормальний), червоний (високий). При перевищенні встановленого порогу 
(стандартно >1200 ppm) вмикається звуковий сигнал тривоги (її можна вимкнути 
налаштуваннями). 
 
Рисунок 1.2 – Монітор якості повітря 104.ua Air 
Пристрій підтримує протокол Zigbee 3.0 і може інтегруватися у систему 
«Розумний дім». Згідно з документацією, цей пристрій передає дані на хаб та 
спеціалізований додаток виробника. Живлення – вбудований перезаряджуваний 
акумулятор ємністю 2400 mAh, який забезпечує близько 4 – 6 годин автономної 
роботи, або мережевий адаптер DC 5В/1А через USB (рекомендується постійно 
живити від мережі). Корпус тонкий та компактний, 90×90×26 мм, з окремою 
підставкою та отвором для настінного монтажу. У приладі є мобільний застосунок 
та хмарний сервіс, в якому можна переглядати історію показників та отримувати 
сповіщення. Температурний діапазон роботи: −10…40 °C, вологість 10 – 95 %. 
104.ua позиціонує цей пристрій для громадських просторів (класи, садки, офіси, 
лікарні тощо), щоб персонал і відвідувачі могли контролювати повітря всередині 
будівлі. 
Aqara TVOC Air Quality Monitor[2] – це компактний датчик рівня летких 
органічних сполук (TVOC) із вбудованими датчиками температури та вологості. 
Продукт має три сенсори (TVOC, температури, вологості), виконані на 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
7 
Змн. Арк. № докум. Підпис Дата  
 
 
електрохімічних і напівпровідникових рішеннях. Діапазон вимірювань TVOC 
становить 0 – 25 мг/м³ з точністю 0,01 мг/м³ (1 ppb – частинок на мільярд). Датчик 
температури вимірює від  -20 до +60 °C з точністю 0,1 °C, вологості 0 – 100 % 
(точність 1 %). Прилад оснащений E-Ink дисплеєм (електронний папір), що 
відображає виміряні дані та споживає мінімум енергії. На одному заряді від двох 
батарейок CR2450 працює більше року. Є лише одна кнопка, що дозволяє 
перемикати різні екрани показників: TVOC, температура, вологість, індекс якості 
повітря тощо. Кріплення – магнітне: пристрій легко кріпиться на стальній поверхні 
або ставиться на підставку. 
 
Рисунок 1.3 – Монітор якості повітря Aqara TVOC 
Пристрій підключається по Zigbee 3.0 (IEEE 802.15.4) через Aqara Hub. 
Підтримуються Apple HomeKit, Google Home, Amazon Alexa та IFTTT. Застосунок 
Aqara Home показує історію даних, надсилає сповіщення та може побудувати 
сценарії автоматизації. Модель орієнтована на домашнє використання: вона 
призначена для контролю хімічного забруднення, наприклад від випар фарби чи 
хімреактивів у приміщеннях з режимом «розумного дому». 
Xiaomi Mijia Air Quality Monitor – цей пристрій є багатофункціональним 
портативним монітором повітря з дисплеєм діагоналлю 3,97-дюймів (800×480 
пікселів). Вимірює п’ять параметрів: концентрацію дрібнодисперсних часток 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
8 
Змн. Арк. № докум. Підпис Дата  
 
 
PM2.5, рівень CO₂, рівень TVOC, температуру та відносну вологість повітря. Для 
кожного показника виводиться також час, дата й тип погоди. Сенсори: Для часток 
PM2.5 використовується для лазерний сенсор – 0-500 мкг/м³ ± 3 мкг/м³, датчик CO₂ 
виготовлений за технологією  NDIR, 400-9999 ppm з відхиленням близько 6 ppm, 
напівпровідниковий TVOC сенсор, термодатчик з діапазоном від нуля до 
п’ятдесяти градусів з відхиленням на градус, і вимірювач вологості – 0-99% ± 8%. 
Пристрій підключається до Wi-Fi 2.4 ГГц і має вбудований модуль Bluetooth 
(використовується як міст для периферійних сенсорів). Живлення – через USB 
Type-C (зарядка 5 В/1 А). Вбудованого акумулятора device має (літієвий акум.), за 
заявою -достатньо для автономної роботи кількох годин. Габарити: 109×64×29,5 
мм, маса 182 г. 
 
Рисунок 1.4 – Xiaomi Mijia Air Quality Monitor 
У комплект входить кабель USB-C і зарядний блок. Показники автоматично 
відправляються у додаток Mi Home (Android/iOS) – там відображається історія 
даних і графіки. Також монітор може управляти іншими пристроями екосистеми 
Xiaomi (повітряними фільтрами, кондиціонерами). Модель підходить для 
домашнього використання: слідкування за забрудненням повітря в кімнатах та 
увімкнення вентиляції/очищення при необхідності. 
Netatmo Healthy Home Coach (офіційна назва – Smart Indoor Air Quality 
Monitor) – це дизайнерський монітор мікроклімату і якості повітря для дому. 
Вимірює показники температури, відносної вологості, рівню CO₂ та рівень шуму в 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
9 
Змн. Арк. № докум. Підпис Дата  
 
 
дБ. Сенсори забезпечені професійною точністю: CO₂-датчик працює в діапазоні 0 
– 5000 ppm, вологість 0 – 100 % (±3 %), температура 0 – 50 °C (±0.3 °C), шум 35 – 
120 дБ. Пристрій має витончений вертикальний алюмінієвий корпус, габарити 
пристрою 45×45×155 мм, і не містить жодного дисплея крім LED-кільця зверху, яке 
при натисканні показує рівень CO₂ і загальний стан (зелений/червоний). Індикація 
показників відбувається у мобільному застосунку. З’єднання відбувається через 
Wi-Fi 802.11b/g/n при частоті 2.4 ГГц. Живлення від USB-адаптера, нестача батареї 
компенсується постійним живленням. Застосунок Netatmo, який можна 
безкоштовно завантажити на iOS та Android, зберігає історію вимірювань у хмарі 
(оновлення відбувається щохвилини, необмежена історія). Підтримує Apple 
HomeKit і голосове керування Siri, а також інтеграцію з IFTTT чи іншими 
голосовими асистентами. Healthy Home Coach розрахований на домашнє 
використання: розміщується пристрій у спальнях, вітальнях, дитячих кімнатах, 
щоб слідкувати за CO₂ та комфортом (якості сну або концентрації). 
 
 
                        
Рисунок 1.5 – Пристрій Netatmo Healthy Home Coach та інтерфейс застосунку Netatmo 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
10 
Змн. Арк. № докум. Підпис Дата  
 
 
Airthings Wave Plus[3] – портативний монітор повітря, орієнтований в першу 
чергу на детекцію радіону (Rn) та інших показників. У цьому датчику є 6 сенсорів: 
пасивний радіоактивний детектор радону (методом альфа-спектрометрії), CO₂ 
(NDIR), TVOC (токсини та хімікати), температуру, відносну вологість і 
атмосферний тиск. Діапазони: CO₂ 400 – 5000 ppm з точністю ±30 ppm ±3% у 
стандартних умовах, TVOC вимірюється у ppb до 2000 ppb, тиск – 500-1100 гПа 
±0,15 гПа, температура – 0-60 °C ±0,1 °C, вологість вимірюється в повному 
діапазоні з точністю ±3 %. Радон: 0 – 500 пікокюрі/л з точністю 10% після місяця 
вимірювання. 
Пристрій виконаний у круглому корпусі діаметром 12 см і товщиною 3,6 см, 
важить приблизно 219 г. Живлення забезпечується від двох батарейок АА,  які 
підтримують роботу до 16 місяців в режимі Bluetooth. Повний збір даних 
здійснюється кожні 5 хвилин. Підключається через Bluetooth Smart 4.2 до 
однойменного мобільного додатку Airthings та опціональний радіохаб SmartLink 
(433 МГц) для Internet-містка. Wave Plus має лише LED-підсвітку навколо корпусу 
для загальної індикації якості повітря. 
 
Рисунок 1.6 – Пристрій Airthings Wave Plus та інтерфейс мобільного додатку Airthings 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
11 
Змн. Арк. № докум. Підпис Дата  
 
 
Мобільний додаток Airthings доступний на iOS та Android показує графіки 
усіх параметрів, надсилає сповіщення при погіршенні та дозволяє аналізувати 
довгострокові тренди. Призначений переважно для домашнього та офісного 
використання, зокрема у спальнях, дитячих кімнатах, підвалах. Також пристрій 
підходить для розумного керування. 
Awair Element[4] – стаціонарний монітор параметрів якості повітря від 
компанії Awair. Вимірює ключові параметри: PM2.5, вміст CO₂, летких сполук, 
вимірює температуру і вологість. Діапазони: PM2.5 0-1000 µg/м³ (±15 µg/м³ або 
±1.5%), TVOC 0-60 000 ppb (до ±10%), CO₂ 400 – 5000 ppm (±75 ppm або 10%), 
температура: від  -40 до 125 °C (точність ±0,2 °C), вологість 0 – 100% (±2%). 
Сенсори: CO₂ – NDIR сенсор Telaire (T6703-5K), PM2.5 -лазерний сенсор Honeywell 
HPM, для вимірювання TVOC використовує сенсор від Bosch BME680. 
Awair Element має Wi-Fi 802.11b/g/n 2.4 ГГц і Bluetooth 4.1 LE для зв’язку з 
мережею і мобільним пристроєм. Постійне живлення забезпечується через 
зовнішній блок живлення 5 В/2 A. Фактичного дисплею в пристрої немає, доступ 
до інформації лише через додаток. Модель орієнтована на домашнє чи офісне 
середовище: призначена для цілодобового моніторингу, надання порад через 
додаток Awair Home і інтеграції з іншими сервісами. Awair Element забезпечує 
збереження історії даних у хмарі, має безплатний мобільний та веб-інтерфейс, 
підтримує Alexa/Google Assistant. 
 
Рисунок 1.7 – Монітор повітря Awair Element 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
12 
Змн. Арк. № докум. Підпис Дата  
 
 
Atmotube PRO[5] це портативний монітор повітря від ATMO. Вимірює 
частинки PM1.0/2.5/10 та органічні випари TVOC, а також температуру, вологість 
та атмосферний тиск. Сенсори: лазерний сенсор Sensirion SPS30 (PM1/2.5/10, 
діапазон 0 – 1000 µg/м³), сенсор TVOC Sensirion SGPC3 (діапазон до 60 ppm) та 
BME280 для температури та вологості ( 0-65°C і 0-100% відповідно). Типові 
похибки: для PM2.5 -до ±5 µg/м³ (0 – 100) чи ±10% (100 – 1000), для TVOC – 15%, 
для т/в: ±1 °C/±3 % (за умови самопрогріву). Апарат енергоефективний: Li-Po 
батарея 2000 mAh забезпечує до 10 днів автономної роботи при інтервалі 15 хв. Не 
має дисплея. Дані передаються на смартфон через Bluetooth 5.0. Пристрій 
компактний ,86×50×22 мм, вага 104 г. Історія вимірювань зберігається у пристрої 
до 10 діб і синхронізується зі смартфоном через застосунок Atmotube для Android 
та iOS. Модель розроблена для активного використання: її можна брати із собою 
надвір (дороги, стадіони, парки), а також ставити у будинку. Через налаштування в 
додатку можна створювати карти забруднення і отримувати повідомлення про 
небезпечний рівень забруднювачів.  
 
Рисунок 1.8 – Atmotube PRO 
Aranet4 Home[6] – Портативний Bluetooth-датчик індексу повітря, 
розроблений у Норвегії. Вимірює CO₂, температуру, вологість та атмосферний 
тиск. CO₂-датчик NDIR покриває 0 – 9999 ppm з точністю ±30 ppm при 15 – 35 °C і 
0 – 80% вологості. Датчик температури вимірює в межах -0-50 °C ±0,3 °C, вологість 
0-85 % ±3%. Тиск вимірюється в межах від -600 до 1100 мбар ±3 мбар. Екран E-Ink 
відображає поточні значення CO₂, температури і вологості. Апарат працює від двох 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
13 
Змн. Арк. № докум. Підпис Дата  
 
 
батарейок АА. Продукт може працювати на одних і тих самих батареях від 4 до 9 
років, залежно від інтервалу опитування. Наприклад, при запиті раз в 10 хвилин 
заряду батарей вистачить приблизно на 6 років. Розміри невеликі – 71×71×24 мм, 
вага 104 г. Зв’язок встановлюється через Bluetooth 4.1 BLE (працює з додатком 
Aranet Home на смартфоні). У додатку показано графіки і статистику, історія даних 
зберігається до 30 днів при 10-хв інтервалі. Модель орієнтована на домашнє та 
офісне середовище. 
          
Рисунок 1.9 – Монітор якості повітря Aranet4 Home(ліворуч) і додаток Aranet 
Home(праворуч)  
IQAir AirVisual Pro є професійним монітором повітря швейцарського 
виробництва. Вимірює PM2.5, CO₂, температуру і відносну вологість. Діапазони: 
лазерний сенсор для PM2.5 від 0,3 до 2,5 мкм, CO₂ в межах 400-10000 ppm, 
температура – 10-40 °C, вологість 0-95%.Для забезпечення живлення виріб має 
вбудований літієвий акумулятор на 1900 mAh що прирівнюється чотирьом годинам 
роботи на одному заряді. Монітор оснащений яскравим LCD-дисплеєм 5” та 
адаптивною підсвіткою. Підключається до мережі через Wi-Fi 2.4 ГГц. 
Вимірювання відображаються в реальному часі на екрані, включаючи історичні 
тренди та онлайн AQI, і синхронізуються з хмарним сервісом AirVisual Cloud. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
14 
Змн. Арк. № докум. Підпис Дата  
 
 
Модель розрахована для дому/офісу/подорожей: може працювати як автономний 
переносний пристрій (є USB-кабель для підзарядки), а також виступає станцією 
даних для глобальної мережі користувачів IQAir. Застосунок IQAir дає змогу 
переглядати дані віддалено, аналізувати довгострокові тренди і ділитися 
результатами. 
 
Рисунок 1.10 – IQAir AirVisual Pro 
Kaiterra Laser Egg[7] – «базовий» монітор якості повітря, сумісний із Apple 
HomeKit. Вимірює PM2.5 від 1 до 999мкг/м3 з точністю в 10%, температуру від -20 
до 100 градусів з похибку на 1 градус Цельсія та відносну вологість від 0% до 99% 
з похибкою в 1%. (Існують модифікації Laser Egg+Chemical з додатковим сенсором 
TVOC і Laser Egg+CO₂ з датчиком CO₂). Сповіщення та історія зчитувань доступні 
через фірмовий додаток Kaiterra Live Air. Датчик підключається по Wi-Fi та 
Bluetooth і передає дані у хмару. Завдяки HomeKit-підтримці його можна 
інтегрувати з системою розумного дому (у тому числі через програми типу Eve 
Home). Корпус оснащений світлодіодним індикатором – зміною кольору він 
сигналізує про рівень забруднення. Працює від мережі (має вбудований 
акумулятор, який слід заряджати через USB). Через високу точність оптичного 
сенсора для часточок, Laser Egg підходить для моніторингу домашнього повітря: 
кухонь, віталень або офісів, де важливо контролювати запиленість та хімічне 
забруднення. Окрім мобільного застосунку, є веб-дашборд Kaiterra із збереженням 
даних та щоденними звітами. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
15 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 1.11 – Kaiterra спереду (ліворуч) та збоку(праворуч) 
Temtop M10+[8] – багатофункціональний монітор «6-в-1» для перевірки 
якості повітря. Вимірює концентрацію CO₂ (400 – 5000 ppm, точність ±40 ppm+5%), 
PM2.5 (0 – 999,9 μg/м³, ±10 µg до 100 μg/м³), TVOC (0 – 5,0 мг/м³), а також 
температуру (-10-60 градусів, ±0,5 °C) і вологість (0 – 99 %, ±3 %). Прилад 
оснащений РК-екраном, на якому одночасно видно усі параметри. Підключається 
до смартфона через фірмовий бездротовий інтерфейс. Живиться  від вбудованої 
батареї 2200 mAh із вказаним часом роботи до кількох годин до потреби 
перезарядки, а також постійно від мережі через USB-C (5 В 1 А). Розміри наступні: 
82×82×31 мм. У комплекті є зарядний адаптер. Через мобільний додаток Temtop 
можна бачити історію вимірювань, налаштовувати попередження (про високий 
вміст CO₂, VOC тощо) та аналізувати дані. Цільове використання – як в приміщенні 
(домі, офісі) для контролю вентиляції, так і на фабриках або навчальних 
приміщеннях для базового моніторингу повітря. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
16 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 1.12 – Пристрій для моніторингу якості повітря Temtop M10+(ліворуч) та 
інтерфейс спеціалізованого додатку Temtop (праворуч) 
Inkbird IAQM-129-W[9] – бездротовий монітор якості повітря з кольоровим 
сенсорним екраном 6,1″. Вимірює і в реальному часі відображає: температуру, 
вологість, CO₂, індекс якості повітря (AQI), формальдегіди (HCHO),вміст летких 
органічних сполук (TVOC),кількість дрібних частинок PM2.5 і PM10, а також дату 
і час. Діапазони: CO₂ 400 – 5000 ppm ±50 ppm+5%, HCHO 0 – 2,0 мг/м³ ±15%, TVOC 
0 – 5,0 мг/м³ ±15%, PM2.5/PM10 0 – 999 μg/м³ ±10%, температура – 10-40 °C ±1,5 °C, 
вологість 20 – 80 % ±5%. Даний пристрій оснащений Wi-Fi 2.4 ГГц для віддаленого 
моніторингу через свій застосунок InkbirdLife, а також підтримує екологічний 
режим ECO, при роботі якого дисплей частково гаситься для економії енергії. 
Живлення – вбудований акумулятор на 2700 mAh, який дозволяє працювати 
близько 80 годин в ECO-режимі; рекомендовано пристрій заряджати під час 
використання.Екран має регульовану підсвітку, на якому відображаються всі 
показники. Корпус має розміри близько 21,5×10×12 см, екран 14,1×6,0 см. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
17 
Змн. Арк. № докум. Підпис Дата  
 
 
Через мобільний додаток InkbirdLife користувач отримує сповіщення про 
перевищення норм (CO₂, PM2.5 тощо), може переглядати історії вимірювань до 
року і експортувати дані. Монітор має звукову та світлову тривоги при високих 
показниках CO₂, PM2.5 або AQI. Модель розрахована на індексну оцінку якості 
повітря у великих приміщеннях: вдома, в офісах, школах. Її можна встановити на 
стіл або закріпити на стіну для постійного контролю мікроклімату. 
 
Рисунок 1.13 – Inkbird IAQM-129-W 
1.2 Аналіз розглянутих продуктів та виявлення їх переваг і недоліків 
Аналіз характеристик існуючих датчиків повітря та моніторів мікроклімату 
допомагає виокремити основні аспекти, що впливають на ефективність та зручність 
системи моніторингу. В ході порівняння важливо розглянути вимірювані 
параметри, точність сенсорів, способи індикації і оповіщення, спосіб живлення та 
наявність резервного живлення, а також методи підключення і обміну даними. 
Кожен з цих аспектів має свої переваги і обмеження залежно від призначення 
пристрою та потреб користувача. Детальний аналіз допоможе розглянути ці 
аспекти та сформулювати критерії, яким має відповідати пристрій, що 
розробляється. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
18 
Змн. Арк. № докум. Підпис Дата  
 
 
 Точність вимірювань і типи сенсорів: Для CO₂-датчиків найточнішими є 
NDІR-сенсори, які на рівні в 1000 частинок на мільйон дають похибку біля 3%. 
Саме їх застосовано в пристроях Ajax, 104.ua та професійних приладах, таких як 
Aranet4 та Іnkbіrd. MOS-датчики і електрохімічні сенсори дешевші, але менш 
чутливі при низьких концентраціях. Аналогічно, для пилу та часток надійні лазерні 
сенсори, як у Kaіterra або ІQAіr, мають кращу точність, ніж інфрачервоні. Пристрої 
типу Xіaomі Mіjіa чи Temtop використовують компактні сенсори, точність яких 
нижча, але їх похибка є комфортною для орієнтовного моніторингу. Якщо говорити 
про датчики температури й вологості, найпоширенішими є цифрові датчики з 
типовою точністю ±0.2°C та ±2% для вологості. Для бюджетних датчиків точність 
гірша: близько ±0.5°C і ±2-5% вологості. Датчики ЛОС у побутових моніторах 
зазвичай базуються на метал-оксидних напівпровідниках MOS і реагують на 
широкий спектр органічних газів. Їх низька вартість пов’язана з залежністю 
чутливості від температури та вологості середовища, що знижує точність 
вимірювань. До того ж, зазвичай прилад показує не концентрацію окремої 
речовини, а сумарний показник летких речовин у повітрі. Деякі детектори, 
наприклад Іnkbіrd, використовують кращі  сенсори для точнішого визначення 
окремих газів, таких як формальдегіди, але такі рішення дорожчі і застосовуються 
не так часто. 
 Індикація та оповіщення: Пристрої мають різні способи виведення 
інформації. Так, деякі моделі обладнані локальними дисплеями або світлодіодними 
індикаторами, які дають можливість миттєво отримати інформацію без 
необхідності смартфона. Інші розраховані на взаємодію через хмару та мобільний 
додаток і не мають власного екрану. Перевагою локальної індикації є миттєвий 
візуальний сигнал і можливість сповіщення на місці. Натомість бездисплейні 
хмарні моделі відстежують дані віддалено і надсилають сповіщення, що зручно для 
централізованого контролю, але менше підходить для локального миттєвого 
реагування. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
19 
Змн. Арк. № докум. Підпис Дата  
 
 
 Живлення та автономність: Багато пристроїв орієнтовані на автономність: 
вони працюють від батарей або вбудованого акумулятора. Одні працюють на 
батареях, інші мають перезаряджувальний акумулятор. Безпровідні монітори 
легше розміщувати, проте з’являється необхідність регулярного заряджання чи 
заміни батарей. З іншого боку, дротові або PoE-пристрої забезпечують стабільне 
живлення і майже не потребують обслуговування: вони завжди «онлайн» і не 
вимагають додаткових дій після встановлення. Проте їх установка складніша, через 
потребу прокладати кабелі, що додатково призводить до обмеженої мобільності.  
 Спосіб підключення і передача даних: Прилади використовують різні 
комунікаційні рішення: власні радіопротоколи, Wі-Fі, Zіgbee або Ethernet. Zіgbee і 
радіомодулі часто вимагають особливого обладнання і закритої екосистеми; це 
спрощує налаштування «з коробки», тобто пристрій працюватиме майже відразу 
після розпаковки, але ускладнює інтеграцію в сторонні системи. Wі-Fі, Bluetooth 
або Ethernet надають відкриті можливості передачі: дані можуть надсилатися 
одразу на сервер чи локальну базу для зберігання і віддаленого контролю. З іншого 
боку, залежність від Інтернету робить ці рішення уразливими до відключень 
мережі. 
 Гнучкість налаштування та відкритість: Комерційні рішення часто «закриті»: 
користувач не може змінити, перепрограмувати пристрій або додати нові функції 
самостійно. Це зручно для масового споживача, але незручно в нішевих 
застосуваннях.  
 Вартість пристроїв: Професійні монітори мають високу ціну через 
високоякісні сенсори й широкі можливості. Бюджетні моделі доступніші для 
звичайного користувача, але часто уступають за функціональністю, що 
проявляється меншою кількістю сенсорів та простотою інтерфейсу. Саморобні 
системи на масових модулях пропонують найнижчу собівартість при задовільній 
якості вимірювань.  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
20 
Змн. Арк. № докум. Підпис Дата  
 
 
За результатами порівняння можна сформулювати основні критерії, яким має 
відповідати розроблюваний пристрій. Пристрій, що підлягає розробці повинен 
мати можливість реконфігурації, тобто підлаштування під необхідні потреби, 
простоту підключення до мережі, прийнятну якість, точність та стабільність 
результатів вимірювання. Фізична індикація та індикація при відхиленні від норм 
є обов’язковою вимогою для швидкого реагування на зміни. Живлення пристрою є 
постійним, проте з наявністю резервного живлення з можливістю перезаряджання, 
на випадок відключення електроенергії. Слід реалізувати зв’язок з віддаленим 
сервером, на якому відбуватиметься накопичення даних для подальшої обробки та 
візуалізації. 
  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
21 
Змн. Арк. № докум. Підпис Дата  
 
 
2. АНАЛІЗ ТА ВИБІР КОМПОНЕНТІВ ДЛЯ ПРИСТРОЮ 
 
Після аналізу готових рішень та визначення критеріїв для розроблюваного 
пристрою, необхідно ретельно підібрати компоненти, що будуть задовольняти ці 
самі критерії. Центральним елементом системи є мікроконтролер, на якому 
базуватиметься логіка роботи пристрою, обробка сигналів та подальша передача 
даних до сервера, а також керування індикаторами та іншими периферійними 
модулями. При виборі мікроконтролера слід враховувати кількість виводів для 
підключення, можливі інтерфейси зв’язку, обсяг пам’яті, енергоспоживання та 
підтримку сучасного програмного забезпечення.  
Оскільки основною функцією пристрою є вимірювання показників якості 
повітря, важливим етапом є розгляд бази сенсорів. До складу пристрою можуть 
входити сенсори для контролю температури, вологості, атмосферного тиску. Тип 
обраного сенсора буде істотно впливати на точність, стабільність, чутливість та 
функціонал, а отже і на кінцеву ефективність пристрою. 
Для виведення інформації користувачу застосовуються індикатори, які 
можуть бути реалізовані у вигляді світлодіодних сигналізаторів, графічних 
дисплеїв або комбінованих інтерфейсів. Такі рішення дозволяють забезпечити як 
загальну візуалізацію стану, так і детальне виведення числових параметрів. Так як 
індикації того, що показники не виходять за межі буде достатньо, дисплеї не будуть 
розглядатися. Особливої уваги потребує реалізація індикації критичних 
перевищень – вона повинна бути візуально помітною і зрозумілою навіть без 
доступу до сервера або мобільного додатку. 
Зважаючи на вимоги до автономності й стабільної роботи пристрою в умовах 
можливих перебоїв з електроживленням, необхідно передбачити резервне джерело 
живлення. Це може бути акумулятор або батарея з можливістю підзарядки, яка 
забезпечить безперервну роботу пристрою у разі втрати зовнішнього живлення.  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
22 
Змн. Арк. № докум. Підпис Дата  
 
 
У цьому розділі буде детально розглянуто наявні варіанти мікроконтролерів, 
сенсорів, індикаторів та джерел живлення, їх технічні характеристики, переваги, 
недоліки та придатність до поставленого завдання. Результати аналізу дозволять 
обґрунтовано обрати найбільш доцільну конфігурацію для реалізації пристрою в 
умовах виробничого середовища. 
2.1.  Розгляд мікроконтролерних платформ 
Arduino Uno (Rev3)[10] на контролері 8-бітному ATmega328P. Робоча 
напруга становить 5 В, вхідна рекомендована – від 7 до 12В через роз’єм живлення 
або на контакт Vin, тактова частота – 16 МГц. Arduino Uno має 14 цифрових I/O 
виводів, 6 з них з 8-бітною широтньо-імпульсною модуляцією (ШІМ), 6 аналогових 
входів на 10-бітному АЦП. Підтримується інтерфейс I²C, SDA/SCL на аналогових 
виводах A4 та A5, SPI на D10-13 та UART, вивід Serial на D0/D1. Вихідні лінії 
можуть давати до 20 мА струму.  
 
Рисунок 2.1 – Плата Arduino Uno Rev3(ліворуч) та схема виводів (праворуч) 
Пам’ять: Flash 32 КБ, пів кілобайта з яких йде  під завантажувач, оперативна 
пам’ять SRAM становить 2 КБ, EEPROM 1 КБ. Габарити середні: 68.6×53.4 мм. 
Має вбудований завантажувач на основі STK500, програмується по USB (через 
ATmega16U2) або ICSP. Платформа сумісна з Arduino IDE; сторонні програматори 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
23 
Змн. Арк. № докум. Підпис Дата  
 
 
не потрібні. Мікроконтролер має повну підтримку Arduino IDE та бібліотек. 
MicroPython і STM32CubeIDE не підтримуються через 8-бітний AVR. 
Arduino Nano розроблений на тому самому мікроконтролері, маж ту саму 
робочу напругу та тактову частоту процесора, має 16 цифрових каналів, 6 із них з 
ШІМ, 8 аналогових входів, одни UART, SPI і I2C аналогічно Uno APB на D10-13, 
A4/A5, всі з тією ж логікою 5 В. Робоча напруга 5 вольт, струм вихідних контактів 
до 20мА. Типове споживання мікроконтролера 19мА. Флеш пам’ять = 32 КБ, 2 
зайняті під завантажувач. 2 КБ SRAM та 1 КБ EEPROM. За габаритами меня, ніж 
попередня плата розробника: 45×18 мм, маса приблизно 7 грам. Компактна плата 
для монтажу на макетній платі. Плати з USB на базі FTDI/CH340 до яких можна 
під’єднатися за домогою Mini-USB кабеля. Підтримує Arduino IDE, так само як 
Uno. 
 
Рисунок 2.2 – плата Arduino Nano з видом зверху і знизу(ліворуч) та схема виводів 
(праворуч) 
Arduino Mega 2560 розроблений на мікроконтролері ATmega2560 який є 8 
розрядним контролером з тактовою частотою 16МГц. Ця плата має 54 цифрові I/O, 
15 з яких ШІМ та16 аналогових входів. Вбудовано 4 UART на виводах Serial0-3, 
SPI на контактах D50-53, I²C на з’єднанняї D20 і D21. Струм на вихідній шині – 
20 мА. Живлення: Робоча напруга 5 В. Рекомендований вхід 7-12 В, допустимий 6-
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
24 
Змн. Арк. № докум. Підпис Дата  
 
 
20 В. Максимальний струм на виході 20 мА. 3.3В лінія витримує до 50 мА. Об’єм 
пам’яті набаго більший, ніж у попередніх варіантів: Flash 256 КБ, де 8 КБ 
зарезервовано під bootloader, SRAM 8 КБ, EEPROM 4 КБ. Розміри наступні: 
101.52×53.3 мм, маса ≈ 37 г. USB підключення відбувається через ATmega16U2. 
Завантажувач ATmega2560 сумісний з протоколом STK500. Arduino IDE підтримує 
Mega. Повна підтримка Arduino IDE та бібліотек бібліотеки). MicroPython не 
сумісний. 
  
Рисунок 2.3 – Плата мікроконтролера Arduino Mega 2560 (ліворуч) і схема виводів 
(праворуч) 
Arduino Pro Mini використовує ATmega328P та маж дві версії: одна працює 
від 5 В та має тактову частоту 16 МГц, інша працює від 3.3 В з тактовою частотою 
8 МГц. Має 14 цифрових I/O ,6 з ШІМ, 6 аналогових входів на 10-бітному 
АЦП.Підтримує інтерфейси UART, SPI, I²C – по одному (на рівні 
мікроконтролера). Номінальна напруга становить 3.3/5 -12 вольт в залежності від 
конфігурації при подачі на контакт RAW. Кожен цифровий вихід може віддавати 
до 40 мА. Флеш пам’ять = 32 КБ, 2 КБ йдуть bootloader, SRAM = 2 КБ, EEPROM = 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
25 
Змн. Арк. № докум. Підпис Дата  
 
 
1 КБ. Ця плата дуже компактна, 33х18 мм, але не має паяних роз’ємів. Через такі 
малі габарити, програмування відбувається через зовнішній програматор. 
Підтримка ПЗ Arduino IDE та доступ до бібліотек аналогічний версіям Nano/Uno. 
  
Рисунок 2.4 – плата мікроконтролера Arduino Mega 2560 (ліворуч) і схема виводів 
(праворуч) 
Arduino Micro розроблений на 32-канальному ATmega32U4 на 16 МГц, має 
20 цифрових та 12 аналогових виводів з 10-бітним АЦП, підтримує UART, SPI, I²C. 
Вбудований USB-контролер дозволяє емулювати клавіатуру/мишу. Робоча напруга 
5 В, живлення через Micro-USB. Струм на вихід 20 мА та до 50 мА на лінії 3.3 В. 
Має 32 КБ флеш пам’яті, виділено на 4 КБ bootloader, SRAM 2.5 КБ, EEPROM 1 КБ. 
Габарити невеликі 48×18 мм, маса ≈ 13 г. Може встановлюватися на макетну плату. 
Програмується безпосередньо через USB за допомогою завантажувача AVR109 
Підтримка Arduinno IDE та бібліотек аналогічна попереднім контролерам. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
26 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 2.5 – Плата мікроконтролера Arduino Micro (ліворуч) і схема виводів (праворуч) 
Arduino Due з 32-бітним мікроконтролером Atmel SAM3X8E і частотою 
84 МГц, має 54 цифрових виводи, 12 аналогових входів з 12-бітним АЦП та ще 2 
виходи з 12-бітним ЦАП. Ще контакти з підтримкою UART,4 , I2C, 2, 1 SPI, USB 
OTG, JTAG. 3.3 В є робочою напругою даного мікроконтролера. Рекомендований 
вхід 7-12 В. Максимальний сумарний вихідний струм по всіх лініях – 130 мА. 
Виходи толерантні лише до 3.3 В, тому робота з 5В може призвести до проблем. 
Пам’ять: Flash 512 КБ, вся доступна для користувача, SRAM 96 КБ. Внутрішньої 
EEPROM немає. Розміри близькі до Arduino Mega, 101.52×53.3 мм. Для зашивання 
через вбудований програматор використовується USB micro-B. Для повного 
очищення пам’яті є окрема кнопка «Erase». Підтримує всі бібліотеки Arduino, може 
використовувати Arduino Due бібліотеки.  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
27 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 2.6 – Плата мікроконтролера Arduino Due (ліворуч) і схема виводів (праворуч) 
 
Рисунок 2.7 – Схема виводів (продовження)  
NodeMCU v1.0: основою даного мікроконтролера є 32-бітний ESP8266EX на 
80 МГц. На борту 11 виводів GPIO, 1 канал АЦП, 10-біт. Будь-який GPIO може 
бути програмований під PWM, SPI, I²C. Також є один апаратний UART. На платі 
стоїть На платі стабілізатор 3.3 В, можна подавати через вивід VIN або 
безпосередньо 3.3 В на 3V3. Вихідний струм GPIO до 12 мА рекомендовано. Flash 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
28 
Змн. Арк. № докум. Підпис Дата  
 
 
пам’ять становить 4 МБ, SRAM  64 КБ. Постійної EEPROM немає, але вона 
емітована у flash. Розміри невеликі –  49×26 мм. Через наявний вбудований 
програматор, в ролі якого зазвичай виступає CH340, можна зашивати плату через 
Arduino IDE, Lua або MicroPython. Є кнопки Reset і Flash для перезапуску і 
очищення відповідно. Так як можна зашивати через попередньо вказані 
середовища, підтримка бібліотек, очевидно, є. Також підтримує бібліотеки для 
роботи по Wi-Fi, HTTP тощо. В плату для розробки інтегровано Wi-Fi 802.11b/g/n, 
але немає Bluetooth. Немає апаратного ЦАП, є лише один АЦП. Платформа 
популярна для IoT, але має обмежену пам’ять і один процесор. 
 
Рисунок 2.8 – NodeMCU v1 (ліворуч) та схема виводів (праворуч) 
NodeMCU ESP32-WROOM-32[11] мікроконтролер – двоє Tensilica Xtensa 
32-бітних LX6 (Dual-Core) до 240 МГц. Архітектура 32-бітна. На мікроконтролері 
розміщено  30 GPIO . Підтримуються 18 каналів 12-бітного АЦП, 2 канали 
8-бітного ЦАП, 10 вбудованих датчиків ємнісного дотику. Є до 16 каналів 
апаратного ШІМ. Також підтримується SPI, I²C, I²S, CAN 2.0, UART (3 порти), 
SDIO, RMT тощо. Є вбудовані Wi-Fi 802.11b/g/n Bluetooth 4.2  модулі. Робоча 
напруга 3.3. Живлення можна подавати 5 В на VIN та конвертувати на 3.3 В. 
Вихідний струм GPIO – до 12 мА. Споживання 80-240 мА при активному Wi-Fi, у 
глибокому сні падає до мікроампер.Пам’ять: ROM 448 КБ (ядра), SRAM 520 КБ 
(64К+448К). Зовнішня Flash = 4 МБ. Опціонально можуть бути додані PSRAM в 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
29 
Змн. Арк. № докум. Підпис Дата  
 
 
інших модулях. На платі є CP2102 або CH340, micro-USB чи USB-C для живлення 
і програмування. Плата підтримує Arduino IDE (Espressif ESP32 core), MicroPython, 
та офіційний ESP-IDF. Є також підтримка через PlatformIO, Eclipse, 
STM32CubeIDE. Повністю підтримує Arduino-бібліотеки. Є можливість 
використання MicroPython, CircuitPython, ESP-IDF/C SDK. Багато готових 
драйверів для периферії. 
 
Рисунок 2.9 – Схема виводів NodeMCU ESP32-WROOM-32 
Raspberry Pi Zero W працює на процесорі Broadcom BCM2835, який має одне 
ядро з частотою 1 ГГц, 32-біт. Пам’ять: 512 МБ SDRAM. На ньому є роз’єми mini-
HDMI, micro-USB OTG (запрограмовані через плату) та micro-USB для живлення. 
На платі є 40-контактний GPIO-header сумісний із Pi B+/2/3. З них доступні до 26 
GPIO: 2 SPI (SCLK, MOSI, MISO, CS0), 2 I²C (SDA, SCL), 2 UART (TXD/RXD), 
PWM (GPIO12/13) та інші. Немає вбудованого АЦП чи ЦАП, лише цифрові GPIO. 
Для живлення потребує 5 В через micro-USB. Споживання зазвичай ~100 мА без 
навантаження; з увімкненим Wi-Fi збільшується до 170 мА.В якості операційної 
системи використовує Linux (Raspberry Pi OS). Для роботи необхідна microSD з ОС. 
На платі немає мікроконтролера з bootloader’ом, тому прошивки завантаження 
через HDMI та флеш. Підтримує Python (RPi.GPIO бібліотеку), C/C++, Node.js, 
Scratch та багато інших середовищ. Pi Zero має інтегрований модуль Wi-Fi 2.4 ГГц 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
30 
Змн. Арк. № докум. Підпис Дата  
 
 
802.11n та Bluetooth 4.1/BLE. Вбудований AP/GPIO для камери та дисплея. Розмір: 
65×30 мм. 
 
Рисунок 2.10 – схема виводів Raspberry Pi Zero 
Raspberry Pi Pico Мікроконтролер: RP2040 (розробка Raspberry Pi) – два ARM 
Cortex-M0+ ядра до 133 МГц. Кількість виводів – 26 GPIO через два 20-контактні 
роз’єми, з них 3 аналого-цифрових входи: ADC0..2 на GPIO26-28, 12-біт. Є 2 
контролери PIO для гнучкого програмного I/O. Також SPI, I²C, UART, PWM, I²S, 
UART, PWM доступні на відповідних GPIO. Аналогових виходів немає. 
Мікроконтролер живиться від USB-C або VSYS, 1.8-5.5 В входу, регульовано на 
3.3 В платою. Струм вихідних виводів стандартно до 15 мА. Споживання на ядро 
становить 0.1-100 мА в залежності від навантаження. На платі є 2 МБ флеш пам’яті, 
264 КБ SRAM, EEPROM відсутня, тому пам’ять програм зберігається у флеші. 
Розміри трохи менші за попередній продукт: 51×21 мм. На платі є дві кнопки: 
Bootsel (для входу в USB-драйвер завантаження UF2) та RESET.  Завантажувач 
вбудований у ROM. Програмується через USB (режим UF2 – перетягання файлу на 
диск). Підтримується Arduino, MicroPython/CircuitPython, C/C++ SDK (VSCode, 
gcc). Плати Pico широко підтримуються офіційною бібліотекою для C/C++ (SDK) і 
MicroPython. Arduino IDE з відповідним драйвером також працює. Доступні 
драйвери для багатьох сенсорів. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
31 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 2.11 – схема виводів Raspberry Pi Zero 
Мікроконтролер STM NUCLEO-F401RE[12] виготовлений на ARM Cortex-
M4F, 32-біт, з тактовою частотою 84 МГц. За архітектурою схожий на платформи 
Arduino, має додаткові «morpho»-контакти. MCU має 84 виводи, 50 з яких доступні 
як GPIO, 16 каналів 12-бітного АЦП, немає апаратного DAC (лише компаратори). 
Є таймери, 6×16-бітні, 2×32-бітні. Для комунікаційних протоколів має 4 UART, 3 
I²C, 3 SPI. Плати має живлення +3.3 В, +5 В, GND, VBAT. Вхід VIN 7-15 В 
регулюється до 3.3 В на платі. Робоча напруга VDD = 1.7…3.6 В. В робочому 
режимі споживає близько 40-70 мА. Максимальний струн на GPIO становить 20 мА 
на вивід. Пам’ять: Flash 512 КБ, SRAM 96 КБ. EEPROM відсутня. Як за 
архітектурою, так і за форм-фактором схожий на  Arduino UNO ориґінал – 
68.6×53.4 мм.  Має вбудований програматор ST-LINK/V2-1, підключається по USB 
як ком порт. Підтримується Arduino IDE, STM32CubeIDE, mbed, Atollic 
TrueSTUDIO тощо. Можлива прошивка через SWD/JTAG. Має сумісність зі STM32 
HAL, Cube. Є низка бібліотек Arduino для STM32. Можливе застосування mbed-
OS. MicroPython/ CircuitPython зазвичай не використовуються на цьому MCU. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
32 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 2.12 – STM32 Nucleo F401RE (ліворуч) та його pinout (праворуч) 
Після розгляду різних варіантів від різних виробників, було обрано плату 
розробника NodeMCU ESP32-WROOM-32 з наступних причин: Вбудований Wі-Fі 
та Bluetooth дозволяє зменшити габарити пристрою, уникнути пошуку Wі-Fі 
модуля і відповідно зменшити вартість системи, на відміну від продукції Arduіno, 
яка не має вбудованого модуля; Серед вищеперерахованих опцій, цей 
мікроконтролер є одним з найбільш потужних. Двоядерний процесор на з високою 
частотою,що забезпечує швидку обробку, великий об’єм пам’яті та оперативної 
пам’яті надають значний ресурс для обробки даних, багатозадачність та 
можливість збільшити функціонал за потреби без хвилювання через низьку 
продуктивність; Плата пропонує багато цифрових входів/виходів з різними 
можливостями, такими як UART, SPІ, І2C, ЦАП Це дає гнучкість у підключенні 
датчиків і виконавчих пристроїв: ESP32 працює на Arduіno-ядрі, тож доступні 
тисячі Arduіno-бібліотек, а також власні бібліотеки Espressіf. Завдяки активній 
спільноті пошук необхідних бібліотек і адаптація функціоналу значно спрощені; 
через технологію виготовлення, ESP32 підтримує кілька режимів глибокого сну. 
Під час очікування даних плата може переходити в режим енергозбереження, що 
дозволяє продовжити роботу від акамуляторів; Через уже вбудований програматор, 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
33 
Змн. Арк. № докум. Підпис Дата  
 
 
задача прошивки спрощується до простого підключення до плати за допомогою 
кабеля; за відношенням ціна/якість, NodeMCU ESP32-WROOM є найбільш 
оптимальним вибором. Варіанти від Raspberry Pі використовувати в якості 
мікроконтролера недоцільно через високу вартість та потужність, близьку до 
мінікомп’ютерів. Arduіno можна використовувати як альтернативу, але в цьому 
випадку треба обирати Wі-Fі модуль. 
2.2. Вибір сенсорів температури, вологості та якості повітря 
Під час розробки пристрою для моніторингу параметрів навколишнього 
середовища особливу роль відіграє правильний вибір сенсорів, здатних точно і 
стабільно вимірювати ключові показники, такі як температура, відносна вологість 
та якість повітря. Від ефективності цих компонентів залежить достовірність 
отриманих даних, а також загальна функціональність та надійність системи. На 
ринку представлено велику кількість як спеціалізованих, так і універсальних 
датчиків, що відрізняються як принципами дії, так і електричними, метрологічними 
та конструктивними характеристиками. 
З метою визначення найбільш придатних варіантів слід провести 
порівняльний аналіз сучасних сенсорів, що доступні у відкритому продажу, з 
урахуванням таких критеріїв як точність вимірювання, діапазон значень, тип 
вихідного сигналу, енергоспоживання, габарити та сумісність із популярними 
мікроконтролерними платформами. У цьому підрозділі буде розглянуто широкий 
спектр сенсорів, включаючи як окремі, так і комбіновані рішення, з акцентом на 
практичність їх використання у складі компактного автономного пристрою. 
DS18B20[13] –  це цифровий датчик температури. Діапазон вимірювання – 
від -55 до 125 °C, точність ±0,5 °C при -10..85 °C. Працює від 3-5 В.  
SHT31[14] від Sensіrіon – цифровий датчик температури та вологості. 
Діапазон температури: -40…125 °C, вологість 0…100 %. Типова точність – ±0,2 °C 
для T і ±2 % для вологості. Живлення 2,4-5,5 В. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
34 
Змн. Арк. № докум. Підпис Дата  
 
 
HDC2080[15], виробник Texas Іnstruments – цифровий сенсор вологості та 
температури . Діапазон вологості 0-100 % з типовою похибкою ±2 %, температура 
від -40 до 85 °C з похибкою ±0,2 °C. Потребує живлення 1,62-3,6 В. Дуже мале 
споживання порядку 0,1-0,3 µA у режимі вимірювання. 
  
Рисунок 2.13 – DS18B20 Рисунок 2.14 – SHT31 Рисунок 2.15 – HDC2080 
Sі7021[16] від Sіlіcon Labs – цифровий датчик відносної вологості та 
температури . Точність: ±3 %, ±0,4 °C діапазон −40…85 °C, вологості 0-100 %. 
Працює при 1,9-3,6 В. 
AHT20[17] від Aosong – цифровий  датчик температури і вологості. Діапазон 
температури -40…85 °C, вимірює вологість в діапазоні 0-100 % при 25 °C. Точність 
вологості ±2 %, температури ±0,3 °C. Живлення 2,0-5,5 В, вихід – 12-бітний зразок 
по . 
DHT22[18] від AM2302, Aosong – бюджетний цифровий датчик вологості і 
температури. Діапазон вологості 0-100 % з похибкою 2-5 %, температури -
40…80 °C з похибкою ±0,5 °C. Живлення 3-5 В.  
   
Рисунок 2.16 – Sі7021 Рисунок 2.17 – AHT20 Рисунок 2.18 – DHT22 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
35 
Змн. Арк. № докум. Підпис Дата  
 
 
DHT11[19] від Aosong – дуже дешевий цифровий датчик вологості й 
температури. Діапазон вологості 20-80 % з похибкою 5 %, температури 0-50 °C з 
похибкою ±2 °C. Живлення 3-5 В, частота читання – не більше 1 разу на секунду. 
BME280[20], виробник Bosch – цифровий комбінований датчик. Вимірює 
температуру в межах 40…85 °C, відносну вологість 0-100 % і барометричний тиск 
300-1100 гПа. Типова точність: ±3 % вологість, ±1 °C температура, ±1 гПа тиск. 
Працює від 1,7-3,6 В. Мінімальний струм споживання – одиниці мікроампер. 
MQ-135[21], виробник Wіnsen – дешевий аналоговий металооксидний 
газовий сенсор. Чутливий до широкого спектру газів NH₃, NOx, CO₂, летких 
органічних сполук, диму. Потрібно живлення 5 В,  приблизно 150 мА споживання. 
Має високе енергоспоживання і потребує попереднього розігріву, точність 
невисока, застосовується для приблизної індикації якості повітря. 
            
    Рисунок 2.19 – DHT11  Рисунок 2.20 – BME280 Рисунок 2.21 – MQ-135 
SGP30[22] Sensіrіon – цифровий комбінований газовий сенсор. Повертає два 
показники: еквівалент CO₂, ppm і загальні леткі органічні сполуки TVOC, ppb. 
Виробником заявлено точність близько 15 % всередньому, і робочий діапазон CO₂ 
400-60 000 ppm, TVOC 0-60 000 ppb. Працює від 1,62-1,98 В, споживає близько 
49 мА. Підходить для моніторингу ІAQ, але вимагає регулярного калібрування. 
SGP40[23]  Sensіrіon– цифровий  газовий сенсор для VOC. Повертає сирий 
сигнал сенсора та оброблений «VOC Іndex» масштаб 1-500 згідно з вбудованим 
алгоритмом. Робочий діапазон в чистому повітрі: 0-1000 ppm еквівалент VOC. 
Потрібні 1,7-3,6 В і 2,6 мА споживання. Дає тільки узагальнений індекс якості 
повітря сумарних VOC, без розпізнавання окремих газів. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
36 
Змн. Арк. № докум. Підпис Дата  
 
 
CCS811 від AMS – цифровий  датчик якості повітря. Вимірює CO₂ в ppm та 
TVOC в ppb. Робочий діапазон: CO₂ 400-8192 ppm, TVOC 0-1187 ppb. Живлення 
1,8-3,6 В. Вимагає «прогріву» – приблизно 20 хв для стабілізації показників. 
Перевага – цифровий вихід і вбудовані алгоритми перетворення, проте чутливість 
обмежена і показники не є абсолютними концентраціями, а умовними індексами. 
 
Рисунок 2.22 – SGP30 Рисунок 2.23 – SGP40 Рисунок 2.24 – CCS811 
BME680[24] від Bosch – 4-в-1 цифровий датчик. Вимірює температуру, 
вологість, тиск та загальний газовий сигнал VOC. Температурний діапазон -
40…85 °C, вологість 0-100 %, тиск 300-1100 гПа. Точність температури ±1 °C, 
вологості ±3 %, газовий сигнал характеризується відхиленням до ±15 %. Дуже 
компактний і енергоефективний в плані споживання <0,1 мА. 
BME688[25] Bosch Sensortec – оновлена версія BME680. Аналогічно вимірює 
температуру, вологість, тиск і газовий опір VOC; покращено алгоритми обробки 
газового сигналу. Має вбудований алгоритм для класифікації VOC. Основні 
характеристики близькі до BME680 температура -40…85 °C, вологість 0-100 %, 
тиск 300…1100 гПа, точність аналогічна. 
ZMOD4410[26] Renesas/ІDT – модуль газового сенсора з алгоритмом ІAQ. 
Вимірює концентрацію TVOC в мг/м³ або ppb і дає оцінку якості повітря та CO₂. 
Діапазон: забезпечує високу роздільність у низьких концентраціях до 6000 µg/m³ 
TVOC. Живлення 1.7…3.6 В. Середній струм надзвичайно малий і дорівнює 
десяткам мікроампер, є вбудований компенсатор температури та пам'ять 
налаштувань.  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
37 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 2.25 – BME680 Рисунок 2.26 – BME688 Рисунок 2.27 – ZMOD4410 
HDC1080 Texas Іnstruments – цифровий комбінований сенсор вологості та 
температури, . Точність: ±2 % тип та ±0.2 °C. Діапазон: вологості – 0-100 %, 
температури -40…125 °C. Дуже низьке енергоспоживання: у режимі вимірювання 
1.3 мкА, у режимі сну  – 0.1 мкА. Живлення 2.7…5.5 В. 
MіCS-6814[27] SGX Sensortech – аналоговий МОХ-модуль комбінація трьох 
чутливих елементів для вимірювання CO, NO₂, NH₃ та інші. Має три аналогові 
виходи для кожного каналу. Діапазони: в залежності від вимірюваного газу, від 0 
до 1000 ppm,  вимагає калібрування під конкретне газове середовище. Живлення 
5 В, 150 мА. 
LM35 Texas Іnstruments – популярний аналоговий датчик температури. 
Діапазон -55…+150 °C; точність ±0.5 °C при 25 °C. Живлення 4…30 В, споживання 
114 мкА. Простий у використанні, не потребує калібрування. Чутливість до шумів 
та стабільність напруги живлення треба враховувати. 
  
Рисунок 2.28 – HDC1080 Рисунок 2.29 – MіCS-6814 Рисунок 2.30 – LM35 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
38 
Змн. Арк. № докум. Підпис Дата  
 
 
HІH-4030[28] Honeywell – аналоговий сенсор відносної вологості. Вимірює 
від 0…100 %. Точність ±3.5 % при 50 % вологості. Живлення 5 В, струм ~80-
200 µA. 
TGS2600 Fіgaro – аналоговий MOSFET-сенсор, чутливий до низьких 
концентрацій CO і утилю VOC. Типовий діапазон: від одиниць ppm до десятків 
ppm. Живлення 5 В, 30 мА.  
   
Рисунок 2.31 – HІH-4030                 Рисунок 2.32 – TGS2600 
Серед розглянутих датчиків BME680 від Bosch Sensortec вирізняється тим, 
що інтегрує всі необхідні параметри в одному чіпі: температуру, вологість та якість 
повітря. Це зменшує витрати на апаратну частину та полегшує інтеграцію один 
пристрій замість кількох. Він має високу довгострокову стабільність, низьке 
середнє споживання. Оскільки сенсор є цифровим, його можна легко підключити 
та знати з нього показники. Крім того, виробник надає готовий алгоритм для 
компенсації впливу температури та вологості, що забезпечує надійний індекс 
якості повітря в примещенні. У порівнянні з іншими варіантами, наприклад, 
SGP30/SGP40 + окремий температурно-вологісний датчик або прості аналогові 
сенсори VOC, BME680 забезпечує кращу компактність, енергоефективність та 
точність без необхідності зовнішньої калібрування. Саме ці переваги роблять даний 
сенсор оптимальним вибором для багатьох застосувань із контролем мікроклімату 
і якості повітря. 
2.3. Індикатори стану та звукова сигналізація 
У системах моніторингу параметрів навколишнього середовища, особливо в 
умовах виробництва, критично важливо забезпечити миттєву та наочну індикацію 
стану пристрою. Для цього використовуються світлові та звукові індикатори, які 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
39 
Змн. Арк. № докум. Підпис Дата  
 
 
дозволяють швидко реагувати на зміну умов без необхідності залучення 
комп’ютера, смартфона чи підключення до віддаленого сервера. Використання 
локальної індикації особливо виправдане у випадках, коли важливі сигнали мають 
бути помічені одразу наприклад. Працівник, який знаходиться поруч із пристроєм, 
може візуально або на слух виявити зміну стану без жодної додаткової взаємодії з 
інтерфейсом. Це суттєво підвищує безпеку та оперативність реагування на 
потенційні небезпеки.У пристрої, що розробляється, для реалізації світлової 
індикації використовується модуль WS2812, який представляє собою смужку з 
вісьмома RGB-світлодіодами з послідовним цифровим керуванням. Це дає змогу 
виводити кольорові сигнали про стан системи, та реалізувати ефекти, що 
привертають увагу до змін у навколишньому середовищі. Кількість діодів 
дозволить збільшити кількість використовуваних сенсорів, без потреби ставити 
додаткові. Для звукової індикації використовується модуль MH-FMD – це 
компактний активний пьєзо-бузер, який генерує чіткий звуковий сигнал при подачі 
логічного рівня. Завдяки простоті підключення та помітному рівню гучності в 
85 дБ, він забезпечує ефективне попередження персоналу про критичні ситуації. 
 
Рисунок 2.33 – WS2812                 Рисунок 2.34 – MH-FMD  
Таким чином, обрані індикатори забезпечують базову автономну 
сигналізацію, що не залежить від зовнішніх пристроїв і забезпечує надійність 
функціонування системи у виробничих умовах. 
 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
40 
Змн. Арк. № докум. Підпис Дата  
 
 
2.4. Живлення пристрою та резервні джерела енергії 
Надійне та безперервне електроживлення є одним із ключових факторів 
стабільної роботи будь-якої автоматизованої системи моніторингу, особливо в 
умовах промислового середовища, де збій у живленні може призвести до втрати 
важливої інформації, зупинки процесів або несвоєчасного реагування на критичні 
відхилення параметрів довкілля. Саме тому у проєкті передбачено як основне 
джерело живлення, так і резервну систему живлення, що забезпечує автономність 
роботи пристрою в разі відключення або нестабільності мережі. У звичайному  
режимі пристрій живиться від мережі змінного струму через блок живлення на 5 В 
з роз’ємом USB Type-C. Такий формат підключення забезпечує зручність, 
універсальність та високий рівень сумісності з сучасним обладнанням. У випадках 
перебоїв або повного зникнення напруги в мережі активується резервне джерело 
живлення, що складається з двох літій-іонних акумуляторів формату 18650, 
ємністю 2600 мА·год кожна. Таке рішення дозволяє пристрою продовжити роботу 
ще протягом тривалого часу, зберігаючи функціональність моніторингу та 
індикації. Літій-іонні батареї мають низку переваг, що роблять їх особливо 
придатними для резервного живлення в автономних мікропроцесорних системах: 
 Висока енергетична щільність при невеликих розмірах; 
 Відсутність ефекту пам’яті, що дозволяє заряджати батареї в будь-який 
момент без втрати ємності; 
 Низький саморозряд, що забезпечує збереження заряду при простої; 
 Тривалий ресурс циклів заряд/розряд; 
 Невелика вага, що спрощує інтеграцію в компактні пристрої. 
Для зарядки акумуляторів, а також організації безперервного живлення до 
пристрою, використовується зарядно-живильний модуль XL-LBC3.1. Цей модуль 
поєднує в собі функції зарядного пристрою для літій-іонних акумуляторів і 
підвищувального перетворювача, що забезпечує стабільну напругу 5 В на виході 
навіть у разі зміни напруги батареї в процесі розряду. Крім того, він має систему 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
41 
Змн. Арк. № докум. Підпис Дата  
 
 
захисту від перенапруги, перевантаження, короткого замикання, а також індикацію 
рівня заряду, що сприяє безпечній і стабільній експлуатації всієї системи. 
Технічні характеристики XL-LBC3.1 наступні:  
 Вхідна напруга живлення 5.0 -5.5 В подається через USB Type-C або паяльні 
контакти IN+ та IN-;  
 Напруга заряджання – стандартна  4.20 В (±1%) для акумуляторів 3.7 В, ще є 
перемички для підвищення перемички для підвищення до 4.35 В або 4.40 В, не 
рекомендується змінювати напругу заряджання без відповідних елементів, що 
забезпечать стабільну роботу; 
 Зарядний струм до 3.0 А при зарядці через USB Type-C і до 2.0 А через 
паяльні контакти IN+ / IN-;  
 Вихідна напруга 5 В ±0.1 В, стабілізована;  
 Максимальний вихідний струм –  3.1 А;  
 Індикація рівня заряду з 4 LED-індикаторів (25%, 50%, 75%, 100%);  
 Захист від короткого замикання, перевантаження по струму, перезаряду та 
перерозрядження, перевищення напруги на вході та виході;  
 Габарити – 27×20×5 мм. 
  
Рисунок 2.35 – Модуль XL-LBC3.1 
Завдяки такій архітектурі живлення, розроблений пристрій може 
функціонувати в безперервному режимі незалежно від стану електромережі, що є 
важливою вимогою для систем, відповідальних за моніторинг виробничих 
показників та безпеку середовища.  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
42 
Змн. Арк. № докум. Підпис Дата  
 
 
3. ВИБІР ТЕХНОЛОГІЙ ПЕРЕДАЧІ, ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ ТА 
WEB-ІНТЕРФЕЙСІВ 
 
Сьогодні вибір технологій передачі даних та програмного забезпечення має 
критичне значення для реалізації надійних, безпечних і зручних IoT-систем. 
Стрімкий розвиток інтернету речей призвів до появи численних стандартів зв’язку 
та протоколів. Сучасні технології охоплюють як фізичні способи передавання 
даних, наприклад Ethernet, Wi-Fi, Bluetooth, ZigBee, LoRa, так і протоколи високого 
рівня – зокрема HTTP, MQTT, CoAP, WebSocket, AMQP тощо. Сьогодні можна 
спостерігати тенденцію переходу до бездротових рішень із низьким 
енергоспоживанням, можливістю масових підключень та підвищеним рівнем 
захисту.  
 Цей розділ буде присвячений трьом пунктам: вибору технологої 
передачі даних, вибору програмного забезпечення для програмування пристрою та 
огляду веб-інтерфейсів для виведення зібраних пристроєм даних у зручному 
форматі. У першому пункті буде розглянуто різні технологої зв’язку, що дозволить 
визначити їх переваги, недоліки, сфери застосувань та дозволить обрати найбільш 
підходящий варіант. Другий пункт буде відноситись до програмного середовища, 
у якому буде писатись програма для програмування пристрою. У третьому пункті 
увага буде зосереджена на інтерфейсах, які виводять дані у зручному для 
користувача форматі. 
3.1. Вибір протоколу для передачі даних  
З огляду на пріоритет інформаційної безпеки локального зв’язку, 
розглядаємо протоколи, що можуть працювати в приватній мережі без виходу в 
інтернет. Серед них HTTP, MQTT і WebSocket мають різні парадигми роботи: 
HTTP – запит-відповідь, MQTT – публікація-підписка, WebSocket – постійне 
двостороннє з’єднання. Для кожного протоколу наведемо загальні характеристики, 
переваги й недоліки, оцінку масштабованості та складності реалізації. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
43 
Змн. Арк. № докум. Підпис Дата  
 
 
HTTP (Hypertext Transfer Protocol). HTTP – це поширений протокол клієнт-
серверного обміну у форматі «запит-відповідь» на основі TCP/IP. Він відомий 
своєю простотою та широкою підтримкою в розробці веб-додатків[29]. 
Основними перевагами цього протоколу є: популярність серед розробників 
та велика кількість доступних клієнтських і серверних бібліотек; проста модель 
обміну, GET/POST, який підходить для періодичної передачі даних; можна 
використовувати стандартні HTTP-сервери. HTTP візуально легко відлагоджувати 
та тестувати за допомогою браузера.  
До недоліків слід віднести: великий трафік через HTTP-заголовки, де кожен 
запит і відповідь містять метадані, при частому оновлені даних призводить до 
низької ефективності; HTTP не забезпечує вбудованої підтримки відкладеного 
режиму; відсутність  механізмів гарантованої доставки чи затриманих повідомлень. 
Обмін за HTTP є синхронним і односпрямованим, тобто клієнт ініціює запит, в той 
час як сервер лишається пасивним, тому сервер не може активно повідомляти 
клієнт про події без додаткових механізмів[30].  
Масштабованість: HTTP добре підходить для невеликої кількості пристроїв 
– до 30 користувачів. Якщо ж одночасно багато клієнтів відправляють запити на 
один сервер, навантаження буде значно зростати, бо кожне з’єднання вікдривається 
окремо.  
Складність реалізації: низька. Реалізація HTTP-клієнта/сервера на NodeMCU 
доволі проста: достатньо викликати стандартні функції підключення по TCP та 
формувати HTTP-запит або обробляти серверні обробники.  
MQTT (Message Queuing Telemetry Transport). MQTT – це легкий протокол 
публікації-підписки, розроблений спеціально для IoT. Він працює через 
посередника (брокера), що пересилає повідомлення між ‘темами’[31]. Після 
встановлення TCP-з’єднання клієнти постійно підтримують сесію з брокером. 
Протокол передбачає рівні доставки (QoS), затримані та утримувані повідомлення, 
а також економне використання пропускної здатності.  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
44 
Змн. Арк. № докум. Підпис Дата  
 
 
Переваги MQTT наступні: дуже мале мережеве накладення, заголовок 
складається з декількох байтів, завдяки чому MQTT є ефективним з точки зору 
трафіка при частих оновленнях. Повідомлення може передаватися від одного 
відправника до багатьох отримувачів так звана ‘публікація на тему’, що ефективно 
при масштабуванні: один брокер здатен обслуговувати тисячі клієнтів[32]. 
Реалізовані механізми QoS та утриманих повідомлень гарантують доставку 
інформації навіть при нестабільному з’єднанні. MQTT отримує інформацію про 
статус підключення клієнта і у випадку розриву може повідомляти про це. 
Протокол асинхронний – клієнт отримує повідомлення відразу, щойно вони 
надійшли від брокера.  
Недоліки: MQTT потребує окремого MQTT-брокера, наприклад Mosquitto 
або HiveMQ, для маршрутизації повідомлень, що ускладнює розгортання системи. 
Для невеликих проєктів це додатковий пункт що вимагає налаштування. MQTT-
протокол складніше, ніж HTTP, особливо у контексті організації тем і обробки 
підписок. Також, для коротких одноразових запитів використання цього протоколу 
може бути недоцільним – встановлення з’єднання відбувається один раз, але 
передає багато службової інформації. 
В контексті масштабованості MQTT дуже розвинутий. Цей протокол 
задуманий для мереж з великою кількістю пристроїв. Брокер обробляє багато 
підключень і розсилає дані лише тим користувачам, які підписані на нього. 
Наприклад, кілька пристроїв можуть одночасно отримати повідомлення одного 
публікатора без «спаду» на кожного, що робить MQTT дуже ефективним у 
масштабуванні[33].  
Складність реалізації: середня, адже важливо реалізувати клієнта MQTT на 
NodeMCU і налаштувати брокер у локальній мережі. Хоча багато задач вирішують 
готові бібліотеки, головними проблемами є саме необхідність мати посередника 
(брокера) та розуміння топології тем. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
45 
Змн. Арк. № докум. Підпис Дата  
 
 
WebSocket – це протокол для повнодуплексного, коли обидві сторони можуть 
одночасно обмінюватися файлами, двостороннього зв’язку поверх TCP, який 
починається з HTTP-хендшейку – встановлення зв’язку, а далі підтримує відкрите 
з’єднання. На відміну від HTTP, WebSocket дозволяє серверу в будь-який момент 
надіслати повідомлення клієнту без попереднього запиту. Це корисно для 
реального часу та «push»-додатків[34].  
Переваги цього протоколу: після встановлення WebSocket-з’єднання 
затримка між повідомленнями мінімальна, оскільки сесію не закривається. 
Протокол дозволяє серверу і клієнту обмінюватися повідомленнями одночасно, що 
підходить для інтерактивних застосувань. Зменшення накладних витрат через те, 
що з’єднання тримається відкритим, а отже менше витрат йде на заголовки 
порівняно з повторними HTTP-запитами.  
Проблемою WebSocket є те, що він вимагає більш складного серверного 
компонента, який здатен одночасно обслуговувати багато відкритих каналів. 
Утримання численних відкритих підключень споживає ресурси сервера, такі як 
пам’ять, обробка, тому масштабування великих систем на WebSocket є більш 
складною задачею. Також необхідно реалізувати відстеження з’єднання і  
перепідключень у випадку розриву, так як протокол не робить цього автоматично. 
Крім того, у деяких корпоративних мережах WebSocket-з’єднання можуть 
блокуватись, через що доводиться робити резервні варіанти. Цей протокол 
недоцільео використовувати для задач, де дані рідко змінюються або мають лише 
односторонню природу, тому що функціонал не використовується наповну та не 
виправдовується складність використання. 
Масштабованість даного протоколу помірна. WebSocket підходить для 
сотень одночасних клієнтів на одному сервері, але при переході до тисяч з’єднань 
може знадобитися розбиття на кластери, проксі чи балансування з’єднань. Кожен 
клієнт постійно утримує з’єднання, тому велике число пристроїв створює постійне 
навантаження. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
46 
Змн. Арк. № докум. Підпис Дата  
 
 
Складність реалізації є високою, бо для роботи необхідно налаштувати 
WebSocket-сервер на Node.js, Python тощо, або окремий фреймворк. Для 
розробника важливі питання побудови протоколу повідомлень і керування станом 
з’єднань. Це складніше за використання простих HTTP-методів чи готових MQTT-
бібліотек.  
ZigBee – відкритий стандарт для низькошвидкісних бездротових мереж. Цей 
стандарт базується на фізичному рівні IEEE 802.15.4 (2.4 ГГц, 250 кбіт/с)[35]. У 
ZigBee-мережі існує координатор – центральний контрольний вузол, який 
синхронізує мережу, роутер для маршрутизації пакетів і кінцевий девайс. 
Координатор є єдиною точкою входу для мережі. ZigBee встановлює мережу і 
підтримує маршрут між будь-якими двома вузлами. Передавання даних 
здійснюється у маленьких рамках – максимум 127 байт. Пристрої спілкуються у 
виді одиночних пакетів або періодичних повідомлень, споживаючи малу 
потужність. 
Переваги: через дуже низьке споживання, вузли можуть працювати роками 
на батарейках завдяки рідким коротким передачам. ZigBee підтримує велику 
кількість вузлів до 65 000 адрес, що робить можливим широкомасштабні 
розгортання. На всіх рівнях використовується AES-128 шифрування для безпеки. 
Кожен новий вузол під’єднується до найближчого маршрутизатора, що збільшує 
стабільність. ZigBee – відомий стандарт, тому спільноті є активна підтримка, 
форуми та приклади. 
Недоліки: пропускна здатність обмежена, від 20 до 250 кбіт/с, і підходить 
тільки для невеликих пакетів – не можна передавати великі потоки мультимедіа. 
Хоча підтримується велика кількість адрес, на практиці зазвичай будують мережі 
до кількох сотень вузлів через обмеження процесорів та трафіку.  Зв’язок працює 
на 2.4 ГГц, а це означає ймовірність перешкод від Wi-Fi/Bluetooth. Реалізувати цей 
стандарт доволі складно: потрібен стек IEEE802.15.4 і мережеві та додатні рівні 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
47 
Змн. Арк. № докум. Підпис Дата  
 
 
ZigBee. Через обмеження стеку, кадр вміщає до 127 байт. Для більших передбачено 
розбиття на фрагменти, але це призводить до пониження ефективності.  
ESP-NOW є протоколом бездротового зв’язку від Espressif (ESP8266, ESP32), 
що дозволяє організувати пряму рівноправну комунікацію без використання 
маршрутизатора[36]. Комунікація відбувається без встановлення стандартного Wi-
Fi-з’єднання. Пристрої обмінюються короткими повідомленнями до 250 байт у 
власному форматі. З’єднання ініціюється односторонньо – один вузол додає іншого 
у список, і потім може миттєво передавати інформацію.  
Переваги: Дуже низька затримка передачі, немає потреби у точці доступу або 
інтернет-роутері, що спрощує налаштування локальної мережі. Порівняно з 
повноцінним Wi-Fi, енерговитрати суттєво менші. У зв’язку з цим ESP-NOW добре 
підходить для швидкого обміну даними між ESP-пристроями. Немає необхідності 
у відключенні від Wi-Fi або створенні пари – кожен ESP може приймати й 
передавати одночасно. Достатньо просто реалізувати, треба лише бібліотеку ESP-
NOW і налаштувати функції зворотнього виклику. Хоча споживання електроенергії 
вище, ніж у деяких вищезгаданих протоколів, воно істотно нижче за класичний Wi-
Fi, бо радіомодуль може швидко переходити в режим очікування між передачами. 
Затрати енергії залежать від частоти звернень. Стандарт підтримує як 
односторонню, та і двосторонню передачу. 
Недоліки: Належить лише до екосистеми Espressif – працює лише на чіпах 
ESP8266/ESP32, інші модулі Wi-Fi просто не будуть підтримувати ESP-NOW. 
Протокол не стандартний, тому немає широкої підтримки серед сторонніх 
пристроїв. Також інформацію можна знайти лише в спільноті, що пов’язана з ESP. 
Канал не має захисту за замовчуванням, хоча можливе шифрування AES-128 при 
конфігурації. Розмір пакету при передачі обмежений і становить 250 байт. Немає 
маршрутизації тому мережа не самовідновлюється при виході пристрою з неї. 
Мережа ESP-NOW не є хорошим вибором з перспективи масштабованості. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
48 
Змн. Арк. № докум. Підпис Дата  
 
 
Зазвичай один пристрій може додати до 20 адрес. Більша кількість вузлів призведе 
до перевантаження часу ефіру без ретрансляції. 
Для цього проєкту було обрано протокол HTTP. Головними аргументами є – 
простота та широке розповсюдження HTTP-сервісів. Оскільки система працює в 
локальній мережі з невеликою кількістю пристроїв і передає помірні обсяги даних, 
висока надійність та легкість використання HTTP виправдовує вибір, адже інші 
варіанти є менш доцільними. На користь HTTP говорить знайомість розробників з 
ним і готові клієнтські бібліотеки для NodeMCU. У нашому випадку, потреба в 
механізмах як QoS чи в реальному часі відсутня, тому переваги MQTT чи 
WebSocket. Створення і підтримка окремого MQTT-брокера чи WebSocket-сервера 
ускладнювало б систему без суттєвої вигоди. Таким чином, HTTP найкраще 
відповідає вимогам цього проєкту: його простота реалізації й підтримка локального 
захищеного середовища дозволяють швидко налаштувати передачу даних з 
NodeMCU до контролюваної точки збору даних. 
3.2. Вибір платформи вебінтерфейсу для відображення даних 
Для візуалізації інформації і керування системою на базі NodeMCU 
розглянемо кілька популярних платформ: Node-RED, Grafana, ThingsBoard, Blynk 
та власну реалізацію на HTML+JavaScript. Для кожної платформи наведемо її 
можливості, переваги і недоліки. 
Node-RED – це середовище з візуальним редактором потоків, розроблене для 
IoT і автоматизації. Воно побудоване на Node.js і дозволяє використовувати готові 
блоки з функціональністю збору, перетворення та візуалізації даних. Завдяки цьому 
користувач з слабкими навичками програмування може створити веб-інтерфейс без 
глибокого кодування. 
Переваги: простота створення інтерфейсів завдяки модульній структурі 
конструктора; наявні потужні розширення наприклад, Node-RED Dashboard, для 
побудови інформаційних паленей; вбудована підтримка IoT-протоколів; активна 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
49 
Змн. Арк. № докум. Підпис Дата  
 
 
спільнота з тисячами готових модулів; можливість працювати на дешевому «edge»-
обладнанні. 
Недоліки: цей веб-інтерфейс не призначений для дуже складних проєктів як 
візуально, так і програмно. Можливості інтерфейсу обмежені візуальним 
конструктором; відсутність тонкого контролю над стилями та поведінкою, 
порівняно з кодом; обмежена продуктивність при великій кількості одночасних 
користувачів або даних. 
Grafana – це система для моніторингу та візуалізації даних з різних джерел: 
бази даних, сервіси метрик тощо. Зазвичай використовується для побудови 
дашбордів. Програма орієнтована на моніторинг і аналітику, а не на управління 
пристроями чи подання завдань. Не має вбудованих засобів для обміну командами. 
Інтерфейс інтуїтивний, що зручно, але інтеграція даних вимагає знань про джерела 
й SQL; для новачка потрібен час на налаштування. 
Переваги: надзвичайно потужний інструмент для редагування графіків і 
панелей; підтримка безлічі джерел даних, таких як Prometheus, InfluxDB, 
Elasticsearch, SQL і т.д.; ефективна робота з великими обсягами даних, корисна 
аналітика у вигляді графіків, попереджень; має безпечні механізми авторизації; 
зростальна спільнота та наявність плагінів для розширення функцій. 
Недоліки: орієнтована на статичну візуалізацію даних, тому менш зручна для 
створення інтерактивного користувацького інтерфейсу; вимагає налаштування 
бази даних чи сервера для збору метрик; потребує часу та технічних знань, аби 
повністю розкрити потенціал. 
ThingsBoard – це відкрита IoT-платформа «все-в-одному» для керування 
пристроями, збору та обробки даних, створення графічних дашбордів. Вона надає 
засоби обліку пристроїв, правила для обробки повідомлень, а також гнучкі віджети. 
Платформа пропонує багато готових рішень, але налаштування інтерфейсів 
потребує ознайомлення перед початком роботи. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
50 
Змн. Арк. № докум. Підпис Дата  
 
 
Переваги цього веб-інтерейсу наступні: спеціалізований інструмент для IoT 
з багатьма можливостями «з коробки» – це означає, що всі основні функції та 
інструменти доступні відразу після встановлення; розширюваний інтерфейс 
користувача; інтегровані провайдери повідомлень та протоколи передачі; 
потужний редактор панелей для моніториншу з візуальними віджетами; підтримка 
великих систем, включаючи IoT. 
Недоліки: доволі «важка» система для розгортання, бо потребує сервера з 
базами даних, Java, брокера повідомлень тощо; більш складна в налаштуванні і 
вивченні для невеликих проєктів; поріг входу середній-високий через багато 
компонентів; візуальна складність і можливі затримки інтерфейсу в безкоштовній 
версії. 
Blynk – це платформа орієнтована на хмару, що фокусується на створенні 
мобільних додатків для пристроїв. За допомогою візуального редактора Blynk 
можна швидко зібрати інтерфейс для смартфона або інтернету з віджетами. 
Переваги: дуже простий інтерфейс побудови застосунку, добре підходить для 
прототипів і MVP – продукту з мінімальними можливостями; підтримує численні 
типи контролів (слайдери, світлодіоди, поля введення тощо); є готові шаблони; 
безліч прикладів та інтеграція з популярними голосовими сервісами. Можливість 
масштабування на мільйони пристроїв при використанні хмарної інфраструктури; 
безкоштовний рівень для початківців. Зручність використання: дуже висока для 
кінцевого користувача і тих, хто хоче швидко отримати працюючий інтерфейс. 
Недоліки: орієнтований більше на мобільні додатки, ніж на веб-панелі: 
налаштовувати візуалізацію на ПК/браузері можна, але перевага все ж таки у 
мобільності; потреба підключення до хмарного сервісу Blynk або до платного 
приватного сервера, що робить систему менш локальною; менша гнучкість в 
редагуванні поведінки віджетів. Попри достатній інструментарій для базових 
завдань керування та моніторингу, для складних завдань можливості обмежені. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
51 
Змн. Арк. № докум. Підпис Дата  
 
 
Власна розробка на HTML + JavaScript: цей підхід передбачає самостійне 
створення веб-сторінки за допомогою HTML, CSS і JS, яка обмінюється даними з 
NodeMCU. 
Переваги: максимальна гнучкість та свобода дизайну – можна реалізувати 
будь-який вигляд інтерфейсу без обмежень платформи; повний контроль над 
функціональністю і даними. Не потрібна спеціалізована платформа – достатньо 
знань веб-технологій. Теоретично безмежний функціонал з точки зору 
можливостей, але залежить від навичок розробника. 
Недоліки: найвищий поріг входу для розробника. Потрібно робити все з нуля: 
глибоко програмувати на JavaScript/HTML/CSS, створювати та налаштовувати 
власний сервер. Розробка займає найбільшу кількість часу, до того ж потрібно 
тестувати сумісність з браузерами. Менш зручний для швидкого прототипування 
або при мінімальних навичках розробки користувача. 
Висновок: після розгляду вищевказаних варіантів Node-RED виявилася 
найбільш доцільною для цього проєкту. Вона поєднує простоту візуального 
конструювання інтерфейсів з активною спільнотою та готовими модулями. Node-
RED дозволяє швидко створити інтерактивну панель керування та моніторингу. 
Інші платформи, такі як Grafana, ThingsBoar надають потужніші можливості 
аналітики, але складніше інтегруються і не такі зручні для швидкого 
прототипування інтерфейсу. Blynk орієнтований на мобільні додатки і не дає 
потрібної гнучкості у веб-візуалізації. Тому Node-RED зі своєю модульністю, 
графічним інтерфейсом і підтримкою популярних протоколів був обраний як 
платформа для веб-інтерфейсу. 
3.3.     Вибір програмного середовища для розробки програмного 
забезпечення 
Розглянемо характерні середовища програмування та їх можливості, на 
основі чого  можна буде зробити вибір ПЗ, яке буде використовуватись в 
подальшому: 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
52 
Змн. Арк. № докум. Підпис Дата  
 
 
Arduino IDE: базове офіційне середовище для розробки на мікроконтролерах 
Arduino і сумісних програмних платформах. Воно просте й інтуїтивне у 
використанні, спеціально заточене під Arduino/C++, вбудована «бібліотека» 
прикладів і менеджер бібліотек дозволяють швидко додавати все, що потрібно. 
Також Arduino IDE має активну спільноту і велике сховище бібліотек з прикладами 
для NodeMCU. Arduino активно оновлюється та має велику спільноту, тому знайти 
підтримку не буде проблемою. 
Недоліки: обмежений функціонал редактора через відсутність продвинутих 
інструментів редагування, автодоповнення або організації проектів, тому робота з 
великими проектами може бути проблематичною. Немає вбудованого 
відлагоджувача, є лише серійний монітор який відсилає повідомлення, якщо ті 
прописані в скрипті. 
Visual Studio це професійне програмне середовище для Windows. Підтримує 
безліч мов: C++, C#, .NET, Python тощо. Це надзвичайно потужний інструмент з 
відлагодженням на рівні абстрактного коду, з розумним автозавершенням, 
інтеграцією з контролем версій та менеджером  пакетів. Для підтримки ESP є 
можливість встановити відповідний плагін. VS часто оновлюється та має величезну 
спільноту з добре задокументованим середовищем. 
Недоліки: працює тільки на Windows, потребує потужного комп’ютера і 
багато ресурсів, професійні версії платні, є безкоштовна версія є, але вона має 
обмеження. Для простіших вбудованих проєктів може бути надто проблемним 
рішенням. Через багатофункціональність, робота в цьому середовищі може бути 
складною, бо треба час на звикання. 
Eclipse: потужний безкоштовний IDE з відкритим кодом, популярний у Java, 
але також має C/C++ CDT. Eclipse є безкоштовним, працює ні різних ОС, підтримує 
багато мов: C, C++, Java, Python через плагіни. Має розширювану архітектуру 
плагінів. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
53 
Змн. Арк. № докум. Підпис Дата  
 
 
Недоліки: Через велику кількість вкладок, конфігурацій, та виконуваних 
кроків для проєктів це важке в освоєнні IDE. Може сповільнюватися на слабких 
машинах, важко налаштовувати. користувацький інтерфейс неінтуїтивний для 
новачків; дістосовує багато ресурсів. 
PyCharm має чудову підтримку Python, зручне середовище з можливістю 
автозавершення, відлагодження, можна використовувати для мікроконтролерів на 
MicroPython. Програма регулярно оновлюється та має велику спільноту. 
Недоліки: не дуже заточений під роботу з мікроконтролерами, тому треба 
завантажувати додаткові плагіни. Середовище погано адаптоване під роботу з 
іншими мовами. Не має підтримки компіляціх прошивок, їх завантаження, що 
викликає потребу у додатковому налаштуванні або завантаженні плагінів. 
У зв’язку з роботою з мікроконтролерами, найдоцільнішим вибором є 
Arduino IDE. Це середовище спеціально створене для програмування вбудованих 
систем, має вбудований компілятор, може працювати з портами без сторонніх 
плагінів, що дозволяє зашивати ПЗ без додаткових кроків. У ньому є готові 
бібліотеки для основних сенсорів і модулів. Хоча професійні IDE на зразок Visual 
Studio чи Eclipse володіють більш функціональні, їх надмірна складність, 
ресурсоємність, через потребу у додатковому налаштуванні їх використання важко 
виправдати. 
У випадку, коли система має серверну частину (наприклад, обробка чи 
збереження даних), доцільно використовувати PyCharm – це середовище зручне 
для написання логіки взаємодії з базами даних. Таким чином, Arduino IDE буде 
основною платформою для написання прошивки мікроконтролера, тоді як PyCharm 
– інструментом для супутнього програмного забезпечення на стороні сервера. 
У цьому розділі проведено аналіз варіантів передачі даних, програмних 
платформ та середовищ розробки для проєкту на NodeMCU. З розглянутих 
протоколів було обрано HTTP через простоту, доступність бібліотек і достатній 
рівень безпеки в локальній мережі. Аналіз веб-інтерфейсів показав, що платформа 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
54 
Змн. Арк. № докум. Підпис Дата  
 
 
Node-RED найкраще задовольняє вимоги зручної візуалізації та інтеграції з IoT. 
Серед численних програмних середовищ розробки перевагу отримала Arduino IDE, 
бо вона забезпечує достатні можливості для роботи з NodeMCU.  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
55 
Змн. Арк. № докум. Підпис Дата  
 
 
4. РОЗРОБКА АПАРАТНОЇ ТА ПРОГРАМНОЇ ЧАСТИНИ 
Під час розробки мережевого пристрою необхідно на початковому етапі 
сформувати структурну схему системи. Це дозволяє визначити логічні 
взаємозв’язки між компонентами, уточнити функціональні завдання окремих 
модулів та побудувати послідовність подальших дій у проєктуванні. 
 
Рисунок 4.1 – структурна схема мережевого пристрою 
На рисунку зображено структурну схему системи, яка включає в себе 
основний контролер ESP32 NodeMCU, підключений до сенсора BME680. Через 
інтерфейс I²C сенсор передає дані про температуру, вологість і забрудненість 
повітря. У разі перевищення встановлених порогів, NodeMCU активує відповідні 
світлові індикатори WS2812B (для температури та вологості) і звуковий індикатор 
(buzzer). 
Дані із сенсора передаються на локальний сервер з базою даних, де вони 
обробляються та зберігаються для подальшого аналізу користувачем. Як 
мікроконтролер, так і сервер мають окремі блоки живлення та резервного 
живлення, що підвищує надійність системи в умовах перебоїв з 
електропостачанням. 
Таким чином, схема чітко відображає структуру інформаційних потоків, 
функціональні зв’язки та засоби індикації, що дозволяє оптимально реалізувати 
систему контролю параметрів мікроклімату на виробництві. 
 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
56 
Змн. Арк. № докум. Підпис Дата  
 
 
4.1. Розробка апаратної частини пристрою 
Для побудови пристрою використано мікроконтролер NodeMCU ESP32-
WROOM-32 та датчик Bosch BME680, що вимірює температуру, відносну 
вологість, барометричний тиск та вміст летких органічних сполук у вигляді опірору 
газу(вимірювач тиску не буде використовуватись). Датчик BME680 контакт VCC 
під’єднується до стабілізованого виводу з живленням 3.3, GND під’єднується до 
загальної шини “землі”, лінію SDA, яка передає дані підключено до виводу D21, а 
SCL, тобто годинник – до D22. Саме контакти та D21 D22 є типовими для 
інтерфейсу I²C на ESP32 і саме через нього буде відбуватись передача даних від 
сенсора до мікроконтролера. До мікроконтролера підключено адресну світлодіодну 
стрічку WS2812B та зумер. Живлення для світлодіодів забезпечено підключенням 
контакту живлення до виводу Vin, а контакт GND стрічки з’єднано із землею плати. 
Дані для керування стрічкою передаються на пін D27 плати. Мікроконтролер 
формує послідовний 1-бітний протокол для стрічки, щоб задати колір кожного 
світлодіода. Звуковий індикатор підключений простіше: його контакт живлення 
3.3 В з’єднується з виводом 3.3V NodeMCU, а GND йде до загальної шини. 
Управління звуковим сигналом здійснюється через цифровий вихід D25. 
Мікроконтролер подає високий або низький логічний рівень на цей вивід, 
замикання змінює напругу на індикаторі й генерує звуковий імпульс. Таким чином, 
ESP32 відслідковує перевищення порогів датчика BME680 і через порти D27 та 
D25 формує відповідну індикацію. XL-LBC3.1 підключено до входу Vin та на GND. 
Основою пристрою є мікроконтролер NodeMCU ESP32, до якого підключено 
сенсор BME680, що вимірює температуру, вологість та газовий опір. Ці параметри 
регулярно зчитуються у циклі програми, обробляються та порівнюються з 
попередньо встановленими пороговими значеннями. 
Якщо всі параметри в межах норми, на світлодіодній стрічці світиться 
зелений індикатор для кожного параметра. Якщо ж значення хоча б одного з 
параметрів виходить за допустимі межі – запускається відповідна світлова 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
57 
Змн. Арк. № докум. Підпис Дата  
 
 
індикація, а також подається звуковий сигнал через звуковий індикатор. Пристрій 
виконує відправку зібраних даних на локальний сервер. Для цього реалізовано Wi-
Fi з’єднання, і з певною періодичністю формується JSON-запит із поточними 
значеннями, який передається HTTP-запитом на сервер, побудований на базі Flask. 
Сервер зберігає отримані дані у базу SQLite та формує окремі звіти для подальшого 
аналізу. Інтерфейс реалізований в середовищі Node-RED. Node-RED запитує дані з 
сервера, формує графіки температури, вологості та опору газу, розраховує пікові 
значення та статистику. Це забезпечує користувачеві можливість вибору періоду 
спостереження, оновлення даних вручну або автоматично, а також перегляд звітів 
у зручному вигляді. 
4.2. Програмне забезпечення мікроконтролера 
Для того, щоб мікроконтролер виконував заміри температури, вологості, 
якості повітря та передачі даних на локальний сервер, було написано наступний 
скрипт у середовищі Arduino IDE. 
 
#include <Adafruit_NeoPixel.h> 
#include <Adafruit_BME680.h> 
#include <Wire.h> 
#include <WiFi.h> 
#include <HTTPClient.h> 
#include <ArduinoJson.h> 
 
#define LED_PIN     27      // PIN для керування стрічкою 
#define LED_COUNT   8    // Кількість світлодіодів на стрічці 
#define BRIGHTNESS  20     // Яскравість (0-255) 
#define BUZZER_PIN 25     // PIN для керування Buzzer-ом 
 
const char* ssid = "NodeMCU_Test";          // Назва WiFi мережі 
const char* password = "HopeItWorks";   // Пароль від мережі 
const char* serverURL = "http://192.168.138.165:5000/data"; // IP сервера 
 
// Створюємо об'єкт для стрічки WS2812B 
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); 
 
// Створюємо об'єкт для датчика BME680 
Adafruit_BME680 bme; 
 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
58 
Змн. Арк. № докум. Підпис Дата  
 
 
// Порогові значення для датчика 
#define TEMP_MAX    40.0    // Максимальна температура (°C) 
#define TEMP_MIN    15.0    // Мінімальна температура (°C) 
#define HUM_MAX     60.0    // Максимальна вологість (%) 
#define HUM_MIN     30.0    // Мінімальна вологість (%) 
#define GAS_MIN     10000.0 // Мінімальний опір газу (Ом) 
 
// Стан датчиків 
bool tempOk = true; 
bool humOk = true; 
bool gasOk = true; 
 
// Змінні для керування buzzer 
bool previousAlertState = false; 
unsigned long buzzerLastTime = 0; 
bool buzzerState = false; 
const unsigned long BUZZER_INTERVAL = 500; // Інтервал між сигналами (мс) 
 
// WiFi та передача даних 
bool wifiConnected = false; 
unsigned long lastDataSend = 0; 
const unsigned long DATA_SEND_INTERVAL = 30000; // Відправка кожні 30 секунд 
 
uint32_t green = strip.Color(0, 255, 0); 
uint32_t red = strip.Color(255, 0, 0); 
uint32_t blue = strip.Color(0, 0, 255); 
uint32_t yellow = strip.Color(255, 255, 0); 
uint32_t off = strip.Color(0, 0, 0); 
 
void setup() { 
  // Ініціалізація послідовного порту для відладки 
  Serial.begin(115200); 
   
  // Ініціалізація світлодіодної стрічки 
  strip.begin(); 
  strip.setBrightness(BRIGHTNESS); 
  strip.show(); // Вимикаємо всі світлодіоди при старті 
 
  pinMode(BUZZER_PIN, OUTPUT); 
  digitalWrite(BUZZER_PIN, HIGH);  // Buzzer на початку вимкнутий 
   
  // Ініціалізація датчика BME680 
  if (!bme.begin()) { 
    Serial.println("Не вдалося знайти датчик BME680, перевірте підключення!"); 
    while (1); 
  } 
   
  // Налаштування датчика BME680 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
59 
Змн. Арк. № докум. Підпис Дата  
 
 
  bme.setTemperatureOversampling(BME680_OS_8X); 
  bme.setHumidityOversampling(BME680_OS_2X); 
  bme.setIIRFilterSize(BME680_FILTER_SIZE_3); 
  bme.setGasHeater(320, 150); // 320°C протягом 150 мс 
   
  Serial.println("Система запущена!"); 
 
 // Підключення до WiFi 
  connectToWiFi(); 
 
 // Звуковий сигнал успішного запуску 
  digitalWrite(BUZZER_PIN, LOW); 
  delay(100); 
  digitalWrite(BUZZER_PIN, HIGH); 
} 
 
void loop() { 
  // Перевірка WiFi з'єднання 
  checkWiFiConnection(); 
 
  // Оновлення показів датчика 
  if (!bme.performReading()) { 
    Serial.println("Помилка читання з датчика BME680"); 
    return; 
  } 
   
  // Отримання показів з датчика 
  float temperature = bme.temperature; 
  float humidity = bme.humidity; 
  float gas = bme.gas_resistance; 
   
  // Виведення даних у консоль для відладки 
  Serial.print("Температура: "); Serial.print(temperature); Serial.println(" 
°C"); 
  Serial.print("Вологість: "); Serial.print(humidity); Serial.println(" %"); 
  Serial.print("Опір газу: "); Serial.print(gas); Serial.println(" Ом"); 
   
  // Перевірка чи показники в межах норми 
  tempOk = (temperature >= TEMP_MIN && temperature <= TEMP_MAX); 
  humOk = (humidity >= HUM_MIN && humidity <= HUM_MAX); 
  gasOk = (gas >= GAS_MIN); 
   
  // Перевірка чи є тривога 
  bool currentAlertState = !tempOk || !humOk || !gasOk; 
   
  // Оновлення стану світлодіодів 
  updateLeds(); 
 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
60 
Змн. Арк. № докум. Підпис Дата  
 
 
  // Керування buzzer 
  handleBuzzer(currentAlertState, temperature, humidity, gas); 
   
  if (wifiConnected && (millis() – lastDataSend >= DATA_SEND_INTERVAL)) { 
    sendDataToServer(temperature, humidity, gas); 
    lastDataSend = millis(); 
} 
 // Збереження попереднього стану тривоги 
  previousAlertState = currentAlertState; 
   
  // Затримка перед наступним вимірюванням 
  delay(5000); 
} 
 
void connectToWiFi() { 
  Serial.println("Підключення до WiFi..."); 
  WiFi.begin(ssid, password); 
   
  // Індикація підключення – блимання синім 
  int attempts = 0; 
  while (WiFi.status() != WL_CONNECTED && attempts < 20) { 
    strip.setPixelColor(7, blue); // Останній LED синій 
    strip.show(); 
    delay(250); 
    strip.setPixelColor(7, off); 
    strip.show(); 
    delay(250); 
    attempts++; 
    Serial.print("."); 
  } 
   
  if (WiFi.status() == WL_CONNECTED) { 
    wifiConnected = true; 
    Serial.println(); 
    Serial.println("WiFi підключено!"); 
    Serial.print("IP адреса: "); 
    Serial.println(WiFi.localIP()); 
     
    // Сигнал успішного підключення – зелений LED 
    strip.setPixelColor(7, green); 
    strip.show(); 
     
  } else { 
    wifiConnected = false; 
    Serial.println(); 
    Serial.println("Не вдалося підключитися до WiFi"); 
     
    // Сигнал помилки – червоний LED 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
61 
Змн. Арк. № докум. Підпис Дата  
 
 
    strip.setPixelColor(7, red); 
    strip.show(); 
  } 
} 
 
void checkWiFiConnection() { 
  if (WiFi.status() != WL_CONNECTED) { 
    if (wifiConnected) { 
      Serial.println("WiFi з'єднання втрачено. Спроба перепідключення..."); 
      wifiConnected = false; 
    } 
     
    // Спроба перепідключення 
    WiFi.disconnect(); 
    WiFi.begin(ssid, password); 
     
    int attempts = 0; 
    while (WiFi.status() != WL_CONNECTED && attempts < 10) { 
      strip.setPixelColor(7, yellow); // Жовтий при перепідключенні 
      strip.show(); 
      delay(500); 
      strip.setPixelColor(7, off); 
      strip.show(); 
      delay(500); 
      attempts++; 
    } 
     
    if (WiFi.status() == WL_CONNECTED) { 
      wifiConnected = true; 
      Serial.println("WiFi перепідключено!"); 
      strip.setPixelColor(7, green); 
      strip.show(); 
    } else { 
      strip.setPixelColor(7, red); 
      strip.show(); 
    } 
  } 
} 
 
void sendDataToServer(float temp, float hum, float gas) { 
  if (!wifiConnected) return; 
   
  HTTPClient http; 
  http.begin(serverURL); 
  http.addHeader("Content-Type", "application/json"); 
   
  // Створення JSON об'єкта 
  DynamicJsonDocument doc(1024); 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
62 
Змн. Арк. № докум. Підпис Дата  
 
 
  doc["device_id"] = "NodeMCU_001"; 
  doc["timestamp"] = millis(); 
  doc["temperature"] = temp; 
  doc["humidity"] = hum; 
  doc["gas_resistance"] = gas; 
  doc["temp_ok"] = tempOk; 
  doc["hum_ok"] = humOk; 
  doc["gas_ok"] = gasOk; 
  doc["alert_active"] = (!tempOk || !humOk || !gasOk); 
   
  String jsonString; 
  serializeJson(doc, jsonString); 
   
  Serial.println("Відправка даних на сервер:"); 
  Serial.println(jsonString); 
   
  int httpResponseCode = http.POST(jsonString); 
     
  http.end(); 
} 
 
void updateLeds() { 
  // Спочатку вимикаємо всі світлодіоди 
  for (int i = 0; i < LED_COUNT; i++) { 
    strip.setPixelColor(i, off); 
  } 
  // Світлодіод 0 показує стан температури 
  strip.setPixelColor(0, tempOk ? green : red); 
  // Світлодіод 1 показує стан вологості 
  strip.setPixelColor(1, humOk ? green : red); 
  // Світлодіод 2 показує стан якості повітря (gas resistance) 
  strip.setPixelColor(2, gasOk ? green : red); 
  // Оновлюємо стан стрічки 
  strip.show(); 
  // Виводимо інформацію про стан діодів 
  Serial.println("Стан світлодіодів:"); 
  Serial.print("Температура (LED 0): "); Serial.println(tempOk ? "OK (зелений)" 
: "Не в нормі (червоний)"); 
  Serial.print("Вологість (LED 1): "); Serial.println(humOk ? "OK (зелений)" : 
"Не в нормі (червоний)"); 
  Serial.print("Якість повітря (LED 2): "); Serial.println(gasOk ? "OK 
(зелений)" : "Не в нормі (червоний)"); 
  Serial.println(); 
} 
void handleBuzzer(bool alertActive, float temp, float hum, float gas) { 
  if (alertActive) { 
    // Якщо тривога тільки почалася, виводимо детальну інформацію 
    if (!previousAlertState) { 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
63 
Змн. Арк. № докум. Підпис Дата  
 
 
      Serial.println("*** УВАГА! Параметри поза межами норми! ***"); 
       
      if (!tempOk) { 
        Serial.print("Температура: ");  
        Serial.print(temp);  
        Serial.print("°C (норма: ");  
        Serial.print(TEMP_MIN);  
        Serial.print("-");  
        Serial.print(TEMP_MAX);  
        Serial.println("°C)"); 
      } 
       
      if (!humOk) { 
        Serial.print("Вологість: ");  
        Serial.print(hum);  
        Serial.print("% (норма: ");  
        Serial.print(HUM_MIN);  
        Serial.print("-");  
        Serial.print(HUM_MAX);  
        Serial.println("%)"); 
      } 
       
      if (!gasOk) { 
        Serial.print("Якість повітря: ");  
        Serial.print(gas);  
        Serial.print(" Ом (мін: ");  
        Serial.print(GAS_MIN);  
        Serial.println(" Ом)"); 
      } 
    } 
     
    // Періодичні звукові сигнали під час тривоги 
    unsigned long currentTime = millis(); 
    if (currentTime – buzzerLastTime >= BUZZER_INTERVAL) { 
      buzzerState = !buzzerState; 
      digitalWrite(BUZZER_PIN, buzzerState ? HIGH : LOW); 
      buzzerLastTime = currentTime; 
       
      // Різні типи сигналів залежно від типу тривоги 
      if (!tempOk && !humOk && !gasOk) { 
        // Всі параметри поза нормою – довгі сигнали 
        if (buzzerState) { 
          delay(200); // Довший сигнал для критичної ситуації 
        } 
      } else if (!gasOk) { 
        // Проблема з якістю повітря – швидкі короткі сигнали 
        if (buzzerState) { 
          delay(50); 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
64 
Змн. Арк. № докум. Підпис Дата  
 
 
          digitalWrite(BUZZER_PIN, HIGH); 
          delay(50); 
          digitalWrite(BUZZER_PIN, LOW); 
          delay(50); 
          digitalWrite(BUZZER_PIN, HIGH); 
        } 
      } 
    } 
     
  } else { 
    // Тривога закінчилася 
    if (previousAlertState) { 
      Serial.println("Всі параметри в межах норми"); 
      // Подвійний сигнал про завершення тривоги 
      for(int i = 0; i < 2; i++) { 
        digitalWrite(BUZZER_PIN, LOW); 
        delay(100); 
        digitalWrite(BUZZER_PIN, HIGH); 
        delay(100); 
      } 
    } 
    // Вимикаємо buzzer 
    digitalWrite(BUZZER_PIN, HIGH); 
    buzzerState = false; 
  } 
} 
На початку програми відбувається підключення бібліотек, які забезпечують 
роботу з датчиком BME680, світлодіодною стрічкою, бездротовою мережею Wi-Fi, 
а також підтримують HTTP-запити та структурування даних у форматі JSON. У 
функції setup() ініціалізуються основні частини пристрою: світлодіодна стрічка, 
бузер і сенсор BME680. Після перевірки та налаштування сенсора виконується 
підключення до Wi-Fi мережі. Успішність з’єднання візуально підтверджується 
світлодіодною індикацією. Якщо зв’язок не було встановлено, засвічується 
відповідний індикатор. 
Основна логіка роботи реалізована у циклі loop(). У ньому пристрій 
періодично зчитує показники температури, вологості та газового опору. Зібрані 
дані перевіряються на допустимі норми. Кожен параметр має свій індикатор на 
стрічці: зелений колір світить, коли показники у межах норми , червоний світить у 
разі виходу за ці межі. У разі виявлення тривожної ситуації активується звуковий 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
65 
Змн. Арк. № докум. Підпис Дата  
 
 
сигнал через бузер, що може відрізнятися за тривалістю та частотою в залежності 
від типу відхилень. 
Для передачі результатів моніторингу використовується бездротове 
з’єднання з локальним сервером. Періодично відбувається формування JSON-
об’єкта, який містить усі поточні дані, включно зі станами та індикаторами, після 
чого він надсилається на вказану IP-адресу сервера. У разі втрати мережі система 
намагається під’єднатися повторно. 
4.3.  Написання скрипта для серверної частини 
Для коректної роботи сервера було написано Python-скрипт з використанням 
Flask - легкого веб-фреймворку, що дозволяє швидко розгортати HTTP API. Для 
керування базами даних було обрано SQLite, яка є вбудованою системою для 
управління, яка не потребує окремого сервера, що робить її ідеальною для легких 
IoT-рішень. Серверна логіка передбачає прийом даних у форматі JSON від 
пристрою, збереження їх у локальну базу даних та надання доступу до статистики 
та звітів через API-запити. Код сервера наведено нижче: 
#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
""" 
Сервер для прийому даних з NodeMCU ESP32 
Використовує Flask для HTTP API та SQLite для зберігання даних 
""" 
 
from flask import Flask, request, jsonify 
import sqlite3 
import json 
import os 
from datetime import datetime 
import logging 
from flask_cors import CORS 
 
# Конфігурація 
DATABASE_PATH = 'D:/NodeMCU_Data/sensor_data.db' 
DATABASE_DIR = os.path.dirname(DATABASE_PATH) 
LOG_PATH = 'D:/NodeMCU_Data/server.log' 
REPORTS_DIR = 'D:/NodeMCU_Data/reports' 
 
# Створюємо папки для даних, якщо вони не існують 
for directory in [DATABASE_DIR, REPORTS_DIR]: 
    if not os.path.exists(directory): 
        os.makedirs(directory) 
        print(f"Створено папку: {directory}") 
 
# Налаштування логування (після створення папки) 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
66 
Змн. Арк. № докум. Підпис Дата  
 
 
logging.basicConfig( 
    level=logging.INFO, 
    format='%(asctime)s – %(levelname)s – %(message)s', 
    handlers=[ 
        logging.FileHandler(LOG_PATH, encoding='utf-8'), 
        logging.StreamHandler() 
    ] 
) 
 
app = Flask(__name__) 
CORS(app)  # Дозволяє CORS запити (потрібно для NodeRed) 
 
def init_database(): 
    """Ініціалізація бази даних та створення таблиць""" 
 
    # Папка вже створена раніше, тепер тільки ініціалізуємо БД 
    conn = sqlite3.connect(DATABASE_PATH) 
    cursor = conn.cursor() 
 
    # Створюємо таблицю для зберігання даних датчиків 
    cursor.execute(''' 
        CREATE TABLE IF NOT EXISTS sensor_readings ( 
            id INTEGER PRIMARY KEY AUTOINCREMENT, 
            device_id TEXT NOT NULL, 
            timestamp_device INTEGER, 
            timestamp_server TEXT NOT NULL, 
            temperature REAL NOT NULL, 
            humidity REAL NOT NULL, 
            gas_resistance REAL NOT NULL, 
            temp_ok BOOLEAN NOT NULL, 
            hum_ok BOOLEAN NOT NULL, 
            gas_ok BOOLEAN NOT NULL, 
            alert_active BOOLEAN NOT NULL, 
            created_at DATETIME DEFAULT CURRENT_TIMESTAMP 
        ) 
    ''') 
 
    # Створюємо індекси для швидкого пошуку 
    cursor.execute('CREATE INDEX IF NOT EXISTS idx_device_id ON 
sensor_readings(device_id)') 
    cursor.execute('CREATE INDEX IF NOT EXISTS idx_timestamp ON 
sensor_readings(timestamp_server)') 
    cursor.execute('CREATE INDEX IF NOT EXISTS idx_alert ON 
sensor_readings(alert_active)') 
 
    conn.commit() 
    conn.close() 
 
    logging.info("База даних ініціалізована успішно") 
 
 
@app.route('/data', methods=['POST']) 
def receive_data(): 
    """Endpoint для прийому даних з NodeMCU""" 
 
    try: 
        # Отримуємо JSON дані 
        data = request.get_json() 
 
        if not data: 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
67 
Змн. Арк. № докум. Підпис Дата  
 
 
            return jsonify({'error': 'Немає даних'}), 400 
 
        # Логуємо отримані дані 
        logging.info(f"Отримано дані: {json.dumps(data, ensure_ascii=False)}") 
 
        # Валідація обов'язкових полів 
        required_fields = ['device_id', 'temperature', 'humidity', 
'gas_resistance'] 
        for field in required_fields: 
            if field not in data: 
                return jsonify({'error': f'Відсутнє поле: {field}'}), 400 
 
        # Підключення до бази даних 
        conn = sqlite3.connect(DATABASE_PATH) 
        cursor = conn.cursor() 
 
        # Вставка даних 
        cursor.execute(''' 
            INSERT INTO sensor_readings ( 
                device_id, timestamp_device, timestamp_server,  
                temperature, humidity, gas_resistance, 
                temp_ok, hum_ok, gas_ok, alert_active 
            ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
        ''', ( 
            data['device_id'], 
            data.get('timestamp', 0), 
            datetime.now().isoformat(), 
            float(data['temperature']), 
            float(data['humidity']), 
            float(data['gas_resistance']), 
            bool(data.get('temp_ok', True)), 
            bool(data.get('hum_ok', True)), 
            bool(data.get('gas_ok', True)), 
            bool(data.get('alert_active', False)) 
        )) 
 
        conn.commit() 
        record_id = cursor.lastrowid 
        conn.close() 
 
        # Створюємо окремий файл звіту 
        report_data = { 
            'record_id': record_id, 
            'device_id': data['device_id'], 
            'timestamp_device': data.get('timestamp', 0), 
            'timestamp_server': datetime.now().isoformat(), 
            'measurements': { 
                'temperature': float(data['temperature']), 
                'humidity': float(data['humidity']), 
                'gas_resistance': float(data['gas_resistance']) 
            }, 
            'status': { 
                'temp_ok': bool(data.get('temp_ok', True)), 
                'hum_ok': bool(data.get('hum_ok', True)), 
                'gas_ok': bool(data.get('gas_ok', True)), 
                'alert_active': bool(data.get('alert_active', False)) 
            }, 
            'thresholds': { 
                'temperature': {'min': 15.0, 'max': 20.0}, 
                'humidity': {'min': 30.0, 'max': 70.0}, 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
68 
Змн. Арк. № докум. Підпис Дата  
 
 
                'gas_resistance': {'min': 10000.0} 
            } 
        } 
 
        # Створюємо ім'я файлу з timestamp 
        timestamp_str = datetime.now().strftime('%Y%m%d_%H%M%S') 
        filename = f"report_{data['device_id']}_{timestamp_str}_{record_id}.json" 
        filepath = os.path.join(REPORTS_DIR, filename) 
 
        # Зберігаємо звіт у файл 
        try: 
            with open(filepath, 'w', encoding='utf-8') as f: 
                json.dump(report_data, f, ensure_ascii=False, indent=2) 
            logging.info(f"Звіт збережено у файл: {filename}") 
        except Exception as e: 
            logging.error(f"Помилка при збереженні звіту: {str(e)}") 
 
        # Повертаємо підтвердження 
        response = { 
            'status': 'success', 
            'message': 'Дані збережено успішно', 
            'record_id': record_id, 
            'report_file': filename, 
            'timestamp': datetime.now().isoformat() 
        } 
 
        logging.info(f"Дані збережено, ID запису: {record_id}") 
        return jsonify(response), 200 
 
    except Exception as e: 
        error_msg = f"Помилка при обробці даних: {str(e)}" 
        logging.error(error_msg) 
        return jsonify({'error': error_msg}), 500 
 
 
@app.route('/data', methods=['GET']) 
def get_data(): 
    """Endpoint для отримання даних (для NodeRed та інших клієнтів)""" 
 
    try: 
        # Параметри запиту 
        device_id = request.args.get('device_id') 
        limit = request.args.get('limit', 100, type=int) 
        alerts_only = request.args.get('alerts_only', 'false').lower() == 'true' 
 
        conn = sqlite3.connect(DATABASE_PATH) 
        conn.row_factory = sqlite3.Row  # Для отримання результатів як словників 
        cursor = conn.cursor() 
 
        # Формуємо SQL запит 
        query = 'SELECT * FROM sensor_readings WHERE 1=1' 
        params = [] 
 
        if device_id: 
            query += ' AND device_id = ?' 
            params.append(device_id) 
 
        if alerts_only: 
            query += ' AND alert_active = 1' 
 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
69 
Змн. Арк. № докум. Підпис Дата  
 
 
        query += ' ORDER BY created_at DESC LIMIT ?' 
        params.append(limit) 
 
        cursor.execute(query, params) 
        rows = cursor.fetchall() 
 
        # Конвертуємо в список словників 
        data = [] 
        for row in rows: 
            data.append({ 
                'id': row['id'], 
                'device_id': row['device_id'], 
                'timestamp_device': row['timestamp_device'], 
                'timestamp_server': row['timestamp_server'], 
                'temperature': row['temperature'], 
                'humidity': row['humidity'], 
                'gas_resistance': row['gas_resistance'], 
                'temp_ok': bool(row['temp_ok']), 
                'hum_ok': bool(row['hum_ok']), 
                'gas_ok': bool(row['gas_ok']), 
                'alert_active': bool(row['alert_active']), 
                'created_at': row['created_at'] 
            }) 
 
        conn.close() 
 
        return jsonify({ 
            'status': 'success', 
            'count': len(data), 
            'data': data 
        }), 200 
 
    except Exception as e: 
        error_msg = f"Помилка при отриманні даних: {str(e)}" 
        logging.error(error_msg) 
        return jsonify({'error': error_msg}), 500 
 
 
@app.route('/reports', methods=['GET']) 
def get_reports(): 
    """Endpoint для отримання списку файлів звітів""" 
 
    try: 
        device_id = request.args.get('device_id') 
        limit = request.args.get('limit', 100, type=int) 
 
        # Отримуємо список файлів звітів 
        report_files = [] 
        for filename in os.listdir(REPORTS_DIR): 
            if filename.endswith('.json') and filename.startswith('report_'): 
                # Фільтруємо за device_id якщо потрібно 
                if device_id and device_id not in filename: 
                    continue 
 
                filepath = os.path.join(REPORTS_DIR, filename) 
                file_stat = os.stat(filepath) 
 
                report_files.append({ 
                    'filename': filename, 
                    'filepath': filepath, 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
70 
Змн. Арк. № докум. Підпис Дата  
 
 
                    'size': file_stat.st_size, 
                    'created': 
datetime.fromtimestamp(file_stat.st_ctime).isoformat(), 
                    'modified': 
datetime.fromtimestamp(file_stat.st_mtime).isoformat() 
                }) 
 
        # Сортуємо за датою створення (найновіші спочатку) 
        report_files.sort(key=lambda x: x['created'], reverse=True) 
 
        # Обмежуємо кількість 
        report_files = report_files[:limit] 
 
        return jsonify({ 
            'status': 'success', 
            'count': len(report_files), 
            'reports': report_files 
        }), 200 
 
    except Exception as e: 
        error_msg = f"Помилка при отриманні списку звітів: {str(e)}" 
        logging.error(error_msg) 
        return jsonify({'error': error_msg}), 500 
 
 
@app.route('/reports/<filename>', methods=['GET']) 
def get_report_file(filename): 
    """Endpoint для отримання конкретного файлу звіту""" 
 
    try: 
        # Перевіряємо безпеку імені файлу 
        if not filename.endswith('.json') or '..' in filename or '/' in filename: 
            return jsonify({'error': 'Неприпустиме ім\'я файлу'}), 400 
 
        filepath = os.path.join(REPORTS_DIR, filename) 
 
        if not os.path.exists(filepath): 
            return jsonify({'error': 'Файл не знайдено'}), 404 
 
        # Читаємо файл звіту 
        with open(filepath, 'r', encoding='utf-8') as f: 
            report_data = json.load(f) 
 
        return jsonify({ 
            'status': 'success', 
            'filename': filename, 
            'data': report_data 
        }), 200 
 
    except Exception as e: 
        error_msg = f"Помилка при читанні звіту: {str(e)}" 
        logging.error(error_msg) 
        return jsonify({'error': error_msg}), 500 
 
 
@app.route('/stats', methods=['GET']) 
def get_stats(): 
    """Endpoint для отримання статистики""" 
 
    try: 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
71 
Змн. Арк. № докум. Підпис Дата  
 
 
        device_id = request.args.get('device_id') 
 
        conn = sqlite3.connect(DATABASE_PATH) 
        cursor = conn.cursor() 
 
        # Загальна статистика 
        if device_id: 
            cursor.execute(''' 
                SELECT  
                    COUNT(*) as total_records, 
                    COUNT(CASE WHEN alert_active = 1 THEN 1 END) as alert_records, 
                    AVG(temperature) as avg_temp, 
                    MIN(temperature) as min_temp, 
                    MAX(temperature) as max_temp, 
                    AVG(humidity) as avg_humidity, 
                    MIN(humidity) as min_humidity, 
                    MAX(humidity) as max_humidity, 
                    AVG(gas_resistance) as avg_gas, 
                    MIN(gas_resistance) as min_gas, 
                    MAX(gas_resistance) as max_gas 
                FROM sensor_readings  
                WHERE device_id = ? 
            ''', (device_id,)) 
        else: 
            cursor.execute(''' 
                SELECT  
                    COUNT(*) as total_records, 
                    COUNT(CASE WHEN alert_active = 1 THEN 1 END) as alert_records, 
                    AVG(temperature) as avg_temp, 
                    MIN(temperature) as min_temp, 
                    MAX(temperature) as max_temp, 
                    AVG(humidity) as avg_humidity, 
                    MIN(humidity) as min_humidity, 
                    MAX(humidity) as max_humidity, 
                    AVG(gas_resistance) as avg_gas, 
                    MIN(gas_resistance) as min_gas, 
                    MAX(gas_resistance) as max_gas 
                FROM sensor_readings 
            ''') 
 
        row = cursor.fetchone() 
 
        stats = { 
            'total_records': row[0], 
            'alert_records': row[1], 
            'temperature': { 
                'avg': round(row[2], 2) if row[2] else 0, 
                'min': round(row[3], 2) if row[3] else 0, 
                'max': round(row[4], 2) if row[4] else 0 
            }, 
            'humidity': { 
                'avg': round(row[5], 2) if row[5] else 0, 
                'min': round(row[6], 2) if row[6] else 0, 
                'max': round(row[7], 2) if row[7] else 0 
            }, 
            'gas_resistance': { 
                'avg': round(row[8], 2) if row[8] else 0, 
                'min': round(row[9], 2) if row[9] else 0, 
                'max': round(row[10], 2) if row[10] else 0 
            } 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
72 
Змн. Арк. № докум. Підпис Дата  
 
 
        } 
 
        conn.close() 
 
        return jsonify({ 
            'status': 'success', 
            'stats': stats 
        }), 200 
 
    except Exception as e: 
        error_msg = f"Помилка при отриманні статистики: {str(e)}" 
        logging.error(error_msg) 
        return jsonify({'error': error_msg}), 500 
 
 
@app.route('/health', methods=['GET']) 
def health_check(): 
    """Перевірка стану сервера""" 
    return jsonify({ 
        'status': 'OK', 
        'timestamp': datetime.now().isoformat(), 
        'version': '1.0', 
        'database': DATABASE_PATH 
    }), 200 
@app.route('/', methods=['GET']) 
def home(): 
    """Головна сторінка з інформацією про API""" 
    info = { 
        'message': 'NodeMCU Data Server', 
        'endpoints': { 
            'POST /data': 'Прийом даних з датчиків', 
            'GET /data': 'Отримання збережених даних з БД', 
            'GET /reports': 'Список файлів звітів', 
            'GET /reports/<filename>': 'Конкретний файл звіту', 
            'GET /stats': 'Статистика даних', 
            'GET /health': 'Перевірка стану сервера' 
        }, 
        'database_location': DATABASE_PATH, 
        'reports_location': REPORTS_DIR, 
        'timestamp': datetime.now().isoformat() 
    } 
    return jsonify(info), 200 
 
 
def get_local_ip(): 
    """Отримання локального IP адреси""" 
    import socket 
    try: 
        # Підключаємося до зовнішнього адреси, щоб дізнатися свій IP 
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
        s.connect(("8.8.8.8", 80)) 
        ip = s.getsockname()[0] 
        s.close() 
        return ip 
    except: 
        return "127.0.0.1" 
 
 
if __name__ == '__main__': 
    # Ініціалізуємо базу даних 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
73 
Змн. Арк. № докум. Підпис Дата  
 
 
    init_database() 
 
    # Отримуємо локальний IP 
    local_ip = get_local_ip() 
 
    print(f"\n{'=' * 50}") 
    print("NodeMCU Data Server запущено!") 
    print(f"{'=' * 50}") 
    print(f"Локальний IP: {local_ip}") 
    print(f"Порт: 5000") 
    print(f"URL для NodeMCU: http://{local_ip}:5000/data") 
    print(f"База даних: {DATABASE_PATH}") 
    print(f"Звіти: {REPORTS_DIR}") 
    print(f"Логи: {LOG_PATH}") 
    print(f"{'=' * 50}\n") 
 
    # Запускаємо сервер 
    app.run( 
        host='0.0.0.0',  # Прослуховуємо всі інтерфейси 
        port=5000, 
        debug=True, 
        threaded=True 
    ) 
Програма починається з підключення необхідних бібліотек, щоб дозволити 
взаємодію з іншими веб-додатками. Далі відбувається ініціалізація необхідних 
директорій для зберігання бази даних, логів та JSON-звітів. Далі створюється 
таблиця sensor_readings, в якій зберігаються показники з пристрою, такі як 
температура, вологість, опір газу та статуси тривог. 
Основний маршрут /data приймає POST-запити від ESP32, у яких 
передаються дані сенсорів. Ці дані розбираються, перевіряються на наявність 
обов’язкових полів, після чого записуються до бази даних. Паралельно з цим 
формується окремий JSON-звіт, який зберігається у вигляді окремого файлу для 
можливого подальшого аналізу або архівування. 
Завдяки використанню SQLite у якості бази даних та Flask як серверного 
фреймворку, реалізація лишається простою, але функціонально достатньою для 
локального IoT-рішення з мінімальними ресурсними вимогами. 
4.4.  Візуалізація даних за допомогою Node-Red 
Для зручної візуалізації результатів моніторингу та доступу до статистики 
показників було реалізовано графічний інтерфейс користувача за допомогою Node-
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
74 
Змн. Арк. № докум. Підпис Дата  
 
 
RED. Інтерфейс реалізовано через Node-RED Dashboard, який забезпечує перегляд 
графіків, вибір часових періодів і автоматичне оновлення даних. 
 
Рисунок 4.2 – Cхема Node-Red 
На створеній схемі Node-RED реалізовано функціонал для взаємодії з 
сервером, отримання та обробки даних, а також їх виведення у зручному вигляді. 
Реалізований веб-інтерфейс зображено на Рис. 4.10. 
 
Рисунок 4.3 – Зображення веб-інтерфейсу 
 Основні елементи інтерфейсу: 
 Кнопка "Оновити дані" та список "Вибір періоду" дозволяють вручну 
керувати часовим інтервалом, за який будуть відображатися дані. 
 Автоматичне оновлення здійснюється кожні 5 хвилин через 
спеціальний таймер-блок. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
75 
Змн. Арк. № докум. Підпис Дата  
 
 
 Блок HTTP-запиту надсилає GET-запит до сервера для отримання 
останніх записів із бази даних. 
 Далі дані потрапляють у блок обробки, де вони фільтруються, 
згладжуються та розбиваються на графіки по температурі, вологості й опору газу. 
 Розраховуються пікові значення за день та основна статистика: 
середнє, мінімальне і максимальне значення кожного параметра. 
 Всі результати виводяться на інформаційній панелі у вигляді графіків 
та розширених текстових віджетів. 
Таким чином, Node-RED виконує роль веб-інтерфейсу моніторингу в 
реальному часі, забезпечуючи зручний доступ до даних безпосередньо з 
локального сервера.   
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
76 
Змн. Арк. № докум. Підпис Дата  
 
 
5. ОХОРОНА ПРАЦІ 
 
5.1. Аналіз небезпек та шкідливостей, що виникають на підприємстві під 
час розробки пристрою. 
В сучасних умовах виробництва електроніки охорона праці є невід’ємною 
складовою організації роботи на підприємстві. На підприємстві впроваджується 
система управління охороною здоров’я та безпекою праці відповідно до 
міжнародного стандарту ДСТУ ISO 45001:2019, що дозволяє ідентифікувати 
небезпеки, оцінити ризики та впровадити ефективні заходи для їхнього зниження. 
В цьому розділі розглядаються небезпечні і шкідливі виробничі фактори на 
виробничій дільниці та комплекс вимог і заходів щодо забезпечення безпечних 
умов праці при ручному складанні електронних виробів, паянні, роботі з хімічними 
речовинами, комп’ютерами й вимірювальними приладами. 
Виробниче приміщення представляє собою лабораторію площею 30 м², у 
якому працюють 4 осіб над виготовленням електроніки. Основна діяльність 
полягає в монтажі та пайці електронних плат і пристроїв, програмуванні 
мікроконтролерів і тестуванні готових виробів на персональних комп’ютерах. Для 
роботи використовуються паяльні інструменти, дроти і компоненти, а також припій 
та допоміжні хімікати. Приміщення обладнано загальною припливно-витяжною 
вентиляцією, системою освітлення (природним і штучним), а також електричними 
розетками, прихованою проводкою, системою заземлення та запобіжниками.  
У лабораторії існує ряд потенційно небезпечних і шкідливих факторів: 
 Хімічні фактори: випари та аерозолі флюсу, розчинників та активних 
речовин, що використовуються при пайці й очищенні плат. Незважаючи на 
застосування безсвинцевого припою, шкідливі сполуки можуть міститись у флюсі. 
Підвищені концентрації цих речовин знижують якість повітря й потребують 
ефективної вентиляції. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
77 
Змн. Арк. № докум. Підпис Дата  
 
 
 Теплові фактори: робота з паяльником і паяльною станцією супроводжується 
випромінюванням тепла. Неправильне поводження може призвести до опіків рук 
та очей.  
 Електричні небезпеки: будь-яке електрообладнання (паяльники, ПК, плати) 
працює від мережевої напруги 220 В. Існує ризик ураження електричним струмом 
у разі пошкодження ізоляції або неправильного заземлення. Проте наявна система 
заземлення та автоматичні запобіжники знижують цей ризик. Відповідно до 
«Правил безпечної експлуатації електроустановок споживачів», роботодавець 
повинен забезпечити безпечну експлуатацію електроустаткування. 
 Радіація та поля: монітори комп’ютерів генерують електромагнітні поля 
низьких частот та випромінюють синє світло. Нормативно встановлено, що рівні 
електромагнітних полів на робочих місцях не повинні перевищувати показників 
Державних санітарних норм. Більшість мережевих пристроїв також випромінюють 
поля електростатики; для роботи з чутливою електронікою застосовуються 
антистатичні матеріали згідно з ДСТУ IEC 61340-5-1:2015. 
 Пожежна небезпека: присутні легкозаймисті рідини, гарячі елементи, короткі 
замикання та електронні компоненти. Наявність вогнегасників та сигналізації 
повинна відповідати вимогам пожежної безпеки, але вимагає дотримання правил 
зберігання хімікатів і поводження з відкритим вогнем. Виробничі процеси мають 
бути організовані так, щоб повітряні маси не накопичували пари, що знижує ризик 
займання. 
 Ергономічні та психофізіологічні фактори: робота пов’язана з високою 
статичною напругою зорового аналізатора та дрібною моторикою. Тривала 
одноманітна діяльність може призводити до перевтоми очей, шиї, спини й рук. 
Відсутність належної періодичності відпочинку та підсилена візуальна напруга 
(мала робоча площа, дрібні деталі плат) створюють шкідливий психофізіологічний 
тиск. Згідно з гігієнічними нормами, оператори ЕОМ повинні регулярно робити 
короткі перерви. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
78 
Змн. Арк. № докум. Підпис Дата  
 
 
Підсумовуючи вищесказане, можна виділи основні ризики: шкідливі хімічні 
викиди та теплові навантаження у зоні паяння, електробезпечні ризики від 
живлення устаткування та статичні психофізіологічні навантаження на працівника. 
Небезпечні стани значною мірою усуваються за рахунок застосування вентиляції, 
системи захисту і організаційно-технічних заходів, таких як інструктажі та 
перерви. При цьому необхідно постійно контролювати концентрації небезпечних 
речовин, параметри мікроклімату та освітленості на робочих місцях. 
Для праці в електронній лабораторії необхідно забезпечити оптимальні 
параметри мікроклімату. Згідно із санітарними нормами ДСН 3.3.6.042-99, для 
категорії легких робіт температура повітря в зимовий період повинна становити 21-
23 °C, у теплий - 22-24 °C, відносна вологість - 40-60 %. Повітрообмін і швидкість 
руху повітря налаштовуються так, щоб працівник відчував тепловий комфорт і не 
перегрівався. У нашому випадку упродовж року необхідно підтримувати 
температуру близько 22-24 °C і нормальну вологість ~50 %. Система 
кондиціювання дозволяє підтримувати ці величини взимку і влітку. Вентиляція має 
забезпечувати 24/7 повітрообмін із урахуванням наявності шкідливих речовин. 
Згідно з «Правилами охорони праці під час роботи в хімічних лабораторіях», 
постійно діюча вентиляція повинна мати достатню кратність повітрообміну з 
урахуванням класу небезпеки розчинників і проводити безперервне видалення 
шкідливих домішок. Крім загальної припливно-витяжної системи, у зоні паяння 
встановлено місцеві відсмоктувачі, які затягують випари відпаяних матеріалів і 
флюсу. Це відповідає вимогам - місця можливого накопичення парів мають бути 
обладнані місцевим витягуванням.  
Отже, у приміщенні підтримуються нормативні умови мікроклімату: 
температурний режим згідно ДСН 3.3.6.042-99, достатня вологість і свіже повітря. 
При проектуванні та експлуатації повітрообмінних систем керуються також ДБН 
В.2.5-67:2013, які встановлюють гігієнічні вимоги до вентиляції житлових та 
виробничих приміщень. Для поліпшення умов можна вивести витяжні отвори 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
79 
Змн. Арк. № докум. Підпис Дата  
 
 
ближче до робочих зон, збільшити потужність вентилятора або застосувати 
витяжні капюшони безпосередньо над робочими поверхнями, щоб максимально 
затримати шкідливі випари. 
Приміщення обладнане природним освітленням та штучними світильниками. 
Для роботи з дрібними електронними компонентами важлива достатня рівномірна 
яскравість. Згідно з ДБН В.2.5-28:2018, для виробничих та офісних приміщень із 
зоровою роботою II-III розрядів (збірка, монтаж, комп’ютерні операції) 
мінімальний рівень освітленості робочої поверхні повинен бути не менше 300-500 
лк (для ламп розжарення та люмінесцентних). На практиці загальне штучне світло 
від люмінесцентних ламп у лабораторії забезпечує ~200-250 лк, що вважається 
нижньою межею нормативу.  
 При цьому необхідно уникати осліплення: світильники слід розташовувати 
так, щоб запобігти прямому відблиску на екранах моніторів і на платах. Наявне 
вікно дозволяє забезпечити бокове природне освітлення; його слід 
використовувати максимально, а коефіцієнт природного освітлення у приміщенні 
підтримувати на нормованому рівні, який становить 1,5-2 % залежно від глибини 
приміщення для бокового освітлення. Згідно з нормами, комбіноване освітлення є 
оптимальним: освітленість повинна бути рівномірною, без різких переходів.  
У лабораторії наявні потенційно горючі матеріали (органічні розчинники, 
флюс) і джерела нагрівання, такі як паяльники, тому ризик пожежі реальний. 
Вогнегасники (порошкові ОП-4 або вуглекислотні) встановлені поруч з виходом із 
приміщення і проходять регулярні перевірки. Пожежна сигналізація забезпечує 
раннє виявлення диму або вогню. Все електроустаткування має захист за ПУЕ - 
автоматичні вимикачі на випадок перевантаження і коротких замикань, що знижує 
ймовірність виникнення електричної дуги. Шляхи евакуації («план евакуації», 
вказівні знаки) є вільними від перешкод. Для ліквідації найпростішого осередку 
горіння персонал проводить регулярні навчання (тренінги) з користування 
вогнегасниками. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
80 
Змн. Арк. № докум. Підпис Дата  
 
 
Відповідно до «Правил пожежної безпеки в Україні» необхідно утримувати 
небезпечні речовини в закритій тарі та обмежувати їх обсяги у робочій зоні. Засоби 
та прилади, які можуть викликати іскри (наприклад, ручний інструмент з 
металевими деталями), мають бути ізольовані або екрановані. Електропроводка 
прихованого типу мінімізує зовнішній перегрів і іскорість. Окремо від робочих 
місць передбачено місце для паління (не в самому цеху), як того вимагають 
санітарні норми, щоб виключити куріння в зоні горючих матеріалів. Після 
завершення робочого дня всі нагрівальні пристрої (паяльники, кондиціонери тощо) 
відключаються - це також є вимогою пожежної безпеки. 
У разі виявлення диму чи займання працівники мають негайно сповіщати 
пожежну команду та використовувати вогнегасники для локальної ліквідації 
загоряння. Виробничі процеси організовано так, щоб вогненебезпечні операції 
проводилися лише за повної справності техніки та вентиляції. Таким чином, 
відповідні заходи та обладнання задовольняють вимоги пожежної безпеки, і ризик 
пожежі перебувають під контролем. 
У приміщенні використовується стандартна електрична мережа 220/380 В. 
Вся проводка виконана прихованим способом, що запобігає механічним 
пошкодженням кабелів і розеток. Наявне заземлення обладнання забезпечує 
рівноважні потенціали корпусів електроприладів і зменшує ризик ураження 
електрострумом при випадкових замиканнях. Відповідно до нормативів, 
електротехнічне обладнання має бути справним і підключеним згідно з Правилами 
улаштування електроустановок. Роботодавець відповідає за те, щоб експлуатація 
обладнання відбувалася безпечно, згідно з «Правилами безпечної експлуатації 
електроустановок споживачів». Ці правила вимагають, зокрема, використання 
захисних автоматичних вимикачів у всіх лініях, щоб відключати живлення у разі 
витоку струму. 
Паяльні пристрої, використовувані в роботі, відповідають стандарту безпеки 
ДСТУ EN 60335-2-45:2015 і мають подвійний захист або надійно заземлені. На 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
81 
Змн. Арк. № докум. Підпис Дата  
 
 
робочих столах не залишаються відкриті оголені контакти чи дроти. Система 
приладів оснащена стабілізаторами напруги, що запобігає стрибкам в мережі. 
Периферійні пристрої підключені до окремих відгалужень із власним захистом. 
Крім того, при роботі з електроприладами дотримуються правил безпеки: 
перевіряють відсутність запаху горілого, пошкоджень ізоляції; користуються 
електричними приладами лише сухими руками. Всі працівники ознайомлені з 
інструкціями з електробезпеки та мають групу електробезпеки не нижче II. 
Систематично проводяться перевірки заземлення та опору ізоляції кабелів. Завдяки 
цим організаційним і технічним заходам електробезпека виконана на 
нормативному рівні. 
Система навчання персоналу охороні праці організована відповідно до 
Закону України «Про охорону праці» та підзаконних актів. Перед допуском до 
роботи всі працівники проходять вступний інструктаж з охорони праці, на якому 
ознайомлюються з потенційними ризиками та правилами поведінки. Надалі 
проводяться первинні інструктажі на робочих місцях, а також періодичні повторні 
інструктажі. Проведення інструктажів регламентоване нормативами, зокрема 
НПАОП 0.00-5.10-95 «Положення про порядок проведення інструктажів». 
Кожному новому працівнику видається «Інструкція з охорони праці» за 
конкретним видом робіт. Такі документи містять перелік небезпек та правила їх 
уникнення. Крім інструктажів, працівникам забезпечується навчання з першої 
медичної допомоги та регулярні перевірки знань норм і правил охорони праці. 
Таким чином, передбачена комплексна система інструктажів гарантує, що кожен 
працівник поінформований про ризики. 
Організація робочих місць відповідає ергономічним нормам. Рівень столу 
для складання плат регулюється так, щоб передпліччя працівника були 
розташовані під прямим кутом до тулуба, а плечі залишалися розслабленими. 
Стільці мають регульовану висоту, спинку з підтримкою попереку і за необхідності 
- підлокітники. На підлозі перед столом є килимок-підп’ятник, що дозволяє 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
82 
Змн. Арк. № докум. Підпис Дата  
 
 
змінювати положення ніг. Для дрібних робіт з компонентами передбачені 
кишенькові бінокуляри (лупи) або збільшувальні пристрої. Монтажні інструменти 
(пінцети, кліщі) ергономічної форми зменшують м’язове напруження рук. 
Робоче місце оператора ПК облаштоване згідно з гігієнічними вимогами. 
Монітор розміщено прямо перед очима приблизно на відстані 50-70 см, верх екрану 
- на рівні очей або трохи нижче. Офісний стілець з підлокітниками регулюється за 
висотою так, щоб ноги стояли на підлозі, а вага тіла рівномірно розподілялась. 
Клавіатура і миша встановлені прямо перед оператором, зап’ястя лежать на 
спеціальній подушці для запобігання тунельних синдромів. Екран обладнано 
світлопоглинаючою маскою для усунення засліплення. Для зменшення напруги 
очей працівник повинен дотримуватись режиму роботи і відпочинку: кожна година 
роботи за комп’ютером має перериватися на 10-15 хвилин відпочинку.  
Ергономічність устаткування підтримується через контрольно-діагностичні 
програми: монітори проходять калібрування яскравості/контрасту, щоб 
мінімізувати фіксований блиск; приміщення звукоізолюється (щоб комп’ютерний 
шум не відволікав). Працівникам слід використовувати необхідні засоби 
індивідуального захисту. Наприклад, у лабораторних чи виробничих умовах при 
роботі з електронікою це можуть бути захисні окуляри (особливо під час паяння 
або роботи з дрібними деталями), антивібраційні килимки і рукавички, а також 
антистатичні браслети та килимки для захисту від електростатичних розрядів. 
Важливими є також фактори, що впливають на працездатність: одноманітна й 
тривала робота призводить до швидкої втоми та зниження концентрації. Щоб 
уникнути перевтоми і негативних наслідків повторюваних дій, необхідно 
передбачати короткі мікроперерви, виконувати легку фізичну розминку і 
змінювати вид діяльності протягом робочого дня. Такі заходи допомагають 
зменшити втому та підтримати працездатність. 
Проведений аналіз показав, що для лабораторії з виробництва електроніки 
площею ~25-30 м² за участю 3-5 осіб характерні певні виробничі ризики: в 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
83 
Змн. Арк. № докум. Підпис Дата  
 
 
основному хімічні та теплові при пайці, електробезпеки та підвищена зорово-
моторна напруга. Проте завдяки вже наявним заходам (припливно-витяжна 
вентиляція, кондиціонери, нормоване освітлення, заземлення, запобіжники, 
пожежні засоби) більшість із цих ризиків істотно знижені. Згідно з правилами, 
організовано інструктажі з охорони праці та введено графік медоглядів. У ході 
аналізу умов праці було виявлено, що рівень освітленості в лабораторії перебуває 
на нижній межі допустимого нормативу (200–250 лк), що є недостатнім для 
виконання точних робіт з дрібними електронними компонентами. Недостатня 
яскравість може знижувати точність операцій, викликати зорове перенапруження 
та підвищувати ризик професійної втоми. У зв’язку з цим у подальшій частині буде 
здійснено вибір відповідного освітлювального обладнання та проведено 
розрахунок оптимального розміщення світильників з урахуванням вимог до 
продуктивності та ергономіки робочих місць. 
5.2.  Модернізація системи загального штучного освітлення в лабораторії 
В умовах сучасного виробництва електронiки освiтлення є одним iз 
ключових факторiв, що безпосередньо впливають на ефективнiсть, якiсть та 
безпеку виконання робiт. Особливо це стосується дiльниць ручного складання та 
паяння, де значна частина операцiй здiйснюється з дрiбними деталями i потребує 
високої точностi. 
З теоретичної точки зору, освiтлення робочого мiсця повинно вiдповiдати 
таким параметрам: 
 достатнiй рiвень освiтленостi (в лк); 
 рiвномiрнiсть освiтлення по всiй площi робочої поверхнi; 
 вiдсутнiсть мерехтiння; 
 вiдповiдна температура кольору (нейтрально-бiле або холодне бiле 
освiтлення); 
 високий iндекс передачi кольору (CRI > 80); 
 вiдсутнiсть прямих вiдблискiв та ослiплення. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
84 
Змн. Арк. № докум. Підпис Дата  
 
 
Було розглянуто кілька моделей світлодіодних світильників, зокрема: 
 V-TAC VT-6065 – панель 36 Вт, 3600 лм, 4000К, CRI>80, термін служби ~20 
000 год. 
 Osram SubstiTUBE Panel 600 – 33 Вт, 3300 лм, 4000К, без мерехтіння, IP40. 
 Philips Ledinaire RC065B LED34S/840 PSU W60L60 – 34 Вт, 3400 лм, CRI>80, 
120°, 4000К, >30 000 год, IP20, без мерехтіння. 
 Ledvance Panel 600 – 36 Вт, 3600 лм, CRI>80, 120°, 4000К, термін служби 30 
000 год. 
Для покращення якості освітлення в умовах точних електромонтажних робіт 
було обрано LED світильник Philips Ledinaire RC065B LED34S/840 PSU 
W60L60(Рис.5.1). Ця модель є стельовою світлодіодною панеллю з наступними 
технічними характеристиками: 
 Потужність: 34 Вт 
 Світловий потік: 3400 лм 
 Колірна температура: 4000 К - нейтрально-біле світло 
 Індекс передачі кольору :>80 
 Тип монтажу: вбудований у стелю або підвісна установка 
 Кут розсіювання світла: 120° 
 Термін служби: понад 30 000 годин 
 Клас захисту: IP20 
 Не має мерехтіння 
Завдяки високому світловому потоку, відсутності мерехтіння, м’якому 
нейтральному світлу та хорошій передачі кольорів, такий світильник ідеально 
підходить для лабораторій, де проводяться точні візуальні роботи. Його 
застосування дозволить забезпечити рівномірне освітлення робочих місць на рівні 
500-700 лк, що відповідає вимогам, зменшить візуальну втому та підвищить якість 
і безпечність праці. 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
85 
Змн. Арк. № докум. Підпис Дата  
 
 
 
Рисунок 5.1 - Philips Ledinaire RC065B LED34S/840 PSU W60L60 
 
Для розрахунку кiлькостi свiтильникiв використаємо формулу:  
�� ∗ ��
�� =                                                              (5.1) 
�� ∗ ���� ∗ ����
де: 
 N – кiлькiсть свiтильникiв; 
 E= 500 лк – нормативна освiтленiсть; 
 S= 30 м² – площа примiщення; 
 F= 3400 лм – свiтловий потiк одного свiтильника; 
 UF= 0,6 – коефiцiєнт використання свiтла; 
 MF=0,8 – коефiцiєнт запасу. 
Пiдставляючи значення: 
500∗30 15000
�� = = = 9.2 = 10 світильників 
3400∗0.6∗0.8 1632
Отже, для забезпечення нормативної освiтленостi на площi 30 м² потрiбно 
встановити 10 свiтильникiв типу Philips RC065B LED34S/840. Це забезпечить 
рiвномiрне освiтлення робочої зони кожного з 4-х працiвникiв без 
перевантаження зорового аналiзатора та з дотриманням енергозберiгаючих 
стандартiв. 
 
 
  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
86 
Змн. Арк. № докум. Підпис Дата  
 
 
ВИСНОВКИ 
 
У межах виконання кваліфікаційної роботи було вирішено низку технічних, 
програмних та організаційних завдань, що дозволило реалізувати прототип 
пристрою з можливостями для подальшого застосування в умовах виробничого 
середовища. 
Було обґрунтовано вибір апаратної частини пристрою. Для реалізації системи 
обрано мікроконтролерну платформу ESP32-WROOM-32, яка поєднує у собі 
достатню обчислювальну потужність, енергоефективність та вбудовані засоби 
бездротового зв’язку. Як основний сенсор застосовано модуль BME680 фірми 
Bosch, що забезпечує вимірювання температури, відносної вологості, газового 
опору та барометричного тиску, проте останній параметр в межах роботи не 
використовувався. Розроблено та налагоджено програмне забезпечення 
мікроконтролера. У середовищі Arduino IDE створено скрипт, що реалізує 
періодичне зчитування показників з сенсора, аналіз отриманих даних відповідно до 
порогових значень, світлодіодну і звукову індикацію у разі відхилення, а також 
передачу показників на локальний сервер у форматі JSON. Реалізовано серверну 
частину системи. Застосовано Flask для обробки вхідних запитів та збереження 
отриманих даних у базі даних SQLite. Створено вебінтерфейс для візуалізації 
даних. За допомогою Node-RED реалізовано зручну панель моніторингу, яка 
відображає актуальні значення температури, вологості та якості повітря у вигляді 
графіків, а також основні статистичні характеристики. Інтерфейс підтримує як 
автоматичне оновлення, так і ручне. 
Розроблений пристрій дозволяє проводити постійний контроль умов 
середовища. Завдяки локальному серверу, відсутність доступу до Інтернету не 
впливає на працездатність системи. Передбачено механізми самостійного 
перепідключення до Wi-Fi, а також індикацію помилок зв’язку. Індикатори – 
світлодіодна адресна стрічка WS2812B та активний зумер – забезпечують швидке 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
87 
Змн. Арк. № докум. Підпис Дата  
 
 
сповіщення користувача про вихід параметрів за межі норм. Проведено аналіз 
потенційних небезпек в межах розділу охорони праці. Розглянуто типові ризики 
при роботі з електронними пристроями, серед яких: ураження електричним 
струмом, надмірне теплове навантаження, а також вплив недостатнього або 
нерівномірного освітлення на зорову систему оператора. В результаті 
запропоновано рішення для покращення умов праці, зокрема – впровадження 
додаткового джерела освітлення з нейтральною температурою світла, що 
відповідає нормам. Таким чином, поставлена мета кваліфікаційної роботи 
досягнута. Усі етапи розробки – від проєктування до практичної реалізації – були 
виконані. Запропоноване технічне рішення характеризується низькою вартістю, 
простою архітектурою, гнучкістю до подальшої модифікації та здатністю 
інтегруватися в більш складні системи контролю. 
  
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
88 
Змн. Арк. № докум. Підпис Дата  
 
 
СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ 
1. Ajax LifeQuality – Каталог і техдокументація. URL: 
https://ajax.systems/products/specs/lifequality/ 
2. Aqara TVOC Air Quality Monitor – офіційна специфікація (Zigbee 3.0, 
CR2450, TVOC, T, RH). URL:https://www.aqara.com/en/product/tvoc-air-quality-
monitor/specs/  
3. Airthings Wave Plus – офіційний продукт-шит. URL: 
repure.io+14cms.airthings.com+14amazon.com+14 
4. Awair Element – Quick Start Guide і технічний стейтмент сенсорів. URL: 
content.netatmo.com+14m.media-amazon.com+14getawair.com+14 
5. Atmotube PRO – технічні характеристики. URL: 
https://support.atmotube.com/en/articles/10301124-atmotube-technical-specifications  
6. Aranet4 Home datasheet+User manual. URL: 
https://manuals.plus/m/2a50c670ae17bc4995a90db7327d88cf1c4c103cc089a2a6869b3
49661c11db7.pdf 
7. Kaiterra Laser Egg User manual. URL: 
https://cdn2.hubspot.net/hubfs/3782315/Laser%20Egg%20Multilingual%20User%20M
anual%20-%20LE200.pdf  
8. Temtop M10+ User manual. URL: https://fcc.report/FCC-ID/2ATVW-
M10PLUS/7359660.pdf  
9. Inkbird IAQM-129-W URL: https://shorturl.at/A5dHe  
10. Arduino Uno R3 datasheet. URL: https://shorturl.at/Bsj2c  
11. Офіційний datasheet ESP32-WROOM-32 v3.5. URL: 
https://shorturl.at/TNZVY  
12. NUCLEO-F401RE datasheet. URL: https://shorturl.at/32EbY  
13. DS18B20 datasheet. URL: 
https://eu.mouser.com/datasheet/2/609/maxim_integrated_products_ds18b20-
3112397.pdf 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
89 
Змн. Арк. № докум. Підпис Дата  
 
 
14.  STH31 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/897975/ETC2/SHT31.html  
15.  HDC2080 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1046437/TI1/HDC2080.html  
16.  Sі7021 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/791426/SILABS/SI7021.html  
17.  AHT20 datasheet. URL: https://files.seeedstudio.com/wiki/Grove-
AHT20_I2C_Industrial_Grade_Temperature_and_Humidity_Sensor/AHT20-datasheet-
2020-4-16.pdf  
18.  DHT22 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1132459/ETC2/DHT22.html  
19.  DHT11 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1132088/ETC2/DHT11.html  
20.  BME280 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1132060/BOSCH/BME280.html  
21.  MQ-135 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1307647/WINSEN/MQ135.html  
22.  SGP30 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1643855/SENSIRION/SGP30.html  
23.  SGP40 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1284767/SENSIRION/SGP40.html  
24.  BME680 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1132061/BOSCH/BME680.html 
25. BME688 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/2162743/BOSCH/BME688.html  
26.  ZMOD4410 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1266974/RENESAS/ZMOD4410.html  
27.  MіCS-6814 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1354644/SGX/MICS-6814.html  
28.  HІH-4030 datasheet. URL: https://www.alldatasheet.com/datasheet-
pdf/pdf/1242920/HONEYWELL/HIH-4030.html  
29. MDN Web Docs – HTTP Overview: https://developer.mozilla.org/en-
US/docs/Web/HTTP/Overview 
30. MDN Web Docs – HTTP: https://developer.mozilla.org/en-
US/docs/Web/HTTP 
31. HiveMQ – MQTT Essentials: https://www.hivemq.com/mqtt-essentials 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
90 
Змн. Арк. № докум. Підпис Дата  
 
 
32. Wikipedia – MQTT: https://en.wikipedia.org/wiki/MQTT 
33. EMQX – MQTT Introduction: 
https://www.emqx.io/docs/en/latest/mqtt/mqtt-introduction.html 
34. MDN Web Docs – WebSockets: https://developer.mozilla.org/en-
US/docs/Web/API/WebSockets_API 
35. Zigbee Alliance. Zigbee Protocol Overview. https://csa-iot.org/all-
solutions/zigbee/  
36. Espressif Systems. ESP-NOW User Guide. 
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-
reference/network/esp_now.html  
 
 
 
 
 Арк. 
 ТК16.025033.001 ПЗ 
91 
Змн. Арк. № докум. Підпис Дата