Вбудовані системи на базі мікроконтролерів використовуються у вимірювальній техніці, автоматизації, робототехніці, системах керування та пристроях Інтернету речей. Одним із практичних прикладів такої системи є календар-годинник локального часу, створений на базі мікроконтролера STM32F103.
Проєкт поєднує електронну схему, роботу з периферією мікроконтролера, передавання даних через цифрові інтерфейси, бездротове налаштування часу та виведення україномовної інформації на TFT-дисплей.
Матеріал буде корисним студентам, які опановують програмування мікроконтролерів, цифрову електроніку, вбудовані системи та інформаційно-вимірювальні технології.
Завдання проєкту
Метою розробки було створення компактного пристрою, який:
Для реалізації проєкту використано мікроконтролерний модуль STM32F103 Smart, TFT-дисплей, Bluetooth-модуль HC-06 та програмне забезпечення мовою C.
Основні компоненти системи
До складу пристрою входять:
Обидва варіанти дисплея підключаються до мікроконтролера через інтерфейс SPI. Bluetooth-модуль підключено через USART2.

Передавання даних на TFT-дисплей
TFT-дисплей використовується для відображення:
Передавання графічних даних від мікроконтролера до дисплея здійснюється через послідовний інтерфейс SPI.

Під час складання пристрою необхідно враховувати, що модулі TFT LCD 1,3″ та 1,44″ можуть мати різне розташування контактів. Тому схема підключення повинна відповідати конкретній моделі дисплея.
Налаштування часу через Bluetooth
Для встановлення або коригування поточного часу використовується Bluetooth-модуль HC-06.
Модуль підключений до STM32F103 через інтерфейс USART2. Дані про дату й час надходять від Android-застосунку у вигляді послідовності символів.
Мікроконтролер приймає:
Після приймання дані перетворюються у внутрішній формат і записуються в систему RTC.
Такий підхід дозволяє встановлювати час без додаткових кнопок, енкодерів або складного меню на самому пристрої.
Робота годинника реального часу
STM32F103 містить апаратний модуль RTC — Real-Time Clock. Він використовується для підрахунку секунд і збереження часу.
У програмному забезпеченні час подається у форматі UNIX time — як кількість секунд, що минула від 1 січня 1970 року.
Це спрощує виконання календарних обчислень, оскільки одне числове значення містить інформацію про:
Для перетворення дати та часу використовується стандартна бібліотека time.h. Функція mktime() перетворює структуру tm у значення типу time_t.
Перетворення BCD-даних
У проєкті частина параметрів часу обробляється у форматі BCD — Binary-Coded Decimal.
У цьому форматі кожна десяткова цифра зберігається окремою групою бітів. Наприклад, значення 0x29 у BCD відповідає десятковому числу 29.
Після отримання даних із Bluetooth-повідомлення програма:
1. виділяє окремі цифри;
2. формує числові значення;
3. записує їх у структуру tm;
4. перетворює дату й час у time_t;
5. передає значення в RTC.
Фрагмент алгоритму:
tstart.tm_sec =
(aRxBuffer[10] & 0x0F) * 10 +
(aRxBuffer[11] & 0x0F);
tstart.tm_min =
(aRxBuffer[8] & 0x0F) * 10 +
(aRxBuffer[9] & 0x0F);
tstart.tm_hour =
(aRxBuffer[6] & 0x0F) * 10 +
(aRxBuffer[7] & 0x0F);
daytime = mktime(&tstart);
Збереження часу в резервних регістрах
Значення time_t може мати розмір 32 біти. Для запису в резервні регістри воно розділяється на дві 16-бітні частини:
uint16_t daytimeL = daytime & 0x0000FFFF;
uint16_t daytimeH = (daytime >> 16) & 0x0000FFFF;
HAL_RTCEx_BKUPWrite(
&RtcHandle,
RTC_BKP_DR2,
daytimeL
);
HAL_RTCEx_BKUPWrite(
&RtcHandle,
RTC_BKP_DR3,
daytimeH
);
Це дозволяє зберегти базове значення часу в резервній області мікроконтролера.
Українські шрифти для TFT LCD
Однією з особливостей проєкту є підтримка української мови.
Стандартні бібліотеки для невеликих TFT-дисплеїв не завжди містять українські символи. Тому для пристрою було сформовано власний растровий шрифт.
Для цього використано програму GLCD Font Creator. Вона дозволяє:
У матеріалі використовується діапазон Unicode, який охоплює кирилицю та додаткові українські символи, зокрема «І», «Ї», «і» та «ї».
Згенерований масив має приблизно такий вигляд:
const uint8_t myFont_ukr[] = {
0x00,
0x00,
0x06, 0x04,
0x85, 0x04,
0x27,
0x00
};
Кожен символ подається як набір байтів, у якому окремі біти відповідають пікселям зображення.
Структура програмного забезпечення
Код проєкту створено мовою C з використанням бібліотеки HAL.
Програмне забезпечення виконує кілька основних функцій:
Для розроблення та складання проєкту використано середовище Keil.
Практичне значення проєкту
Цей календар-годинник є хорошим прикладом комплексного навчального проєкту, у якому поєднуються кілька напрямів:
Подібні проєкти допомагають зрозуміти не лише окремі функції мікроконтролера, а й принципи створення завершеної програмно-апаратної системи.
Зв’язок з інформаційно-вимірювальними технологіями
Фахівці з інформаційно-вимірювальних технологій працюють із датчиками, мікроконтролерами, електронними модулями, каналами передавання даних і програмним забезпеченням.
Створення такого пристрою передбачає:
Саме такі компетентності формуються під час навчання на кафедрі інформаційно-вимірювальних технологій.
Висновок
Розробка календаря-годинника на STM32F103 демонструє, як за допомогою доступних електронних компонентів можна створити повноцінну вбудовану систему.
Проєкт поєднує роботу з TFT-дисплеєм, Bluetooth, RTC, UNIX time, BCD-даними, українськими шрифтами та мовою C.
Матеріал може бути використаний як навчальний приклад для студентів, які вивчають мікроконтролери, електроніку, програмування, автоматизацію та інформаційно-вимірювальні технології.
Самарцев Юрій Миколайович
доцент, кандидат технічних наук
кафедра інформаційно-вимірювальних технологій
КПІ ім. Ігоря Сікорського
Навчайтеся створювати сучасні інженерні системи
На кафедрі ІВТ студенти вивчають програмування, мікроконтролери, електроніку, вимірювальні системи, автоматизацію, робототехніку, комп’ютерний зір і штучний інтелект.
Освітні програми кафедри
Вступ на бакалаврат
Спеціальність G6 «Інформаційно-вимірювальні технології»






