Промты для PlatformIO и VS Code: ускоряем прошивку, отладку и энергосбережение STM32, ESP32 и Arduino в IoT-проектах

Введение

Embedded-разработка — это не только код, но и железо, где ошибка может стоить сожжённого микроконтроллера или недель отладки. AI-ассистенты уже умеют разбирать даташиты, генерировать конфигурации периферии и даже подсказывать, почему I2C-шина не работает. Но слепо доверять им нельзя: неверный совет по питанию или таймингам легко превратит плату в кирпич.

В этой подборке — 10 проверенных промтов, которые я использую в работе с STM32, ESP32 и Arduino. Каждый промт содержит контекст, пример запроса и разбор, где ИИ экономит часы, а где ошибётся. Все примеры основаны на реальных сценариях из практики IoT-разработки.

1. Разбор даташита и выжимка по регистрам

Проблема: 1000-страничный PDF с описанием регистров, а нужен только один бит для настройки тактирования.

Промт:
"Ты — эксперт по микроконтроллерам STM32. Вот выдержка из даташита (вставь текст). Объясни, как настроить тактирование от HSE с PLL на 72 МГц для STM32F103. Укажи конкретные регистры, биты и последовательность действий. Приведи пример кода на C."

Пример: Для STM32F103 настройка PLL включает RCC_CFGR. AI выдаёт:
- Включить HSE: RCC_CR |= RCC_CR_HSEON;
- Дождаться HSERDY.
- Настроить PLL: RCC_CFGR

|= (PLLMUL << 18) | (PLLSRC);
- Включить PLL, дождаться готовности, переключить SW.

Где ошибётся: может перепутать биты для разных серий (F1 vs F4). Всегда сверяйтесь с reference manual.

2. Генерация кода инициализации периферии

Проблема: ручное написание кода для I2C, SPI, UART отнимает время.

Промт:
"Сгенерируй код инициализации I2C1 для STM32F401 на частоте 400 кГц, используя HAL. Тактирование — 84 МГц. Выведи функцию MX_I2C1_Init и объясни параметры."

Пример: AI выдаёт структуру с ClockSpeed = 400000, DutyCycle = I2C_DUTYCYCLE_2, OwnAddress1 = 0. И поясняет, что для 400 кГц нужно правильно задать CCR и TRISE.

Где ошибётся: может не учесть, что для разных APB частот формулы отличаются. Проверяйте расчёт вручную.

3. Отладка I2C: почему устройство не отвечает

Проблема: датчик BME280 не определяется по I2C.

Промт:
"У меня STM32 и датчик BME280, I2C не работает. Вот код инициализации и осциллограмма (описание). Что может быть не так? Предложи пошаговую диагностику."

Пример: AI предлагает проверить подтягивающие резисторы (4.7к), адрес устройства (0x76 или 0x77), наличие ACK, тайминги. Часто проблема в отсутствии подтяжки.

Где ошибётся: может советовать неверные адреса. Всегда смотрите даташит.

4. Оптимизация энергопотребления ESP32

Проблема: батарейное устройство на ESP32 быстро разряжается.

Промт:
"ESP32 работает от Li-Ion аккумулятора. Как снизить энергопотребление в deep sleep? Напиши пример кода с пробуждением по таймеру и отключением Wi-Fi. Укажи ожидаемый ток."

Пример: AI предлагает использовать esp_deep_sleep_start() с таймером, отключение Wi-Fi и Bluetooth, понижение частоты. Ток в deep sleep ~10 мкА.

Где ошибётся: может не упомянуть, что некоторые пины подтянуты к питанию, что увеличивает ток. Проверяйте схему.

5. Расчёт делителя напряжения для АЦП

Проблема: нужно измерить напряжение батареи 12В на АЦП STM32 (макс 3.3В).

Промт:
"Рассчитай делитель напряжения для измерения 0-12В на АЦП STM32 с опорным напряжением 3.3В. Сопротивления должны быть стандартными. Учти входное сопротивление АЦП."

Пример: AI предлагает R1=100к, R2=33к, что даёт коэффициент 0.248. Максимальное напряжение на АЦП 2.98В.

Где ошибётся: может не учесть входное сопротивление АЦП (обычно 50к), что исказит показания. Добавьте буферный усилитель.

6. Написание драйвера для SPI-устройства

Проблема: нужно написать драйвер для SPI flash W25Q64.

Промт:
"Напиши драйвер для SPI flash W25Q64 на C для STM32 HAL. Реализуй функции чтения ID, стирания сектора, записи и чтения страницы. Учти тайминги."

Пример: AI выдаёт функции с командами 0x9F (ID), 0x20 (сектор), 0x02 (страница), 0x03 (чтение). Указывает задержки.

Где ошибётся: может перепутать команды для разных чипов. Сверяйтесь с даташитом.

7. Отладка UART: приём мусора

Проблема: по UART приходят неправильные данные.

Промт:
"STM32 принимает данные по UART, но они искажены. Скорость 115200, 8N1. Что проверить? Предложи диагностику."

Пример: AI советует проверить тактирование (HSE vs HSI), точность baud rate, наличие помех, правильность настройки GPIO (AF mode). Часто проблема в неправильной частоте тактирования.

Где ошибётся: может не учесть, что при использовании HSI погрешность больше. Используйте внешний кварц.

8. Генерация кода для работы с FreeRTOS

Проблема: нужно создать задачи для чтения датчиков и отправки данных.

Промт:
"Создай две задачи FreeRTOS для STM32: одна читает датчик по I2C каждые 100 мс, другая отправляет данные по UART. Используй очереди для передачи данных. Приведи код."

Пример: AI создаёт задачи vTaskSensor и vTaskUART, очередь xQueue, семафоры. Указывает приоритеты.

Где ошибётся: может не учесть размер стека для задач. Увеличьте при необходимости.

9. Оптимизация кода Arduino для снижения размера

Проблема: скетч не влезает в память Arduino Uno.

Промт:
"Мой скетч для Arduino Uno занимает 95% памяти. Как оптимизировать? Предложи конкретные шаги: замена библиотек, использование PROGMEM, отказ от String."

Пример: AI советует заменить SoftwareSerial на аппаратный UART, использовать F() макрос для строк, избегать динамической памяти.

Где ошибётся: может предложить несовместимые библиотеки. Проверяйте совместимость.

10. Поиск причины сброса ESP32

Проблема: ESP32 периодически перезагружается.

Промт:
"ESP32 перезагружается каждые несколько минут. Как найти причину? Предложи методы диагностики: чтение причины сброса, логи, проверка питания."

Пример: AI советует вывести esp_reset_reason(), проверить напряжение питания (должно быть 3.3В), добавить конденсатор по питанию.

Где ошибётся: может не упомянуть про броски напряжения при передаче Wi-Fi. Добавьте конденсатор 100 мкФ.

Заключение

AI-ассистенты становятся незаменимыми в embedded-разработке, но требуют критического мышления. Используйте промты как отправную точку, всегда проверяйте код и схемы на реальном железе. Помните: ИИ не заменит осциллограф и мультиметр. Экспериментируйте, но не сжигайте платы! Делитесь своими промтами в комментариях.

← Все статьи

Комментарии

Читайте также

За пределами SOC 2 Type II: дорожная карта соответствия на 2026-2027 годы для SaaS-команд эпохи ИИ

15 октября 2026

AWS Solutions Architect Professional (SAP-C02): стоит ли учиться в 2026 и как это влияет на зарплату

15 октября 2026

Налоговое право РФ: как подготовиться к изменениям 2026 года и освоить новую профессию

15 октября 2026

Как UX-дизайнеру автоматизировать юзабилити-тестирование и документацию Figma с помощью 15 готовых промтов

14 октября 2026

30 промтов для GitLab CI и Helm: автоматизируем деплой, автоскейлинг и ночные инциденты через ChatGPT

14 октября 2026

12 промтов для отладки I2C, SPI и UART на микроконтроллерах: практикум по прошивкам и IoT-протоколам

14 октября 2026

Промты для DevOps: как перестать тушить пожары в Docker и Kubernetes и начать спать по ночам

14 октября 2026

Сырые CSV в инсайты: промты, которые заменяют многочасовой EDA-марафон

14 октября 2026

Навыки обучения и техники запоминания: освойте интервальное повторение, активное припоминание и никогда не забывайте то, что учите

14 октября 2026