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

Ускорение и автоматизация разработки устаревшей прошивки контроллера чистых помещений фармацевтического производства позволили за три недели выстроить полный цикл разработки с нуля: от переноса IDE и покрытия тестами до агентной разработки нового функционала с минимальной регрессией.
Описанный опыт вырос из реальной задачи: объединить две кодовые базы контроллеров, которые управляют вентиляцией, давлением, шлюзами и Modbus-интеграцией (промышленный протокол связи между устройствами) на серийных устройствах для чистых помещений. Прикладная логика была перемешана с обработчиками прерываний, регистрами STM32 (семейство микроконтроллеров), GPIO (порты ввода-вывода), таймерами и I2C (шина связи между микросхемами внутри платы). Код не был покрыт тестами, сборка зависела от Windows и устаревшей IDE Coocox. Процесса работы с git (система контроля версий, позволяющая отслеживать изменения в коде) не существовало.
Что понадобится?
- Segger Embedded Studio или аналогичная кроссплатформенная IDE для STM32, заменяющая устаревшую Coocox
- Git-репозиторий и навык работы с ветками
- ИИ-агент с поддержкой работы в кодовой базе (например, Claude Code, Cursor или аналоги, способные читать и редактировать firmware-проект)
- Стенд с контроллером и Wiren Board (или другой промышленный контроллер для автоматизации тестов по Modbus)
- Метрологический стенд для нагрузочного тестирования
- Канбан-доска для отслеживания задач
- Примерное время: три итерации по одной неделе каждая
Пошаговая инструкция: три итерации за три недели
1. Перенесите проект на актуальную IDE и заведите git
Первый шаг: избавиться от привязки к Windows и устаревшему Coocox. Проект переносится на Segger Embedded Studio. Одновременно создаётся git-репозиторий, формализуется работа в ветках. Без этого любой рефакторинг опасен: нет возможности откатиться.
2. Покройте существующий код тестами без его изменения
Главная цель первого этапа: зафиксировать текущее поведение прошивки. Не рефакторинг, а «фотография» логики, чтобы потом любое изменение можно было проверить автоматически.
Поскольку прикладная логика смешана с аппаратными обработчиками, покрыть всё юнит-тестами невозможно. Используйте несколько типов тестов:
- юнит-тесты для изолируемых модулей бизнес-логики
- интеграционные тесты для связок модулей
- полуавтоматические тесты через веб-интерфейс на физическом стенде
# Пример: запуск тестов на стенде через Wiren Board
# (адаптируйте под свой стенд и протокол)
python3 run_modbus_tests.py --port /dev/ttyUSB0 --baudrate 9600 --report html
3. Подключите ИИ-агента для покрытия тестами
На первом этапе агент не меняет исходный код, а только пишет тесты. Это снижает риск: агент читает «спагетти», генерирует тесты, инженер проверяет их корректность.
# Пример промпта для агента (адаптируйте под свой инструмент)
"Прочитай модуль pid_controller.c. Не меняй код.
Напиши юнит-тесты, которые фиксируют текущее поведение
функций pid_init(), pid_update(), pid_reset().
Используй фреймворк Unity. Мокай HAL-вызовы."
4. Напишите ADR перед каждым изменением
ADR (Architecture Decision Record, запись архитектурного решения) фиксирует, что именно меняется, почему и какие альтернативы рассматривались. Агент помогает составлять ADR: инженер ставит задачу, агент генерирует черновик, инженер корректирует. Это не бюрократия: ADR становится контекстом для самого агента при следующих задачах.
5. Объедините две кодовые базы (вторая итерация)
Агент переносит код из второй прошивки с сохранением логики. Параллельно запускается стенд на Wiren Board для прогона тестов после каждого слияния. Ручное тестирование проводится по чек-листу, который был написан по итогам первого релиза.
6. Добавляйте новый функционал через агента (третья итерация)
С третьей недели агент уже пишет новый код. Процесс работы с ним выглядит так:
- инженер формулирует задачу и пишет ADR совместно с агентом
- агент разрабатывает код и тесты в отдельной ветке
- инженер проводит код-ревью
- автоматические и полуавтоматические тесты на стенде
- агент готовит пул-реквест и документацию
- инженер делает релиз
7. Запустите метрологический стенд и нагрузочное тестирование
На третьей итерации добавляется нагрузочное тестирование хотя бы одного критического сценария: например, реакция PID-регулятора (алгоритм автоматической подстройки, который удерживает нужный параметр, скажем давление, корректируя вентилятор) на рост сопротивления фильтра.
Итоговый цикл разработки
После трёх недель SDLC (Software Development Life Cycle, полный цикл разработки ПО) выглядит так:
- Постановка задачи (бизнес, инженер)
- Написание ADR (инженер совместно с агентом)
- Создание отдельной ветки (инженер)
- Разработка и покрытие тестами (агент)
- Отладка производительности и ошибок на железе (агент и инженер совместно)
- Код-ревью (инженер)
- Предрелизное и регрессионное тестирование (автоматические, ручные и полуавтоматические тесты)
- Подготовка пул-реквеста и документации (агент)
- Релиз (инженер)
На первой итерации агенту передали модуль управления шлюзованием дверей. Промпт (запрос к ИИ-модели): «Прочитай door_logic.c. Не меняй код. Зафиксируй текущее поведение: напиши тесты на все ветвления в функции door_state_machine(). Мокай GPIO и таймеры». Агент сгенерировал 14 тестов. Два из них выявили неочевидное поведение: при одновременном срабатывании двух датчиков состояние автомата не было определено. Баг существовал в прошивке, работающей на серийных устройствах. Без покрытия тестами его нашли бы только при физическом инциденте на производстве.
На третьей итерации агент уже добавлял новый функционал: логику управления УФ-модулем. ADR описывал требования GMP (Good Manufacturing Practice, стандарт надлежащей производственной практики в фармацевтике), агент писал код и тесты, инженер проверял на стенде с реальным контроллером.
Не пишите свой тест-раннер. Автор описываемого проекта сделал собственный генератор отчётов и впоследствии пожалел: агенту приходилось разбираться в нестандартном инструменте вместо того, чтобы работать с общепринятыми фреймворками. Используйте Unity, CppUTest или другой стандартный фреймворк для embedded.
Не давайте агенту править код на первой итерации. Пока нет тестов, любое изменение агентом создаёт неконтролируемый риск регрессии. Сначала тесты, потом правки.
Не игнорируйте отладку на железе. Агент хорошо справляется с логикой, но ошибки I2C-шины, конфликты прерываний и проблемы производительности главного цикла требуют инженера с осциллографом. Агент помогает локализовать проблему по логам, но не заменяет физическую отладку.
Не пропускайте ADR. Без архитектурной записи агент теряет контекст между задачами и начинает предлагать решения, которые противоречат предыдущим. ADR для агента то же, что ТЗ для подрядчика.
Не забывайте про GMP-регуляторику. Для фармацевтического производства каждое изменение прошивки требует документирования. ADR и автоматические тесты как раз закрывают эту потребность, но только если вы ведёте их с первого дня, а не дописываете задним числом.
Что это даёт вам по ролям?
Инженеру-прошивочнику в РФ и СНГ. Если вы работаете с контроллерами STM32 на устаревших IDE, переход на Segger и git занимает один день, а не месяц. Агент берёт на себя рутину покрытия тестами: вы ревьюите, а не пишете 14 однотипных тест-кейсов вручную. Modbus-интеграция и I2C-отладка остаются вашей зоной, но агент ускоряет локализацию ошибок по логам.
Руководителю производства или техдиректору. Три недели от «спагетти без тестов» до работающего SDLC с регрессионным тестированием. Это означает, что новый функционал (например, логика УФ-обеззараживания или новый режим шлюзования) добавляется с контролируемым риском, а не методом «залить и молиться».
Автору Дзена, пишущему про промышленный ИИ. Это конкретный кейс для контента: ИИ-агент не заменяет инженера, а встраивается в цикл как младший разработчик с ограничениями. Такие примеры работают лучше абстрактных обещаний.
По моим наблюдениям, главная ценность этого подхода не в скорости написания кода, а в том, что агент заставляет формализовать процесс. Без ADR вы не можете дать агенту задачу. Без тестов вы не можете проверить результат агента. Без git вы не можете откатить ошибку агента. Получается, что внедрение ИИ-агента в firmware-разработку попутно решает проблемы, которые инженеры откладывали годами: версионирование, тестирование, документирование.
Честная оговорка: описанный опыт работает на проекте с одним инженером и относительно компактной кодовой базой. На больших командах с несколькими контроллерами и разными аппаратными ревизиями сложности масштабирования агентного подхода пока не описаны. Также стоит помнить, что для GMP-производств любой инструмент генерации кода потребует валидации, и регуляторная сторона использования ИИ-агентов в фарме пока не устоялась.
Попробуйте ИИ-инструменты dzen.guru
Если вы пишете о промышленном ИИ, автоматизации производства или embedded-разработке, протестируйте наши инструменты для создания экспертного контента на Дзене.
ПопробоватьТри итерации, три недели, один инженер с агентом. Ускорение и автоматизация разработки устаревшей прошивки контроллера чистых помещений фармацевтического производства здесь не теория, а задокументированный маршрут от хаоса к управляемому циклу. Начните с тестов, не с рефакторинга: зафиксируйте поведение, которое уже работает на серийных устройствах, и только потом давайте агенту править код.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Локальные нейросети без видеокарты: как собрать ИИ-стек на обычном CPU за 0 рублей
Почему это важно Впервые появилось пошаговое русскоязычное руководство, которое позволяет собрать полностью автономный ИИ-стек на обычном процессоре без…

Что такое ИИ-агент на заводе: ТЕХНОНИКОЛЬ назвала 5 барьеров, убивающих пилоты при масштабировании
Почему это важно Впервые крупная российская промышленная компания публично описала, почему ИИ-пилоты гибнут при масштабировании и что конкретно нужно менять в…

Smart Forms Pro: 10 преимуществ инструмента для подготовки отчётности без переделки Excel-шаблонов
Компания Visiology выпустила Smart Forms Pro, веб-систему сбора отчётности с Excel-подобным интерфейсом, которая позволяет перенести годами отлаженные…
Комментарии