Промты для Embedded Systems и IoT в 2026: как Arduino, ESP32 и Raspberry Pi сокращают путь от идеи до прототипа
В сентябре 2026 года порог входа в embedded-разработку как никогда низкий. Ещё пару лет назад, чтобы поднять Wi-Fi-датчик на ESP32, нужно было перерыть даташиты, форумы и стектрейсы компилятора. Сегодня LLM берут на себя рутину: разбор регистров, конфигурацию периферии, генерацию шаблонного кода. По данным Stack Overflow Developer Survey 2024, более 60% разработчиков уже используют AI-инструменты в работе — и embedded не исключение.
Но есть нюанс: универсальный промт «напиши код для Arduino» даёт мусор. Модель путает GPIO, выдумывает библиотеки и забывает про аппаратные ограничения. Работает только конкретика: платформа, версия SDK, периферия, ограничения по памяти. Ниже — 10 промтов, проверенных на реальных проектах: от мигания светодиодом до MQTT-шлюза на Raspberry Pi.
1. Каркас прошивки под конкретную плату
Задача: быстро получить скелет проекта с правильной структурой, не копаясь в примерах IDE.
Промт:
Ты — embedded-инженер. Сгенерируй каркас прошивки для [ESP32-WROOM-32 / Arduino Uno / Raspberry Pi Pico W] на [Arduino IDE 2.x / ESP-IDF 5.x / MicroPython].
Требования:
- точка входа setup()/loop() или app_main()
- инициализация UART на 115200 бод для логов
- мигание встроенным LED с периодом 1 с через millis(), без delay()
- обработка watchdog
- комментарии на русском, объясняющие каждый блок
Выведи один файл main.c/main.ino и список зависимостей.
Пример: для ESP32 с ESP-IDF модель выдаёт корректный app_main() с gpio_set_direction(), vTaskDelay() и настройкой esp_task_wdt. Для Arduino — вариант на millis() без блокирующего delay(), что критично для многозадачных скетчей.
2. Разбор даташита и регистров
Задача: понять, какие биты в каком регистре включают нужную периферию.
Промт:
Объясни по шагам, как настроить [таймер TIM2 в STM32F103 / I2C на ESP32] через прямую работу с регистрами. Укажи:
1. какие регистры задействованы (название, адрес)
2. какие биты выставить (маска, значение)
3. порядок операций
4. типичные ошибки
Не используй HAL, только CMSIS/ESP-IDF register access.
Пример: для STM32 модель корректно называет RCC_APB1ENR, TIM2_PSC, TIM2_ARR и объясняет формулу частоты. Это экономит часы чтения Reference Manual объёмом 1000+ страниц.
3. Диагностика по логу ошибки компилятора
Задача: расшифровать непонятную ошибку сборки.
Промт:
Я собираю прошивку для [платформа] в [среда]. Получаю ошибку:
[вставить полный текст ошибки]
Контекст: [что делал, какие библиотеки подключены].
Объясни причину простыми словами и дай 2-3 варианта исправления с кодом. Если это проблема версии библиотеки — укажи совместимые версии.
Пример: ошибка undefined reference to Wire.begin на ESP32 решается подключением Wire.h и выбором правильных SDA/SCL пинов — модель подсказывает оба шага.
4. Схема подключения и распиновка
Задача: не сжечь плату и не перепутать пины.
Промт:
Составь таблицу подключения для [ESP32-WROOM-32] и модуля [BME280 / MPU6050 / RC522].
Столбцы: пин модуля, пин платы, назначение, примечание.
Учти: питание 3.3 В, подтягивающие резисторы, пины только для input-only.
Добавь ASCII-схему соединений.
Пример: для BME280 модель напоминает, что GPIO 34–39 на ESP32 — input-only, и предлагает использовать I2C на 21/22. Это спасает от типичной ошибки новичка.
5. Код чтения датчика с фильтрацией
Задача: получить не просто чтение, а рабочий код с шумоподавлением.
Промт:
Напиши код на [C++/MicroPython] для чтения [датчик] по [I2C/SPI/ADC].
Требования:
- скользящее среднее по 10 измерениям
- обработка ошибок шины
- вывод в формате CSV в Serial
- без блокирующих задержек
Покажи пример вывода и объясни, зачем медианный фильтр против выбросов.
Пример: для аналогового датчика на Arduino модель даёт код с analogRead() и кольцевым буфером — готовый к вставке в скетч.
6. MQTT-клиент для IoT-шлюза
Задача: подключить устройство к брокеру и публиковать телеметрию.
Промт:
Сгенерируй код MQTT-клиента для [ESP32] на [Arduino/ESP-IDF] с библиотекой [PubSubClient].
Требования:
- подключение к Wi-Fi с реконнектом
- публикация JSON в топик sensors/[id]/data каждые 5 с
- QoS 1, LWT на топик status
- обработка потери соединения
Покажи формат топиков и пример JSON.
Пример: код корректно использует client.setBufferSize() для больших payload — типичная проблема, о которой новички узнают только по ошибке.
7. Оптимизация по памяти и энергопотреблению
Задача: влезть в 2 КБ RAM или продлить жизнь от батареи.
Промт:
Проанализируй этот код для [ATmega328P / ESP32]:
[вставить код]
Предложи оптимизации:
1. по flash и RAM (типы данных, PROGMEM, строки)
2. по энергопотреблению (sleep-режимы, отключение периферии)
3. по скорости
Для каждого пункта — ожидаемый эффект и изменённый фрагмент.
Пример: замена String на char[] и перенос таблиц в PROGMEM экономит сотни байт — критично для ATmega328P с 2 КБ SRAM.
8. Скрипт на Raspberry Pi для сбора данных
Задача: превратить одноплатник в edge-устройство.
Промт:
Напиши Python-скрипт для Raspberry Pi 5 (Raspberry Pi OS Bookworm).
Задача: читать [DHT22 / DS18B20] каждые 60 с, писать в SQLite, публиковать в MQTT.
Требования: systemd-юнит, логирование, обработка исключений, запуск от пользователя pi.
Выведи скрипт, unit-файл и команды установки.
Пример: модель корректно использует gpiozero и adafruit-circuitpython-dht, а не устаревшие библиотеки — важно для Bookworm с Python 3.11.
9. Ревью кода перед прошивкой
Задача: поймать баги до того, как плата уйдёт в ребут.
Промт:
Проведи ревью прошивки для [платформа]:
[вставить код]
Ищи: гонки в прерываниях, утечки памяти, отсутствие volatile, блокирующие вызовы в ISR, неинициализированные переменные, переполнение буфера.
Для каждой находки — строка, риск, исправление.
Пример: модель часто находит забытый volatile у переменной, меняющейся в ISR — классический баг, который проявляется только под нагрузкой.
10. Документация и README проекта
Задача: оформить прототип так, чтобы его понял коллега или заказчик.
Промт:
Составь README для embedded-проекта на [платформа].
Включи: назначение, список компонентов, схему подключения (таблица), зависимости и версии, команды сборки и прошивки, известные ограничения, пример вывода.
Стиль — сухой технический, на русском.
Пример: готовый README экономит время при передаче проекта и служит основой для будущей документации.
| Промт | Когда применять | Экономия времени |
|---|---|---|
| Каркас прошивки | старт проекта | часы |
| Разбор регистров | low-level работа | дни |
| Диагностика ошибок | сборка падает | минуты вместо часов |
| Схема подключения | монтаж | защита от ошибок |
| Оптимизация | не влезает в память | критично |
Главное правило 2026 года: чем точнее промт описывает платформу, версию SDK и ограничения, тем меньше правок в коде. LLM не заменяет понимание железа — она убирает рутину. Проверяйте сгенерированный код на реальной плате, читайте даташиты по спорным местам и держите прошивки в git. Начните с промта №1 — и через час у вас будет работающий каркас, а не пустой скетч.
Комментарии