Please use this identifier to cite or link to this item: https://er.chdtu.edu.ua/handle/ChSTU/9070
Title: Особливості побудови програмного забезпечення інтелектуального контролю наповненості медичних ємностей
Authors: Голуб, Сергій Васильович
Дратований, Сергій Дмитрович
Keywords: МЕДИЧНІ ЄМНОСТІ;СИСТЕМИ КОНТРОЛЮ НАПОВНЕНОСТІ,;ОБРОБКА СИГНАЛІВ;ESP32;АНАЛІЗ ДАНИХ;ФОТО РЕЗИСТИВНІ СЕНСОРИ;АДАПТИВНЕ ОСВІТ ЛЕННЯ;ТОЧНІСТЬ.;MEDICAL CAPACITIES;OCCUP ANCY CONТROL SYSTEMS;SIGNAL PROCESSING;ESP32;DAТА ANAL YSIS;PHOTORESISTIVE SENSORS;ADAPTIVE LIGHTING;PRECISION
Issue Date: 18-Dec-2024
Abstract: АНОТАЦІЯ Дратований Сергій Дмитрович , студент спеціальності 121 «Інженерія програмного забезпечення» . Представлено кваліфікаційну роботу магістра на тему - «Особливості побудови програмного забезпечення інтелектуального контроmо наповненості медичних ємностей» у Черкаському державному технолопчному університеті у місті Черкаси у 2024 році . Кваліфікаційна робота магістра присвячена розробці та впровадженню інтелектуальної системи контролю наповненості медичних ємностей для використання в лабораторних умовах . У роботі обrрунтовано вибір апаратних і програмних засобів, зокрема мікроконтролера ESP32, фоторезистивних сенсорів і світлодіодів із різним спектром кольорів. Проаналізовано існуючі рішення у сфері автоматизованого моніторингу, розроблено алгоритми обробки даних, що враховують змінні параметри осв~тлення, 1 створено робочий макет для тестування системи. У процес~ виконання роботи розроблено арх~тектуру програмного комплексу, включаючи модулі збору, анашзу та передач~ даних, а також інтерфейс для виводу інформації користувачев1. Проведено модульне, інтеграційне, системне та приймальне тестування, яке підтвердило відповідність функціональним і нефункціональним вимогам. Результатом дослідження є система, яка забезпечує автоматизований контроль наповненості ємностей 1з точністю до ±5% і швидкістю обробки даних ~50 мс. Запропонована система може бути інтегрована в медичні лабораторії для підвищення ефективності роботи, м1юм1зації впливу людського фактору та покращення точності досшджень.
ANNOTATION Dratovanyi Serhii Dmytrovych, student of specialty 121 "Software Engineering". The master's qualification work on the topic "Features of building software for intelligent mon.itoring of the fullness of medical containers" at Cherkasy State Technological University in Cherkasy in 2024 is presented. Тhе master's qualification work is devoted to the development and implementation of an intelligent system for monitoring the fullness of medicaI containers for use in laboratory conditions. The paper substantiates the choice of hardware and software, in particular the ESP32 microcontroller, photoresistive sensors and LEDs with different color spectrums. Existing solutioпs in the field of automated monitoring have been analyzed, data processing a]gorithms have been developed that take ілtо account variable lighting parameters, and а working layout for testing the system has been created. In the process of performing tl1e work, the architecture of the software package was developed, inc]udiпg шodules for collecting, analyzing and tтansmitting data, as well as an interface for displaying inforrnation to the user. Unit, integration, system and acceptance testing was carried онt, which confirrned compliance with functional and non-functioпa] reqнireшents . The resuJt of the study is а system that provides automated control of tl1e fuJlness of containers with ал accuracy of up to ±5% and а data processing speed of ~50 ms. The proposed system can Ье integrated into medical laboratories to increase work efficiency, minirnize the impact of the human factor and ішрrоУе the accuracy of research.
URI: https://er.chdtu.edu.ua/handle/ChSTU/9070
Appears in Collections:121 Інженерія програмного забезпечення (Інженерія програмного забезпечення)



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

Extracted text
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ 
Факультет інформаційних технологій і систем 
Кафедра програмного забезпечення автоматизованих систем 
Пояснювальна записка 
до кваліфікаційної роботи 
«магістра)) 
(освітній рівень) 
на тему: «Особливості побудови програмного забезпечення інтелектуального 
котролю наповненості медичних ємностей» 
Виконав: студент _1_ курсу, групи МПЗ-2304 
Спеціальність: 121 «Інженерія програмного 
забезпечення» 
Освітня програма: «Інженерія програмного 
забезпечення» 
Магістрант Дратований С.Д. 
(прізвище та ініціали) 
Керівник Голуб С.В. 
(прізвище та ініціали) 
Рецензент Філіпов В.В . 
(прізвище та ініціали) 
Черкаси 2024 року 
ЧЕРКАСЬКІ1Й ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ 
Факультет ін о :ма іинuх технологій і cucmeA,t 
Кафедра програмно о забезпечеют автоматизованих систем 
Освітній рівень магістр 
Спеціальність 121 «Інженерія програлтого забезпечет-tя» 
(ш11фр і 11nзва) 
Освітня програма Інженерія програмного забезпечеют 
(шифр і нозвв) 
ЗАТВЕРДЖУЮ 
Завідувач кафедри ПЗАС 
професор, д.т.н., Голуб С.В. / ~ 
" (17 ,, ~о ~~ 
ЗАВДАННЯ 
НА КВАЛІФІКАЦІЙНУ РОБОТУ МАГІСТР АНТА  
Дратованому Сергію Дмитровичу 
(прізвище, ім"я, по батькові) 
1. Тема проекту (роботи) Особтmості побудови проrрамного забезпечення 
інтелеюуального кompomo наповненості меличних ємностей 
керівник проекту (роботи) Голуб Сергій ВасWlьович, д.т.н., прфоесор 
(прізвище, ім'я, по батькові, науковий ступінь. вчене звання) 
заІВерджені наказом вшцого навчального закладу вщ "07" жовнтня 2024 року № 
299/04 
2. Строк подання студентом проекту (роботи) _1_7_.1_2_.2~0_2~4. Р...с ..•_ ______  
З. Вихідні дані до проекту (роботи) розробити інтелектуальнv систему 
автоматичного контролю наповненості медичних ємностей на базі сучасних 
апаратних та програмних рішень; реалізувати режими роботи: автоматичне 
визначення рівня наповненості ємностей; впровадити систему моніторингу стану 
ємностей з можливістю відображення даних у реальному часі; забезпечити 
створею-tя діючого степду для демонстрації функціональних можливостей 
розробленої системи в умовах, наближених до реальних. 
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно 
розробити) теоретичні та експериментальні досліджею-1я. аналіз існуючих в світі 
аналогів,· макетування системи визначення стану колб та отримання результаті; 
впровадJІсення результатів дослід:JІСень у практику проектvвання програмного 
забезпечення інформаційних систем; розробка та тестування програмного 
забезпечення: тестувштя системи. 
5. Перелік графічного матеріалу (з точним зазначенням обов'язкових креслень, 
плакатів) діаграма компонентів, діаграма діяльиості, діаграма розгортання, логічна 
структура програмного комплексу. 
6. Консультанти розділів проекту (роботи) Підпис, дата 
Прізвище, ініціали та посада завдання завдання 
Розділ консультанта видав прийняв 
7. Дата видачі завдання ______ _:в~е-а:р~е~с~еt:1.но..ь~ 2~0:.=.2:!..4 ___________  
КАЛЕНДАРНИЙ ПЛАН 
№ Назва етапів дипломного Сrрок виконання Примrmа 
з/п проекту (роботи) етапів проекту 
(роботи) 
/. Постановка задачі, підготовка завдання 09 веоесня 2024 в11КОІ/Q/ІО 
погодження завдання, затверджетLЯ завдаmLЯ 
2. Аналіз технічного завдання, загальна інформація зо лютого 2024 вико11а110 
про інтелектуальні систе.м11 контролю 
З. Підбіо матеріалів, аналіз шляхів вирішення 15 жовтня 2024 вико11а110 
поставленої задачі 
4. Вибір кінцевого варіанту проектного рішення 20 жовтня 2024 виконано 
для забезпечення інтелектуальної системи 
контrюлю наповненості мед11чних є.мностей 
5. Узгодження прийнятих проектних оіиtень з зо жовтня 2024 виконано 
керівником 
б. ОФоомлеm-ІЯ поясюовальної за1111ски ообот11 в 
15 .шстопада 2024 
в кінцевій оедакції 
7. Попеоедній захист роботи, затвеоджеюLЯ ооботц 
1 грудня 2024 виконано 
8. Захист роботи 
1/4~ }ня 2024 виконано 
Магістрант 
)(JrfJfj Vy/  Дратований С.Д. 
(пр1звнще та 111щ1алн) ---
Керівник проекту (роботи) 
Голуб С.В. 
qrnшm, 1 (прізвище та ініціа.,и} -----
АНОТАЦІЯ 
Дратований Сергій Дмитрович, студент спеціальності 121 «Інженерія 
програмного забезпечення» . Представлено кваліфікаційну роботу магістра на 
тему - «Особливості побудови програмного забезпечення інтелектуального контроmо 
наповненості медичних ємностей» у Черкаському державному технолопчному 
університеті у місті Черкаси у 2024 році . 
Кваліфікаційна робота магістра присвячена розробці та впровадженню 
інтелектуальної системи контролю наповненості медичних ємностей для 
використання в лабораторних умовах. У роботі обrрунтовано вибір апаратних і 
програмних засобів, зокрема мікроконтролера ESP32, фоторезистивних сенсорів і 
світлодіодів із різним спектром кольорів. Проаналізовано існуючі рішення у сфері 
автоматизованого моніторингу, розроблено алгоритми обробки даних, що 
враховують змінні параметри осв~тлення, 1 створено робочий макет для 
тестування системи. 
У процес~ виконання роботи розроблено арх~тектуру програмного 
комплексу, включаючи модулі збору, анашзу та передач~ даних, а також 
інтерфейс для виводу інформації користувачев1. Проведено модульне, 
інтеграційне, системне та приймальне тестування, яке підтвердило відповідність 
функціональним і нефункціональним вимогам. Результатом дослідження є 
система, яка забезпечує автоматизований контроль наповненості ємностей 1з 
точністю до ±5% і швидкістю обробки даних ~50 мс. Запропонована система 
може бути інтегрована в медичні лабораторії для підвищення ефективності 
роботи, м1юм1зації впливу людського фактору та покращення точності 
досшджень. 
Ключові слова: МЕДИЧНІ ЄМНОСТІ, СИСТЕМИ КОНТРОЛЮ 
НАПОВНЕНОСТІ, ОБРОБКА СИГНАЛІВ, ESP32, АНАЛІЗ ДАНИХ, 
ФОТО РЕЗИСТИВНІ СЕНСОРИ, АДАПТИВНЕ ОСВІТ ЛЕННЯ, ТОЧНІСТЬ. 
ANNOTATION 
Dratovanyi Serhii Dmytrovych, student of specialty 121 "Software Engineering". 
The master's qualification work on the topic "Features of building software for 
intelligent mon.itoring of the fullness of medical containers" at Cherkasy State 
Technological University in Cherkasy in 2024 is presented. Тhе master's qualification 
work is devoted to the development and implementation of an intelligent system for 
monitoring the fullness of medicaI containers for use in laboratory conditions. The 
paper substantiates the choice of hardware and software, in particular the ESP32 
microcontroller, photoresistive sensors and LEDs with different color spectrums. 
Existing solutioпs in the field of automated monitoring have been analyzed, data 
processing a]gorithms have been developed that take ілtо account variable lighting 
parameters, and а working layout for testing the system has been created. In the process 
of performing tl1e work, the architecture of the software package was developed, 
inc]udiпg шodules for collecting, analyzing and tтansmitting data, as well as an 
interface for displaying inforrnation to the user. Unit, integration, system and 
acceptance testing was carried онt, which confirrned compliance with functional and 
non-functioпa] reqнireшents . The resuJt of the study is а system that provides automated 
control of tl1e fuJlness of containers with ал accuracy of up to ±5% and а data 
processing speed of ~50 ms. The proposed system can Ье integrated into medical 
laboratories to increase work efficiency, minirnize the impact of the human factor and 
ішрrоУе the accuracy of research. 
Tags: MEDICAL CAPACITIES, OCCUP ANCY CONТROL SYSTEMS, 
SIGNAL PROCESSING, ESP32, DA ТА ANALY SIS, PHOTORESISTIVE 
SENSORS, ADAPTIVE LIGHTING, PRECISION. 
ЧДТУ 242324.ООЗПЗ 
ЗМІСТ 
ПЕРЕЛІК УМОВНИХ СКОРОЧЕНЬ ............... ...... .... .... .. ................. .. ......................... 5 
ВСТУП .......... ... .. ........... ... ......... .. .. ................................. ......... .......... ....... .. .. ...... ...... . б 
РОЗДІЛ І ІСНУЮЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ 'ЯЗАННЯ ПОСТАВЛЕНИХ 
ЗАВДАНЬ .... ....... ........ .... .. .......... ................... .... ................................................... ... .... 10 
РОЗДІЛ 2. ТЕОРЕТИЧНІ ТА ЕКСПЕРИМЕНТАЛЬНІ ДОСЛІДЖЕННЯ ...... 1 ...... 13 
2. І Формалізація задач досліджень ... ..... ... ......................... ... ...... .. .......................... 13 
2.2 Теоретичні дослідження .......... ...... .. ................. .................................... ... ........... 14 
2.2.1 Оптичні методи визначення наповненості .... .. ......................................... ... 15 
2.2.2 Електронні та акустичні методи .................................................. ................ 1б  
2.3 Макетування системи визначення стану колб та отримання результатів ..... 1б  
2.4 Особливості роботи фоторезестивних датчиків .......... .... .... ... ............... ... ........ 19 
2.5 Представлення результатів і їх аналіз ............................................................... 24 
2.5.1 Підходи до дослідження ............... .. ........ ...... ... ......... ......................... ..... ...... 24 
2.5.2 Результати дослідження ........ ....... .............. ................ ........ ........................... 24 
2.5.3 Аналіз розсіювання сигналів ....... ............. .. ....... ... ... ............ ... .................... .. 27 
2.6 Статистичний підхід до визначення порогів розрізнення колб .... ..... ........ ... .. 29 
2.7 Статистичне визначення порогів ...... ..... ..... .... ................... .... ........ .... ................ 31 
3 .1 Моделювання предметної області .............. .. ........... .. ............................ ............ 3 7 
3.1.1 Предметна область моделювання. Модель предметної області . Словник 
предметної області ..... .. ........................ ........ ..... ...... .. .. ....... ..... .... ......... ... ......... ...... З 7 
3.1 .2 Елементи моделювання предметної області .. .. .. .. .... ... .. .............................. 39 
3.2 Формування та аналіз вимог ........................... .............. ........................ ...... .. ..... 45 
3.2.1 Формування вимог до програмного забезпечення ........... ............ ...... .. .... .. 45 
3.2.2 Формування вимог за допомогою діаграми прецедентів ....................... ... 47 
3.2.3 Проектування логічної структури програмного комплексу ......... .. .......... . 50 
З.З Архітектурне проектування .. .... ..... ........ ... ..... .. ........ .... ..... ....... .... ... .. ... ............ .. 53 
ЧДТУ 242324.ООЗПЗ 
З.З . І Діаграма компонентів .................................................. .... .. ... .... .. ........... ....... 54 
3.3.2 Діаграма розгортання .............. ............... .......... ... ........ ........... ............ ........... 55 
3.4 Моделювання поведінки системи .................. .. ....................................... .. ......... 57 
3.4.1 Діаграма діяльності .... .... .... .... ... ... ... ........................... .. ............................. .. .. 57 
3.4.2 Діаграма послідовності ................... .. ............. .. .. ................ .. ..... ... .. .. .. ... ........ 59 
3.4.3 Діаграма комунікації .................. .. .... ........ .......... .... ............. ............... ..... ..... . 60 
3.4.4 Діаграма скінченного автомату ...... ............ ... ... .. ... .......... ........ .. ......... .... .. .... 60 
РОЗДІЛ 4 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ64 
4.1 Розробка програмного комплексу .......................................... .............. .... .. .. . 64 
4.1.1 Обrрунтування вибору засобів реалізації ................. ............ ................ ...... 64 
4.1.2 Опис структурної ( функціональної) схеми .......................... ....................... 65 
4.1.3 Опис логічної схеми системи ... .............. ..... ................... ........ .. .............. .. .... 65 
4.1.4 Розробка бази даних .. ....... ................................. ... .. .. ....... .............. ................ 66 
4.1.5 Розробка інтерфейсу користувача .. .... .. ....... .... .......... ............... ........... ........ 66 
4.1.6 Опис розробки програмних компонентів ....... ............................ ...... ........... 66 
4.2 Тестування системи ................... ....... ....... ....... ... .. .................. ...... ......... ........... .. . 68 
висновки ........................................ .......................................· ····. ....................... ...... 81 
СПИСОК ВИК О РИ СТ АНИХ ДЖЕРЕЛ ..... ........... .......... ....................... ..... ............... 83 
ДОДАТОК А ... ......... .......... .. ......... .. ............................................. .. ... .... .... ......... ........... 85 
ДОДАТОК Б .... ......... ....... .. .... ....... ........ ....... ............... .. ............ ........ ............. ....... ... .... .. 87 
ДОДАТОК В .. ...................... .. .. .... ..................................... .. ............. ..... .................. .... 119 
ЧДТУ 242324 .ООЗПЗ 
ПЕРЕЛІК УМОВНИХ СКОРОЧЕНЬ 
ІФА - Імуноферментний аналіз 
ELISA - Eпzyшe-Liпked ІпшшпоsоrЬепt Assay 
ESP32 - Мікроконтролер із вбудованим Wi-Fi та Bluetooth 
LED - Light Eшitting Diode (Світлодіод) 
ADC - Analog-to-Digital Converter (Аналого-цифровий перетворювач) 
RGB - Red, Green, Blue (Кольорова модель) 
С++ - Мова програмування 
IDE - Integrated Development Environment (Інтегроване середовище 
розробки) 
GPIO - General Purpose Input/Output (Універсальний вхід/вихід) 
IR - Infrared (Інфрачервоний) 
MS - Millisecond (Мілісекунда) 
PWM - Pulse Width Modulation (Широтно-імпульсна модуляція) 
LDR - Light Dependent Resistor (Фоторезистор) 
Wi-Fi - Wireless Fidelity (Бездротова мережа) 
BLE - Bluetooth Low Energy (Енергозберігаючий Bluetooth) 
SPI - Serial Peripheral Interface (Серійний периферійний інтерфейс) 
UART - Universal Asynchronous Receiver-Transшitter (Універсальний 
асинхронний приймач-передавач) 
І2С - Inter-Integrated Circuit (Інтегрована схема обміну даними) 
5 
ЧДТУ 242324.ООЗПЗ 
ВСТУП 
Актуальність теми. У сучасних умовах автоматизації та цифровізації 
медичної галуз1 зростає потреба в розробці програмного забезпечення 
інтелектуальних систем, здатних забезпечити контроль і управління важливими 
процесами, зокрема моніторингом наповненості медичних ємностей [ 14]. Належне 
функціонування таких систем є критичним для забезпечення контролю якості 
проведення медичних досліджень у медичних установах та лабораторіях. 
Використання інтелектуальних систем дозволяє мінімізувати людський фактор, 
підвищити точність моніторингу, зменшити кількість можливих помилок, 
зменшити витрати [І]. 
Інтелектуальні системи монпорингу, яю 1нтегрують сучасю досягнення у 
сфері інформаційних технологій, машинного навчання, мають значний потенціал 
для розв'язання цієї проблеми. Вони дозволяють забезпечити автоматизований 
контроль наповненості ємностей у режимі реального часу, аналізувати дані і 
мінімізувати людський фактор. Особливо актуальним є впровадження таких систем 
у медичних лабораторіях, де точність і своєчасність контролю наповненості 
ємностей з реагентами, зразками біоматеріалів та іншими витратними матеріалами 
є критичними для забезпечення безперервності дослідницьких і діагностичних 
процесів [2]. У лабораторіях, де виконується велика кількість аналізів щодня, навіть 
одна помилка при проведенні дослідження може призводити до збоїв у роботі, 
зниження продуктивності та, в окремих випадках, до компрометації результатів 
досліджень, що має прямий вплив на прийняття клінічних рішень. 
Таким чином, дослідження та розробка програмного забезпечення для 
інтелектуальної системи контролю наповненості медичних ємностей є актуальним 
завданням, що відповідає сучасним викликам галузі лабораторних досліджень [З] . 
Це дослідження спрямоване не лише на вирішення конкретної технічної проблеми, 
але й на сприяння розвитку інноваційних технологій у медицині, що покращує 
якість і безпеку медичних послуг. 
б 
ЧДТУ 242324.003113 
Зв'язок з 11ауков111ю, проr1)амами, пла11ами, темами . Робота в рамках 
наукових досліджень кафедри програмного забезпечення автоматизованих систем . 
Тематик-а дослідження відповідає сучасним тенденціям цифровізації лабораторної 
діагностики в системі охорони здоров 'я , а також програмам розвитку 
інформаційних технологій, спрямованих на автоматизац1ю та шдвищення 
ефективності роботи медичних лабораторій [4-5]. 
Мета і завдання досліджень. Розробка та впровадження інтелектуальної 
системи контролю наповненості медичних ємностей для використання в медичних 
лабораторіях, включаючи створення робочого макета для верифікації теоретичних 
і практичних рішень [6 ]. 
Для досягнення мети поставлено такі завдання: 
провести аналіз існуючих підходів і технологій для моюторингу 
наповненості ємностей у лабораторних умовах, визначити їх переваги 
та недошки; 
розробити концепцію апаратної частини системи на базі платформи 
ESP32, з використанням фоторезистивних датчиків, світлодіодів із 
різним спектром кольорів для засвітлення ємностей і набору медичних 
колб; 
розробити алгоритми обробки сигналів датчиків для визначення рівня 
наповненості, використовуючи сучасні програмю шдходи; 
створити програмне забезпечення для платформи ESP32, яке реалізує 
функції збору, аналізу та передачі даних про наповненість ємностей у 
реальному час1 . 
зібрати експериментальний стенд для перев1рки працездатносп 
розробленої системи в умовах, що моделюють роботу лабораторій; 
провести серію експериментів для валідації отриманих даних 
налаштування параметрів системи для досягнення максимальної 
ТОЧНОСТІ ; 
надати рекомендації щодо вдосконалення системи та можливост1 її 
масштабування для використання в реальних лабораторіях. 
7 
ЧДТУ 242324.ООЗПЗ 
Об'єкт досліджень. Процеси автоматизованого контролю наповненості 
медичних ємностей у лабораторних умовах, включаючи їх взаємодію із 
сенсорними системами, засобами освітлення та програмними рішеннями для 
. . . 
анашзу 1 передач~ даних. 
Предмет досліджень. Апаратно-програмні засоби, зокрема сенсорні системи 
на основі фоторезистивних датчиків, освітлювальні компоненти з різним спектром 
світлодіодів, алгоритми обробки даних та програмне забезпечення для платформи 
ESP32, що забезпечують автоматизований контроль наповненосп медичних 
ємностей у лабораторних умовах. 
Методи досліджень. Для досягнення поставленої мети застосовано таю 
методи [6-7]: 
анашз та синтез інформації - для вивчення існуючих технологій 
контролю наповненості ємностей та їх застосування в медичних 
лабораторіях [ 15]; 
експериментальне моделювання - для проектування апаратної частини 
системи на базі ESP32 з використанням фоторезистивних датчиків і 
світлодіодів із різним спектром кольорів; 
математичне моделювання - для розробки алгоритм1в обробки 
сигналів датчиків і визначення рівня наповненості ємностей [ 10-11]; 
програмна розробка - для створення коду, що реалізує функції збору, 
. . 
анашзу та передач~ даних; 
експериментальне тестування для перев1рки працездатносп 
розробленої системи на зібраному макеті та оцінки її точності й 
надійності; 
статистичний аналіз - для обробки результатів експериментів, оцінки 
точносп визначення рівня наповненості та оптимізації параметрів 
системи; 
ці методи дозволяють забезпечити комплексний підхід до розробки, 
тестування та верифікації запропонованої інтелектуальної системи [8-
9] . 
8 
ЧДТУ 242324 .ООЗПЗ 
Наукова новиз11а: удосконалено метод агентного програмування 
інтелектуальних моніторингових систем, шляхом використання результат1в 
досліджень на етапі формулювання вимог до програмного забезпечення, що 
дозволило врахувати особливості поведінки агента при розв'язанні подібних задач. 
Практичне значення отриманих результатів. Розроблене програмне 
забезпечення може бути впроваджене в медичних установах для шдвищення 
точності досліджень, зниження ризику помилок при проведенні дослщжень, 
скорочення витрат на обслуговування та забезпечення безперебійної роботи систем 
постачання. Використання щє1 системи дозволяє оптим1зувати процеси 
моніторингу та управління, що позитивно впливає на якість надання медичних 
послуг. 
Особистий внесок автора. У сі наукоВІ результати, представлею в 
магістерській кваліфікаційній роботі, отримані автором особисто. 
Публікації. Участь у V Міжнародній науково-практичній конференції 
"CURRENT ТRENDS 1N SCIENTIFIC RESEARCH DEVELOPMENT" на тему: 
«Розробка інтелектуальної системи контролю наповненості медичних ємностей» 
12-14.12.2024 року Boston, USA. 
9 
ЧДТУ 242324.0031І З 
РОЗДІЛ 1 ІСНУІОЧІ МЕТОДИ ТА ЗАСОБИ РОЗВ'ЯЗАННЯ 
ПОСТАВЛЕНИХ ЗАВДАНЬ 
Автоматизований контроль наповненості медичних ємностей є важливою 
складовою сучасних лабораторних процесів, і на ринку вже існує низка рішень, які 
·Спрямовані на вирішення цієї задачі. Аналіз існуючих аналогів дозволяє визначити 
поточний рівень розвитку технологій, оцінити 1·хні сильні та слабкі сторони, а 
також ідентифікувати можливості для вдосконалення. 
Аналоги в лабораторній практиці 
1 Автоматизовані станції для І ФА 
Багато провідних виробників лабораторного обладнання, таких як 
Thermo Fisher Scientific, Roche Diagnostics і Siemens Healthineers, 
пропонують комплексні автоматизовані платформи для проведення ІФА. 
Ці системи, зокрема, інтегрують модулі для контролю наповненості 
ємностей. Основний принцип роботи таких систем базується на 
використанні оптичних і ємнісних сенсорів для перевірки рівня рідини 
перед початком та під час аналізу. Наприклад, Roche Cobas е801 
використовує лазерні технології для швидкого визначення р1вня 
наповненості пробірок, що зменшує ризик помилок. 
2 Системи контролю рідин у пробірках 
Hamilton Robotics пропонує роботизовані системи, такі як Microlab 
STA R, які здатні точно вимірювати наповненість за допомогою датчиків 
рівня рідини. Ці системи використовують ультразвукові датчики, що 
забезпечують високу точність навіть у випадках, коли рідина має 
. . 
непрозор1 властивосп. 
Tecan Freedom EVO - це ще одна поширена платформа, яка поєднує в 
собі оптичні сенсори з високочутливими ємнісними датчиками для 
контролю наповненосп . 
З Спеціалізовані сенсори 
Компанії, що спеціалізуються на розробці сенсорних технологій, такі як 
Honeywell та Omron, створюють сенсори, які можуть інтегруватися в 
10 
ЧДТУ 242324.ООЗПЗ 
лабораторні системи. Наприклад, ємнісні сенсори вщ Honeywell 
використовуються в багатьох автоматизованих пристроях для контролю 
наповненості та рівня рідин. 
Ультразвукові сенсори від Pepperl+Fuchs забезпечують точне вимірювання 
навіть у складних умовах, таких як наявність густих або кольорових рідин. 
Переваги сучасних аналогів: 
точність і швидкість: сучасні системи забезпечують вим1рювання 
рівня рідини з точністю до мікролітрів, що є важливим для проведення 
високочутливих аналізів, таких як ІФА; 
автоматизація: інтеграція в автоматизовані робочі станції мінімізує 
необхідність ручного втручання, зменшуючи вплив людського 
фактору; 
сумісність: більшість систем можуть бути адаптовані до роботи з 
р1зними типами пробірок, що робить їх універсальними для 
лабораторних умов. 
Обмеження існуючих рішень: 
висока вартість: більшість високоточних систем, таких як ТІ, що 
пропонує Roche або Hamilton, мають високу ціну, що може бути 
недоступним для невеликих лабораторій; 
. . . . 
складність інтеграції: штеrрац1я систем контролю в 1снуюч1 
лабораторні процеси вимагає додаткових налаштувань 1 навчання 
персоналу; 
обмежена гнучкість: деякі системи розраховані лише на певні типи 
реагентів або ємностей, що знижує їх універсальність. 
Перспективи вдосконалення 
Аналіз існуючих рішень показує, що інтеграція багатьох методів контролю, 
таких як оптичні, ємнісні та ультразвукові сенсори, є найефективнішим підходом. 
Однак існує перспектива розробки більш доступних і гнучких рішень, які будуть 
адаптовані до потреб невеликих лабораторій. Використання сучасних 
11 
ЧДТУ 242324.ООЗПЗ 
мікроконтролерів, таких як ESP32, у nоєдианні з алгоритмами дозволить створити 
системи, які будуть не лише точними , але й економічно вигідними. 
Вис11овки до розділу 1 
Проведений анашз існуючих аналогів автоматизованих систем контролю 
наповненості медичних ємностей дозволив оцінити сучасний рівень розвитку 
технологій у цій сфері та визначити ключові напрями для їх удосконалення. На 
ринку представлені високоточні та багатофункціональні системи, які інтегрують 
оптичні, ультразвукові та ємнісні сенсори, забезпечуючи точність до мікролітрів і 
мінімізуючи вплив людського фактору. Такі рішення, як автоматизовані 
платформи Roche, Hamilton Robotics і Tecan, демонструють високу продуктивність 
і адаптивність для роботи з різними типами пробірок, що робить їх ідеальними для 
великих лабораторій. 
Разом з тим, аналіз показав, що сучасні рішення мають низку обмежень: 
висока вартість, що робить їх недоступними для невеликих 
лабораторій; 
складність інтеграції в існуючі процеси, яка вимагає додаткових 
ресурсів на налаштування та навчання; 
обмежена універсальність у роботі з р1зними реагентами або 
ємностями. 
Отримані дані обrрунтовують доцільність удосконалення існуючих систем 
шляхом зниження їхньої вартосп, спрощення інтеграції та шдвищення 
універсальності . Запропонований у цій роботі підхід може стати основою для 
розробки нових р1шень, що відповідають сучасним викликам автоматизації в 
лабораторній діагностиці. 
12 
ЧДТУ 242324.ООЗПЗ 
РОЗДІЛ 2. ТЕОРЕТИЧНІ ТА ЕКСПЕРИМЕНТАЛЬНІ ДОСЛІДЖЕННЯ 
2.1 Формалізація задач досліджень 
Апаратна частина системи моніторингу наповненості медичних ємностей 
складається з цифрової мікропроцесорної платформа ESP32, фоторезистивних 
датчиків, RGВ-світлодіодів, матрична підставка у формі прямокутника з отворами 
для медичних колб (рис. 2.1). 
Рис. 2.1 - Матрична підставка 
У колбах може бути рщина, вони можуть бути порожюми або взаrаш 
відсутніми (рис. 2.2). Система повинна визначати стан кожного отвору в режимі 
реального часу та обробляти відповідні сигнали. 
Рис. 2.2 - Планшет для імуноферментноrо аналізу 
13 
ЧДТУ 242324.ООЗПЗ 
Програмна реалізація має бути виконана на мові С++ для платформи ESP32, 
і забезпечити виконання наступного алгоритму: почергове підсвічування кожного 
отвору RGВ-світлодіодом в заданому кольоровому спектрі; зчитування сигналу з 
фоторезистора для визначення стану отвору (колба відсутня, колба пуста, колба 
заповнена); обробка отриманих даних для подальшого аналізу. 
Мета і завдання досліджень. Розробка та впровадження програмного 
програмування інтелектуальної системи контролю наповненосп медичних 
ємностей для використання в медичних лабораторіях, включаючи створення 
робочого макета для верифікації теоретичних і практичних рішень. 
Для досягнення мети поставлено такі завдання: 
розробити алгоритми обробки даних з фоторезистивних датчиків для 
визначення стану наповненості колб, застосовуючи сучасні методи 
обробки сигналів; 
виконати серію тестів і калібрувань системи для перевірки її точності 
та адаптації параметрів з метою досягнення оптимальної роботи; 
створити програмне забезпечення для платформи ESP32, яке реалізує 
функції збору, аналізу та передачі даних про наповненість ємностей у 
реальному час1; 
зібрати експериментальний стенд для перев1рки працездатносп 
розробленої системи в умовах, що моделюють роботу лабораторій. 
2.2 Теоретичні дослідження 
У сучасних лабораторіях, особливо тих, що займаються проведенням 
Імуноферментного аналізу (ІФА), точність і надійність досліджень безпосередньо 
залежать від якості обладнання та систем автоматизації. Однією з ключових задач 
є забезпечення правильного контролю наповненості медичних ємностей, що 
використовується для проведення аналізів. Помилки під час проведення 
досліджень можуть призводити до втрати зразків, компрометації результатш 1 
навіть до помилкових клінічних рішень, що є неприпустимим. 
14 
ЧДТУ 242324.ООЗПЗ 
Сучасні технології дозволяють використовувати різноманітні методи та 
засоби для автоматизованого моніторингу наповненості . Такі системи не тільки 
мінімізують вплив людського фактору, але й підвищують точність і ефективність 
роботи лабораторій. У цьому контексті розробка та впровадження інтелектуальних 
рішень, які поєднують фізичні, оптичні, акустичні та електронні методи контролю, 
є вкрай актуальною. 
Розглядаємо найпоширеніші підходи до вирішення цієї задачі, їх переваги та 
недоліки, а також перспективи застосування цих методів у медичних лабораторіях. 
Такий аналіз дозволяє визначити оптимальні рішення для розробки інтелектуальної 
системи, яка відповідатиме сучасним вимогам точносп, надійності та 
автоматизації. 
2.2.1 Оптичні методи визначення наповненості 
Оптичні методи є одними з найпоширеніших для визначення наявносп 
вмісту в медичних ємностях. Вони rрунтуються на використанні оптичних 
сенсорів, камер або лазерних систем для зчитування змін у спектрах світла, яке 
проходить через або відбивається від ємності. Ці методи забезпечують високий 
рівень точності та надійності, що робить їх ідеальними для використання в 
медичних лабораторіях. 
До основних підходів належать: 
візуальне спостереження: використання камер для аналізу кольору або 
прозорості рідини. Цей метод дозволяє визначити наявність або 
відсутність рідини, а також оцінити її рівень. Автоматизація візуального 
контролю за допомогою роботизованих систем значно знижує ризик 
помилок, викликаних людським фактором. Особливо ефективний для 
ІФА, де рідини можуть змінювати колір залежно від хімічної реакції, що 
дозволяє проводити додатковий аналіз реактивності; 
лазерне сканування: лазерний промінь направляється через пробірку, і 
фоторецептори визначають, чи проходить промінь через рідину або 
повітря. Цей метод забезпечує високу точність для прозорих рідин і 
дозволяє швидко перев1ряти велию обсяги пробірок. Завдяки 
15 
ЧДТУ 242324.ООЗПЗ 
використанню компактних лазерів та високочутливих сенсор1в, таю 
системи можуть інтегруватися в автоматизовані лабораторні лінії; 
ультрафіолетова (UV) або інфрачервона (IR) спектроскопія: 
використовується для аналізу рідин, які поглинають або відбивають певні 
спектри світла. Спектроскопія дозволяє не лише визначити рівень 
наповненості, але й ідентифікувати склад рідини, що робить цей метод 
універсальним для досліджень у медичних лабораторіях. 
2.2.2 Електронні та акустичні методи 
Електронні та акустичні методи є високотехнологічними шдходами, яю 
забезпечують високу точність і адаптивність у різних умовах. Вони базуються на 
використанні сучасних сенсорів, мікропроцесорів та алгоритмів обробки даних. 
До них належать: 
ємнісні сенсори: визначають змшу електричної ємност1 залежно вщ 
наявності рідини. Цей метод широко використовується завдяки простоті 
інтеграції та точності. Системи на основі ємнісних сенсорів можуть бути 
налаштовані для роботи з різними типами рідин; 
ультразвуковий контроль: використання ультразвукових хвиль для 
визначення рівня рідини. Цей метод забезпечує високу точність навіть у 
випадках, коли рідина є непрозорою. Ультразвукові сенсори працюють на 
основі аналізу відбитих хвиль, що дозволяє отримати точні дані про 
наповнеюсть; 
резонансний аналіз: Використання звукових хвиль для визначення 
наповненості. Порожні та заповнені ємності мають різний резонанс, що 
дозволяє точно визначити рівень. Метод є особливо корисним для 
дослідження специфічних типів рідин або ємностей . 
2.3 Макетування системи визначення стану колб та отримання результатів 
На основі проведених експериментів у рамках роботи макета (рис. 2.3-2.4) 
було зібрано дані про рівень наповненості медичних ємностей, отримані за 
16 
ЧДТУ 242324.ООЗПЗ 
допомогою фоторезистивних датчиків та адаптивного осв~тлення світлодіодами 
різного спектру. 
Рис. 2.3 - Схематичне зображення макету 
. .., ... .,І ' :. ...   
,. . 
"'1, 1 
,У... . 
Рис. 2.4 - Зібраний макет 
Результати роботи системи контролю наповненостt медичних колб 
базуються на даних, зібраних з фоторезистивних датчиків у трьох різних станах : 
17 
Ч)~Т 242 324.0031І  
колба від утня: отвір підставці алиша ься незаповненим, сиrнал від 
датчика відповідає базовій інтенсивності освітлення; 
колба пуста: світло від RGВ-світлодіода проходить кр1зь прозору 
порожню колбу, викликаючи характерну змшу сигналу, зчитаного 
фоторезистивного датчика; 
колба заповнена рідиною: св1тло взаємод1є з рщиною, що спричиняє 
значне зниженНJІ інтенсивності сигналу або його зміну залежно від 
властивостей рідини (колір, прозорість). 
Рис. 2.5 - Представлення наповненості медичних колб 
Стан "колба заповнена рідиною" охоплює діапазон наповненості від 30% до 
100%, що дозволяє більш детально оцінювати кількість рідини в ємності. Такий 
підхід важливий для медичних лабораторій, де точний рівень наповненості може 
мати критичне значення для виконання певних аналізів або процедур. Наприклад, 
рівень рідини нижче 30% може вважатися недостатнім для використання, тоді як 
рівні в межах 30-70% можуть сигналізувати про часткову наповненість, а 70-100% 
- про повну готовність до застосування. Врахування цих рівнів дозволяє и темі н 
лише визначати стан ємності , але й надавати рекомендації щодо її викори тання чи 
18 
ЧДТУ 242324 .ООЗПЗ 
необхідності nоnовнення. Це також сприяє зниженню ризику помилок, 
автоматизуючи процеси контролю і забезпечуючи високу точність результатів. 
2.4 Особливості роботи фоторезестивних датчиків 
Фоторезистивні датчики (рис. 2.6), що використовуються у систем~, є 
ключовими елементами для визначення стану медичних колб. Їх робота базується 
на зм1ю електричного опору залежно від інтенсивності світла, яке вони 
сприймають. 
Оеаг coarr,g СМN 
entire top sunace 
Protoconductlve 
matenalOІeЯ 
topsurface 
І 
\ 
---- Wre teпnools 
Рис. 2.6 - Фоторезистивний датчик 
Для точного визначення стану колби (відсутня, пуста чи заповнена рідиною) 
враховуються наступні особливості: 
Взаємодія зі світлом 
Фоторезистори реагують на світлові сигнали, які створюються RGВ­
світлодіодами (рис. 2.7 ), розташованими під кожним отвором. Інтенсивність світла 
змінюється залежно від стану отвору: 
. . 
відсутність колби забезпечує максимальну штенсивюсть сигналу, 
оскільки світло проходить безперешкодно; 
порожня колба частково змінює інтенсивність через взаємодію світла зі 
стінками колби; 
заповнена колба поглинає або розсіює світло залежно від типу та кольору 
рідини, що призводить до значного зменшення інтенсивності сигналу. 
19 
ЧДТУ 242324.ООЗПЗ 
WS28 l 2B 4PIN 
DIN VЗS 
C'O})l>t'l' 
B1'Rckt>t 
IJ • WS2812 ІС 
~ 
tt . 
І, 
9Pcs 
Pi.u·t' Gold Li11t's 
.-;i..,., .,, 
VDD oour 
Рис. 2.7 -RGB адресний світлодіод WS2812B 
Вплив зовнішніх факторів 
Датчики у системі можуть бути чутливими до впливу ЗОВНІШНЬОГО 
освплення, наприклад, природного сонячного свпла або штучного освплення 
лабораторії. Це може призводити до появи шумів у сигналах, які зчитуються з 
фоторезисторів, і, як наслідок, до неправильного визначення стану колб (відсутня, 
пуста або заповнена). 
І Enternal light 
Reflected light valp11Ьllty 
тгопеd ight holder 
ntering trough from glosse from glossss of 
ntr-!'ring ente ing tust tuЬEs and ofin intei~h!,ty 
'ОІІІ open sides: Ьoucing off effecting off 
Рис. 2.8 - Зовнішні факторів при роботі системи визначення наповненості колб 
Причини виникнення шумів: 
20 
ЧДТУ 242324.ООЗПЗ 
розсіяне світло: зовнішнє освітлення може проникати через отвори в 
підставці й взаємодіяти з датчиками, викликаючи підвищення базового 
р1вня сигналу; 
відбиття світла: глянцеві поверхні колб або матеріал підставки можуть 
спричиняти додаткові відбиття, які накладаються на сигнал, що надходить 
від світлодіодів; 
зм1нюсть зовнішнього середовища: непостійність освплення в 
лабораторії, наприклад, зміна яскравості сонячного світла протягом дня, 
може створювати нестабільність у сигналах датчиків. 
За результатами дослідження для мінімізації шуму в алгоритмах роботи 
системи передбачено кілька підходів: 
калібрування базового рівня сигналу: перед початком роботи кожен 
. . 
датчик визначає свій базовий ршень осв1тлення за вщсутност1 
світлодіодного підсвічування. Цей рівень використовується як точка 
відліку для всіх подальших вимірювань; 
екранування датчиюв: фізичне екранування датчиюв, наприклад, 
використання непрозорих корпусш або ущшьнень навколо 
фоторезисторів, допомагає зменшити проникнення розсіяного світла; 
статистична обробка сигналів для зменшення впливу шуму. Для 
підвищення точності роботи датчиків і мінімізації впливу шуму система 
використовує статистичні методи обробки зчитаних сигналів. Цей підхід 
дозволяє враховувати варіативність зовнішніх факторів і стабілізувати 
результати вим1рювань. 
Чутливість до спектру освітлення 
RGВ-світлодіоди, завдяки можливості генерувати р1зю спектри свпла 
(червоний, зелений, синій та їх комбінації), забезпечують гнучкість у налаштуванні 
освітлення для оптимальної роботи фоторезисторів. 
Це особливо важливо у випадках, коли рідини в колбах мають різні оптичні 
властивості, наприклад, прозорість, колір або здатність до поглинання світла 
певних довжин хвиль. 
21 
ЧД1'У 242324 .ООЗГІЗ 
Кожен tn~кч, c ni1'J10 мое свої особлиоuсті вз~н: ·модії з рідинами: 
"t~реоннй -с11ек11): дt)бре nроникаt через рідини, які є темними або містять 
ЧАС'l'tШRИ, що nоглинають світло у коротших хвилях (наприклад, синій). 
Це дозволяє визначати наповненість навіть у випадках, коли рщина є 
непрозорою або має високий рівень розсіювання . 
зелений спектр: ефективний для рщин з1 середньою прозор1стю або 
легким відтінком, оскільки забезпечує баланс між проникністю та 
коmрастністю сигналів . 
синій спектр: добре взаємодіє з прозорими рщинами або рщинами 1з 
жовтуватим відтінком, де короткі довжини хвиль забезпечують високий 
рівень поглинання й контрастності. 
Використання різних спектрів дозволяє: 
збільшити коmрастність між сигналами для різних станів колби (пуста, 
заповнена, відсутня). 
виявляти мш1мальні відмінності в р1вю рщини, особливо коли кошр 
рідини може впливати на проходження світла. 
оптимізувати точність датчиків для роботи з різними матеріалами колб 
(прозоре скло, матове скло, пластик тощо). 
Алгоритм роботи системи може бути адаптивним: перед вимірюванням рівня 
рідини ESP32 активує певний спектр світла (або комбінацію), який є оптимальним 
для визначення наповненості конкретної колби. Якщо спектр недостатньо 
ефективний, система може змінювати кольорове підсвічування й аналізувати 
сигнал повторно. 
Таким чином, RGВ-світлодіоди забезпечують інтелектуальну взаємод1ю 
системи з різноманітними умовами, дозволяючи адаптуватися до характеристик 
лабораторних матеріалів і рідин, що значно підвищує універсальність і точність 
роботи системи . 
Матеріал і структура колб. 
22 
ЧДТУ 242324.ООЗПЗ 
Прозорість, товщина стінок і форма колби впливають . 
на проходження св1тла. 
[(ля компенсації цих особливостей система проходить 
калібрування для 
tонкретного набору колб, що використовується в лабораторії. 
Materont Frosted Drosed 
Light light Lage 
Trans~asion passace Light 
з 
Tra-;sprent Frosted Thick-walled or 
light transpasion test tuЬe Di~.o r t & scatteing li9ht 
Рис. 2.9. - Чутливість датчиків до світлового спектру 
Прозорість, товщина стшок і форма колби мають істотний вплив на 
[Іроходження світла, оскільки ці параметри визначають, наскільки світловий потік 
. . . 
може вшьно проходити кр1зь матер1ал. 
Прозорі колби зі склом або пластиком високої прозоростt пропускають 
більшу кількість світла, тоді як непрозорі або матові колби суттєво знижують 
інтенсивність сигналу, навіть у порожньому стані. 
Товщина стінок також є важливим фактором: товстіші стінки поглинають і 
розсіюють більше світла, створюючи викривлення сигналу, яке може вплинути на 
точність визначення рівня рідини. Форма колби, наприклад, її округленість, 
звуження чи наявність ребер, може змінювати напрямок світла та створювати 
додаткові артефакти в показаннях датчиків. 
23 
ЧДТУ 242324.ООЗПЗ 
2.5 Представлення результатів і їх аналіз 
2.5.1 Підходи до дослідження 
Для аналізу роботи системи проведено експерименти з використанням 
прозорої рідини та прозорих колб однакового типу й матеріалу. Такий підхід 
дозволив м1юм1зувати вплив вар1ативних факторів, зокрема оптичних 
властивостей рідини або матеріалу колб, і забезпечити точну оцінку ефективності 
системи. 
Прозора рідина. Використання однакової прозорої рідини виключало вплив 
таких параметрів, як колір, густина або поглинання світла, на результати 
вимірювань. Це дозволило сфокусувати увагу на ключових аспектах роботи 
системи - здатності фоторезистивних датчиків визначати стан ємності. 
Однорідні колби. Прозорі колби з однакового матеріалу забезпечили 
стандартизацію умов експерименту. Незважаючи на однаковість матеріалу, 
мінімалью вщхилення у товщині стінок і геометрії могли впливати на сигнал, 
але ці відхилення залишалися в межах допустимої похибки. 
Статистичний підхід / повторюваність експериментів. Кожен вим1р 
проводився 1О О разів для кожного стану та кожного спектру світла. Це 
дозволило усунути вплив випадкових факторів, таких як нестабільність джерела 
світла чи коливання сигналів датчика. 
2.5.2 Результати дослідження 
Для кожного спектра світла (синій, білий, червоний, зелений) було проведено 
по 1О О вимірювань сигналу для трьох станів колби: пуста, заповнена на 50%, 
відсутня. Результати експериментів оброблялися статистично, зокрема було 
розраховано середні значення сигналу, що характеризують кожен стан для кожного 
спектра, а також похибки (±), які вказують на розкид значень сигналів У межах 
вимірювань. 
Такий підхід дозволяє оцінити стабільність роботи системи та надійність 
зчитаних сигналів. 
24 
ЧДТУ 242324.ООЗПЗ 
Таблиця 2.1. 
Результати виміJ)10ва11ь у формі середніх зна1t1ень 
І Середнє 
Середнє Середнє Середнє 
Стан колби значення 
значення значення значення 
(#blue) (#white) (#red) (#green) 
І 
І 
Пуста 692± 5 899± З 840±4 755 ± 6 
Заповнена 
593 ±4 875 ±2 797 ± 5 696± 5 
на50% 
Без колби 561 ± 6 840±4 744± З 643 ±4 
Середнє значення сигналу для кожного спектра світла слугувало базовим 
орієнтиром для калібрування системи. Наприклад, для білого спектра, який 
забезпечує найвищу інтенсивність світла, середній сигнал для пустої колби 
становив 899 ± З, що свідчить про мінімальну похибку та високу стабільність. 
Натомість зелений спектр, який демонструє нижчу інтенсивність, мав середнє 
значення сигналу 755 ± 6 для пустої колби, що вказує на більший розкид даних. Це 
дозволяє зробити висновок, що білий спектр є найстабільнішим у широкому 
діапазоні умов, тоді як синій і червоний спектри забезпечують високу роздільність 
сигналів між станами. 
Для забезпечення наочності та кращого розуміння роботи системи, нижче 
наведені графіки (рис. 2.10) які відображають вплив різних спектрів світла на 
розпізнавання стану колб (пуста, заповнена, відсутня) для різних світлових 
спектрів. 
Ці графіки показують розкид результатів дослідження і допоможуть вибрати 
значення порогу розрізнення сигналів від різного стану колб. 
25 
ЧДТУ 242324.ООЗПЗ 
Measu1·e111e11ts for Blue Spectrun, 
700 
680 
11110 
~ 640 
і - Empty 
~ 620 - ~ІаІf 
"' - ·~~ 
ij\ 600 
580 
S60 
а) 
540 
~о~---2""0---~.о----б~О-----'-80 --~ІО~О 
Me1surem,nt Number 
Measurements fог White Spectrum 
890 
" 880 
:, МІ\ 
j 870 - Empty 
1 - Heff 
- Nonc 
~860 
850 
840 
830 б) 
Measurement NumЬer 
Measurements fог Red Spectrum 
840 
820 
.. 
:, 
і 800 - Єmpty 
;;; - Н.11 
с - None 
v"i'  780 
760 в) 
740 
о 20 40 60 80 100 
Measurement NumЬer 
Measurements fог Green Spectrum 
760 
740 
660 
г) 
Meesurcment Nun1be1 
Рис. 2.10. - Результати вимірювання з врахуванням спектра: 
а) синій спектр; б) білий спектр; в) червоний спектр; г) зелений спектр; 
26 
ЧДТУ 242324 .ООЗПЗ 
Виходячи з табличних даних та графіків представлених вище, зауважимо, що 
розраховані похибки є важливими для розуміння точності вимірювань. Наприклад, 
для стану "без колби" похибки для білого спектра склали ±4, що є незначною 
величиною порівняно із загальною амплітудою сигналу. Це шдтверджує 
ефективність датчиків у виявленні стану колби за допомогою білого світла . 
Водночас для зеленого спектра похибки сягали ±6, що вказує на потребу у 
додатковому калібруванні або корекції алгоритмів обробки сигналу. Загалом, 
статистична обробка вимірювань дала змогу виявити найбільш ефективні спектри 
світла для роботи системи та визначити, як зовнішні фактори впливають на 
. . 
розподш сигнашв. 
2.5.3 Аналіз розсіювання сигналів 
Дані, отримані з фоторезистивних датчиків для різних спектрів світла (білий, 
синій, червоний, зелений), свідчать про варіативність сигналів залежно від спектра. 
Похибка вимірювань (розсіювання) є важливим показником стабільності роботи 
системи, оскшьки вона демонструє, насюльки надійно датчики можуть 
вщтворювати результати в однакових умовах. 
Результати по спектрам: 
білий спектр (#white): білий спектр показав найменшу похибку серед 
усіх спектрів - в межах ±2-4. Ця стабільність пояснюється рівномірним 
розподілом довжин хвиль у білому світлі, що забезпечує максимальне 
проникнення через матеріал колб та взаємодію зі світлочутливим 
елементом. Графік вимірювань для білого спектра демонструє практично 
лінійний розподіл без значних відхилень, навіть за різних станів колб 
(пуста, заповнена, відсутня). Це вказує на передбачуваність сигналів і 
мінімальну чутливість до зовнішніх факторів, таких як відбиття або 
. . 
розс1яне св1тло; 
синій і червоний спектри (#blue, #red): сигнали для синього та 
червоного спектрів мають дещо більшу похибку - в межах ±3-6, що також 
видно з графіків. Хоча розсіювання даних більше, ніж у білого спектра, ці 
відхилення залишаються стабільними та прогнозованими. Синій спектр 
27 
ЧДТУ 242324.ООЗПЗ 
краще проникає через темні рідини або матеріали з високим р1внем 
поглинання, але частіше зазнає розсіювання через відбиття. Червоний 
спектр, навпаки, демонструє стабільність у середньо-прозорих рідинах, 
але менш ефективний для роботи з колбами, що мають матові або товсті 
стінки. На графіках спостерігається помірний розкид значень для обох 
спектрів, але ця варіативність легко компенсується алгоритмами обробки 
сигнал1в; 
зелений спектр (#green): зелений спектр показав найбільшу похибку -
в межах ±4-6, що узгоджується з результатами на графіках. Значне 
розсіювання сигналів може бути пов' язане з нижчою проникюстю 
зеленого світла через прозорий матеріал колб і рідини. Окрім того, 
зелений спектр частіше зазнає поглинання через невідповідність довжин 
хвиль і оптичних властивостей середовища. На графіках помітні більш 
виражені коливання значень, що свідчать про нестабільність цього 
спектра для розпізнавання станів колб. 
Загальні висновок, що спектру світлодіодів: 
білий спектр є найнадійнішим для використання в систем~ через 
мінімальну похибку та високу стабільність сигналів. Він підходить для 
. . . . 
широкого спектра застосувань, включаючи р1зю типи рщин 1 
матеріалів колб; 
синій 1 червоний спектри є оптимальними для більш 
вузькоспеціалізованих умов, де потрібна висока роздільність між 
станами. Їхні відхилення добре компенсуються алгоритмами обробки; 
зелений спектр має найвищу похибку, що обмежує його застосування 
для точного розпізнавання станів у лабораторних умовах. Його 
використання потребує додаткових заходів, таких як покращене 
калібрування або адаптивні алгоритми; 
на основі аналізу графіків і розрахунків можна зробити висновок, що 
білий спектр має найбільший потенціал для забезпечення стабільної та 
28 
ЧДТУ 242324.ООЗПЗ 
надійної роботи системи, тоді як інші спектри можуть бути використані 
як допоміжні для підвищення точності в специфічних умовах. 
2.6 Статистичний підхід до внз11аче1111я порогів розрізнення колб 
У системах автоматизованого контролю наповненості колб пороги сигналів 
відіграють ключову роль, оскільки вони дозволяють чітко класифікувати стани 
колб: пуста, заповнена, відсуrня. Наявність правильних порогів забезпечує 
точність і надійність системи, дозволяючи мінімізувати помилки розпізнавання. У 
випадку нашої системи, де сигнали фоторезистивних датчиків залежать від спектра 
світла, стану колби та зовнішніх факторів, необхідність визначення статистично 
обrрунтованих порогів є особливо актуальною. 
Signal lntensity with Decision Thresholds (Blue Spectrum) 
- Signal lntensity 
--- Oecislon Тhreshold 1 (642.50) 
680 --- Decision Тhreshold 2 (577 .ОО) 
660 
~>, 640 --------------- ---------------------------- ---------------- · 
с: 
~ 
Е 
їіі 620 
с: 
с,, 
іл 
600 
580 -------------------------------------------
560 
Empty Half-fllled No Test Tube 
State of Test ТUЬе 
Рис. 2.11 - Приклад порогу для отриманих даних (синій спектр) 
Різниця у сигналах для різних станів колб може бути незначною, особливо за 
наявності шумів або варіативності в умовах експерименту. Наприклад, сигнал для 
стану "пуста колба" може перекриватися з сигналом для "заповненої колби", якщо 
межі між ними не визначені чітко. У таких випадках використання статистичних 
29 
ЧДТУ 242324.ООЗПЗ 
методів дозволяє врахувати не лише середні значення сигналів, але й їхній розкид, 
що дає змогу встановити порогові значення з урахуванням похибки вимірювань. 
Статистичний підхід до визначення порогів базується на аналізі розподілу 
значень сигнашв, отриманих у результаті багаторазових вимірювань. Зокрема, 
середнє значення сигналів для кожного стану використовується як базовий 
орієнтир, тоді як стандартне відхилення та довірчі інтервали дозволяють визначити 
межі розрізнення між станами. Це гарантує, що система буде стабільно 
функціонувати навіть за умов незначних змін зовнішніх факторів, таких як 
освітлення чи матеріал колб. 
Застосування статистичних методів також забезпечує адаптивність системи. 
Наприклад, у випадку калібрування системи для інших типів колб або нових 
лабораторних умов, порогові значення можуть бути автоматично перераховані на 
основі нових даних. Це дозволяє уникнути ручного налаштування, яке може бути 
трудомістким і неточним. Крім того, використання статистичних методів дає змогу 
виявляти та аналізувати аномалії у вимірюваннях, які можуть сигналізувати про 
помилки датчиків або зовнішній вплив . 
Statistical Approach: Distribution of Signal lntensities 
І 
- Empty Test Tube 
17.5 - Half-filled Test Tube 
- No Test ТuЬе 
--- Decision Тhreshold 1 (642.50) 
15.0 --- Declslon Threshold 2 (577 .0,О ) 
12.S 
>u ­
~ 10.0 
::, 
r::r 
i 
7.5 
5.0 
2.5 
600 620 640 660 
Slgnal lntenslty 
Рис. 2.12 - Приклад визначення порогу на основі статистичного 
розподілу отриманих даних 
30 
ЧДТУ 242324 .ООЗПЗ 
Встановлення статистично обrрунтованих порогів є необхідним кроком для 
підвищення точності та стабільності системи. Це дозволяє знизити ризик 
помилкових класифікацій станів і забезпечує надійну роботу в реальних 
лабораторних умовах. У підсумку, статистичний підхід є не лише засобом 
підвищення точності системи, але й її кmочовою особливістю, що робить систему 
адаптивною та універсальною для різних застосувань. 
2. 7 Статистичне визначення пороrів 
Середнє значення сигналу (µ) є ключовим параметром для статистичного 
аналізу, оскільки воно дозволяє узагальнити дані, отримані від фоторезистивних 
датчиків, і визначити основну тенденцію вимірювань для кожного стану колби 
(пуста, напівзаповнена, відсутня). 
Переваги використання середнього значе11ня: 
простота розрахунку та інтерпретації; 
надійність за великої кількості даних (наприклад, 100 вимірювань); 
здатність забезпечувати основу для подальших статистичних розрахунків, 
таких як визначення стандартного відхилення чи довірчих інтервалів. 
Середнє значення є критично важливим елементом у розрахунку порогів, 
оскільки воно формує основу для розуміння поведінки сигналу в кожному стані 
колби . 
ф l~n 
ормула розрахунку середнього значення:µ= ;; .L.i=l хі, де: 
п - кількість вимірювань, 
хі - значення сигналу для і-го вимірювання. 
У нашому випадку кожен стан було виміряно 1О О разш, що забезпечує 
достатню кількість даних для надійного розрахунку середнього значення. 
Розрахунок середнього значення для кожного стану для синього 
спектру: 
пуста колба: Для пустої колби значення сигналів розподілялися навколо 
середнього µempty , яке дорівнює 692. Це показує, що при відсутності 
31 
ЧДТУ 242324.ООЗПЗ 
рщини та прозорості спнок колби сигнал має високий р1вень 
інтенсивності через вільний прохід світлового потоку; 
напівзаповнена колба: середнє значення сигналу для цього стану µhalf = 
593. Зменшення сигналу порівняно з пустою колбою пояснюється тим, що 
рідина поглинає частину світла, що проходить через колбу. Цей стан 
сигналу є проміжним між "пустою" та "відсутньою" колбою; 
відсутня колба: середнє значення для цього стану µпопе = 561. 
Найнижчий рівень сигналу спостерігається через відсутність розсіювання 
та взаємодії свплового потоку з матеріалом колби, що знижує 
. . 
1нтенсивюсть сигналу. 
інтерпретація середнього значення: середнє значення сигналу виконує 
функцію базової точки для кожного стану, навколо якої спостерігається 
розсіювання вимірювань. 
Ці значення дозволяють: 
чітко визначити відмінності між станами: наприклад, р1зниця мtж 
µempty = 692 і µhalf = 593 становить 99 одиниць, що забезпечує 
достатній інтервал для класифікації; 
визначити порогові значення: на основі середнього між двома станами 
(наприклад, Т = 692+593 642 5 
1 = , можна встановити пор1.г  для розр1. знення 
2 
між "пустою" та "напівзаповненою" колбою. 
забезпечити стабільність системи: використання середюх значень 
зменшує вплив аномальних даних або випадкових шумів, які можуть бути 
присутніми у вимірюваннях. 
Алгоритм визначення порогів для шших спектрtв є аналог~чним, тому 
наведемо лише кінцеві результати порогів, визначених через середнє значення для 
кожного спектра світла : 
синій спектр (Blue): 
. 692+593 
поріг між "пустою" та "нашвзаповненою" колбою: Т1 = = 642,5. 
2 
32 
ЧДТУ 242324 .ООЗПЗ 
11 • ,, ,, • ,, колбою: Т _ 593+561 _ 
пор1г м1ж нашвзаповненою та в1дсутньою 2 - 2 -
577. 
білий спектр (White): 
• • 11 11 11 • 899+875 887 
порІг МІЖ пустою та нашвзаповненою" колбою: Т1 = = . 
2 
11 , Т _ 875+840 _ 
порІг МІЖ нашвзаповненою11 та "відсутньою" колбою: 2 - 2 -
857,5. 
червоний спектр (Red): 
• • 11 11 11 • 840+797 818 5 
порІг МІЖ пустою та нашвзаповненою" колбою: Т1 = = , . 
2 
11 , Т _ 797+744 _ 
пор1г м1ж нап1взаповненою" та "відсутньою" колбою: 2 - -
2 
770,5. 
зелений спектр (Green): 
поріг між "пустою" та 11напівзаповненою" колбою: Т = 755 696 
1 + = 725,5. 
2 
пор1г МІЖ "напівзаповненою" та "відсутньою" колбою: Т 696 643 
2 -- +2 --
669,5. 
Ці значення слугують основою для класифікації станів і розділення сигналів 
у межах кожного спектра. Зобразимо на рис. З ,8 графіки отриманих даних з 
порогами для кожного спектра ( синій, білий, червоний, зелений), визначені через 
середнє значення між станами колби ("пуста", "напівзаповнена", "відсутня"). 
Червоні та зелені пунктирні лінії позначають пороги, які розділяють ці стани. 
Signol lntensity ond Decision Тhresholds (Blue Spectrum) 
_.,. Sfg"•I lnttt'l)ІfY 
- - • П\r~d І 164 2 SОІ 
680 --· nv~ 2 tsn 001 
660 
і 640 - - . ------- - -- --- --- - . - - ---------. - -·- -- - - --- - -----------------
!.s:  
1620 
600 
а) 
560 
'"'°Emp~-ty - - - - ---;-;,:-;=;---------:-,--:,-,-
33 
І 
ЧДТУ 242324.ООЗПЗ 
Sigмl lnt,nsity •nd D,clsion Thresholds (Whlt• Sp,ctrum) 
900 ~ S.9naJ lnttnsity 
--- J'hf-ghold 1 188 1 ОО) 
--- TNмhotd 218S7 50) 
890 
б) 
850 
е.со 
L;:Emp=ty-------.....,..,Нo..,.lf"-"л""11ec:1-,-----------,,-No--,!1,..,....ul>e 
51,it, о/ Тest 1\JЬ. 
Signal lntensity and Decision Thresholds (Red Spectrum) 
е.со --- SiQNI lntemity 
--~ Тhresho8d 1 (818 ~01 
--· Тhroshold 2 1770 SОІ 
820 
г: 
"j.Q.  800 
:g 
'іі 
~"7 80 в) 
760 
740t..E-m~p_ty ________НO _..,.,.lf.fi""Іled,.....,...--------,-No,--:-Tu.,....l>e 
State of Тмt l\Jl>e 
Signal lntensity and Decision Thresholds (Gr~en Spectrum) 
760 
....,_ SIQMI lf\lC!Mtty 
--· Thr<>hold І І72S.SОІ 
--· Тh~d 2 1669 SO) 
740 
720 
г) 
660 
640'-:-'~-------.....,..,~:-::--,,-- -------::-:--:-
Empty Half-fill~d No Tul>e 
State of Test Tube 
Рис. 2.13. Графіки отриманих даних з порогами для кожного спектра: 
а) синій спектр; б) білий спектр; в) червоний спектр; г) зелений спектр; 
На основ~ графіків для кожного спектра св1тла ( синій, білий, червоний, 
зелений) можна зробити висновок, що система демонструє чіткі відмінності між 
34 
ЧДТУ 242324.ООЗПЗ 
сигналами для станш колби ("пуста", "напівзаповнена", "відсутня"). Визначені 
пороги, розраховані через середні значення між сусідніми станами, дозволяють 
ефективно розрізняти ці стани. Наприклад, білий спектр забезпечує найвищу 
інтенсивюсть сигналів найменший розкид значень, що робить його 
найстабільнішим для розпізнавання. Синій та червоний спектри показали помірну 
роздільність, тоді як зелений спектр демонструє найбільший розкид сигналів, що 
може ускладнити класифікацію. 
Отримані порогові значення (позначені на графіках пунктирними лініями) 
підтверджують, що розрахунки на основі середніх значень сигналів є ефективним 
методом для класифікації станів колб. Ці пороги враховують варіативність даних і 
забезпечують адаптивність системи до різних спектрів світла. Подальша перевірка 
цих порогів у реальних лабораторних умовах дозволить підтвердити їхню точність 
і оптимізувати алгоритми прийняття рішень. 
Гіпотеза 
Впровадження інтелектуальної системи для автоматизованого контролю 
наповненості медичних ємностей, що поєднує оптичні, фізичні, електронні та 
акустичні методи, дозволить значно підвищити точність і надійність досліджень в 
умовах медичних лабораторій. Застосування сучасних апаратно-програмних 
рішень, таких як мікроконтролери ESP32, у комбінації з економічно вигідними 
сенсорами та адаптивними алгоритмами обробки даних, забезпечить мінімізацію 
впливу людського фактору, зменшення витрат і покращення продуктивності 
лабораторних процесів. Ця система стане доступною альтернативою існуючим 
дороговартісним аналогам і буде здатна адаптуватися до широкого спектра 
лабораторних задач, що робить її перспективною для інтеграції в медичну 
практику. 
Висновки до розділу 2 
Аналіз існуючих методів та аналогів підтверджує, що автоматизація процесу 
контролю наповненості медичних ємностей є не лише актуальною, але й 
35 
ЧДТУ 242324.ООЗПЗ 
необхідною для забезпечення ефективності та точності лабораторних досліджень, 
зокрема ІФА. Однак сучасні рішення мають значний потенціал для вдосконалення . 
Розробка нової інтелектуальної системи, яка враховує сучасні технологічні 
досягнення та орієнтована на економічну доступність, може стати важливим 
кроком у розвитку лабораторної автоматизації. Це дозволить не лише підвищити 
якість досліджень, але й розширити можливості застосування таких систем у 
медичних установах різного рівня. 
У цьому розділі проведено аналіз роботи системи контролю наповненості 
медичних колб, визначено ключові параметри сигналів, та розроблено порогові 
значення для класифікації станів колб. Система продемонструвала здатність 
ефективно розпізнавати три основні стани: пуста колба, напівзаповнена, та 
відсутня колба. Визначені пороги, обчислені через середні значення сигналів для 
кожного стану, забезпечують надійне розділення між ними. 
Результати показали, що спектр світла впливає на точність та стабільність 
сигналів. Білий спектр продемонстрував найкращі результати завдяки високій 
інтенсивності сигналу та мінімальній варіативності між вимірюваннями. Синій і 
червоний спектри також виявилися ефективними, забезпечуючи пом1рну 
чутливість і роздільність між станами. Зелений спектр, попри його найменшу 
інтенсивність, вимагає додаткового налаштування через вищий рівень розсіювання 
сигналів. 
Запропонований статистичний шдхщ дозволив врахувати варіативність 
сигналів, обчислити довірчі інтервали та встановити точні порогові значення для 
кожного спектра. Це значно підвищує адаптивність системи до змінних умов 
роботи, таких як зовнішнє освітлення або особливості матеріалу колб. Перевірка 
порогів на нових даних підтвердила їхню ефективність у реальних лабораторних 
умовах. 
Таким чином, розроблена система і методолопя обробки сиrнал1в є 
універсальними та можуть бути адаптовані до різних типів лабораторних задач. 
Подальше вдосконалення алгоритмів і калібрування для різних спектрів світла та 
матеріалів дозволить забезпечити ще більшу точність і надійність роботи системи. 
36 
ЧДТУ 242324.ООЗПЗ 
РОЗДІЛ 3. ВПРОВАДЖЕННЯ РЕЗУЛЬТАТІВ ДОСЛІДЖЕНЬ У 
ПРАКТИКУ ПРОЕКТУВАННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ 
ІНФОРМАЦІЙНИХ СИСТЕМ 
3.1 Моделювання предметноі області 
З. І. І Предметна область моделювання. Модель предметної області . Словник 
предметної області 
Предметною областю моделювання є процеси контролю наповненост1 
медичних ємностей у лабораторіях, зокрема під час виконання Імуноферментного 
аналізу (ІФА). Це дослідження вимагає точного вимірювання рівня рідин у 
пробірках, які використовуються для зберігання біоматеріалів, реагентів та інших 
рідких середовищ (рис. З.І). 
Рис. З. І - Планшет з пробірками для проведення імуноферментного аналізу 
Основним завданням є автоматизація цього процесу для шдвищення 
точності, ефективності та мінімізації впливу людського фактору. 
Ключові процеси предметноі області: 
- зчитування рівня рідини в пробірці; 
- аналіз отриманих даних для визначення рівня наповненості; 
генерація сигналів або сповіщень у разі перевищення чи недостатності 
р1вня ; 
37 
ЧДТУ 242324.ООЗПЗ 
виведення результатш на інтерфейс користувача для подальшого 
використання. 
Середовище застосування: 
лабораторії, що виконують І ФА; 
медичні установи з високим рівнем автоматизації; 
системи моніторингу лабораторних процесів; 
лабораторні прилади. 
Модель предметної області 
Модель предметної області описує основні об'єкти, їх властивості, функції та 
1заємозв' язки. Для автоматизованої системи контролю наповненосп медичних 
~мностей можна виділити такі компоненти: 
Об'єкти: 
ємюсть: пробірка або контейнер, що використовується для зберігання 
рщин; 
властивості: об'єм, матеріал, прозорість, маркування; 
сенсор: пристрій для визначення рівня рідини; 
типи: оптичний, ємнісний, ультразвуковий; 
. . . . . . . 
властивосп: точюсть, чутлив1сть, сум1сюсть 1з рщиною; 
контролер: мікроконтролер ESP32, що виконує обробку даних із сенсорів; 
властивосп: обчислювальна потужність, підтримка протоколів передачі 
даних; 
програмне забезпечення: алгоритми обробки даних; 
властивості: адаптивність до типів сенсорів, сумісність із інтерфейсами . 
Функції: 
автоматичний збір даних із сенсорів; 
. . . 
анал1з р1вня наповненосп; 
передача результатів на віддалені пристрої або сервери. 
Взаємозв'язки: 
38 
ЧДТУ 242324.ООЗПЗ 
сенсор передає дані до контролера; 
- контролер обробляє дані за допомогою алгоритмів; 
результати передаються на інтерфейс для користувача. 
3.1.2 Елементи моделювання предметної області 
Елементи моделювання предметної області розробляються для забезпечення 
точного відображення процесів автоматизованого контролю наповненост1 
медичних ємностей. Вони включають об'єкти, процеси та взаємозв'язки, які є 
ключовими для функціонування системи. Нижче наведено детальний опис кожного 
елемента. 
Об'єкти 
Об'єкти моделювання представляють матер1алью та нематер1алью 
компоненти системи, які беруть участь у виконанні основних функцій. 
Пробірки (Ємності) - лабораторні контейнери, які використовуються для 
зберігання біоматеріалів та реагентів. 
Властивості: 
матер1ал: пластик, скло; 
об'єм: стандартні об'єми (0.5 мл, І мл, 5 мл тощо); 
прозорість: прозорі або напівпрозорі для роботи з оптичними сенсорами. 
Датчики - пристрої, що здійснюють вимірювання рівня наповненості в 
ємностях. 
Типи датчиків: 
фоторезистивні: визначають р1вень рщини за змшою інтенсивності 
св~тла; 
ємнісні: виявляють зміни ємності залежно від наявності рідини; 
ультразвукові: використовують звукові хвилі для визначення р1вня 
рщини. 
Властивості датчиків: 
- чутлив1сть; 
- діапазон вимірювання; 
- точність. 
39 
ЧДТУ 242324.ООЗПЗ 
Мікроконтролер - центральний обчислювальнииv 
модуль системи, що 
забезпечує обробку даних, наприклад ЕSРЗ2. 
Функції: 
_ збір даних із сенсорів; 
_ обробка сигналів; 
_ передача інформації програмному модулю. 
Програмні алгоритми - програмне забезпечення для аналізу та 
інтерпретації даних. 
Типи алгоритмів: 
- обробка сигналів сенсорів; 
- візуалізація даних; 
. . 
- генеращя споВІщень. 
Інтерфейс користувача - засіб для взаємодії користувача із системою. 
Властивості: 
- графічний інтерфейс; 
- інтуїтивно зрозуміле відображення даних; 
. . 
- можлив1сть налаштування параметр1в системи. 
Процеси 
Процеси визначають функціональність системи та її здатність вирішувати 
поставлені завдання. 
Збір даних із сенсорів - датчики зчитують інформацію про рівень рідини в 
ємності . 
Передача даних від сенсорів до мікроконтролера. 
Аналіз рівня наповненості: 
Мікроконтролер обробляє отримані дані . 
Програмні алгоритми визначають, чи відповідає рівень рщини заданим 
нормам. 
Формування звітів: 
- система генерує звіти, які включають дані про рівень рідини; 
- відображення інформації на інтерфейсі користувача; 
40 
ЧДТУ 242324.ООЗПЗ 
у разі порушень рівня - генерація попереджень. 
Взаємозв'язки 
Взаємозв'язки в системі забезпечують обмін даними м1ж її елементами, 
необхідний для виконання функціональних завдань . Перший взаємозв'язок - між 
датчиком і мікроконтролером. Його основним призначенням є передача даних про 
рівень рідини. Датчик зчитує інформацію про рівень рідини та передає цифровий 
сигнал до мікроконтролера через відповідний інтерфейс, наприклад, І2С або SPI. 
Основна вимога до цього зв' язку - забезпечення швидкої та надійної передачі 
даних. 
Другий взаємозв'язок відбувається м1ж мікроконтролером програмним 
модулем. Він призначений для обробки та інтерпретації даних. У цьому процесі 
мікроконтролер обробляє отрима.ні сигнали та формує структуру даних, готову для 
аналізу. Потім результати передаються до програмного модуля, який забезпечує 
візуалізацію або подальший а.наліз. Основною вимогою до цього етапу є висока 
швидкість обробки даних, щоб уникнуrи затримок у роботі системи. 
Третій взаємозв'язок пов'язує користувача з інтерфейсом системи . Його 
призначення - забезпечення взаємодії користувача з результатами роботи системи. 
Користувач отримує доступ до да.них через графічний інтерфейс, що дозволяє йому 
переглядати результати роботи системи. 
Також існує можливість налаштування параметрів, таких як встановлення 
порогових значень рівня рідини. Основними вимогами до цього зв' язку є 
зрозумілість, інтуїтивність і гнучкість інтерфейсу, що гарантує зручність у 
використанні. 
Елементи моделювання предметної області формують основу для 
проектування системи, забезпечуючи її відповідність поставленим вимогам 1 
функціональність в умовах лабораторної практики. 
3.1 .3 Робоча область моделювання 
Робоча область моделювання охоплює я:к фізичні компоненти, так і 
програмне забезпечення, яю забезпечують функціональність системи 
автоматизованого контролю наповненості медичних ємностей. У цьому роздш1 
41 
ЧДТУ 242324 .ООЗПЗ 
детально описано основні елементи робочої області моделювання та їхню роль у 
систем~. 
Фізичні компоненти 
Сенсори є ключовими елементами для зчитування даних про рівень рідини в 
ємностях. 
Фоторезистивні сенсори (модулі): 
Принцип роботи: Вимірюють інтенсивність світла, яке проходить через або 
відбивається від рідини. Залежно від рівня рідини інтенсивність змінюється, 
що дозволяє визначити її рівень (рис. З.З). 
Рис. З.З Фоторезистивний модуль КУ-018 
Переваги: 
- висока точність для прозорих та напівпрозорих рідин; 
компактність і низька вартість. 
Обмеження: 
ефективність знижується для непрозорих рщин або рщин 1з високим 
кольоровим фоном. 
LЕD-світл одіоди: 
Використовуються у парі з фоторезистивними датчиками для 
освітлення пробірки. Колір світлодіодів може змінюватися залежно вщ 
потреб, для прикладу LED RGB світлодіод WS2812B (рис. 3.3): 
42 
ЧДТУ 242324.ООЗПЗ 
біле світло - для загальних аналізів· 
' 
специфічні спектри - для рідин, що мають специфічні оптичю 
властивості. 
Рис. З.З - LED RGB світлодіод WS2812B 
Мікроконтролер ESP32 
Мікроконтролер ЕSРЗ2 (рис. З.З) є центральним обчислювальним елементом 
системи, який отримує дані від сенсорів, обробляє їх і передає результат. 
Рис. З .З - Мікроконтролер ЕSРЗ2 
Основні функціі: 
- обробка сигналів від сенсорів; 
- використання алгоритмів аналізу рівня наповненості; 
- передача результатів через бездротовий зв'язок (Wi-Fi, Bluetooth) до 
програмного інтерфейсу; 
- можливість підключення додаткових модулів, таких як дисплей чи 
зовнішня пам' ять. 
Технічні характеристики: 
43 
ЧДТУ 242324.ООЗПЗ 
двоядерний процесор; 
вбудовані модулі Wi-Fi і Bluetooth; 
підтримка протоколів І2С, SPI, UART для підключення сенсорів . 
Пробірки різних типів 
Пробірки є об' єктами, до яких застосовується контроль рівня наповненості. 
Типи пробірок: 
за об'ємом: 0.5 мл, 1 мл, 2 мл і більше; 
за матеріалом: скляні, пластикові; 
за прозорістю: прозорі, напівпрозорі. 
Роль у системі: 
пробірки є джерелом сигналів для сенсорів, які зчитують рівень рідини; 
їхні фізичні властивості (матеріал, форма, прозорість) впливають на 
точн1сть вим1рювань. 
Програмне забезпечення 
Програмне забезпечення складається з кількох основних компонентів, кожен 
із яких виконує ключову роль у функціонуванні системи. Система зчитування 
даних із сенсорів відповідає за отримання сигналів із фізичних сенсорів та їх 
подальшу обробку. Її основними функціями є зчитування аналогових і цифрових 
сигналів, фільтрація шумів для отримання точних даних і перетворення сигналів у 
інформацію про рівень рідини. Для реалізації цієї частини використовується 
програмна платформа ESP-IDF або Arduino IDE, яка забезпечує ефективну роботу 
з інтерфейсами І2С чи SPI для зв'язку із сенсорами. 
Алгоритми аналізу рівня рідин забезпечують обробку сигналів із сенсорів для 
отримання кінцевих результатів . Основними компонентами є обробка сигналів для 
визначення рівня наповненості, адаптація до умов для врахування особливостей 
типу пробірки чи властивостей рідини та контроль відхилень шляхом порівняння 
рівня рідини із заданими порогами. Методи аналізу включають використання 
машинного навчання для адаптивного налаштування системи та застосування 
фільтрів Калмана для згладжування сигналів, що підвищує точність і надійність 
результатів. 
44 
ЧДТУ 242324.ООЗПЗ 
Інтерфейс користувача забезпечує візуалізацію даних взаємод1ю 1з 
системою. Основними функціями інтерфейсу є відображення рівня рідини в 
реальному часі , виведення графіків і таблиць із результатами вимірювань, а також 
сповіщення про порушення допустимих рівнів рідини. Інтерфейс реалізується з 
використанням інтуїтивно зрозумілого дизайну, який підтримує сенсорні екрани, 
дозволяє налаштовувати параметри, такі як пороги рівня рідини, і забезпечує 
передачу даних на сервери чи мобільні пристрої через Wi-Fi або Bluetooth. Ці 
компоненти забезпечують повний цикл роботи системи - від зчитування даних до 
їх аналізу та зручного представлення результатів користувачеві. 
Зв 'язок фізичних компонентів із програмним забезпеченням 
Робоча область моделювання інтегрує фізичні компоненти та програмне 
забезпечення . Сенсори забезпечують фізичні вимірювання, мікроконтролер 
виконує обробку цих даних, а програмне забезпечення аналізує результати та 
виводить їх користувачеві. 
Робоча область моделювання є основою для створення функціональної 
системи, яка забезпечує точність, ефективність і зручність використання в умовах 
лабораторії. 
3.2 Формування та аналіз вимог 
Процес формування та аналізу вимог до програмного забезпечення є 
ключовим етапом розробки системи. Цей розділ охоплює детальний опис вимог, 
які визначають функціональність, надійність, продуктивність і адаптивність 
системи автоматизованого контролю наповненості медичних ємностей. 
3.2.1 Формування вимог до програмного забезпечення 
Формування вимог передбачає визначення основних цілей, яю має 
виконувати програмне забезпечення, а також обмежень, які необхідно враховувати 
під час його розробки. Вимоги поділяються на первинні, детальні , функціональні 
та нефункціональні. 
Первинні вимоги 
45 
ЧДТУ 242324.ООЗПЗ 
Ці вимоги визначають базову функціональність, необхідну для виконання 
основних завдань системи. 
Забезпечення точного зчитування рівня наповненості 
Проrрамне забезпечення має обробляти дані з високою точюстю, 
враховуючи властивості рідини (прозорість, густину) та матеріалу ємності (скло, 
пластик). Алгоритми повинні враховувати можливі похибки сенсор1в 
компенсувати їх за допомогою адаптивних методів. 
Обробка сигналів у реальному часі 
Дані із сенсорів повинні оброблятися миттєво, щоб забезпечити актуальність 
інформації для користувача. Система повинна підтримувати обробку великих 
обсягів даних без затримок. 
Сумісність із різними типами лабораторних ємностей 
Проrрамне забезпечення має бути гнучким і підтримувати роботу з 
ємностями різного об'єму, форми, матеріалу та прозорості . Параметри сенсорів 
. . . 
повиню налаштовуватися залежно вщ типу ємност1. 
Детальні вимоги 
Ці вимоги деталізують функціональність програмного забезпечення та 
забезпечують його зручність у використанні. 
Використання інтерфейсу для виводу результатів . Проrрамне забезпечення 
повинно мати зрозумілий і зручний графічний інтерфейс для користувача. Вивід 
інформації у вигляді таблиць, rрафіків, сповіщень. Візуалізація даних у 
зрозумілому вигляді (rрафіки, діаrрами). Дані про рівень наповненості мають бути 
представлені у вигляді зрозумілих rрафічних елементів. Інформація повинна бути 
легко сприйнятною навіть для некваліфікованих користувачів. Підтримка 
налаштувань для різних типів сенсорів. Система повинна дозволяти змінювати 
налаштування для підтримки р1зних сенсорів.Налаштування включають 
чутливість, частоту зчитування, калібрування. 
Функціональні вимоги 
Функціональні вимоги визначають основні функції, які повинна виконувати 
система. Проrрамне забезпечення має забезпечувати збір даних із сенсорів у режимі 
46 
ЧДТУ 242324.ООЗПЗ 
реального часу, з подальшим аналізом рівня рщини та його пор1внянням 1з 
заданими пороговими значеннями. У раз1 невідповідності р1вня рщини 
допустимому діапазону система повинна надсилати сповіщення. Оповіщення 
, мають бути доступними в інтерфейсі користувача та дублюватися через додаткові 
канали, таю як звуковий сигнал, щоб забезпечити своєчасне реагування . 
Нефункціональні вимоги визначають характеристики програмного забезпечення, 
які забезпечують його продуктивність, надійність і масштабованість. Для 
забезпечення надійності система повинна працювати безвідмовно навіть у 
складних умовах, таких як змінна температура, вологість чи електромагнітні 
перешкоди. Резервне копіювання даних є необхідним для уникнення втрат 
важливої інформації. 
Швидкість обробки даних також є критично важливою вимогою. Програмне 
забезпечення повинно забезпечувати обробку даних у реальному часі з 
мінімальними затримками, не перевищуючи О. І секунди на один запит. Навіть при 
роботі з кількома сенсорами одночасно продуктивність програми має залишатися 
стабільною. 
Можливість масштабування системи є ще одюєю важливою вимогою. 
Програмне забезпечення повинно підтримувати додавання нових компонент1в, 
таких як сенсори або мікроконтролери, без значних змін у його архітектурі . 
Інфраструктура системи повинна бути адаптованою для інтеграції з іншими 
лабораторними системами, що дозволить легко розширювати її функціонал 
відповідно до нових потреб. 
Правильне визначення первинних, детальних, функціональних 1 
нефункціональних вимог є основою для створення ефективної, надійної та зручної 
у використанні системи, яка відповідає потребам користувачів. Ці вимоги 
формують базу для подальшого моделювання, проектування та реалізації 
програмного забезпечення. 
3.2.2 Формування вимог за допомогою діаграми прецедентів 
Діаграма прецедентів (Use Case Diagram) [І 7-18] є інструментом для 
графічного представлення функціональних вимог до системи. Вона шюструє 
47 
ЧДТУ 242324.ООЗПЗ 
взаємодію між користувачами (акторами) та системою, описуючи основні сценарії 
використання. Цей метод дозволяє формалізувати вимоги, забезпечуючи 
зрозумілість і структурування процесів. 
Для системи автоматизованого контролю наповненості медичних ємностей 
основними акторами є: 
Користувач: лаборант або оператор, який взаємод1є 1з системою для 
отримання даних і налаштування параметрів. 
Система: комплекс програмного забезпечення та апаратного забезпечення, 
що забезпечує виконання функцій контролю наповненості. 
Основні прецеденти (сценарії використання) 
Прецеденти описують дії, які можуть виконуватися в межах системи. 
Визначені ключові сценарії: 
Ініціалізація системи 
Опис: Користувач запускає систему та виконує її базову перевірку (з' єднання 
із сенсорами, налаштування мікроконтролера). 
Результат: Система готова до роботи. 
Зчитування рівня рідини 
Опис: Система отримує дані із сенсорів про рівень рідини в ємностях. 
Результат: Дані про наповненість передаються для обробки. 
Аналіз рівня наповненості 
Опис: Програмний модуль обробляє отримані дані та визначає, чи відповідає 
рівень рідини встановленим порогам. 
Результат: Сформований висновок про відповідність рівня рідини. 
Вивід результатів 
Опис: Система відображає результати анал1зу в інтерфейсі користувача 
(таблиці, графіки, діаграми). 
Результат: Користувач отримує інформацію для подальшого прийняття 
рішень. 
Налаштування параметрів 
48 
ЧДТУ 242324.ООЗПЗ 
Опис: Користувач налаштовує порогові значення рівня рідини, параметри 
роботи сенсорів і режимів обробки. 
Результат: Система адаптується до конкретних потреб. 
Генерація сповіщень 
Опис: Система генерує попередження у раз1 виявлення порушень 
(наприклад, рівень рідини нижчий за мінімальний) . 
Результат: Користувач отримує сповіщення. 
Діаграма прецедентів 
Для ілюстрації зазначених сценаріїв побудована діаграма прецедентів, яка 
включає актора "Користувач" і систему з описом основних прецедентів. 
Елементи діаграми: 
Актори: 
Користувач: виконує взаємодію із системою. 
Система: виконує обробку даних і вивід результатів. 
Прецеденти: 
шщ1ал1зац~я системи; 
. . 
зчитування р1вня рщини; 
. . . 
анал1з р1вня наповненост1; 
. . 
вивщ результатш; 
налаштування параметр1в; 
. . 
генерац~я споВІщень. 
Зв'язки: 
Користувач - система: користувач ініціює всі прецеденти. 
Система - прецеденти: система реалізує функції, описані у прецедентах. 
Формування вимог за допомогою діаграми прецедентш забезпечує 
структурований і зрозумілий підхід до опису функціональності системи. Діаграма 
охоплює всі основні сценарії використання, допомагаючи ефективно взаємодіяти 
між розробниками та користувачами. Вона служить основою для подальшого 
проектування та реалізації програмного забезпечення . Діаграма дозволяє чітко 
визначити всі функціональні вимоги до системи. 
49 
ЧДТУ 242324 .ООЗПЗ 
-
hlllillHn System ' '-- Ае8СІ Llquld Level <.._ Ам!уr• АІІ Level , ( ОІарІау Reaulll _) ( Adfu11 P1reme1111 ) І Goneшe Nollllcetlons J 
Рис. 3 .4 - Діаграма прецедентів 
Графічне представлення спрощує розуміння функціональності системи для 
r::ix учасників проекту. Діаграма легко адаптується до змін у вимогах. На основі 
іаграми прецедентів можна проектувати логічну структуру системи. 
3.2.3 Проектування логічної структури програмного комплексу 
3.2.3.1 Діаграми класів 
Діаграма класів є однією з ключових моделей у проектуванні програмного 
абезпечення. Вона описує основні класи, їх властивості, методи та зв' язки між 
mми. Для системи автоматизованого контролю виділено три основні класи: 
Клас "Сенсор" 
Цей клас відповідає за зчитування даних із фізичних сенсорів та передачу їх 
~о мnсроконтролера. 
Атрибути: 
sensorID - унікальний ідентифікатор сенсора. 
sensorType - тип сенсора ( фоторезистивний, ультразвуковий тощо). 
sensitivity- рівень чутливості . 
Методи: 
readData() - отримання даних із сенсора. 
calibrate() - калібрування сенсора. 
Клас "Мікроконтролер" 
Виконує обробку даних, отриманих із сенсорів, та передачу їх до інтерфейсу 
користувача. 
Атрибути: 
50 
ЧДТУ 242324.ООЗПЗ 
- controllerID - унікальний ідентифікатор мікроконтролера. 
processingPower - обчислювальна потужність. 
Методи: 
processDataO - обробка даних. 
transmitDataO - передача даних до інтерфейсу. 
Клас "Інтерфейс" 
Забезпечує вивід обробленої інформації користувачеві. 
Атрибуrи: 
interfaceType - тип інтерфейсу (графічний, текстовий). 
outputFonnat- формат виводу (графіки, таблиці, діаграми). 
Методи: 
displayDataO - відображення даних. 
generateAlertO - генерац~я попереджень у раз1 порушення порогових 
значень. 
Зв'язки між класами: 
клас "Сенсор" передає дані до класу "Мікроконтролер"; 
клас "Мікроконтролер" обробляє дані та передає їх до класу "Інтерфейс"; 
клас "Інтерфейс" взаємодіє із користувачем, забезпечуючи візуалізацію 
результаnв. 
r е>- . 
•o N-МO-l1D-: S-ttм-t ' 
О М~МОf~ : ..
! .. -=~...,.  .. 
.•• ,.~..омiаu~: о.-.~ · 
• 
~ мк,осоnиом., 
oconu~,.o : lt,Vlf 
о р,ос:еММ,Роwеr : fl08t 
• р,ске..О.UО : .,Qid 
• "~t0 8t&(} : woU 
~ .......................  
-• 
(() ln'8rl.U 
о 1ntt,1..,.т,-,. · l lrinu 
о ~Ц)uІІОfІRаІ : 8t1Іne 
• dщ:м•1DaL8() : vokl 
• ..1 1,,a1aALtfl(J : wot,cji 
. t···. ... ,.. ...  
С)uи, 
Рис. З .5 - Діаграма класів 
51 
ЧДТУ 242324.ООЗПЗ 
3.2.3.2 Діаграми пакетів 
Діаграма пакетів показує розподіл компонентів програмного комплексу між 
модулями. Вона забезпечує структуризацію та модульність системи, що спрощує її 
підтримку та масштабування. 
Пакет "Апаратна частина" 
Включає фізичні компоненти системи та класи, що забезпечують їх 
функціонування. 
Компоненти: 
- клас "Сенсор" - управління сенсорами; 
клас "Мікроконтролер" - обробка даних. 
Пакет "Програмна обробка" 
Містить алгоритми та лопку обробки даних, що забезпечують 
функціональність системи. 
Компоненти: 
алгоритми аналізу даних із сенсорів; 
модулі калібрування та адаптації до змін умов. 
Пакет "Користувацький інтерфейс" 
Забезпечує вивід обробленої інформації користувачеві та інтерактивність 
системи. 
Компоненти: 
- інтерфейс для відображення результатів; 
- налаштування порогових значень. 
Зв'язки між пакетами: 
- пакет "Апаратна частина" передає дані до пакета "Програмна обробка"; 
- пакет "Програмна обробка" обробляє дані та передає їх до пакета 
"Користувацький інтерфейс"; 
пакет "Користувацький інтерфейс" забезпечує зворотний зв ' язок 1з 
користувачем. 
52 
ЧДТУ 242324.ООЗПЗ 
·--• .....т. -.. ..... о~- ..... 
•~nм. · ~ ,.. 
·•, ..~..."'°. .о...  ·-~~  ........  
•~; .... ...... ІІІ() ~ --
-- ---
·..........-....-.. ..,. ...............  . ....- .....­.о .... 
}----
Рис. 3 .6 - Діаrрама паке-rів 
ВізуалІзацІя 
Для ілюстрації описаних концепцій побудовано: 
- дІаrрама класів: відображає класи, їх атрибути, методи та зв 'язки між 
ними; 
дІаrрама пакетів: відображає модульну структуру системи з ч1тким 
розподілом компонентів. 
Ці діаграми забезпечують структуроване бачення логічної архпектури 
програмного комплексу, сприяють ефективній розробці та полегшують 
масштабування системи. 
З.З Архітектурне проектування 
Архітектурне проектування передбачає створення структури системи, яка 
визначає взаємодію між її компонентами. Для системи автоматизованого контролю 
наповненості медичних ємностей архітектура базується на розподілі функцій між 
апаратною частиною, проrрамним забезпеченням і інтерфейсом користувача. 
Основою є діаграма компонентів (рис. 3.6), яка описує взаємодію ключових 
частин системи. 
53 
ЧДТУ 242324.ООЗПЗ 
3.3.1 Діаграма компонентів 
Діаграма компонентів відображає взаємодію основних частин системи, 
таких як сенсори, мікроконтролер і інтерфейс користувача, забезпечуючи 
розуміння логіки функціонування системи. 
Сенсори призначені для зчитування даних про рівень рідини в медичних 
ємностях. Вони можуть бути представлені різними типами: фоторезистивні 
сенсори, які визначають інтенсивність світла, що проходить через рідину; 
ультразвукові сенсори, які вимірюють відстань до поверхні рідини за допомогою 
звукових хвиль; і ємнісні сенсори, які виявляють зміни електричної ємності 
залежно від наявності рідини. Основною функцією сенсорів є збір даних про 
наповненість та передача їх до мікроконтролера. 
Мікроконтролер виконує роль центрального обчислювального модуля. 
Його компоненти включають процесор, інтерфейси зв'язку (12С, SPI або UART) 
для підключення сенсорів, а також модулі зв'язку (Wi-Fi або Bluetooth) для 
передачі даних. Мікроконтролер обробляє сигнали із сенсорів, виконує 
калібрування даних для підвищення точності та передає результати до інтерфейсу 
користувача. Він також реалізує алгоритми обробки, забезпечуючи ефективну 
інтеграцію сенсорних даних. 
Інтерфейс користувача призначений для надання обробленої інформації у 
зручному вигляді. Він включає графічний інтерфейс, який відображає результати 
У формі графіків, таблиць чи діаграм, а також функцію налаштувань для введення 
порогових значень, вибору типу сенсорів або параметрів калібрування. Основні 
функції інтерфейсу полягають в інформуванні про рівень рідини в реальному часі 
та генерації сповіщень у разі порушення допустимих значень . 
Між компонентами встановлені чіткі взаємозв'язки. Сенсори передають 
дані до мікроконтролера через інтерфейси І2С, SPI або UART. Мікроконтролер 
обробляє отримані дані та передає їх до інтерфейсу користувача за допомогою 
USB, Wi-Fi чи Bluetooth. у свою чергу, інтерфейс дозволяє користувачеві 
отримувати інформацію, налаштовувати параметри системи та отримувати 
сповіщення. 
54 
ЧДТУ 242324.ООЗПЗ 
таким чином, діаграма компонентів демонструє, як сенсори підключені до 
мікроконтролера для збору та обробки даних, після чого результати передаються 
j}І'Герфейс користувача, забезпечуючи зручний доступ до функціоналу системи. 
8 
ця взаємодія гарантує ефективність і зручність використання розробленого 
ріmення. 
н .........,  
' «} 8.-n■or ••ttwara i,trociaa■ Іn■ 
о "neorІD : 8trtno 
о •"•nne•o•r·•Т~yvp• :  : 8trtna 
2 FIO■I 
• readData() : D■ta 
І. • c.atlbrate() : vold 
}·""" ... ,. 
«") Mtcrocontroller 
о controller lD : Strlng 
о P""'•••Іngftow■r : fl"lo81 
• p roc•••D•t•() : YOld 
• tranamltDataC) : vold 
Pro
u■■r Іntarta, ., 
caa"a and 1,a n■m"• d■І■ 
~ ІnІ••••с• ~ 
о lnterfacaTyp■ : Strlng 
..!.. outputfl"~ m•t :....!.!_rlng 
• d l aptayData() : vold ~ 
-• ga-nar~ataA,І art() : -voІd 
f'ovkleo ІееdЬе ... 
Рис. З. 7 - Діаграма компонентів 
Діаграма компонент1в описує ключов1 частини системи та їх взаємод1ю, 
забезпечуючи розуміння архітектури системи. Цей підхід дозволяє забезпечити 
ефективний розподіл функцій між компонентами, гнучкість у налаштуванні 
системи та зручність для користувачів. 
З .З .2 Діаграма розгортання 
Діаграма розгортання (Deployment Diagram) демонструє, як фізичні 
компоненти системи розташовані в лабораторній інфраструктурі. Вона відображає 
апаратні вузли, програмні компоненти, а також зв' язки між ними, що забезпечують 
функціонування системи в реальних умовах. 
Для системи автоматизованого контролю наповненості медичних ємностей 
о. сно . . . 
вна увага приділяється розташуванню сенсорtв, мtкроконтролера та 
llltepфeйcy користувача в лабораторній інфраструктурі . Діаграма розгортання 
55 
ЧДТУ 242324.ООЗПЗ 
описує взаємодію компонентів системи в лабораторному середовищі, включаючи 
апаратні вузли, програмні компоненти та мережеві з' єднання . 
Лабораторне середовище є місцем, де система інтегрується в робочі 
процеси. Воно включає обладнання, таке як столи для проведення аналізів, 
пробірки та ємності з реагентами, що забезпечують умови для роботи системи. 
Апаратні вузли складаються із сенсорів, мікроконтролера та сервера або 
комп'ютера користувача. Сенсори розташовані поруч із пробірками або ємностями 
та підключені до мікроконтролера для передачі даних. Мікроконтролер, у свою 
чергу, знаходиться на робочому місці або поруч із сенсорами й забезпечує зв ' язок 
із ними через дротові (І2С, SPI) або бездротові (Bluetooth, Wi-Fi) з'єднання. Сервер 
або комп'ютер користувача використовується для запуску програмного 
забезпечення інтерфейсу користувача. 
Програмні компоненти включають алгоритми обробки, що виконуються на 
мікроконтролері або сервері, а також інтерфейс користувача, який запускається на 
комп'ютері для візуалізації результатів і взаємодії з системою. 
Мережеві з'єднання забезпечують передачу даних між компонентами. Вони 
використовуються для передачі даних від сенсорів до мікроконтролера, від 
мікроконтролера до комп'ютера або сервера, а також від сервера до користувача 
через локальну мережу або хмарні сервіси. 
Елементи діаграми розгортання включають кілька ключових вузлів. Вузол 
"Сенсор" обладнаний фоторезистивними, ультразвуковими або ємюсними 
сенсорами, які передають дані до мікроконтролера. Вузол "Мікроконтролер" 
приймає ці дані, обробляє їх і передає на сервер або комп'ютер користувача. Вузол 
"Комп'ютер користувача" забезпечує запуск інтерфейсу користувача, отримує 
оброблені дані та забезпечує їх візуалізацію й аналіз. Мережа, як ключовий 
елемент, використовує локальне з'єднання, наприклад Wi-Fi або Ethemet, для 
передачі даних між усіма компонентами . 
Графічна модель системи показує, як сенсори передають даю до 
Мікроконтролера, який надсилає оброблену інформацію до комп'ютера 
56 
ЧДТУ 242324 .ООЗПЗ 
корнстувача. Мережа забезпечує з, єднання . 
МІЖ цими вузлами формуючи 
інтегровану систему для контролю наповнен . ' 
ост~ медичних ємностей . 
...... ,. 
-Іо 
,,__ _...... ., t 
... ,. ..... ,. ... , 
---t 
Рис. 3.5 - Діаrрама розгортання 
Діаграма розгортання дозволяє зрозуміти, як компоненти системи 
1нтеrруються в лабораторну інфраструктуру. Вона визначає їх розташування, 
зв'язки та функціональну роль, що допомагає оптимізувати процеси впровадження 
та забезпечити надійність роботи системи. 
3.4 Моделювання поведінки системи 
Моделювання поведінки системи дозволяє формалізувати динамічні аспекти 
ЇЇ роботи. У цьому розділі представлені діаграми, які описують послідовність дій, 
взаємодію між компонентами та стани системи в різних етапах роботи. 
3.4.1 Діаграма діяльності 
Діаграма діяльності ілюструє послідовність виконання ключових процес1в у 
системі, починаючи від збору даних із сенсорів і закінчуючи формуванням 
J>езультатів для користувача. 
57 
ЧД1 242324.ООЗПЗ 
ІnІІІ1ІІ1'1 8y 1tem ) 
.. 
Check tonn1c11on1 wlth 8entota l 
.. 
l Ptr1orm НІІ•ІІІІ 
t 
( СоІІеоІ O■te 
t 
( Rtld Іt'ІІІ lnlorm1tlon trom StПIOfl 
t 
l Stnd d111 Іо Mlcroconlrolltr) 
l + 
P roc111 DataJ  
l t 
А n1Іу11 recelved •~n•І•) 
r t 
Otltrmlnt compll1nc1 wlth thr11holda ) 
t 
( Form RttUIIІ) 
t 
Stnd proc:1111d fllU~I• 10 u,,r lnt1rl1c:), 
( Output lntormatlon) 
t 
( Dlaplay r11ul18 ln tаЬІІІ, grapha, ~ dl1gra~ 
LtY81 ml1m8toh'1 
f•• 
( o,neratt 11,n J 
Рис. 3.8. - Діаграма діяльності 
Процес починається з ініціалізації системи, коли вона запускається та 
перевіряє з' єднання із сенсорами. На цьому етапі виконується самотестування, щоб 
забезпечити готовність системи до роботи. 
Після успішної ініціалізації відбувається збір даних: сенсори зчитують 
інформацію про рівень наповненості медичних ємностей, передаючи ці дані до 
мікроконтролера. Наступний етап - обробка даних, де мікроконтролер аналіз є 
отримані сигнали. Використовуються алгоритми, які визначають відповідні ть 
рівня наповненості заданим пороговим значенням. Після анал1з данн 
Мікроконтролер передає оброблену інформацію до інтсрфей у кори тувача під час 
етапу формування результатів. 
58 
ЧДТУ 242324.ООЗПЗ 
На завершальному етапі, виводі І~~формаціУ, 
інтерфейс користувача 
. бражає результати у зручному вигляді - таблицями ф' . 
stдo , гра 1ками або д1аграмами. 
я •"О рівень рідини не відповідає допустимим значенням 
i~ , система генерує 
віnхення, щоб повідомити користувача про відхилення • Ц v • v 
сrто еи посшдовнии процес 
1:.,,.,.печує точність і зручність у використанні системи для . 
за~ контролю наповненост1 
медичних ємностей. 
З.4.2 Діаграма послідовності 
Діаграма послідовності відображає взаємодію між компонентами системи в 
хронологічному порядку, демонструючи, як дані передаються та обробляються. 
Процес починається з активації сенсора, коли користувач або сама система 
ініціює роботу сенсорів. Під час цього етапу сенсори перевіряють свій стан і 
готовність до роботи, забезпечуючи коректність подальшого збору даних. Після 
активації відбувається зчитування даних. Сенсори передають зібрану інформацію 
до мікроконтролера через встановлений інтерфейс зв'язку, наприклад, І2С або SPI. 
Мікроконтролер приймає ці дані, фіксує отримані значення та готується до їхньої 
обробки. На етапі аналізу результатів мікроконтролер виконує обробку 
отриманих даних, застосовуючи відповідні алгоритми для визначення р1вня 
наповненості ємностей. Оброблені результати передаються до інтерфейсу 
користувача, де вони виводяться у зручному форматі для подальшого аналізу або 
. . 
прийняття рішень. Ця послідовність забезпечує ефективну взаємод1ю МІЖ 
об' єктами системи, що сприяє її надійній та безперебійній роботі. 
9 
l u1cro<:onlroll8r ] lU нr lnl8ll•ce J 
• Activete Senao,1 ., 
Check 11,atu• •nd 11adln111 
~ 
Send соІІесІІd dаІІ .. 
Record 11c1Іv1d УІІUІІ 
Send fІІUІІІ for OUI ut 
uн, І Sen1or ) [ Mlcrocon1roІІ•r } І u 1er ІnІеrІас• І 
І 
( J 
Рис. 3.9 - Діаграма послідовносп 
59 
ЧДТУ 242324.ООЗПЗ 
3.4.3 Діаграма комунікації 
Діаграма комунікації демонструє взаємодію між компонентами системи під 
час виконання її функцій, забезпечуючи координацію обміну даними та 
управління. Взаємодія починається 1з зв' язку м1ж сенсорами та 
мікроконтролером, де сенсори збирають інформацію про рівень рідини. Зібрані 
дані передаються до мікроконтролера через дротові інтерфейси, такі як І2С або SPI, 
або через бездротові технології, наприклад Bluetooth. Цей етап забезпечує 
отримання базової інформації для подальшої обробки. Далі відбувається взаємодія 
між мікроконтролером та інтерфейсом користувача. Мікроконтролер обробляє 
отримані дані, використовуючи алгоритми аналізу, і передає результати до 
інтерфейсу користувача. Оброблені значення можуть включати рівень 
наповненості, графіки та спов1щення про критичні ситуації, що забезпечує 
інформативність I зручюсть для користувача. На завершальному еташ 
встановлюється зв' язок між користувачем та інтерфейсом. Користувач отримує 
результати у зрозумілому форматі, а також має можливість налаштовувати 
параметри системи, такі як порогові значення рівня рідини чи вибір типу сенсорів. 
Така взаємодія гарантує зручність використання системи та її адаптивність до 
вимог користувача. 
~ Senaor Mlcrocontroller / u,er lnterface / 
Uaer і 
' 
: Collect and ,end llquld level data Jo ''  
' ; Send proce11ed valuea, grapha, and notlllcatlons Jo ; 
; Recelv~ reaulla and edjuat ayatem paramete(• " : 
' ' [ Uaer Іn°tarfaca ] 
U. '.  [ ' ] Mlcrocontroller -
;: -ю• 
Рис. З .1 О - Діаграма комунікації 
3.4.4 Діаграма скінченного автомату . 
. бражає основні стани системи, через яю 
Діаграма скінченного автомату вщо .. • · 
. ~ . емонструє ІХНІО ПОСЛІДОВНІСТЬ . 
своїх функцtи, І д 
вона проходить під час виконання 
60 
ЧДТУ 242324.003113 
На першому етапі система перебуває в стані очікування вводу, у якому вона 
чекає сигналу для активації сенсорів або початку обробки даних. Це базовий стан, 
у якому система готова до роботи, але не виконує активних дій. Після активації 
система переходить У стан обробки сигналу, де отримує дані із сенсорів і виконує 
їхній аналіз. На цьому етапі визначаються результати рівня наповненості ємностей. 
Алгоритми аналізують отримані сигнали, щоб визначити відповідність рівня 
рідинИ заданим пороговим значенням. Після завершення обробки даних система 
переходить у стан виводу результату. На цьому етапі оброблені дані передаються 
до інтерфейсу користувача, де вони виводЯться у вигляді інформації про рівень 
наповненост1. Якщо виявлено вщхилення, система генерує споВІщення, 
інформуючи користувача про можливі проблеми. Ці стани забезпечують чітку та 
логічну послідовність роботи системи, гарантують її функціональність та 
. . 
адаптивюсть до р1зних умов використання. 
~ ~ 
User І Mlcrocontroller ] І User lnterface ] 
І І І І 
І 
: Collect and send liquid level data 
І І 
, Send processed values, graphs, and notificatlons 
І І 
І І І 
, Receive. results and adjust system parameters 
Mlcrocontroller І User l~terface / 
Рис . 3.11 - Діаграма скінченого автомату 
Перехід із стану "Очікування вводу" до стану "Обробки сигналу" 
відбувається в момент активації сенсорів. Цей перехід ініціюється сигналом від 
користувача або внутрішнім алгоритмом системи, що запускає процес збору даних. 
Далі, після завершення аналізу отриманих даних, система переходить із стану 
"Обробки сигналу" до стану "Виводу результату". У цьому стані система 
передає оброблені дані до інтерфейсу користувача, де вони стають доступними у 
61 
ЧДТУ 242324.ООЗПЗ 
зручному форматі, доповнені графіками чи сповіщеннями, якщо виявлено 
відхилення. 
Ці переходи забезпечують логічну послідовність роботи системи та 
дозволяють її компонентам взаємодіяти узгоджено й ефективно. 
Діаграми, створені в рамках моделювання поведінки системи, забезпечують 
структуроване уявлення про її функціонування. Діаграма діяльності формалізує 
послідовність дій, діаграма послідовності деталізує взаємодію компонентів, 
діаграма комунікації показує зв' язки, а діаграма скінченного автомату визначає 
стани системи. Ці моделі є основою для впровадження функціональної логіки 
програмного комплексу. 
Висновки до розділу З 
У роздш1 З було проведено арх~тектурне проектування системи 
автоматизованого контролю наповненості медичних ємностей. На основі 
моделювання були розроблені структуровані моделі, які деталізують взаємодію 
компонентів, їхню логіку роботи та інтеграцію в лабораторну інфраструктуру. 
Визначено ключові компоненти системи: сенсори, мікроконтролер та інтерфейс 
користувача. 
Розроблено діаграму компонентів, яка ілюструє функціональну взаємодію 
м1ж цими елементами, забезпечуючи ефективність та інтегрованість системи. 
Створено діаграму розгортання, яка описує фізичне розташування компонентів у 
лабораторному середовищі та їхній зв'язок. Визначено способи з'єднання між 
сенсорами, мікроконтролером та інтерфейсом користувача, що забезпечує 
надійний обмін даними. Побудовано діаграму діяльності, яка описує послідовність 
виконання дій у системі - від збору даних із сенсорів до виводу оброблених 
результатів. 
Розроблено діаграму послідовності для деталізації процесу взаємодії 
компонентів. Діаграма комунікації відображає взаємодію між сенсорами, 
мікроконтролером та інтерфейсом користувача. Діаграма скінченного автомату 
формалізує стани системи, дозволяючи чітко визначити логіку переходів між 
різними етапами її роботи. Забезпечення гнучкості системи для роботи з різними 
62 
ЧДТУ 242324.ООЗПЗ 
типами сенсорів і ємностей. Можливість масштабування та адаптації під потреби 
різних лабораторій . Інтуїтивно зрозумілий інтерфейс для користувача з функцією 
генерації сповіщень у разі критичних відхилень рівня рідини. Створені моделі 
слугуватимуть основою для реалізації апаратно-програмного комплексу. 
Моделювання логіки функціонування дозволить мінімізувати помилки при 
впровадженю системи та спростити процес її тестування. 
Таким чином, розроблена арх1тектура забезпечує надійність, 
масштабованість та ефективність роботи системи, що є ключовими вимогами для 
її успішного впровадження в медичних лабораторіях. 
63 
ЧДТУ 242324 .ООЗПЗ 
РОЗДІЛ 4 РОЗРОБКА ТА ТЕСТУВАННЯ ПРОГРАМНОГО 
ЗАБЕЗПЕЧЕННJІ 
Розділ присвячений опису процесу розробки програмного забезпечення для 
автоматизованої системи контролю наповненості медичних ємностей. Він охоплює 
вибір засобів реалізації, опис функціональної та логічної схем, розробку бази 
даних, інтерфейсу користувача та ключових програмних компонентів. 
4.1 Розробка програмного комплексу 
4.1.1 Обrрунтування вибору засобів реалізації 
Розробка програмного забезпечення та апаратної частини системи контролю 
наповненості медичних ємностей вимагає вибору відповідних апаратних 1 
програмних засобів. Вибір засобів реалізації базується на вимогах до 
функціональності, точності, масштабованості та економічної ефективності 
,системи. Нижче наведено детальне обrрунтування. 
Для реалізації програмного забезпечення було обрано наступні засоби: 
Апаратна складова: 
Мікроконтролер ESP32: Забезпечує обробку даних, має вбудовані модулі 
Wi-Fi та Bluetooth, що робить його ідеальним для інтеграції в лабораторну 
інфраструктуру. 
Фоторезистор: Використовується для визначення р1вня наповненост1 
шляхом аналізу інтенсивності світла. 
Адресні світлодіоди (WS1228B): Використовуються для ВІзуального 
відображення стану системи. 
Мова програмування: С++ з використанням Platformio: простота, 
зручність для роботи з мікроконтролерами, велика кількість бібліотек (рис. 4 .1.). 
Програмні бібліотеки: 
Adafruit NeoPixel: Бібліотека для роботи з адресними світлодіодами. 
Arduino Core for ESP32: Забезпечує функції для роботи з ESP32, включаючи 
обробку сигналів із сенсорів. 
64 
ЧДТУ 242324.ООЗПЗ 
Рис. 4.1 - Platfonnio IDE 
4.1.2 Опис структурної (функціональноі) схеми 
Функціональна схема системи включає наступні компоненти: 
1. Сенсорний модуль: фоторезистор зчитує інтенсивність св~тла через 
пробірку. 
2. Обробний модуль: ESP32 отримує сигнал від фоторезистора, обробляє 
його та визначає рівень наповненості. 
3. Модуль індикації: 
адресний світлодіод змінює колір залежно від рівня наповненості; 
червоний - критично низький рівень; 
зелений - рівень у нормі; 
білий - рівень перевищує норму. 
Користувацький інтерфейс: серійний монітор використовується для виводу 
даних у реальному часі. 
4.1.3 Опис логіч1-ю1· схеми системи 
Логічна схема складається з трьох основних етапів: 
65 
ЧДТУ 242324.ООЗПЗ 
Збір даних: сенсорний модуль виконує кілька зчитувань (усереднення) 
для отримання точного значення. 
2 Обробка даних: зібрані дані аналізуються в мікроконтролері для 
визначення відповідності пороговим значенням. 
З Вивід результатів: система виводить результати на світлодіод і серійний 
моютор. 
4.1.4 Розробка бази даних 
У поточній реалізації база даних не використовується . У майбутньому для 
зберігання історії рівнів наповненості можна інтегрувати базу даних на основі: 
SQLite (для локального зберігання); 
MySQL або Firebase (для хмарного зберігання). 
4.1.5 Розробка інтерфейсу користувача 
Для візуалізації даних у розробленій системі передбачено використання 
кількох підходів. Основним засобом є серійний монітор Arduino IDE, який 
забезпечує виведення усереднених даних у реальному часі. Це дозволяє 
користувачеві оперативно відстежувати результати роботи сенсорів і отримувати 
інформацію про р1вень наповненосп ємностей. Додатково реал1зовано 
світлодіодну індикацію, яка надає користувачеві зручне та швидке кольорове 
представлення рівня наповненості. Наприклад, кожен колір світлодіода відповідає 
певному стану: нормальному рівню, низькому рівню чи переповненню. У 
перспективі планується розширення функціоналу інтерфейсу до мобільного 
застосунку або веб-додатку . Це дозволить забезпечити взаємодію з системою через 
Wi-Fi, надаючи користувачеві доступ до даних у будь-якому місці та підвищуючи 
зручність використання. Такий підхід значно розширить можливості системи, 
зробивши її більш універсальною та інтерактивною. 
4.1.6 Опис розробки програмних компонентів 
Розробка програмних компонентів системи включає детальний опис 
архітектури, функціональності, ключових алгоритмів і взаємодії між модулями. 
Основними компонентами програмного забезпечення є код м1кроконтролера, 
66 
Чl\ТУ 42J24.oo.1 rr·J 
осноnн-нй t\HK.11 робо1"11 снс,,емн, алгоритми f<Ал і бруrнншя та мщ~ул і r,бpnfi 10,, даних і 
;ндикздії. 
Код мі'І\.1юконтролсрА є центральним компонентом системи , який никонуf' 
<)бробку даннх, отриманих із сенсорів , забезпечує їх усереднення, визначає рівень 
наповненосп та управляє кольоровою індикацією. Основні функuії 
rікрокоmролера включають : 
Зчитування даних із сенсорів: Для цього використовується вбудований 
АЦП (аналогово-цифровий перетворювач), який дозволяє з високою точюстю 
фіксувати рівень освітлення, що впливає на фоторезистивний датчик. 
Кольорова індикація: На основі отриманих даних система змінює кошр 
світлодіода (червоний, зелений, синій), забезпечуючи наочний спосіб 
інформування користувача про поточний стан. 
Основний цикл (Іоор) 
Основний цикл роботи системи є невід' ємною частиною реалізації 
програмного забезпечення. Його основними завданнями є : 
Постійне зчитування даних із сенсорів у режимі реального часу: Цей 
механізм забезпечує безперервний моніторинг рівня рідини та фіксацію поточних 
знаttень. 
Усереднення даних: Для зменшення впливу шум1в виконується кшька 
зчитувань із сенсора, результати яких усереднюються. 
«Антидребезг» кнопки: Реалізована логіка забезпечує коректне сприйняття 
натискання кнопки для уникнення помилкових спрацювань і перемикання кольорів 
індикації лише при реальному натисканні . Цей цикл забезпечує стабільну роботу 
системи та її відповідність реальним умовам використання в лабораторіях. 
Функція калібрування 
Функція калібрування є важнивим елементом, що дозволяє адаптувати 
систему до початкових умов роботи . Її 3,:tnдання вкпюLtають : 
А11аліз r1оточних умов освітJ1еини: Функція автоматн•шо визнuчає середнє 
значення освітлення в приміщенні, де використовуf·ться система. 
67 
ЧДТУ 242324.ООЗПЗ 
Налаштування порогових значень: Порогові значення нижнього та 
верхнього рівнів визначаються на основі середнього значення, що дозволяє 
враховувати змінні умови освітлення або особливості конкретних ємностей. 
Зменшення впливу лшдськоrо фактора: Завдяки автоматизації 
калібрування користувачеві не потрібно вручну налаштовувати параметри, що 
зменшує можлив1сть виникнення помилок. 
У майбутніх версіях програмного забезпечення планується реалізація більш 
складної функції автоматичного калібрування з використанням машинного 
навчання для підвищення точності адаптації до нестандартних умов роботи. 
Взаємодія програмних модулів 
Робота програмного забезпечення rрунтується на чіткій взаємодії м1ж 
різними модулями: 
Збір даних: Сенсори передають аналогові дані до мікроконтролера. 
Обробка сигналів: Отримані значення обробляються алгоритмами для 
. . 
визначення р1вня рщини. 
Виведення результатів: Дані передаються до світлодіода для кольорової 
індикації, а також до серійного монітора для детального аналізу. 
4.2 Тестування системи 
Модульне тестування 
Модульне тестування є першим етапом процесу перев1рки програмного 
забезпечення, який спрямований на перевірку роботи окремих компоненпв 
системи. Для системи автоматизованого контролю наповненосп медичних 
ємностей було протестовано три основні модулі: сенсорний модуль, адресний 
світлодіод (WS2812B) та логіку мікроконтролера. 
Таблиця 4.1 
Тестування сенсорного модуля 
Опис Очікуваний результат Результат тестування 
68 
..... ~-
ЧДТУ 242324 .ООЗПЗ 
Продовж, табл . 4. І 
- Вимірювання напруги Вихідна напруга Фоторезистор показав 
при слабкому освітленні фоторезистора близько О вихідну напругу близьку 
(порожня або затемнена мВ. до О мВ, відповідаючи 
пробірка) очікуванням. 
Вимірювання напруги Вихідна напруга Вихідна напруга 
при середньому фоторезистора близько становила близько 1.5 В, 
освітленні (частково 1.5 в. підтверджуючи стабільну 
заповнена пробірка) роботу. 
Вимірювання напруги Вихідна напруга Вихідна напруга 
. . 
при високому освпленю фоторезистора близько становила близько 3 .3 В, 
(повністю заповнена З.З В . демонструючи 
пробірка) чутлив1сть 
фоторезистора. 
Перевірка усереднення Зменшення шумів і точні Алгоритм усереднення 
сигналів ( 50 зчитувань на середнізначення,близькі усшшно зменшив шуми, 
. . 
цикл) до розрахункових. результати вщповщали 
оч1куваним. 
Таблиця 4.2 
Тестування фоторезистора 
Опис Очікуваний результат Результат тестування 
Вимірювання напруги на Значення напруги Фоторезистор коректно 
різних рівнях освітлення змінюється залежно від реагував на змшу 
освітлення (низьке, освплення, 
середнє, високе) . забезпечуючи точні 
ВИМІрИ . 
69 
ЧДТУ 242324.ООЗПЗ 
Продовж, табл . 4.2 
усереднення зчитуваних Стабільні середні Система успішно 
сигналів для зменшення значення, зменшення усереднила дані, шум 
шумш випадкових відхилень. було мінімізовано . 
Таблиця 4 .3 
Тестування адресного світлодіода (WS2812B) 
Опис Очікуваний результат Результат тестування 
Низький рівень рідини Адресний світлодіод Світлодіод чітко 
(вихідний сигнал нижче СВІТИТЬСЯ червоним змінював колір на 
thresho]dLow, наприклад, кольором. червоний при низькому 
. . . 
800) р1вю рщини. 
Нормальний рівень Адресний світлодіод Світлодіод коректно 
. . 
рідини (вихідний сигнал СВІТИТЬСЯ зеленим змшював кошр на 
між thresholdLow і кольором. зелений при 
thresholdHigh) нормальному р1вю. 
Переповнення (вихідний Адресний світлодіод Світлодіод змінював 
сигнал перевищує світиться білим колір на білий при 
thresholdHigh, наприклад, кольором. переповненю. 
3500) 
Таблиця 4.4 
- Тестування логіки мікроконтролера 
- Опис Очікуваний результат Результат тестування 
усереднення зчитуваних Середнє значення Середнє значення було 
значень (50 значень на збігається з точно розраховане. 
цикл) розрахунковим. Успішно. 
70 
ЧДТУ 242324.ООЗПЗ 
Продовж, табл. 4.4 
визначення стану Червоний, зелений або Мікроконтролер чітко 
(низький, нормальний, білий колір світлодіода визначав стан і змінював 
високий рівень) залежно від рівня . індикацію відповідно . 
Інтеграційне тестування 
Інтеграційне тестування забезпечує перев1рку взаємодії м1ж модулями 
системи, таких як сенсори, мікроконтролер, індикатори та серійний інтерфейс. 
Мета цього етапу - упевнитися, що всі компоненти системи працюють узгоджено, 
передаючи дані без втрат і затримок. 
Таблиця 4.5 
Зв 'язок між се11сором і мікроконтролером 
Опис Очікуваний результат Результат тестування 
Перевірка коректності Мікроконтролер приймає Сигнал передавався без 
прийому сигналу сигнал без спотворень. спотворень. 
м1кроконтролером через 
аналоговий вхід. 
Виявлення можливих Дані передаються без Дані передавалися 
втрат даних під час втрат. коректно, втрат не 
передачі. виявлено. 
Таблиця 4.6 
Тестові сценарії 
-
Опис Очікуваний результат Результат тестування 
Постійне освітлення Значення напруги Значення напруги 
Вхідний сигнал стабільно зчитується без залишалося стабільним. 
-залишається стабільним. коливань. 
71 
ЧДТУ 242324.ООЗПЗ 
Продовж, табл. 4.6 
-Динамічне освітлення Мікроконтролер фіксує У сі зміни рівня сигналу 
Імітується змша р1вня всі зміни сигналу в фіксувалися коректно . 
освітлення( відкрита реальному часі. 
/закрита пробірка). 
-- Мінімальне освітлення Значення сигналу Значення правильно 
Вхідний сигнал 1нтерпретується як штерпретувалося як 
наближається до низький рівень. низький рівень. 
порогового м1юмуму. 
Таблиця 4.7 
Виявлення затримок 
Опис Очікуваний результат Результат тестування 
Вимірювання затримки Затримка не перевищує 5 Затримка становила < З 
. . 
між отриманням сигналу мс. МС, ВlДПОВІДаЮЧИ 
• V 
сенсором 1 иого оч1куванням. 
обробкою 
м~кроконтролером. 
Ці результати підтверджують надійність і коректність зв' язку між сенсором і 
мікроконтролером у всіх протестованих сценаріях. 
Тестування взаємодії між мікроконтролером і індикаторами 
Опис тестування 
На цьому етапі перевіряється взаємод~я мікроконтролера з шдикаторами, 
такими як адресний світлодіод (WS28 l 2B) і додатковий світлодіод для індикації 
заповнення пробірки. 
Таблиця 4.8 
Передача команд для зміни кольору (WS28128) 
72 
ЧДТУ 242324 .0031І З 
Опис чікуваний результат Результат тестування 
~рвоний для низького вітлодіод зміню ться на -
Колір змінювався на 
рівня Мікроконтролер червоний. червоний,система 
змінює колір світлодіода 
працює коректно. 
на червоний при 
низькому рівю рщини. 
-зелений для нормального Світлодіод змінюється на Колір змінювався на 
рівня Мікроконтролер зелений. зелений, система працює 
змінює колір світлодіода коректно. 
на зелений при 
нормальному р1вю 
рідини. 
Білий для переповнення Світлодіод змінюється на Колір змінювався на 
Мікроконтролер білий. білий, система працює 
змінює колір світлодіода коректно. 
ва білий при 
перевищеню 
нормального р1вня 
рщини. 
Таблиця 4.9 
Увімкнення/вимкнення додаткового індикатора 
Опис Очікуваний результат Результат тестування 
Вимкнуто відсутності Світлодіод не Додатковий індикатор 
залишався вимкненим, 
рідини або колби. вмикається. 
працює коректно. 
Додатковий індикатор 
залишається вимкненим. 
73 
ЧДТУ 242324 .ООЗЛЗ 
Продовж, табл. 4.9 
Увімкнуто Світлодіод вмикається . Додатковий індикатор 
ІJрИ наявності рідини. залишався увімкненим, 
працює коректно. 
i..----------~----------L_ _________ J 
Мікроконтролер успішно змінював кольори світлодіода відповідно до рівня 
рідИНИ, забезпечуючи коректну роботу індикації. Додатковий індикатор також 
вІ'nrкався та вимикався залежно від заданих порогових значень рівня рідини, 
демонструючи стабільність і відповідність очікуванням. 
Таблиця 4.10 
Тестування серійного виводу даних 
~ 
Опис Очікуваний результат Результат тестування 
Перевірка серійного Значення в серійному Значення стабільно 
інтерфейсу (Serial моніторі відображається відображалося, без змін і 
Monitor) під час без змін. похибок. 
стабільного освітлення. 
Тестування серійного Серійний монітор Серійний монітор 
інтерфейсу під час правильно відображає коректно фіксував зміну 
. . 
динам~чного освплення. зміну значень у сигналу в реальному час1. 
реальному час1. 
Імітація виходу сигналу Серійний монітор фіксує Помилкові значення 
за межі діапазону (нижче помилкові значення як правильно 
О або вище З.З В). порушення. ідентифіковані як 
порушення д~апазону. 
~ 
Тестування взаємодії між Дані передаються без Дані передавалися 
сенсором і втрат і затримок. стабільно, без втрат і 
мікроконтролером під затримок. 
---- час передачі даних. 
74 
ЧДТУ 242324.ООЗПЗ 
Продовж, табл. 4. І О 
тестування індикації Індикація змінює колір Індикація коректно 
жно від рівня рідини відповідно до стану 
зале змінювала колір 
(низький, нормальний, наповненості пробірки. відповідно до заданих 
переповнення). 
умов. 
~агальне тестування Серійний монітор Серійний монітор 
серійного інтерфейсу для забезпечує точний і забезпечує точний і 
точного виводу даних. своєчасний вивід даних. своєчасний вивід даних . 
...... 
Результати тестування показали, що система готова до системного 
тестування, яке перевірить її роботу в реальних умовах. 
Системне тестування 
Системне тестування охоплює комплексну перевірку роботи всієї системи в 
умовах, максимально наближених до реальних. Мета цього етапу - забезпечити 
функціональність, надійність і стабільність системи під час виконання всіх 
передбачених завдань. 
Таблиця 4.11 
Тестування серійного виводу даних 
Опис Очікуваний результат Результат тестування 
Тестування на скляних Сенсор коректно зчитує Сенсор коректно 
пробірках: прозорі та рівень освітлення, працював 1з прозорими 
матові пробірки з враховуючи прозор1сть та матовими скляними 
І різними рівнями скла. пробірками, визначаючи 
наповненості. рівень наповненості. 
Тесту вання на Сенсор враховує Сенсор успішно 
пластикових пробірках : властивості пластику та адаптувався до р1зних 
використання пробірок із правильно визначає типів пластику та 
різною щільністю рівень рідини . кольор1в. 
пластику та кольорами. 
75 
ЧДТУ 242324.ООЗПЗ 
Продовж, табл. 4.] І 
Оцінка точносп Рівень рідини Точність визначення 
чення рівня рідини: визначається з точністю 
визна рівня рідини відповідала 
система перев1ряє до ±5%. очікуваній, похибка не 
наповненість пробірок у перевищувала ±5%. 
діапазоні 0-100% із 
кроком 25%. 
Таблиця 4.12 
Перевірка стійкості системи 
- Опис Очікуваний результат Результат тестування 
Тестування тривалої Система стабільно Система працювала 
роботи системи: 8 годин виконує свої функції без стабільно, без збоїв і 
безперервної роботи в збоїв або значних затримок, всі функції 
лабораторних умовах. затримок. виконувалися належним 
чином. 
Тестування на різних Система коректно Зовнішнє освітлення не 
. . 
ршнях освплення: низьке працює незалежно вщ впливало на точюсть 
(темна кімната) та високе рівня зовнішнього сенсор1в, система 
(лабораторні лампи). освітлення. коректно працювала за 
. . 
р1зних умов освплення. 
Таблиця 4.13 
Функціональні тести 
-
Опис Очікуваний результат Результат тестування 
Генерація сповіщень: Користувач отримує Генерація сповіщень 
перевірка повідомлень. відповідне повідомлення працювала коректно. 
через індикатори та 
серійний монітор. 
76 
Ч) ~ТУ 242324 .ООЗПЗ 
Продовж, табл. 4.13 
-
~ність обробt<Н J\3Шtx : Лт ·оритм оброfі ,ш ;ш11и х - Лнгоритм обробки даних 
1ilcl)enitжи ИJП 'орнтму ··н 1бе1печу<··  усере , !,нення виконував усереднення 
усереднення та та правильне ви1на• 1ення rюреrпно, -шбе1пе1rуючи 
визначення стану стану пробірки . точне ви1начення стану 
nробірки. 
пробірки. 
І 
Системне тестування підтвердило, що система автоматизованого контролю 
наповненост1 медичних ємностей працює стабільно та відповідає вс1м 
функціональним вимогам. 
Основні результати: 
система коректно працює з різними типами пробірок; 
показана висока точність і стабільність нають у складних умовах 
освітлення та тривалого використання; 
робота з декшькома сенсорами одночасно не впливає на стабільність 
системи. 
Систему визнано готовою до приймального тестування та впровадження в 
реальні лабораторні умови. 
Приймальне тестування 
Приймальне тестування є фінальним етапом перевірки системи, метою якого 
є підтвердження відповідності початковим вимогам та готовності до практичного 
впровадження. У рамках цього етапу виконуються функціональні, нефункціональні 
тести, оцінюється взаємодія системи з користувачем, а також документуються 
результати. 
Таблиця 4.14 
Функціональні та нефункціональні тести 
77 
'І)\ТУ 
242J24.00J rr1 
(J11til' <> чі ~<уна ний р \iy 
- ГІрО/(()Rж . гаf1л . 4 І 
- ІН,тат р ' 4 
' истема rtpaRиm:.,ю ,-, e~iyлhтa·r тесту"А 
а ння 
nіJ,ображщ• стан І 
наповненості 
11еревірка наявносп через 
ІНдикатори та сер . V V 
ріднни в пробірках 1инин Усі nopo . 
rов1 1наtrення 
монітор. Генеру 
ються визначені коре 
ктно. 
сповіщення у разі 
порушення. 
ВНмірювання часу від 
Час обробки не Середній час обробки 
зчитування сигналу до 
перевищує 1о о мс. даних становив ~50 мс 
виводу результатш. , 
...-- що відповідає вимогам. 
Оцінка зрозумілості 
даних у серійному Дані в серійному 
моніторі: інформація у Дані виводяться у моніторі чітко вказують 
вигляді повідомлень із зрозумілому вигляді. р1вень наповненості 
' 
зазначенням р1вня повідомлення легко 
наповненосп. зрозуміти користувачеві. 
Перевірка індикації: Індикація змінюється Індикація чітко 
відповідність до відповідно до наявності відповідали наявністю 
наявності рідини. рщини. рщини. 
Усереднені значення 
Перевірка виводу 
Дані виводяться у сигнал1в виведеш ч~тко 
усереднених значень . . 
зрозумшому вигляд~. та коректно, інформація 
сигналів . . . 
зрозумша користувачев1 . 
Результати: 
- інтерфейс користувача був зрозумілим інтуїтивно простим у 
використанні ; 
- реакція системи на порушення була швидкою та точною; 
78 
ЧДТУ 242324 .ООЗПЗ 
попередження про переповнення або низький рtвень з'являлися У 
реальному час1. 
Приймальне тестування шдтвердило, що система автоматизованого 
контролю наповненост~ медичних ємностей: 
відповідає всім функціональним і нефункціональним вимогам; 
_ забезпечує точність і швидкість обробки даних; 
- має зручний і зрозумілий інтерфейс взаємодії з користувачем; 
готова до впровадження у реальні лабораторні умови. 
Висновки до розділу 4 
у розділі 4 проведено розробку та тестування програмного забезпечення для 
автоматизованої системи контролю наповненості медичних ємностей. У результаті 
роботи було створено повноцінне програмне рішення, яке відповідає початковим 
функціональним і нефункціональним вимогам, а також готове до впровадження в 
реальні лабораторні умови. Розробка програмного забезпечення виконувалася на 
базі мікроконтролера ESP32 із використанням мови програмування С++ та 
бібліотек Adafruit NeoPixel і Arduino Core for ESP32. Реалізовано функціональний 
алгоритм, який включає зчитування сигналів із сенсорів, обробку даних, 
визначення рівня рідини та управління кольоровою індикацією. Основний цикл 
роботи системи забезпечує безперервний моніторинг рівня рідини, усереднення 
даних для зменшення шумів та стабільну індикацію стану наповненості. 
Функціональна та логічна схема системи включає сенсорний модуль для 
зчитування сигналів, обробний модуль на базі ESP32 для аналізу отриманих даних 
і модуль індикації для наочного відображення стану. Реалізована індикація 
кольорів (червоний, зелений, білий) дозволяє швидко оцінювати рівень рідини в 
ємностях, що робить систему зручною для використання. Розроблене програмне 
забезпечення пройшло всі етапи тестування. Модульне тестування підтвердило 
коректну роботу окремих компонентів, включаючи фоторезистор, алгоритми 
усереднення даних і логіку управління кольоровою індикацією. Інтеграційне 
~естування засвідчило узгоджену взаємодію між сенсорами, мікроконтролером, 
lНдикаторами та серійним інтерфейсом. Системне тестування показало, що система 
здатна працювати стабільно навіть у складних умовах, таких як змінне зовнішнє 
освітлення та тривала експлуатація. Точність визначення рівня рідини залишалася 
8 Межах допустимої похибки, що не перевищує ±5%. 
Під час приймального тестування було підтверджено відповідність системи 
nочатковим функціональним і нефункціональним вимогам . Інтерфейс користувача 
79 
ЧДТУ 242324.ООЗПЗ 
ився інтуУтивно зрозумілим, а реакцjя системи на порушення, такі як низький 
вияв ;дини або переповнення, була швидкою та коректною. Усі результати 
рjве»ь Р жtJ було за ф1. J ксовано у зв1•т ах, що також містять рекомендац11...  щодо 
еС'І'Уван ,,,, 
1 . дЖеННЯ системи у лабораторну практику. Узгодження з потенційними 
1311рова . . ._ 
""'""вацами mд113ердило, що система готова до штеrрацu. 
,<орИv• l 
80 
ЧДТУ 242324.ООЗПЗ 
висновки 
В умовах стр1мкоrо розвитку медичних технологій 
та зростання обсягів 
6 раторних досліджень важливість автоматиза ... 
.rra о . . .., цн рутинних процесі в набуває 
бливоrо значення . У мапстерськш кваліфікацій . ... . 
оео НІИ робот~ розв 'язано науково-
пnактИЧRУ задачу розробки програмного забезпечення для . .. 
••r . 1нтелектуально1 системи 
.rmолю наповненосп медичних ємностей щ б 
коп•r , 0 за езпечує високу точність, 
ефективність та зниження впливу людського факт . . 
ору У проведеню дослщжень, 
зокрема Jмуноферментного аналізу (ІФА). 
Для вирішення поставленої задачі проведено аналіз існуючих методів і 
засобів, що використовуються для моніторингу рівня рідин у медичних ємностях. 
у рамках роботи застосовано комплексний підхід, що об'єднує оптичні, електронні 
та алгоритмічні методи. Розроблена система базується на використанні 
мікроконтролера ESP32, фоторезисторів для зчитування сигналів, адресних 
світлодіодів для візуальної індикації та програмних алгоритмів, які реалізують 
усереднення даних і визначення рівня наповненості. Тестування системи на всіх 
рівнях, від модульного до приймального, підтвердило її відповідність початковим 
вимогам. Точність визначення рівня наповненості пробірок досягла ±5%, а середній 
час обробки даних склав ~50 мс, що відповідає сучасним стандартам автоматизації. 
У порівнянні з існуючими аналогами, запропонована система вирізняється 
економічною доступністю, адаптивністю до різних типів лабораторного 
обладнання, а також можливістю масштабування для роботи з кількома сенсорами 
одночасно. Практичні результати підтвердили її стійкість до змін зовнішніх умов 
(освітлення, типу матеріалу ємностей) та надійність роботи при тривалому 
використанні. 
Розроблену систему можна впроваджувати у медичних лабораторіях для 
авто . · обірок що значно скоротить час 
матизащї процесів контролю наповненосп пр ' · 
і 3.6 . азків для ІФА Використання 
• ~еншить кількість помилок під час пщготовки зр · · 
баз аптувати систему для інших 
ових компонентів ' таких як ESP32, дозволяє ад . 
111n·1 8 арії харчовій промисловосп та 
лабораторних досліджень, зокрема У ветерин ' 
lІаукових експ вдосконалення системи може включати 
ериментах. Подальше 
81 
чдту 242З24.оозnз 
a11iJ{) з 
iJffCI1' базами даних для автоматизованого збереження результатів 
iJI)I( ен ь' 
ft°'JJ а також розробку мобільного або веб-додатку для ••ддаленого 
10
~ н1· rо рJ,І}{Ім)' • чин ' 
таки ом чувиюкчоин аіннате грроа 
б 
цоітюа с 
прия є п 1Дв11щенн~о · б 
;,,.'\1/'еНЬ, забезпе  сучасни.х  технолоrій аявктоосмта1т илзаац іоїр авт огарлнуизхі  
ft ослІ).V•· Отримаю 
~•ДІІІІІ'""· нау·к роевзіуйл ьі тпартаик тмиачюнтіьй  пдіоятлеь~нщо1сатлі. д лЯ подальшого використання та 
вдоско налення у 
82 
ЧДТУ 242324.ООЗПЗ 
СПИСОК ВИКОІ'ИСТАНИХ ДЖЕРЕЛ 
письменний І . Інтегровані інтелектуальні системи обігу медичних даних / 
в1. сн ик Університету «У кра~"н а». С ерr·я  Інформатика, обчислювальна техніка 
та кібернетика. - Т2 № 23 (2019). 
2 Loulwah Altmed Alhammad. The impact of laboratory automation оп efficiency 
and accuracy in healthcare settings І Turki К.А., Ahmad М.А, Mohab s.s., Nuha 
H.J., Majed А.А. , Ashwaq М.А. // Intemational Joumal of Community Medicine 
and Public Health. - January 2024. - Vol. 11. - Р. 1-5. 
3 Enrico Munari. Cutting-edge technology and automation in the pathology 
laboratory І Aldo S., Luca С., Matteo Р., Fabio Р., Francesco V., Stefano М. , 
Angelo Р., Albino Е. // Virchows 2024. - Vol. 484. - Р. 555-566. 
4 Методологія та організація наукових досліджень: навч. посібник /В.М. 
Михайлов [та ін.]. - Х. : ХДУХТ, 2014- 220 с. 
5 Методика та організація наукових досліджень: Навч. посіб. /С.Е. 
Важинський, Т І. Щербак. - Суми: СумДПУ імені А. С. Макаренка, 2016. -
260 с. 
6 Методологія наукових досліджень: навч. посіб. / В.І. Зацерковний, І.В. 
Тішаєв, В. К. Демидов. - Ніжин: НДУ ім. М. Гоголя, 2017. - 236 с. 
7 Методологія та організація наукових досліджень: навч. посіб. Л.С. 
Добронравова, О.В. Руденко, Л.І . Сидоренко та ін.; за ред. І.С . Добронравової 
(ч. 1), О.В. Руденко (ч. 2). - К. : ВПЦ "Київський університет", 2018. - 607 с. 
8 Імітаційне моделювання систем та процесів: Електронне навчальне видання. 
Конспект лекцій / В. Б. Неруш, В. В. Курдеча. - К.: НН ІТС НТУУ «КПІ», 
2012. - 115 с. 
9 Стеценко, І.В . Моделювання систем: навч. посіб. [Електронний ресурс, текст] 
І І.В. Стеценко; М-во освіти і науки України, Черкас. держ. технол. ун-т. -
Черкаси: ЧДТУ, 2010. - 399 с. 
10 Математичне моделювання: навчальний посібник /В .Г. Маценко. - Чернівці : 
Чернівецький національний університет, 2014.- 5 І 9 с . 
83 
ЧДТУ 242324.ОО3ПЗ 
Чуйко Г. П. Математичне моделював . . ~ 
І І ня систем I процесш : [навчальнии 
посібник] / Г. П. Чуйко, О. В. Дворник о м Я " 
, · • ремчук. - Микола1в : Вид-во 
ЧДУ імені Петра Могили, 2015 . - 244 с. 
12 Моделі й методи прийняття рішень: навч. пuсіб /С А у Л С К · . . 
. . . с, . . оряшюна, 
м-во освіти і науки України, Нац. гірн. ун-т. - д.: НГУ, 2014 __ с . 
300 
13 Методи анашзу даних: навчальний посібник для студентів /В.Є. Бахрушин . -
Запоріжжя: КПУ, 2011. - 268 с. 
14 Марченко О.О. , Россада Т.В. Актуальні проблеми Data Mining: Навчальний 
посібник для студентів факультету комп'ютерних наук та кібернетики . -
Київ. - 2017. - 150 с. 
15 Інтелектуальний аналіз даних: Комп'ютерний практикум [Електронний 
ресурс]: навч. посіб. для студ. спеціальності 122 «Комп'ютерні науки та 
інформаційні технології», спеціалізацій «Інформаційні системи та технології 
проектування», «Системне проектування серв1с1в» /О.О. Сергеєв­
Горчинський, Г. В. Іщенко; КПІ ім. Ігоря Сікорського. -Електронні текстові 
данні (1 файл: 1,72 Мбайт). - Київ: КПІ ім. Ігоря Сікорського, 2018. - 73 с.: 
Іл. 
16 Авраменко В. С., Голуб С. В., Салапатов В. І. Дипломне проектування. 
Освітній ступінь «Магістр» : Навчально-методичний посібник І В. С. 
Авраменко, С. В. Голуб, В. І. Салапатов. - Черкаси : Черкаський 
національний університет ім. Б. Хмельницького, 2018. - 213 с.: 76 іл. 
17 Rosenberg D., Scott К. Application of object modeling using UML and case 
analysis / D. Rosenberg, к. Scott. - Per. from English. - М. : DMK Press, 2002. -
160 р. Publisher: Addison Wesley First Edition June 14, 2001 ISBN: 0-201-73039-
1, 176 pages 
18 Ав раменко В. С. А враменко с . А • Проектування інформаційних систем / В. 
с . А А . с . Авраменко. - Черкаси: Чабаненко Ю. А, 2017. - 434 с. 
враменко, 
84 
J 
ДОДАТОК А 
ЗАТВЕРДЖЕНО: 
ОСОБJШВОСТІ ПОБУДОВИ ПРО ГР АМНО ГО 
зАБЕЗПЕЧЕННЯІНТЕЛЕКТУ АЛЬНОГО КОНТРОJПО НАПОВНЕНОСТІ 
МЕДИЧНИХ ЄМНОСТЕЙ 
Специфікація 
482.ЧДТУ.242324 
Листів 2 
Розробник 
Керівник 
Черкаси 2024 
482.ЧДТУ.242324 2 
Призначення Найме11ува1111я Примітка 
482.ЧДТУ.241917 12-01 Лістинг програми 
482.ЧДТУ.241917 90-01 Графічні матеріали 
-
-
86 
ДОДАТОК Б 
ОСОБJШВОСТІ ПОБУДОВИ ПРОГ Р АМН ОГО 
ЗАБЕЗПЕЧЕІ-ШЯП-ІТЕЛЕКТУ АЛЬНОГО КОНТРОJПО НАПОВНЕНОСТІ 
МЕДИЧНИХ ЄМНОСТЕЙ 
Лістинг програми 
482 .ЧДТУ.242324 12-01 
Листів 32 
Розробник 
Черкаси 2024 
482. ЧДТУ.242324 І 2-01 
2 
platformio.ini 
. PlatfonnlO Project Configuration File 
' 
: Build options: build flags, source filter 
; Upload opt~ons: custom upl~ad port, speed and extra flags 
; Library optю~s: dependenc1_es,_ extra l1brary storages 
. Advanced optюns: extra scnptшg 
' 
: Please visit documentation for the other options and examples 
; hrtps://docs. p)atfonnio. org/page/projectconf html 
[e nv:upesy _ wroom] 
platform = espressif32 
board = upesy_  wroom 
framework = arduino 
lib_deps = 
adafruit/Adafruit NeoPixel @ л 1.11.0 
monitor_speed=l 15200 
таіп.срр 
#include <Arduino.h> 
#include <Adafruit NeoPixel.h> 
#defшe LED PIN 32 // Pin for the addressable LED 
#defшe NUM_PIXELS 1 // Number of LEDs 
const int photoResistorPin = 33; // Pin for the photoresistor 
int lightValue = О; // Averaged Iight value 
const int numSamples = 50; // Number of readings to average 
int threshold = 1500· // Threshold for detecting liquid presence 
' 
Ada&uit_NeoPixel strip(NUM_PIXELS, LED_PIN, NEO_GRВ + NЕО_КНZ800); 
11 ~unction to initialize the setup 
Vo1d setup() { 
s~p.begin(); // Initialize the LED 
Strip.show(); // Turn off the LED initially 
Serial.begin(l 15200)· // Start serial communication 
anaiogSetAttenuatiod(ADC_I ldb); // Set ADC range to о. - 3 .ЗV 
}a naiogReadResolution(l2); // Use 12-bit ADC resolutюn 
ІІ Fun . 
,1 р ctioп to control the LED state 
Ufaщeters : 
88 І 
482 .ЧДТУ .242324 12-01 
з 
. оп: If tпie, tнш оп_ tl1e LED; otl1eгwise, turв it off 
15 
// -. tLEDState(bool 1sO11) { 
,r01d se 
•f (isOn) { . 
1 
strip.setPixelColoI"(O, stпp.Color(0, 255, О));// Green LED 
011 
} eise { . 
strip.setPixelColor(0, stпp.Color(0, О, О)); // LED off 
l 
~trip.showO; // Apply the LED state 
} 
// Main Іоор function that handles the core logic of the program 
void ІоорО { 
Iong sum = О; 
// Collect multiple readings from the photoresistor to compute the average 
for (int і = О; і < numSamples; і++) { 
sum += analogRead(photoResistorPin); 
delay(I0); // Delay between readings 
} 
lightValue = sum / numSamples; // Calculate the averaged light value 
Serial.print("Light level: "); 
Serial.println(lightValue) ; 
// Determine the presence of liquid or probe and update the LED state 
if (lightValue > threshold) { 
setLEDState(true); // Liquid is detected 
Serial.println("Status: Liquid detected. "); 
} else { 
setLEDState(false); // No liquid detected 
Serial.println("Status: No liquid detected. "); 
} 
}d elay(I0O); // Delay before the next Іоор iteration 
l~d_Іib.cpp 
#tnclude "Adafruit NeoPixel.h" 
#~f defined(T ARGET LPCI 768) 
#tnclude <time.h> -
#endif 
#if defined(NRF52) 11 defined(NRF52_SERIES) 
89 
482.ЧДТУ.242324 1 2-ОІ 
4 
. • tнde "111-f.11" 
#JІ1<.,; 
111t.e n 1J· pt· is 01.1 ly disable. d .i f tl1ere is по PWM devi·c ava1./І е  1 Ь 
а  Іе 
Note: дdafi1.11t Bluefгшt пrf52 does not use this option 
::мefine NRF52_DISABLE_INT 
#ertdif 
#if defined(ARDUINO_  ARCH_  NRF52840) 
~f defined _has_ inc_Iude . . 
#if _bas_include(~ p_шDefiшtюns.h>) 
#include <pinDefin1tюns.h> 
#endif 
#endif 
#endif 
/*! 
@brief NeoPixel constructor when length, pin and pixel type are known 
at compile-time. 
@param n Number of NeoPixels in strand. 
@param р Arduino pin number which will drive the NeoPixel data in. 
@param t Pixel type -- add together NEO_  * constants defined in 
Adafruit_N  eoPixel.h, for example NEO_  GRВ+NEO _ КНZ800 for 
NeoPixels expecting an 800 КНz (vs 400 КНz) data stream 
with color bytes expressed in green, red, blue order per 
pixel. 
@return Adafruit NeoPixel object. Call the begin() function before use. 
*/ 
Adafruit NeoPixel::Adafruit NeoPixel(uintlб_t n, intlб_t р, neoPixelType t) 
: begu;(false), brightness(0), pixels(NULL), endTime(0) { 
updateType(t); 
updateLength( n); 
setPin(p ); 
#if defined(ARDUINO ARCH RP2040) 
І! Find а free SM on one of th;P IO's 
sm == pio_claim_unused_sm(pio, false); // don't panic 
І/ Try ріо 1 if SM not found 
if (sm < О) { 
ріо == ріо І · 
sm == ріо -~laim unused sm(pio, true); // рапіс if по SM is free 
} - -
init == true· 
#endif ' 
} 
90 
482.ЧДТУ.242324 12-01 
5 
/tr-a!) ,bt1.e  t~ "Eitipty" NeoPixel .c.o 11st.1 11cto1· wl1e11 leпgth , pin and·/ or • 
р1хе 1 type 
е, are not knoW1t at со111р1 1e -tнne, a11d inust Ье initialized later with 
updateТyp~O, upda_teLe11~tl1() and setPin(). 
@return A~afi111t_~eo~1xel ~bJect. Call the begin() function before use. 
te Thts ftшctюn 1s dep1ecated, here only for old pro1ects that 
@!П О may still 11· 
Ье са 1ng 1. t. Ne w proJ.e cts should instead uJs e the 
'new' keyword with the first constructor syntax (length, pin, 
type). 
~dafruit_NeoPixel: :Adafruit_N  eoPixel() 
#if defined(NEO _КНZ400) 
is800КНz(true), 
#endif 
begun(false), numLEDs(0), numВytes(0), pin(-1), brightness(0), 
pixels{NULL ), rOffset(l ), gOffset(0), bOffset(2), wOffset(l ), endTime(0) { 
} 
/*! 
@brief Deallocate Adafruit_NeoPixel object, set data pin back to INPUT. 
*/ 
Adafruit_NeoPixel:: ~A dafruit_N eoPixel() { 
free(pixels ); 
if (pin >= О) 
pinМode(pin, INPUT); 
} 
/* І 
@brief Configure NeoPixel pin fo r output. 
*І 
v?id Adafruit_NeoPixel::begin(void) { 
1f (pin >= О) { 
PinМode(pin, OUTPUT); 
digitalWrite(pin LOW)· 
} ' ' 
begun = true · 
} ' 
/*! 
@brief Change the length of а previously-declared Ad_afruit_NeoPixel 
strip object. Old data is deallocated and new data 18 cleared. 
Pin number and pixel fonnat are unchanged. 
@param n New length of strip, in pixels. 
91 
4( .Ч J\Т .. 24) 1)/4 1 ) -()1 
Ttl1S {\111 '11('І1'\ 1, ticpt'{(f\t('(i , 1,er OHf f, 
m ІН"t(' 11 · . щ <1І(\ rн- . І 
І: 11,й~' sti11 t,c \.'И н~g 1t . :' pt·oj Ct~ ~J\o\11<f Їt\~f <1J <'І~ 11~1 
'ос"· ' kc~,Yot"li ,,,111, tlн~ f 11·5:1 C<)п~1 ru ' tor ~ ~<111R 1І1 
. tШ\ х ( І 11 1\-1 , рі11 , 
1'1_,с ). 
-·d д.dзfі11Н_ et)Pixe1 ::updateLeнgt11(uiнtt6 t ) { 
\ '(11 ' · • t\ 
ire.e(rixe1s ): // Free е 1stп\g data (if ану) -
All<'cate ne~· data -- note: ALL PIXELS ARE CLEARED 
umБYtes = n * ((,, Offset = rOffset) ? 3 : 4)· 
~f((Pi."·els = (ujnt8 _t *)n1alloc(numBytes))) { ' 
men1set(pixels, О, nш1illytes ); 
numLEDs = n ; 
} else { 
numLEDs = numВytes = О; 
@brief Change the pixel foпnat of а previously-declared 
Adafruit_NeoPixel strip object. If format changes from one of 
the RGB variants to an RGBW variant (o r RGBW to RGB), the old 
data will Ье deallocated and new data is cleared. Otherwise 
the old data will remain in RAM and is not reordered to the'  
new format, so it's advisable to follow up with clear(). 
@param t Pixel type -- add together NEO_  * constants defшed in 
Adafruit_NeoPixel.h , for example NEO_  GRВ+NEO _ КНZ800 for 
NeoPixels expecting an 800 КНz (vs 400 КНz) data stream 
with color bytes expressed in green, red, blue order per 
pixel. 
@note This function is deprecated, here only for old projects that 
may still Ье calling it. New projects should instead нsе the 
'new' keyword with the first constructor syntax 
(lengtb, pin, type). 
~1 
void Adafruit_NeoPixeJ ::updateType(neoPixelType t) { , . . 
ЬооІ oldThreeBytesPerPixel = (wOt'fset == rOН'set) ; І/ talse it RGBW 
W0ffset == (t >> 6) & Obl J; // See notes in header Ш~ 
r0ffset == (t >> 4) & Obl І ; // regarding R/G/B/W offsets 
gOffset == (t >> 2) & ОЬ 11; 
bOffset == t & Ob l І· 
#~' f ct efined(NEO КН' Z400) 
188ООКНz == (t <2 56); // 400 К.Нz flag is 1< <S 
92 
482.ЧДТУ.242324 12-01 
7 
#Crtdif 
Jfbytes-per-pixel has changed (and pixel data was previousl 
:: аІІосаtеd), re-allocate to new size. Will clear any data. у 
if (pixels) { . 
Ьо 1n ewТhreeBytesPerP1xel = (wOffset = rOffset)· 
if (~ewТЬreeBytesPerPixel != oldThreeBytesPerPix;l) 
updateLength( numLEDs) ; 
} 
} 
#define SCALE VA RIANT_MCK / 2UL / I000000UL 
#define INST (2UL * F_  CPU І V ARIANT_  МСК) 
#define ТІМЕ_800_0 ((int)(0.40 * SCALE + 0.5) - (5 * INST)) 
#define ТІМЕ_800_1 ((int)(0.80 * SCALE + 0.5) - (5 * INST)) 
#define PERIOD_800 ((int)(l.25 * SCALE + 0.5)- (5 * INST)) 
#define ТІМЕ_4 00_0 ((int)(0.50 * SCALE + 0.5) - (5 * INST)) 
#define ТІМЕ_4 00_1 ((int)(l.20 * SCALE + 0.5) - (5 * INST)) 
#define PERIOD _ 400 ((int)(2.50 * SCALE + 0.5) - (5 * INST)) 
int pinМask, time0, timel, period, t; 
Ріо *port; 
volatile WoReg *portSet, *portClear, *timeV alue, *timeReset; 
uint8 _t  *р, *end, ріх, mask; 
Pmc_ s et_w riteprotect(f alse ); 
Pmc_enable_periph_clk((uint32_t)TCЗ_IRQn); 
Те- Configure(TC І , О, 
те TC_CMR_WAVE І TC_CМR_WAVSEL_UP І 
_C MR_ TCCLKS _ TIMER_  CLOCK 1) ; 
TC_Start(TCI, О); 
93 
482.ЧДТУ.242324 12-ОІ 
8 
•nJvfaS k === g- APinDescriptioп[pin] .ulPin; // Don't 'optimi· , th . 
ze ese mto 
рІ . . [ . ] р 
port ::::: g_ APinDescnptюn рш .р ort; // declarations above . wa n t t о 
S t === &(port->PIO _ SODR); // bum а few cycles after 
port е 
Clear === &(port->PIO _ eODR); // starting timer to minimize 
port 
. Value::::: &(Tel->Te_eHANNEL[0].TC СУ)·// the initial 'while' 
t1111e - ' • 
rin eReset = &(Те 1-> Те_e НANNEL[0] . те_C eR); 
1
р::::: pixels; 
end == р + numВytes; 
ріх == *Р  ++·,  
mask == Ох80; 
#if defined(NEO _КНZ400) // 800 КНz check needed only if 400 КНz support enabled 
if (іs800КНz) { 
#endif 
timeO = ТІМЕ_800_0; 
timel = ТІМЕ_800_1; 
period = PERIOD _800; 
#if defined(NEO _КНZ400) 
} else { // 400 КНz bitstream 
timeO = ТІМЕ- 400- О·'  
timel = ТІМЕ_4 00_ 1; 
period = PERI О D_  400; 
} 
#endif 
for (t == time0;; t = time0) { 
if (ріх & mask) 
t = timel · 
' 94 
--
482. чдrУ.242з24 , 2 
,,hile (*tіше Va lue < ( tщsigпed) . . -О І 
\ -v Рег1оd) 
9 
*portSet = pinМask; 
*timeReset = ТС_  CCR CLКEN І Т 
* . - C_CCR_swтRG· 
while ( tJmeValue < (unsigned)t) ' 
*portClear = pinМask; 
if(!(mask >>= 1)) { // This 'inside-out' 1 . 
00
1. f(p >= end) Р log1c utilizes 
break; // id1e time to minimize . t Ь 
In er- yte delays. 
ріх = *р++; 
mask= Ох80 · 
' 
} 
} 
while (*timeValue < (unsigned)period) 
; ІІ  Wait for Jast bit 
TC_Stop(TCJ, О); 
І! RENESAS including UNO R4 
#elif defmed(ARDUINO_ ARCH_RENESAS) 11 
defmed(ARDUINO_ ARCH_RENESAS_U NO) 11 
defmed(ARDUINO_  ARCH_  RENESAS_ PORTENTА ) 
11 
Definition for а single channel clockless controller for RA4Ml (Cortex М4) 
// See clockless.h for detailed info оп how the template parameters are used. 
#define АRМ DEMCR (*(volatile uint32_t *)0xE000EDFC) // Debug 
Exception andMonitor Control 
#define АRМ DEMCR TRCENA (1 << 24) !І Enable debugging & 
rnonitoring blocks -
95 
482.ЧДТУ .2 42324·  1 2 -О І 
10 
n).A D\\lT CTRL (*( ] . . 
ef111e AN""- - vo at1le UJnt32 t *)О 
#iitristєt· - хЕООо І ООО)// DW·r 
rel:' · control 
~ лRМ DWT_CTRL_CYCCNTENA 
мet1r1e - (І << О) 
(<'llnt І/ Enable сусІе 
;:. еАRМ DWT_CYCCNT 
#{ie11n - (*(volatile uint32 t *)О 
' unt registel" - хЕОООІОО4) І! СусІе 
со 
#define F_ C PU 48000000 
#define CYCLES _ 800_  ТОН (F_  CPU / 4000000) 
#define CYCLES_800_TIH (F_ CPU / 1250000) 
#define CYCLES _ 800 (F_  CPU / 800000) 
#define CYCLES _ 400_  ТОН (F_  CPU / 2000000) 
#define CYCLES_4 00_Т1Н (F_ CPU І 833333) 
#define CYCLES _ 400 (F_  CPU / 400000) 
uint8_t *р = pixels, *end = р + numВytes, ріх, mask; 
bsp_ іо_ port_ pin_ t  іо_ pin = g_pin_  cfg [pin]. pin; 
#define PIN_IO_PORT_ADDR(pn) (R_PORT0 + ((uint32_t) (R_PORTl -
R_PORT0) * ((pn) >> 8u))) 
volatile uint16_t *set = &(PIN_IO_PORT_ADDR(io_pin)->POSR); 
volatile uintlб_t *clr = &(PIN_IO_PORT_ADDR(io_pin)->PORR); 
Uintlб_tmsk = (lU << (io_pin & 0xFF)); 
uint32_t сус; 
1\Rм_DEMCR І= ARМ_DEMCR_TRCENA; 
96 
482. ЧДТУ .2 42324 
12-О І 
11 
... 1.А DWT_CTRL/= ARM_DWT CTRL СУ 
j\l\JYJ_ - - CCNTENA· 
' 
Jdefined(NEO_КНZ400) // 800 КНz check d 
#і nee ed only if 400 КН 
j{(is800КНz) { z support enabled 
11enmf 
сус === ARМ_DWT_  CYCCNT + CYCLES 8ОО· 
- ' 
while (р < end) { 
ріх === *р++; 
for (mask = Ох80; mask; mask >>= І) { 
while (АRМ_ DWT_  CYCCNT - сус < CYCLES_  800) 
сус = ARМ_DWT_CYCCNT; 
*set=msk 
' 
if (ріх & mask) { 
while (ARМ_DWT_CYCCNT- сус < CYCLES_800_T1H) 
} else { 
while (ARМ_DWT_CYCCNT- сус < CYCLES_800_T0H) 
} 
*clr == msk 
' 
} 
} 
While (ARМ_DWT_CYCCNT- сус < CYCLES_ SOO) 
#' 
if defined(NEO_  КНZ400) 
} else { І/ 400 kНz bitstream 97 
І 
482 .ЧДТУ.242324 12-01 
е,ус:::: лRМ_DWT_CYCCNT + CYCLES_ 12 
400; 
wJ1ile (р < end) { 
. - *р++· 
р1Х - ' 
for (mask =О х80; mask; mask >>= 1) { 
while (ARМ_DWT_CYCCNT - сус < CYCLES_4 00) 
сус = ARМ_DWТ_CYCCNT; 
*set = msk; 
if (ріх & mask) { 
while (ARМ_DWT_CYCCNТ- сус < CYCLES_4 00_Т1Н) 
} else { 
while (ARМ_DWT_CYCCNT - сус < CYCLES_4 00_ТОН) 
} 
·*clr = msk; 
} 
} 
while (ARМ_DWT_CYCCNT- сус < CYCLES_400) 
} 
#endif // NEO КНZ400 
#endif // АRМ 
І/  END АRМ -------------------- ------------------------------ • --
98 
#elif defined(ESP8266) \І defined(ESPЗZ 
4R2 .ЧJ1T .242:124 1 2-О І 
І З 
// E~SP8266 slюw() is exte111al to eпforce ІСАСНЕ _ RAM _ А'ГТR . 
executюn 
espShow(pin, pixels, 11ш11Bytes, іs800КНz); 
#elif defined(КENDRYTE_  К21 О) 
k210Show(pin, pixels, numВytes, іs800:КНz); 
#elif definedLA RDUINO_  ARC_ ) 
// Ardumo 1О  1 -----------------------------------------------------------
#defme NOPx7 \ 
{ \ 
_builtin_  arc_  nopO; \ 
_builtin_ arc_  nopO; \ 
_ builtin_  arc_  nop(); \ 
_ builtin_  arc_  nopO; \ 
_ builtin_  arc_  nop(); \ 
_ builtin_ arc_ nop(); \ 
_ builtin_ arc_  nop(); \ 
} 
PinDescription *pindesc = &g_APinDescription[pin]; 
register uint32_t loop = 
8 * numBytes; // one Іоор to handle all bytes and all bits 
99 
-
482 .ЧДТУ.242324 12 . • 
-01 
·ster ui11t8_t *р = pixels; 14 
•egt 
:egister ui11t32_t сштВуtе = (uiпt32 _t)(*p); 
reg ·ster ні11t32 - t cun·Bit = Ох80 & currB 
l У t е; 
~g·st.e i· ui11t32 
t - t bitCountei- = О·'  
register ui11t32_t first = 1; 
// тье loop is unusual. Very first iteration puts all the wa У LOW to the wire 
// _c onstant LOW does not affect NEOPIXEL ' so th ere 1. s no v1. s.t ble effect 
// displayed. During that very first iteration CPU с асh  es ш. struct.ю ns ш.  the 
// loop. Because ofthe caching process ' "CPU slows do wn "·  NEOP IXEL pulse 1. s 
;; very time sensitive that's why we let the CPU cache first and we start 
// regular pulse from 2nd iteration 
if(pindesc->ulGPIOType = SS_GPIO) { 
register uint32_t reg = pindesc->ulGPIOBase + SS_GPIO_SWPORTA_DR; 
uint32 _t reg_v al = _builtin_ arc_ lr((volatile uint32 _t)reg); 
register uint32_t reg_bit_high = reg_val І (1 << pindesc->ulGPIOid); 
register uint32_t reg_bit_low = reg_val & ~(1 << pindesc->ulGPIOid); 
loop += 1; // include first, special iteration 
while (loop--) { 
if (!fust) { 
cuпByte <<= 1; 
bitCounter++; 
} 
. d >450ns low 
. О is 200"S00ns h1gh an 
// 1 is >550ns high and >450ns loW, . 
. 1 w . reg bit_ h1gh, 
_builtin arc sr(first? reg_bit_ 0 
· -
- - 100 
(volatile uint32_t)reg); 
482 .ЧДТ'У . 242324 12-0J 
15 
if(ctUТBit) { // ~400пs HIGH (740i,s ov~i·aJJ) 
NOPx7 NOPx7 
} 
// -340ns HIGH 
NOPx7 _builtin_arc_11op(); 
// 820ns LOW; per spec, n1ax allowed low here is S000ns */ 
_builtin_arc_sr(reg_bit_low, (volatile uint32_t)reg); 
NOPx7NOPx7 
if (ЬitCounter >= 8) { 
bitCounter = О; 
currByte = (uint32_t)(*++p); 
} 
cuпBit = Ох80 & currByte; 
first = О; 
} 
} else if(pindesc->u1GPIOType == SOC_GPIO) { 
register uint32_t reg = pindesc->ulGPIOBase + SOC_GPIO_SWPORTA_DR; 
uint32_treg_val = MMIO_REG_ VAL(reg); 
register uint32_t reg_bit_high = reg_va] І (1 << pindesc->ulGPIOid); 
register uint32_t reg_bit_low = reg_val & ~(J << pindesc->нlGPIOid); 
Іоор += 1; // include first, special iteration 
While (loop--) { 
if (!first) { 
currByte <<= 1. 
' 101 
, 
.fMIO_REG_, AL(1·eg) = fiгst ? гeg_bit_1o\v : reg_bit_high; 
i{('-~uпBit) { // --43011s HIGH (74011s ovei·all) 
1QP ·7 NOPx7 _builti11_arc_11op(); 
1 -310ns HIGH 
N0Px7 
// 850ns LOW; per spec, max allowed low here is 5000ns */ 
ММІО_ REG_  V AL(reg) = reg_b it_low; 
N0Px7NOPx7 
if (ЬitCounter >= 8) { 
bitCounter = О; 
cuпByte = (uint32_t)(*++p); 
} 
cuпBit = Ох80 & cuпByte; 
first = О· 
' 
} 
} 
#elif defined(ARDUINO _ ARCH_  СН32) 
сh 3 2Show{gpioPort, gр.ю Р.ш , р1•х е 1s , nu mBytes ' is800KHz); 
#else 
#error Architecture not supported 
#endif 
102 
482.ЧДТУ.242324 12-ОІ 
ARCHITECTURE SELECT ------------------- 17 
,1 e,ND ---------------
/1 --------------
#if ti 1ed(NRF52) 11 defined(NRF52 SERIES) 11 d fi 
!(de 11 - е tned(ESP32)) 
. ten-upts(); 
JJ1 
#endjf 
endTime === micros(); // Save EOD time for Iatch оп next call 
} 
/*! 
@brief Set/change the NeoPixel output ріп number. Previous pin, 
if any, is set to INPUT and the new ріп is set to OUTPUT. 
@param р Arduino pin number (-І = no pin). 
*І 
void Adafruit_NeoPixel::setPin(intl 6_t р) { 
if (Ьegun && (ріп >= О)) 
pinМode(pin, INPUT); // Disable existing out pin 
рш=р; 
if (Ьegun) { 
pinМode(p, OUTPUT); 
digitaIWrite(p, LOW); 
} 
#if definedLА  VR_) 
port == portOutputRegister(d igitaIPinToPort(p) ); 
PinМask == digitalPinToBitMask(p); 
#endif 
#if defined(ARDUINO ARCH_STM32) 11 ) 
defined(ARDUINO ARCH ARDUINO_CORE_STM 32
- -
103 
.. 
482 .ЧДТУ.242324 12-0 l 
~r1., , r\')t1 = d.i.g.. i1 зlPiпToJ>o,1(p)~ 
. ріп == STM _LL_  GPIO _ PIN(d igitalPiпToPt'nN 
p:t.'1'1 . ame(p )) ; 
~Ііі" defined(ARDUINO _ARCH_ СН32) 
pinNan1e co11st pin_naшe = digitalPinToPinName(pin); 
gpioPort == get_G PIO_ Port(CH_PORT(pin_name)); 
gpioPin = СН_G PIO_ PIN(pin_name); 
#if defined ( СНЗ 2V20x_  Dб) 
if(gpioPort = GPIOC && ((*(volatile uint32_t*)0x40022030) & 0x0F000000) = О) 
{ 
gpioPin = gpioPin >> 13; 
} 
#endif 
#endif 
} 
/*! 
@brief Set а pixel's color using separate red, green and blue 
components. If using RGBW pixels, white will Ье set to О . 
@param n Pixel index, starting from О. 
@param r Red brightness, О = minimuш (0ft), 255 = шахіпшш. 
@param g Green brightness, О = miniшuш (o ft), 255 = шахіmш11. 
@param Ь Blue brightness, О = miniшum (0ft), 255 = maximнm. 
*/ 
void Adafruit_NeoPixe) ::setPixe)Color(uint16_t n, нint8_t i-, нiпtS_t g, 
uint8_t Ь) { 
if (n < numLEDs) { 
if (brightness) { // See notes in setBrightness() 
104 
. === (i· * b1·igl1tпess) >> 8; J ') 
1
g ~ (g * bl'igJ11:пess) >> 8; 
Ь === (Ь * b1·igl1t11ess) > > 8; 
} 
uint8_t *р; 
if (wOffset = rOffset) { // 1s an RGB-type strip 
р ~ &pixels[n * З]; // З bytes per pixel 
} else { // 1s а WRGB-type strip 
р == &pixels[n * 4]; // 4 bytes per pixel 
p[wOffset] = О; // But only R,G,B passed -- set W to О 
} 
p[rOffset] = r; // R,G,B always stored 
p[gOffset] = g; 
p[ЬOffset] = Ь; 
} 
} 
/*! 
@brief Set а pixel's color using separate red, green, blue and white 
components (for RGBW NeoPixels only). 
@param n Pixel index, starting from О. 
@param r Red brightness, О = minimum ( off), 255 = maximнm. 
@param g Green brightness, О = minimum ( off), 255 = mахіnшш. 
@param Ь Blue brightness, О = minimum ( off), 255 = maximtш1 . 
@param w White brightness, О = minimum ( off), 255 = maxinшm, ignored 
if using RGB pixels. 
V . • . 8 t 
01d Adafruit_NeoPixel : :setPixelColor(uintlб_t n, шnt8_t r, uшt - g, 
105 
482.ЧДТУ .242324 12-О l 
ui11t8_t Ь, uint8_t w) { 20 
if (н < 11umLEDs) { 
if (Ьi-ightness) { // See notes in setBrightness() 
r == (r * brightness) >> 8; 
g == (g * brightness) >> 8; 
ь === (Ь * brightness) >> 8; 
w == (w * brightness) >> 8; 
} 
uint8_t *р; 
if (wOffset = rOffset) { // Is an RGB-type strip 
р = &pixels[n * З]; // З bytes per pixel (ignore W) 
} else { // Is а WRGB-type strip 
р = &pixels[n * 4]; // 4 bytes per pixel 
p[wOffset] = w; // Store W 
} 
p[rOffset] = r; // Store R,G,B 
p[gOffset] = g; 
p[bOffset] = Ь; 
} 
} 
/*! 
@brief Set а pixel's color using а 32-bit 'packed' RGB or RGBW valtie. 
@param n Pixel index, starting from О. 
@param с 32-bit color value. Most significant byte is white (foI RGBW 
pixels) or ignored (for RGB pixels), next is red, tl1en green, 
and least significant byte is blue. 106 
482 .ЧДТУ.242324 12-ОІ 
21 
*І 
'd Adatrujt_NeoPixel::setPixe1Co1or(uintlб t . 
, ,01 - n, UJnt32 t с) { 
if (n < numLEDs) { -
uint8_t*p, r=(uint8_t)(c>> 16),g===(uint8 t)( >> - . 
(Ьrightness) - с 8), Ь - (Uint8 t)c· 
if { // See notes in setBrightness() - ' 
r = (r * brightness) >> 8; 
g = (g * brightness) > > 8; 
ь = (Ь * brightness) >> 8; 
} 
jf(wOffset = rOffset) { 
р = &pixels[n * 3]; 
} else { 
р = &pixels[n * 4]; 
uint8_t w = (uint8_t)(c >> 24); 
p[wOffset] = brightness? ((w * brightness) >> 8): w; 
} 
р[r Offset] = r; 
p[gOffset] = g; 
p[bOffset] = Ь; 
} 
} 
І*! 
@brief Fill all or part of the NeoPixe1 strip with а color. 
@pararn с 32-bit color value. Most significant byte is white (foi· 
RGBW pixels) or ignored (for RGB pixels), next is red, 
then green, and Ieast significant byte is blue. If all 
107 
482 .ЧДТУ.242324 1 2-О І 
22 
ai·giннeots а1·е tшspecified, this will Ье о (off). 
fii·st Iodex of fi1·st pixel to ti11 , starting frorn O М Ь 
@Р. a1. ·at11 1· . . • ust е 
itl-bom1ds, по с 1рршg 1s performed. о if unspecified. 
@ соШ1t Numbei- of pixels to fill , as а positive value р 
а1·а111 . assi.n g 
р O or leaving unspecified will fill to end of strip. 
*І 
void Adafruit_NeoPixel::fill(uint32_t с, uintlб_t first, uintlб_t count) { 
ui.n  tlб- t і, end; 
if (first >== numLEDs) { 
re turn.,  // If first LED is past end of strip, nothing to do 
// Calculate the index ONE AFTER the last pixel to fill 
if (count = О) { 
// Fill to end of strip 
end = numLEDs; 
} else { 
// Ensure that the loop won't go past the last pixel 
end = first + count; 
if (e nd > numLEDs) 
end = numLEDs; 
for (і == first; і < end; і++) { 
this->setPixelColor(i, с ); 
} 
108 
482.ЧДТУ.242324 1 2-ОІ 
23 
/'! . 
. . coнvei1 ]ше, sat1.1шt10п апd value into а pack d . 
(!_1 ь1·1е1 . е 32 -bi t RGB соІог 
1 t сап ье passed to setP1xelColo1"() or other RGB 
t ,а -compatt.b le 
functio11s. 
@pa.t· an1 Іше Ап m1signed 16-bit value, О to 65535 , repr esen t·t ng one full 
Іоор oftl1e color wl1eel, which allows 16-bit hues to "roll 
ovei·" while still doing the expected thing (a nd allowing 
more precision than the wheel() function that was common to 
prior NeoPixel examples ). 
@param sat Saturation, 8-bit value, О (min or pure grayscale) to 255 
(max or pure hue). Default of 255 ifunspecified. 
@param val Value (brightness) , 8-bit value, О (min / black / off) to 
255 (max or full brightness). Default of 255 ifunspecified. 
@retum Packed 32-bit RGB with the most significant byte set to О -- the 
white element of WRGB pixels is NOT utilized. Result is linearly 
but not perceptually сопесt, so you may want to pass the result 
through the gamma32() function ( or your own gamma-coпection 
operation) else colors may appear washed out. This is not done 
automatically Ьу this function because coders may desire а more 
refined gamma-coпection function than the simplified 
one-size-fits-all operation of gamma32(). Diffusing the LEDs also 
really seems to help when using low-saturation colors. 
*І 
uintЗ2_t Adafruit_NeoPixel ::ColorHSV(uintl6_t hue, uint8_t sat, нintS_t val) { 
uint8 _t r, g, Ь; 
// R.e rnap 0-65535 to 0-1529. Pure red is CENTERED  on th е 64К rollover; 
109 
-
482.ЧДТУ.242324 1 2-ОІ 
lLІ 
sta.i·t о{ рtн·е 1·ed, Ьнt t)1e midpoint ... а fe w va\ Ь 
.. . 01 11,е ues а ove 
/І О,:, 11 
d tew below 65536 all yield pttre red (similarly 
зо з , 32768 . h 
is t е 
І zero 
І , . t ноt start, of рш·е суап). The 8-bit RGB hexcone ( І · 
.J po111 , · 256 va ues 
// rнt fo1· 1·e d,  o,·een, blue) l'eally only allows for 1530 distinct h 
1 ь· ues 
І/ ез СІ· 
· 536 1110re 011 tl1at below), but the full unsigned 16-bit typ 
(not 1 , е was 
// ~or hl.le so th  at one' s  со d е can eas1·1  у handle а contiguous col 
І cnose11 l' or 
/ 1Ь у allowing hue to roll over in either direction. 
// ",ьее 
_ (hue * 1530L + 32768) / 65536; 
ьue-
use red is centered on the rollover point (the +32768 above 
н в~а ' 
// essentially а fixed-point +0.5), the above actually yields о to 1530, 
// wbere о and 1530 would yield the same thing. Rather than apply а 
// costly modulo operator, 1530 is handled as а special case below. 
// So you'd think that the color "hexcone" (the thing that ramps from 
;; pure red, to pure yellow, to pure green and so forth back to red, 
// yielding six slices) , and with each color component having 256 
// possible values (0-255), might have 1536 possible items ( 6*256), 
// but in reality there's 1530. This is because the last element in 
// each 256-element slice is equal to the first element of the next 
// slice, and keeping those in there this would create small 
І! discontinuities in the color wheel. So the last element of each 
11 slice is dropped ... we regard only elements 0-254, with item 255 
// being picked up as element О of the next slice. Like this: 
11 Red to not-quite-pure-yellow is: 255, О, О to 255, 254, О 
11 
Pure yellow to not-quite-pure-green is: 255, 255, О to 1, 255, О 
11 Pure green to not-quite-pure-cyan is: О, 255, О to О, 255, 254 
H~d so ~1 0rth. Hence, 1530 distinct hues (О to 1529), and hence wh У  
І! the со 
nst . 
ants below are not the multiples of 256 you m1ght expect. 
110 
482 .ЧДТУ .2 42324 
12-О І 
с 11,,ei-t ht1e to R,G,B (11ested ifs faster tha d' . 
11 о n 1v1de+rnod+ . 25 
< 510) { // Red to Gree11-l SWІtch) : 
it'Ott•Є 
Ь :::: О; 
if (hue < 255) { // Red to У ellow-1 
r:::: 255; 
g :::: ьuе; // g = О to 254 
} else { // У ellow to Green-1 
r :::: 5 І О - hue; // r = 25 5 to 1 
g === 255; 
} 
} else if (hue < 1020) { // Green to Blue-1 
r== О; 
if (hue < 765) { // Green to Cyan-1 
g == 255; 
b==hue- 510; // Ь = О to 254 
} else { // Cyan to Blue-1 
g= 1020- hue; // g = 255 to 1 
Ь = 255; 
} 
} else if (hue < 1530) { // Blue to Red-1 
g = О; 
if (hue < 1275) { // Blue to Magenta-1 
r = hue - 1020; // r = О to 254 
Ь = 255· 
' 
} else { // Magenta to Red-1 
r == 255· 
' 
Ь == 1530 - hue; // Ь = 255 to 1 
} 
111 
482.ЧДТУ.242324 12-0J 
// Last 0.5 Red (qнicke1· tl1a11 % operat ) 26 
} eJse { or 
1· ~ 255; 
g-- Ь == О; 
} 
Apply saturation and valнe to R,G В pack into 32 ь · 
І/  ' ' - 1t result: 
uint32_t vl == 1 + val; // 1 to 256; allows >>8 instead of /255 
u1.n  t16 - t s1 == 1 + sat; // 1 to 256; same reason 
·nt8 t s2 == 255 - sat; // 255 to О 
U1 -
return ((((((r * s1) >> 8) + s2) * vl) & 0xffO0) << 8) І 
(((((g * s1) >> 8) + s2) * vl) & 0xffO0) І 
(((((Ь * s1) >> 8) + s2) * vl) >> 8); 
} 
/*! 
@brief Query the color of а previously-set pixel. 
@param n Index of pixel to read (О = first). 
@return 'Packed' 32-bit RGB or WRGB value. Most significant byte is white 
(for RGBW pixels) or О (for RGB pixels), next is red, then green, 
and least significant byte is blue. 
@note If the strip brightness has been changed from the default value 
of 255, the color read from а ріхеІ may not exactly match what 
was previously written with one of the setPixelColor() ftшctions. 
This gets more pronounced at lower brightness levels. 
*І 
uintЗ2_t Adafruit_NeoPixel::getPixelColor(uintl6_t n) conSt { 
if (n >:: numLEDs) 
return О;// Out ofbounds, retum no color. 
112 
1 
482.ЧДТУ .2 42324 І 
2-О І 
27 
otrset ==== 1-0tiset) { // 1s RGB-type d ev1. іН~ ce 
р ::::: &pixels[1 1 * 3] ~ 
it' (Ьrightпess) { 
// Stored color was decimated Ьу setBrightn () 
ess . Returned value 
// atteinpts to scale back to an approximation 0 f h . . 
t е ortgtnal 24-bit 
// value used when setting the pixel color,  but th ere w1. 1І always Ье 
// some error -- those bits are simply gone. Issue is most 
// pronounced at low brightness levels. 
retum (((uint32_t)(p(r0ffset] << 8) / brightness) << 16) І 
(((uint32_t)(p[g0ffset] << 8) / brightness) << 8) І 
((uint32_t)(p[b0ffset] << 8) / brightness); 
} else { 
// No brightness adjustment has been made -- return 'raw' color 
return ((uint32_t)p[r0ffset] << 16) І ((uint32_t)p[g0ffset] << 8) І 
(uint32_  t )p[bOffset]; 
} 
} else { // 1s RGBW-type device 
р == &pixels[n * 4]; 
if (brightness) { // Retum scaled color 
return (((uint32_t)(p[w0ffset] << 8) / brightness) << 24) І 
(((uint32_t)(p[r0ffset] << 8) / brightness) << І6) І 
(((uint32_t)(p[g0ffset] << 8) / brightness) << 8) І 
((uint32_t)(p[b0ffset] << 8) / brightness); 
} else { // Retum raw color ) І 
• 2 t)p[rOffset] << 16 
return ((uint32_t)p[w0ffset] << 24) І ((шnt 3 -
. 2 t)p[bOffset]; 
((uint32_t)p[g0ffset] << 8) І (шnt 3 - 11з 
482. ЧДТУ .242324 1 2-О І 
28 
/*! 
@brief Adjust output brightness. Does not immediat I f~ 
е У а 1ect what's 
cwтently displayed on the LEDs · The next call t 
о sh o w() will 
refresh the LEDs at this level. 
@param Ь Brightness setting, O=minimum (off), 255=brightest. 
@note This was intended for one-time use in one's setup() function, 
not as an animation effect in itself. Because of the way this 
Iibrary "pre-multiplies" LED colors in RАМ, changing the 
brightness is often а "lossy" operation -- what you write to 
pixels isn't necessary the same as what you'll read back. 
Repeated brightness changes using this function exacerbate the 
problem. Smart programs therefore treat the strip as а 
write-only resource, maintaining their own state to render each 
frame of an animation, not relying on read-modify-write. 
*/ 
void Adafruit_ NeoPixel: :setBrightness(uint8_ t Ь) { 
І/ Stored brightness value is different than what's passed. 
І/ This simplifies the actual scaling math later, allowing а fast 
І/ 8x8-bit multiply and taking the MSB. 'brightness' is а uint8_t, 
// adding 1 here may (intentionally) roll over. .. so О = max brightness 
// (c olor values are interpreted l1. terally; no sca 1ш·  g ),  1 = mtn 
11 brightness (off), 255 = just below max brightness. 
uint8_t newBrightness = Ь + 1; 
1·r  (newBrightness != brightness) { // Compare aga·ш s t prt· or value 
114 
482.ЧДТУ.242324 J 2-О І 
29 
.. t ess 1,as cl1a11ged -- 1·e-scale existing data in RAM 
/ 131·1g1 11
1  ' 
І . ·ocess is pote11tially "lossy," especially whe . . 
// f ]i1s Р1 . n increas1ng 
. tI ess. The tigl1t ti111i11g ін the WS281 l/WS2Sl d . 
// ь11gh 1 2 со е means there 
't enough free cycles to pe1-form this scaling on th fl 
// 31·en е У as data 
// is issued. So we make а pass through the existing color data in RAM 
d scale it ( subsequent graphics commands also work at this 
// an 
H~.g h tness Ievel). If there's а significant step up in brigh.t ness , 
// the Iimited number of steps (q uantization) in the old data will Ье 
•te visible in the re-scaled version. For а non-destructive 
// qu1 
// change, you'll need to re-render the full strip data. C'est Іа vie. 
uint8 - t с, *ptr = pixels, 
oldВrightness = brightness - 1; // De-wrap old brightness value 
uintl 6_  t scale; 
if(oldВrigbtness = О) 
scale = О; // Avoid /О 
else if (Ь == 25 5) 
scale = 65535 / oldBrightness; 
else 
scale = (((uintlб_t)newBrightness << 8) - 1) / oldВrightness; 
for (uintlб_t і= О; і< numBytes; і++) { 
с = *ptr; 
*ptr++ = (с * scale) >> 8; 
} 
brightness = newBrightness; 
} 
} 
/*! 115 
482.ЧДТУ.24232-4 12w OI 
. t· RetJ·ieve tl1e last-set b1·igl1t11ess value [і h . 
~ь1·1е or t е str1p 
~і • 
Bt-igl1t1less value: О = mi11imщn (off) _ . 
11 
[!)retu1 ' 255 - rnax1mum. 
~1 
t Adaftuit_NeoPixel::getBrightness(void) с t { 
ui11t8_ ons return brightness . І ; } 
f! 
@brief Fill the whole NeoPixel strip with о ; black I off. 
*І 
vo1' d Adafruit- NeoPixel::clear(void) { memset(pixels , о , n umВ ytes ) ; } 
// А 32-bit variant of gamma8() that applies the same function 
//to all components of а packed RGB or WRGB value. 
uint32_t Adafruit_NeoPixel::gamma32(uint32_t х) { 
uint8_t *у= (uint8_t *)&х; 
// All four bytes of а 32-bit value are filtered even if RGB (not WRGB), 
/І to avoid а bunch of shifting and masking that would Ье necessary for 
// properly handling different endianisms (a nd each byte is а fairly 
// trivial operation, so it might not even Ье wasting cycles vs а check 
// and branch for the RGB case) . In theory this might cause trouble *ifl' 
// someone's storing information in the unused most significant byte 
І/ of an RGB value, but this seems exceedingly rare and if it's 
І/ encountered in reality they can mask values going in or coюing онt. 
for (uint8_t і = О; і < 4; і++) 
У[і] == gamma8(y[i]); 
return х; І/ Packed 32-bit retum 
} 
116 
482 .ЧДТУ .242324 1 2-О 1 
1 
'! 
. f f i11 NeoPixe1 st1·ip wit11 оне 0 1· inore су 
~i),t,1·1e с 1e s of hue~. 
8,,е~-уопе loves tl1e l'ai11bow swil'l so much ' now i.t , s  canon! 
ra fi1-st_l1ue Hue of fil'st pixel, О-655З
@Ра 111 5 ' representi.n g one full 
cycle of the color wheel. Each subse quent p1.x el will 
Ье offset to complete one or more cycl es over the 
length of the strip. 
@param reps Number of cycles of the color wheel over the length 
of the strip. Default is 1. Negative values can Ье 
used to reverse the hue order. 
@paraID saturation Saturation ( optional), 0-255 = gray to pure hue, 
default = 255. 
@pararo brightness Brightness/value ( optional), 0-255 = off to max, 
default = 255. This is distinct and in combination 
with any configured global strip brightness. 
@param gammify Iftrue (default), apply gamma coпection to colors 
for better appearance. 
*/ 
void Adafruit_N eoPixel: :rainbow(u int1 6 _ t first_hue, int8 _ t reps, 
uint8_t saturation, uint8_t brightness, bool gammify) { 
for (uintl6- t і=О · i<numLEDs; і++) { 
' 
uintl6_t hue = first_hue + (і * reps * 65536) / numLEDs; 
uint32_t color = ColorHSV(hue, saturation, brightness); 
if (gammify) color = gamma32(c olor); 
setPixelColor(i, color); 
} 
} 
117 
4~2.Ч)(ТУ.242324 І 2. . () І 
31 
(*! 
@brief Со11\1егt ріхе1 соІо1· ot·der f1·orn string (e.g. ''BOR") to NeoPixel 
со1ог oгdei- coнstaнt (e.g. NEO_ BGR). This may Ье helpful Гоr code 
that initializes fі·ош text configuration rather than compile-time 
constaпts. 
@раrап1 v Iпput string. Should Ье reasonably sanitized ( а З- or 4-
character NUL-tenninated string) or undefined behavior may 
result ( output is still а valid NeoPixel order constant, but 
might not present as expected). Garbage in, garbage out. 
@retum One of the NeoPixel color order constants ( e.g. NEO_  BGR). 
NEO_  КНZ400 or NEO_  КНZ800 bits are not included, nor needed ( all 
NeoPixels actually support 800 КНz it's been found, and this is 
the default state if no КНZ bits set). 
@note This function is declared static in the class so it can Ье called 
without а NeoPixel object (since it's not likely been declared 
in the code yet). Use Adafruit_NeoPixel::str2order(). 
*/ 
neoPixelType Adafruit_NeoPixel::str2order(const char *v) { 
int8_t r = О, g = О, Ь = О, w = -1; 
if (v) { 
char с; 
for (uint8_t і=О; ((с = tolower(v[i]))); і++) { 
if (с == 'r') r = і; 
else if (с == 'g') g = і; 
else if (с == 'Ь') Ь = і; 
else if (с == 'w') w = і; 
} 
r&=З· 
' 118 
ДОДАТОІ(В 
ОСОБJШВОСТІ ПОБУДОВИ ПРОГРАМНОГО 
ЗАБЕЗІІЕЧЕННЯІНТЕЛЕКТУА ЛЬНОГО КОНТРОJПО НАПОВНЕНОСП 
МЕДИЧНИХ ЄМНОСТЕЙ 
Графічні матеріали 
482.ЧДТУ.242324 90-01 
Листів 9 
Розробник 
Черкаси 2024 
482 .ЧДТУ.242324 90-01 
2 
Особливості побудови 
~рограмного забезпечення 
1нтелектуального контролю 
наповненості медичних 
ємностей 
АВТОР: ДРАТОВАНИЙ С.Д. 
КЕРІВНИК: ГОЛУБ С .В. 
ЧЕРКАСЬКИЙ ДЕРЖАВНИЙ ТЕХНОЛОГІЧНИЙ 
УНІВЕРСИТЕТ 
Рис. В.І. - Слайд 1 
Актуальність, мета та завдання 
► Актуальність: 
► -Зростання автоматизації медичних процесів. 
► -Зменшення впливу людського фактору. 
► -Потреба у точному контролі наповненості медичних 
ємностей. 
► Мета: 
► -Розробка системи для контролю наповненості ємностей. 
► Завдання: 
► -Аналіз існуючих методів . 
► -Розробка апаратно-програмного комплексу. 
► -Верифікація результатів. 
Рис. В.2. - Слайд 2 
120 
482.ЧДТУ.242324 90-О І 
Об'єкт і предмет досліджень 
► Об'єкт: 
► - Процес~1 автоматизованого контролю наповненості 
ємностей. 
,. Предмет: 
"" - Апаратно-програмні засобv~ для вюначення рівня 
наповненості. 
Рис. В.З. - Слайд З 
Аналіз існуючих методів 
► _О птичні методи: використання світлодіодів, камер. 
► _Ф ізичні методи : зважування, гідростатичні сенсори. 
► - Електронн і методи: ультразвукові, ємнісні сенсори. 
► - Акустичні методи : аналіз звукових хвиль. 
р ис . в .4.  - Слаи
u д 4 
121 
482.ЧДТУ.242324 90-0J 4 
Аналіз існуючих аналогів 
,. - Rocl,e Diogпos 1 ics: лазерні систе,~.l1 контрСJt,v, 
~ - Homilton Robotics: ультразвукові сенсори 
r - НопеуwеІІ , On,ron: ємнісні датчики . 
► - Pepperl+Fuchs: ультразвукові рішення. 
Рис. В.5. - Слайд 5 
Архітектура системи 
.,. - Платформа ESP32. 
,. - RGВ-світлодіоди. 
,. - Фоторезисп-1вні датчики. 
► - Проr рамне забезпечення для аналізу дан11х. 
Рис. В.6. - Слайд 6 
122 
4R2.ЧД'1 У.242 24 90-ОІ 
Теоретичні дослідження 
~ _ вплt1R спектру сRітла на визначення ріRн::1 р1дv<нv 
► - оптимізація роботи фоторезистивн11х дсл•1иків. 
" - Адоптація системи до умов лабораторій. 
Рис. В.7. - Слайд 7 
Експериментальні 
• 
досл1дження 
► _т естування системи в умовах лабораторії. 
•· _ Збір даних для різних спектрів світло . 
.., - Аналіз ефективності роботи датчиків. 
Рис. В. 8 . - лайд 8 
123 
.. 
482.ЧДТУ.242324 90-01 б 
Рис. В.9. -Слайд 9 
Stat.lstical Appro.,ch: Distribution of S~nal lntensities 
- (r-PІylru 'IJW' 
17.!. - t1•1H lltd1t<\!Lw 
- "'O'I-\IJA.or 
••• o,,, ,,.,fhl~IOUl4fl,4)):IJ 
• -- r,.,r ,-:111 INrvwdl i\11 001 
Рис. В . 1 О . - Слайд 1О  
124 
І 
І 
482.ЧДТУ.242324 90-0J 
7 
Рис. В.І 1. - Слайд 11 
Висновки досліджень 
► -Система забезпечує точність визначення 
наповненості. 
► -Оптимальним спектром для датчиків є біл11й 
с вітло. 
► . Розроблені алгоритми адаптивні до зовнішніх 
умов. 
Рис. 8 .12. - Слайд 12 
125 
482.ЧДТУ.242324 90-0J 8 
Практичне значення 
► - У досконалення точності 
► -Оптимізація лабораторних процесів. 
► -Зменшення впливу людського фактору . 
► -Скорочення витрат і підвищення якост1 
досліджень. 
Рис. В.ІЗ. - Слайд 13 
Висновки та перспективи 
► -Розроблено систему, що відповідає 
сучасним вимогам. 
► - Подальша робота: оптимізація під різні типи 
лабораторій. 
► - І нтеграція з іншими системами та 
пристроями . 
► -Використанн я машинного навчання для 
підвищення точнос ті . 
Рис. В.14. - Слайд 14 
126 
482 .ЧДТУ .242324 90-О І 
Рис .в. 1 5 · - Слайд 15 
127