Промты для Arduino, ESP32 и Raspberry Pi: как собрать умный дом, автополив и робота без инженерного образования
Ещё пять лет назад, чтобы собрать автополив или управлять светом через телефон, нужно было месяцами изучать схемотехнику, даташиты и язык C++ для микроконтроллеров. Сегодня достаточно правильно сформулировать запрос к LLM — и вы получите рабочий скетч для Arduino, прошивку MicroPython для ESP32 или systemd-сервис для Raspberry Pi. Но есть нюанс: нейросети уверенно генерируют код, который выглядит правильно и при этом не работает — путают пины, используют несуществующие библиотеки, забывают про подтягивающие резисторы.
Эта подборка — практическая шпаргалка промтов, которые я собрал за годы работы с embedded-системами. Каждый промт проверен на реальных проектах: от датчика влажности почвы до MQTT-шлюза для Home Assistant. Важно понимать: AI не заменит мультиметр и осциллограф, но сократит время от идеи до работающего прототипа в разы.
Ниже — 15 промтов с пояснениями, примерами и кодом. Копируйте, адаптируйте под свои задачи и проверяйте на железе — только так рождается надёжная прошивка.
1. Генерация каркаса скетча с проверкой пинов
Задача: Быстро получить структуру скетча с корректными пинами и объявлением всех зависимостей.
Промт:
Ты — senior embedded-разработчик. Сгенерируй скетч для [Arduino Uno / ESP32 / Raspberry Pi Pico] на C++ (Arduino framework), который [задача: читает DHT22 и выводит в Serial].
Требования:
- Укажи точные номера GPIO для [платформа].
- Используй только библиотеки из официального менеджера библиотек Arduino.
- Добавь проверку на ошибки датчика.
- Прокомментируй каждую секцию.
- Предупреди о несовместимости пинов (например, GPIO 34-39 только вход на ESP32).
Пример использования: для ESP32 с DHT22 на GPIO 4 и OLED SSD1306 на I2C (SDA=21, SCL=22) промт сгенерирует корректный код с #include <DHT.h> и #include <Adafruit_SSD1306.h>. Проверьте, что AI не назначил DHT22 на GPIO 34 — он input-only.
2. Промт для отладки "не работает, хотя код правильный"
Задача: Диагностика типичных проблем с железом.
Промт:
Скетч для [ESP32] компилируется, но [датчик не отвечает / плата перезагружается / Wi-Fi не подключается].
Вот мой код: [вставить код].
Составь чек-лист диагностики из 7 пунктов: питание, пины, библиотеки, логи, тайминги, перегрев, помехи.
Для каждого пункта — конкретная команда или действие.
Пример: ESP32 перезагружается при подключении Wi-Fi. AI предложит проверить блок питания (пиковый ток до 500 мА), добавить конденсатор 470 мкФ, отключить deep sleep. Реальный кейс: проблема была в USB-кабеле с высоким сопротивлением.
3. Промт для генерации MicroPython-прошивки для Raspberry Pi Pico W
Задача: Быстрый старт с MicroPython без изучения синтаксиса.
Промт:
Напиши код на MicroPython для Raspberry Pi Pico W. Задача: [подключаться к Wi-Fi, читать температуру с DS18B20, публиковать в MQTT-топик].
Требования:
- Используй библиотеки: network, onewire, ds18x20, umqtt.simple.
- Добавь обработку исключений и переподключение.
- Учти, что Pico W использует chip ID для уникального client_id.
- Приведи команды для загрузки файла через mpremote.
Пример: для автополива на Pico W AI сгенерирует код с umqtt.simple.MQTTClient, топиком garden/soil и retain-флагом. Проверьте, что библиотека umqtt.simple установлена через mip.
4. Промт для работы с Home Assistant через MQTT Discovery
Задача: Автоматическое создание сущностей в Home Assistant без ручного редактирования configuration.yaml.
Промт:
Сгенерируй JSON-конфигурацию для MQTT Discovery Home Assistant для [устройство: датчик влажности почвы на ESP32].
Топики: homeassistant/sensor/garden_soil/config.
Поля: name, state_topic, unit_of_measurement, device_class, unique_id, device (identifiers, name, manufacturer).
Покажи, как отправить этот JSON из скетча ESP32 с PubSubClient.
Пример: правильный JSON включает "device_class": "moisture", "unit_of_measurement": "%". AI часто забывает device.identifiers — проверьте, иначе устройство не сгруппируется.
5. Промт для калибровки аналоговых датчиков
Задача: Преобразование сырых значений ADC в физические величины.
Промт:
У меня аналоговый датчик [влажности почвы / освещённости] на ESP32. ADC выдаёт 0-4095.
Напиши функцию калибровки: собери 10 замеров в сухом и влажном состоянии, усредни, построй линейную интерполяцию.
Учти нелинейность ADC ESP32 (esp_adc_cal). Приведи код с map() и constrain().
Пример: для capacitive soil moisture sensor v1.2 AI предложит калибровку dry=2800, wet=1200 и формулу moisture = map(raw, dry, wet, 0, 100). Проверьте на реальном грунте.
6. Промт для оптимизации энергопотребления
Задача: Устройство на батарейках должно работать месяцами.
Промт:
Мой ESP32 работает от 18650 и разряжается за 3 дня. Задача: читать датчик раз в 10 минут и отправлять по MQTT.
Предложи оптимизацию: deep sleep, отключение Wi-Fi, снижение частоты CPU, выбор LDO.
Напиши скетч с deep sleep и пробуждением по таймеру. Укажи ожидаемое потребление в мА и мкА.
Пример: AI предложит esp_sleep_enable_timer_wakeup(600 * 1000000), отключение Wi-Fi перед сном. Реальное потребление падает с 80 мА до 10 мкА в сне — батарея живёт год.
7. Промт для отладки I2C-шины
Задача: Найти устройство на шине и исправить конфликты адресов.
Промт:
У меня ESP32 и несколько I2C устройств: [BME280, LCD1602, MPU6050]. Одно не определяется.
Напиши скетч-сканер I2C для ESP32 (Wire.begin(21,22)).
Объясни, как изменить адрес BME280 через SDO/CSB.
Приведи таблицу типовых адресов для этих датчиков.
Пример: сканер покажет адреса 0x76 (BME280), 0x27 (LCD), 0x68 (MPU6050). Если BME280 не виден — проверьте подтяжку SDA/SCL к 3.3 В.
8. Промт для написания systemd-сервиса на Raspberry Pi
Задача: Автозапуск Python-скрипта при загрузке.
Промт:
Напиши unit-файл systemd для Python-скрипта /home/pi/garden.py на Raspberry Pi.
Требования: автозапуск после сети, перезапуск при падении, логи в journalctl.
Покажи команды: sudo systemctl enable, start, status.
Учти, что скрипт использует GPIO и требует прав root или группы gpio.
Пример: unit-файл с Restart=always, RestartSec=10, User=pi. Не забудьте chmod +x и путь к python3 в venv.
9. Промт для генерации кода робота на Arduino
Задача: Управление шасси с драйвером L298N.
Промт:
Сгенерируй скетч для Arduino Uno: робот на 4 колёсах, драйвер L298N, управление по Bluetooth HC-05.
Команды: вперёд, назад, влево, вправо, стоп.
Используй SoftwareSerial (RX=10, TX=11).
Добавь плавный разгон через analogWrite.
Приведи схему подключения пинов.
Пример: AI выдаст analogWrite(ENA, 200) для скорости 80%. Проверьте, что ENA/ENB подключены к PWM-пинам (3,5,6,9,10,11 на Uno).
10. Промт для парсинга данных с датчиков в JSON
Задача: Единый формат для отправки на сервер.
Промт:
Напиши функцию на C++ для ESP32, которая собирает данные с [DHT22, BH1750, soil moisture] в JSON.
Используй ArduinoJson v7.
Формат: {"temp": 23.5, "hum": 60, "lux": 300, "soil": 45}.
Покажи сериализацию и отправку через HTTP POST на сервер.
Пример: код с StaticJsonDocument<200>, serializeJson(doc, Serial). Для v7 используйте JsonDocument без размера.
11. Промт для настройки OTA-обновлений
Задача: Прошивать ESP32 по Wi-Fi без проводов.
Промт:
Настрой OTA-обновление для ESP32 через ArduinoOTA.
Покажи базовый скетч с hostname, паролем и обработчиками.
Объясни, как залить прошивку через PlatformIO и Arduino IDE.
Учти, что OTA требует 2x flash: раздел OTA должен быть в partition table.
Пример: ArduinoOTA.begin() в setup, ArduinoOTA.handle() в loop. В PlatformIO выберите upload_protocol = espota.
12. Промт для создания веб-интерфейса на ESP32
Задача: Локальная панель управления без облака.
Промт:
Сгенерируй скетч ESP32 с WebServer: HTML-страница с кнопками вкл/выкл реле и слайдером яркости LED.
Используй ESPAsyncWebServer и LittleFS.
Покажи, как хранить HTML в PROGMEM или SPIFFS.
Добавь AJAX-запросы без перезагрузки страницы.
Пример: AI создаст index.html с fetch('/led?state=1'). Проверьте, что async-библиотеки не конфликтуют с Wi-Fi.
13. Промт для интеграции с Telegram-ботом
Задача: Уведомления и управление через мессенджер.
Промт:
Напиши скетч ESP32, который отправляет сообщение в Telegram при срабатывании датчика движения.
Используй UniversalTelegramBot и WiFiClientSecure.
Покажи регистрацию бота у @BotFather, получение chat_id.
Добавь обработку команд /status и /led.
Пример: bot.sendMessage(chat_id, "Motion detected!", ""). Учтите, что TLS требует времени — не блокируйте loop.
14. Промт для написания тестов на железе
Задача: Проверить логику без реального подключения.
Промт:
Напиши unit-тесты на PlatformIO для функции расчёта влажности почвы.
Используй Unity framework.
Покажи, как мокать analogRead() через test_setup.
Приведи пример запуска: pio test -e native.
Пример: тесты с TEST_ASSERT_EQUAL(50, calculateMoisture(2000)). Native-окружение позволяет тестировать без платы.
15. Промт для генерации документации проекта
Задача: README для GitHub с схемой подключения.
Промт:
Сгенерируй README.md для проекта [умный автополив на ESP32].
Включи: описание, список компонентов, схему подключения (в виде таблицы), инструкцию по прошивке, MQTT-топики, лицензию MIT.
Формат — Markdown. Добавь бейджи PlatformIO и лицензии.
Пример: таблица с колонками «Компонент», «Пин ESP32», «Примечание». AI часто путает пины — сверяйтесь с даташитом.
Заключение
Промты — это не волшебная таблетка, а ускоритель. Они экономят часы на написании boilerplate-кода, но требуют проверки на железе. Начните с простого: сгенерируйте скетч для мигания LED, затем добавьте датчик, потом MQTT. Каждый шаг проверяйте мультиметром и Serial-логом.
Помните: AI не знает, что ваш блок питания просаживается под нагрузкой, а I2C-шина не подтянута. Но он отлично справляется с рутиной. Используйте промты как черновик, а инженерное чутьё — как финальную проверку. И да, всегда читайте даташиты: даже самый умный промт не заменит официальную документацию производителя.
Комментарии