Эта история началась с вполне практической задачи. В одной из мечетей использовались старые электронные часы сирийского производства, адаптированные для российского рынка. Их основная функция — автоматическое отображение расписания молитв (рузнама) в течение всего года. На протяжении многих лет устройство исправно работало и не вызывало нареканий. Однако со временем стало заметно, что фактическое время намаза в нашей местности перестало совпадать с тем, что показывали часы.

Первым логичным шагом было обращение к продавцам аналогичного оборудования. В магазине мне сообщили, что модель давно снята с производства и не поддерживается. Единственный вариант — приобрести новую версию, стоимость которой составляет около 40 000 рублей. Чем обоснована такая цена — вопрос открытый. С технической точки зрения устройство представляет собой набор светодиодных индикаторов, микроконтроллер и блок питания, без каких-либо сложных вычислительных узлов.
Итак, родилась идея о попытке модернизации существующих часов. Я решил разобрать устройство и попытаться проверить, можно ли изменить данные напрямую. Основная гипотеза заключалась в том, что расписание хранится во внешней EEPROM-памяти, и если есть дамп, то его можно будет отредактировать.

После разбора устройства стало понятно, что конструкция состоит из трех отдельных плат: платы управления, платы индикации времени молитв и платы отображения текущего времени и даты. На основной плате управления я обнаружил две микросхемы EEPROM AT24C02 и AT24C512, а также старенький микроконтроллер семейства ATmega, который выполнял основные вычисления и вывод информации на платы индикации.

С помощью китайского программатора на базе CH340 я попытался прочитать содержимое обеих микросхем. Дамп памяти успешно сохранился на компьютере, что было весьма оптимистичным. Однако на этапе обратной установки я допустил типичную инженерную ошибку – поменял микросхемы местами. Позже оказалось, что одна из них содержит таблицы расписаний молитв, а другая – служебные данные устройства. После включения часы перестали загружаться и начали отображать ошибку E-02. Значение этого кода установить не удалось. Даже повторная запись исходных дампов не помогла восстановить работоспособность.
На этом этапе стало понятно, что возврат к оригинальной прошивке маловероятен. И тогда родилась идея радикального решения – полностью заменить управляющую электронику и написать программное обеспечение с нуля. В качестве аппаратной платформы я выбрал ESP32 S2 Mini, плату, подаренную мне другом.

Этот микроконтроллер обладает достаточной производительностью, встроенным Wi-Fi и широкими возможностями по работе с периферией. Дополнительно был использован модуль RTC для автономного хранения времени. Работа проводилась в среде VS Code с использованием специализированного плагина kilocode, к которому подключена китайская модель искусственного интеллекта GLM-3.7 CLI. Эксперимент проводился с целью максимально использовать возможности ИИ при разработке прошивки. Интересно отметить, что базовая функциональность была реализована без ручного написания кода. В течение примерно двух часов нейросеть сгенерировала модули для работы с RTC, реализовала файловую систему для хранения данных, обеспечила загрузку расписания молитв в формате JSON, написала алгоритм вычисления текущей даты по календарю хиджры и создала веб-интерфейс для управления параметрами устройства. По скорости разработки результат оказался впечатляющим: задачи, которые ранее заняли бы несколько дней, были выполнены за пару часов. Однако дальнейший этап показал, что не всё можно автоматизировать.

Самой сложной частью проекта стала интеграция новой платы управления с оригинальными платами индикации. В устройстве применялись сдвиговые регистры 74HC595, объединённые в каскад. Через них осуществлялось управление всеми сегментами и светодиодами. Документация отсутствовала полностью, а разводка не соответствовала типовым схемам. Нижняя плата, отвечающая за отображение времени молитв, была реализована по матричному принципу. В цепочке использовались пять регистров 74HC595, что означало передачу пяти байтов данных за каждый цикл обновления. Третий байт управлял строками матрицы, а остальные 4 — сегментами индикаторов. При практической проверке выяснилось, что сегменты подключены в нестандартном порядке: некоторые линии оказались инвертированными, часть цифр отображалась зеркально, а логическая структура битов не совпадала с физическим расположением сегментов. Для корректной работы пришлось создать таблицу ремаппинга, которая преобразовывала логическое представление цифры в конкретную битовую маску для регистров.
static uint8_t flipSegments180(uint8_t code) {
uint8_t result = 0;
// Копируем биты с новыми позициями
result |= ((code >> 0) & 1) << 6; // a -> d (бит0 -> бит2)
result |= ((code >> 1) & 1) << 5; // b -> e (бит1 -> бит5)
result |= ((code >> 2) & 1) << 4; // c -> f (бит2 -> бит0)
result |= ((code >> 3) & 1) << 3; // d -> a (бит3 -> бит3)
result |= ((code >> 4) & 1) << 2; // e -> b (бит4 -> бит6)
result |= ((code >> 5) & 1) << 1; // f -> c (бит5 -> бит1)
result |= ((code >> 6) & 1) << 0; // g -> g (бит6 -> бит4)
result |= ((code >> 7) & 1) << 7; // dp -> dp (бит7 -> бит7)
return result;
}
Попытка передать нейросети реализацию алгоритма динамической индикации оказалась лишь частично успешной. Общая архитектура цикла обновления была предложена корректно, однако временные задержки, частота сканирования строк и устранение мерцания потребовали ручной доработки. Полная отладка нижней платы заняла около четырёх часов активной работы с тестовыми шаблонами и измерительным оборудованием.
Верхняя плата, отображающая месяц, день недели и дополнительные индикаторы состояния, оказалась ещё более сложной. Экспериментально определить схему подключения без демонтажа было невозможно. Пришлось разобрать плату, выполнить прозвонку дорожек мультиметром, использовать подсветку для анализа слоёв и фактически восстановить принципиальную схему подключения светодиодов к регистраторам 74HC595. После этого была составлена подробная таблица соответствия битов конкретным индикаторам.


Алгоритм динамической индикации для верхней платы также был реализован вручную. Нейросеть не смогла корректно интерпретировать неполное и неоднозначное описание аппаратной конфигурации, что ещё раз подчеркнуло ограниченность ИИ в задачах, где отсутствует формализованная модель.
В результате система получила полностью новое программное ядро. Реализовано управление всеми оригинальными платами индикации, динамическое обновление сегментов и светодиодов, синхронизация времени через Wi-Fi, веб-интерфейс для редактирования расписания молитв и возможность корректировки календаря хиджры. Фактически устройство сохранило внешний вид и корпус, но стало современным сетевым IoT-решением с гибкой настройкой.

Этот проект наглядно показал, что даже полностью устаревшее и неподдерживаемое оборудование может получить вторую жизнь благодаря современным микроконтроллерам и открытым инструментам разработки. Искусственный интеллект в данном случае выступил как мощный ускоритель создания базовой функциональности, но не заменил инженерное мышление, особенно в задачах аппаратной интеграции, анализа схем и низкоуровневой отладки. Исходный код проекта опубликован в открытом доступе на GitHub и может быть использован всеми владельцами аналогичных часов для их модернизации и дальнейшего развития идеи.
