Даташит на 600 страниц за 15 минут: промты, с которыми Arduino, ESP32 и STM32 перестают быть чёрными ящиками

Даташит на 600 страниц за 15 минут: промты, с которыми Arduino, ESP32 и STM32 перестают быть чёрными ящиками

Каждый embedded-разработчик знает это чувство: ты открываешь reference manual на 600+ страниц, ищешь нужный бит в регистре, пролистываешь раздел про I2C, находишь таблицу таймингов — и понимаешь, что прошло два часа, а ты ещё не написал ни строчки кода. По данным Stack Overflow Developer Survey, C и C++ остаются среди самых используемых языков именно в embedded-сегменте, но при этом порог входа в работу с «железом» держится высоким: спецификации STM32 Reference Manual (RM0008 для F1, RM0433 для H7) занимают сотни страниц, а ESP-IDF Documentation обновляется с каждой минорной версией SDK.

Хорошая новость: LLM научились быть неплохим «вторым инженером» — не тем, кто за тебя всё сделает, а тем, кто быстро объяснит, что означает поле BRR в регистре USART, почему DMA не стартует и как уложить ESP32 в deep sleep с пробуждением по таймеру. Ниже — подборка конкретных промтов, которые я и коллеги реально используем в работе с Arduino, ESP32 и STM32. Каждый промт — готов к копипасту, с пояснением задачи и примером.

1. Разбор даташита: превращаем PDF в шпаргалку по регистрам

Задача: быстро понять назначение регистра и его битовых полей, не читая весь раздел.

Промт:

Ты — embedded-инженер, специализирующийся на STM32. У меня есть фрагмент Reference Manual (я вставлю его ниже).
Разбери для меня регистр {ИМЯ_РЕГИСТРА} периферии {USART/I2C/SPI/TIM}:
1. Назначение регистра в 1-2 предложениях.
2. Таблица полей: имя бита, смещение, размер, назначение, допустимые значения.
3. Что произойдёт, если я запишу {конкретное значение} — покажи по шагам.
4. Типичные ошибки при работе с этим регистром.
5. Один рабочий пример на C (bare-metal, без HAL).

Данные из RM:
{вставь фрагмент текста из PDF}

Пример использования: для STM32F407 ты вставляешь описание USART_BRR из RM0090 и просишь разобрать формулу USARTDIV = fCK / (16 * baud). Модель объяснит, почему при 42 МГц и 115200 бод значение мантиссы будет 22, а дробная часть — 13, и даст готовый код установки скорости без HAL.

Источник: STM32F407 Reference Manual RM0090, раздел USART (страницы 981–1040 в редакции Rev 19).

2. Генерация кода прошивки под конкретный MCU

Задача: получить рабочий скелет прошивки под свой чип, а не абстрактный пример.

Промт:

Напиши прошивку для {Arduino Uno / ESP32-WROOM-32 / STM32F103C8T6} на {C / C++ / Arduino framework / ESP-IDF}.
Функциональность:
- Каждые 500 мс читать {датчик, например DHT22 / BME280 / ADC-канал}.
- Публиковать результат по {UART / MQTT / Wi-Fi}.
- Мигать светодиодом на пине {номер} с частотой {Гц}.
Ограничения:
- Не использовать блокирующие delay() — только неблокирующий таймер.
- Объясни каждый include и каждую настройку периферии.
- Покажи, как проверить работу без осциллографа.

Пример: для ESP32 модель сгенерирует код с esp_timer для мигания и esp_mqtt_client для публикации — это соответствует официальным примерам из ESP-IDF (examples/protocols/mqtt/tcp).

3. Настройка периферии: UART, I2C, SPI, PWM, ADC

Задача: не гадать, какие пины и таймеры конфликтуют.

Промт:

Я настраиваю {I2C / SPI / UART / PWM / ADC} на {ESP32 / STM32F4 / Arduino Mega}.
Мои требования: {частота, разрешение, скорость, режим}.
Дай:
1. Таблицу доступных пинов с пометкой конфликтов (какие заняты USB, JTAG, flash).
2. Код инициализации.
3. Что произойдёт, если подключить устройство с {другой адрес / другой частотой} — типичные симптомы.
4. Как проверить логическим анализатором.

Пример: для ESP32 при настройке I2C по умолчанию используются GPIO21 (SDA) и GPIO22 (SCL) — это указано в ESP32 Technical Reference Manual и подтверждено в примерах Arduino-ESP32.

4. Дебаг по логам: «почему не работает»

Задача: найти причину зависания или ошибки по выводу Serial Monitor.

Промт:

Прошивка на {MCU} падает / зависает / выдаёт ошибку. Вот лог:
---
{вставь лог полностью}
---
Вот код, который выполняется в момент сбоя:
---
{вставь релевантный фрагмент}
---
Проанализируй:
1. Наиболее вероятная причина (ранжируй 3 гипотезы).
2. Как проверить каждую гипотезу за 5 минут.
3. Что добавить в логирование, чтобы поймать баг в следующий раз.
4. Исправленный фрагмент кода.

Пример: Guru Meditation Error на ESP32 с LoadProhibited чаще всего означает разыменование NULL-указателя — модель подскажет, где искать, и предложит добавить проверку перед обращением к queue handle.

5. Интеграция с MQTT и Home Assistant

Задача: подключить устройство к умному дому с автодискавери.

Промт:

Напиши прошивку для {ESP32 / ESP8266}, которая:
- Подключается к Wi-Fi {SSID} и MQTT-брокеру {адрес}.
- Публикует показания {датчика} в топик homeassistant/sensor/{name}/state.
- Поддерживает MQTT Discovery для Home Assistant (retain, конфиг-топик).
- Умеет принимать команды в топике homeassistant/switch/{name}/set.
Покажи JSON-конфиг для discovery и объясни каждое поле.

Пример: MQTT Discovery в Home Assistant описан в официальной документации (home-assistant.io/docs/mqtt/discovery) — модель должна сгенерировать конфиг, соответствующий этой спецификации, с полями state_topic, unique_id, device_class.

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

Задача: батарейное устройство должно работать месяцами.

Промт:

У меня {ESP32 / STM32L4 / Arduino Pro Mini} с питанием от батареи {тип, ёмкость}.
Текущее потребление — {мА}. Целевое — {мА}.
Что я делаю: {перечисли периферию, частоту, режимы}.
Дай пошаговый план оптимизации:
1. Какие режимы сна доступны и их токи (с указанием источника — datasheet).
2. Что отключить в первую очередь.
3. Перепиши мой loop() в неблокирующий с deep sleep.
4. Оцени ожидаемое время работы от батареи.

Пример: у ESP32 в deep sleep ток порядка 10 мкА (по datasheet Espressif), у STM32L4 в Stop 2 — единицы микроампер. Модель должна ссылаться на эти цифры и не выдумывать.

7. Чтение чужого кода и документации

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

Промт:

Объясни, что делает этот код, как будто я джун в embedded:
---
{вставь код}
---
По шагам:
1. Что происходит при старте (setup / init).
2. Какая периферия задействована.
3. Где потенциальные баги и race conditions.
4. Какие функции можно упростить.

Пример: разбор библиотеки Adafruit_BME280 — модель покажет, что begin() делает soft reset через регистр 0xE0, а readPressure() использует компенсационные коэффициенты из даташита Bosch.

8. Таблица сравнения платформ под задачу

Задача: выбрать MCU под проект.

Промт:

Сравни {Arduino Nano / ESP32 / STM32F103 / RP2040} для задачи: {опиши проект}.
Таблица: цена, ядро, частота, RAM, flash, Wi-Fi/BLE, ADC, потребление в сне, экосистема, сложность старта.
В конце — рекомендация с обоснованием.
Платформа Ядро RAM Wi-Fi Сон Старт
Arduino Nano ATmega328P, 16 МГц 2 КБ нет ~мкА простой
ESP32 Xtensa LX6, 240 МГц 520 КБ да ~10 мкА средний
STM32F103 Cortex-M3, 72 МГц 20 КБ нет единицы мкА высокий
RP2040 Cortex-M0+, 133 МГц 264 КБ нет низкий средний

9. Генерация unit-тестов для прошивки

Задача: тестировать логику без железа.

Промт:

Напиши unit-тесты на {Unity / GoogleTest / PlatformIO} для функций:
{перечисли функции}
Покрой граничные случаи: 0, максимум, переполнение, некорректный ввод.
Покажи, как замокать {ADC / I2C / таймер}.

Пример: для функции пересчёта АЦП в температуру модель сгенерирует тест-кейсы, включая деление на ноль и выход за диапазон.

10. Ревью схемы и поиск проблем

Задача: проверить проект до заказа платы.

Промт:

Вот описание моей схемы (или netlist / список соединений):
{вставь}
MCU: {модель}. Питание: {напряжение}.
Найди:
1. Конфликты пинов (что занято, что перепутано).
2. Проблемы с подтяжками I2C, делителями, питанием.
3. Что проверить мультиметром до включения.

Пример: типичная ошибка — отсутствие pull-up 4.7 кОм на линии I2C. Модель укажет это и предложит номинал.

11. Перевод формул из даташита в код

Задача: не ошибиться в математике таймеров и АЦП.

Промт:

Вот формула из даташита: {формула}.
Переменные: {опиши}.
Напиши функцию на C, которая вычисляет {результат}, с защитой от переполнения и деления на ноль.
Покажи пример вызова и unit-тест.

Пример: расчёт частоты ШИМ для STM32: f_PWM = f_CLK / ((PSC+1)*(ARR+1)) — модель сгенерирует функцию с проверкой диапазонов.

12. Чек-лист перед прошивкой

Задача: не забыть мелочи.

Промт:

Составь чек-лист перед прошивкой {MCU} для проекта {описание}:
- питание и уровни;
- пины и конфликты;
- тактирование и watchdog;
- проверка прошивки;
- что логировать в первом запуске.
Оформи как таблицу с колонками «пункт — как проверить — риск».

Этот промт экономит часы, потому что заставляет модель перечислить типовые грабли: забытый watchdog, неверный уровень 3.3 В вместо 5 В, отсутствие развязки по питанию.

Как использовать эти промты без вреда

LLM не заменяет даташит — она ускоряет навигацию по нему. Правило простое: любое утверждение модели о конкретном регистре, бите или тайминге проверяй по официальному документу (ST RM, Espressif TRM, Microchip datasheet). Промты выше составлены так, чтобы модель сама ссылалась на источник — если она этого не делает, попроси явно: «укажи страницу и раздел». И помни: код, сгенерированный без проверки на реальном железе, — это гипотеза, а не решение. Прошей, залогируй, сними осциллограмму — и только тогда считай задачу закрытой.

← Все статьи

Комментарии

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

Docker и Kubernetes без боли: 12 промтов, которые переводят DevOps с языка документации на человеческий

17 октября 2026

Промты, которые верстают, рефакторят и деплоят: как отдать веб-разработку ИИ, не потеряв контроль

17 октября 2026

TypeScript-промты, которые реально ускоряют full-stack: Next.js, Prisma и tRPC в одном наборе

17 октября 2026

Docker, Kubernetes и Terraform под диктовку: 12 промтов, с которых я начинаю любой инфраструктурный проект

17 октября 2026

Красная команда из одного человека: как я превратил LLM в пентестера, который ловит BOLA до продакшена

17 октября 2026

Arduino, ESP32 и IoT без паяльника: 15 промтов, с которыми прошивка, схема и телеметрия собираются за вечер

17 октября 2026

20 промтов для DevSecOps: ищем дыры в Docker-контейнерах и OWASP-топ-10 без команды Red Team

17 октября 2026

ChatGPT как DevOps-инженер: 12 промтов, которые убирают ночные дежурства

17 октября 2026

ChatGPT как второй пилот в Figma: 15 промтов для дизайн-системы, UX-текстов и handoff без дизайнера

17 октября 2026