- BrainTools - https://www.braintools.ru -

Как за 300 рублей и 6 часов получить прошивку уровня синьора?

Новая прошивка варика

Новая прошивка варика

Полгода прошло с первой статьи https://habr.com/ru/articles/969230/ [1] , вариометр летает и сигнализирует о наборе высоты и о потере высоты, пилоты довольны. Код сыроват конечно. EMA фильтр стоит, линейная архитектура стоит, записи высот в полете нет и экспорта нет. Как-то работает. Но можно качественнее сделать. А вот когда лень переписывать с нуля, знакомая херня? Но решился.

Развернул Hermes Agent, закинул на аккаунт DeepSeek4 40 юаней, это 430 рублей, и начал диалог в терминал. Работал в диалоге с консолькой, ну просто магия. Без промптов. “Сделай FSM(конечные автоматы) вместо ифов, добавь зуммер в стиле Браунигер, компенсацию акселерометра по трём осям с учётом гравитации, а не по модулю, трек полёта на флешпамять кольцевым буфером с CRC, WiFi экспорт через вебморду.”

Это теперь основной рабочий инструмент

Это теперь основной рабочий инструмент

Агент сам зашел на старый репо – сделал себе форк на винт, скачал себе среду разработки, все проверил, все скомпилировал, и запушил форк в репозиторий на гитхаб.

И вот началось: ИИ задавал вопросы и вопросы эти не про цвет кнопок. А я испытал экзистенциальный ужас общения со сверхинтелектом, помните чемпиона го с Альфаго когда реакция [2] «это что за ход»? Вот тут то же самое.

Теперь написание программ выглядит так

Теперь написание программ выглядит так

Какую задержку комплементарного фильтра ставить? Ноль целых пять сотых – это быстро и шумно. Восемь секунд гладко, но задержка. Компромисс? Три. CRC16 на запись или CRC32 на блок? На секторе или рекорде? Как посадку определять по скорости изменения высоты или с акселерометром? А если в турбулентности данные с акселерометра это шум? Ты подумай, акселерометр в болтанке выдаёт мусор.

Шесть часов. Код не писался, принимались решения, а ИИ реализовывал. За ночь сделано то, что пилилось бы три недели. А агент сожрал через дипсика токенов на 300 рублей.

Код вырос до почти 2000 строк. Фильтр стал комплементарным с гравитацией и барометром. Архитектура стала конечным автоматом. Появился звук по просьбам пилотов, трекер в кольцевой буфер с CRC16 на каждый маркер высоты, WiFi экспорт через точку доступа с HTTP сервером отдающим CSV. Чувствительность от нуля до девяти, ватчдог на два ядра, самопроверка.

Я отдал втихаря код опытному инженеру на ревью. Со словами – просто посмотри. Вердикт -Senior Embedded Avionics рейтинг 8.75 из 10, немного до идеала не дотянул, есть что поправить, пусть еще недельку поковыряет. Не ардуинщик, а профи. Дисциплина кода, ноль статиков, constexpr. Защита WDT, CRC, self test, умный сон [3]. Зоны роста есть, пять I2C без проверки, документация отстаёт, гонка при старте. Но сам факт – senior выдаёт 100-200 строк в день. Тут 2000 за 6 часов. А автор в роли архитектора проектов написал ноль строк.

З0 юаней купили три недели жизни. Остаётся непонятно, как к этому относиться. С одной стороны крутой продукт за копейки. С другой экспертиза кодера уровня синьора теперь стоит 300 рублей и 6 часов. Экспертиза архитектора дорогая. Но надолго ли? Ответ очевиден, признавать никто не хочет.

А это на скрине затраты на токены – прожорливый агент, однако, 300 млн токенов потратил. Можете прикинуть, что будет по деньгам в других моделях.

Токены новая валюта. Затраты токенов на написание кода

Токены новая валюта. Затраты токенов на написание кода

Отличия от родительского проекта:

Область

VibroVario (оригинал)

VibroVarioAuto v1.6 (форк)

Версия

1.1 (EMA filter)

1.6 (FSM + трекер + WiFi)

Строк кода

~549

~2000

Звук

Только вибро

Вибро + баззер Brauniger-style

Фильтр

EMA (простое сглаживание высоты)

Комплементарный: gravity-vector из акселерометра + барo

Архитектура

Линейный код

Конечный автомат (6 состояний: CLOCK, SETTINGS, CALIBRATING, RUNNING, STOPPED, WEB_EXPORT)

Диспетчер

if (state == X) размазан по коду

switch(fsm.state) — табличный, entry/exit actions

Скрытые состояния

static переменные в loop() и varioTask

Все состояния в struct VarioFsm — ноль static locals

Кнопки

BACK/SELECT/RIGHT (GPIO 26/35/4)

UP/OK/DOWN (GPIO 25/4/35) — любая будит

Пробуждение

Только UP (GPIO 25)

UP, OK, DOWN — любая кнопка

Настройки

Нет

Экран Settings: Buzzer ON/OFF, Vibro ON/OFF, время, высота места

Настройки через web

Нет

/settings — установка часов и высоты через браузер

Самодиагностика

Нет

SELF-TEST при пробуждении (кнопки, датчики, батарея)

Обнаружение отказа BMP

Нет — тихо замирает

SENSOR FAIL на экране полёта

Акселерометр

Проверка магнитуды

Chip ID верификация (0x11), fallback при отказе

Управление задачей

vTaskDelete() в любой момент

vfsm.running = false + задержка — безопасное завершение I2C

init дисплея

Всегда полный

Пропускается при RTC alarm wake (экономия 200 мс)

Сон [4]

Фиксированный (всегда 60 с или 24ч)

Умный: счётчик motionTime, 15 мин без движения → 24ч

Сторожевой таймер

Нет

WDT 10 сек на обоих ядрах — защита от зависания I2C

Запись трека

Нет

Кольцевой буфер на flash 1.5MB: номер полёта, время, высота (1 Гц)

Экспорт трека

Нет

WiFi AP + HTTP-сервер: CSV всех/одного полёта, таймаут 15 мин

Конфиги

#define

constexpr (типобезопасно)

Комментарии

Русские

Английские (100%)

Чувствительность

Фиксированная

Настраиваемая 0-9 (комплементарный фильтр)

Трекер

Нет

Кольцевой буфер с датой/временем/высотой в каждой записи

Новый форк проекта целиком сделан агентом, ни одной команды на срр не было введено, только наш православный и могучий, с редкими вставками англицизмов ссылка на работу агента: https://github.com/advogr2022-max/VibroVario [5]

P.S. Пост не реклама, все за свои кровные. По коду не увидел смысла разбивать монолит на большое число модулей, хотя агент предлагал. Проект позиционируется как хоббийный на 1 выходной день, и не должен требовать сложной настройки программной среды даже у школьников. А что у вас из ембедд проектов получилось полностью сбросить на агентов?

Автор: gliderman

Источник [6]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/29749

URLs in this post:

[1] https://habr.com/ru/articles/969230/: https://habr.com/ru/articles/969230/

[2] реакция: http://www.braintools.ru/article/1549

[3] сон: http://www.braintools.ru/article/9809

[4] Сон: http://www.braintools.ru/article/9150

[5] https://github.com/advogr2022-max/VibroVario: https://github.com/advogr2022-max/VibroVario

[6] Источник: https://habr.com/ru/articles/1030666/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1030666

www.BrainTools.ru

Rambler's Top100