Вместо введения
Каждый, кто собирал хоть один IoT-проект, знает: 80% времени уходит не на код, а на отладку, поиск даташитов и вычитки логов. Я сам через это прошёл, пока не начал системно использовать LLM для генерации и анализа кода. Сегодня я делюсь промтами, которые реально работают в 2026 году. Они проверены на Arduino Nano 33 IoT, ESP32-S3 и Raspberry Pi 5.
1. Генерация скелета прошивки для ESP32 с Wi-Fi и MQTT
Промт:
Ты — senior embedded-разработчик. Сгенерируй код для ESP32-S3 на Arduino Core, который:
- Подключается к Wi-Fi (SSID и пароль в отдельных константах)
- Публикует данные с датчика BME280 в MQTT-топик "home/sensor"
- Использует библиотеки Adafruit_BME280 и PubSubClient
- Обрабатывает переподключение при потере Wi-Fi
- Выводит логи в Serial на скорости 115200
Добавь комментарии на русском, объясни каждую функцию.
Что получаем: Готовый скетч, который можно сразу залить. Пример из моего проекта мониторинга теплицы:
#include <WiFi.h>
#include <PubSubClient.h>
#include <Adafruit_BME280.h>
const char* ssid = "Greenhouse";
const char* password = "secret";
const char* mqtt_server = "192.168.1.100";
WiFiClient espClient;
PubSubClient client(espClient);
Adafruit_BME280 bme;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }
client.setServer(mqtt_server, 1883);
bme.begin(0x76);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
float t = bme.readTemperature();
float h = bme.readHumidity();
String payload = String(t) + "," + String(h);
client.publish("home/sensor", payload.c_str());
delay(5000);
}
2. Анализ логов и поиск причины перезагрузки ESP32
Промт:
Вот лог с ESP32 после перезагрузки. Проанализируй стек вызовов и найди причину. Объясни, что означает каждая строка. Предложи исправление.
Лог:
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
PC : 0x400d1a2c PS : 0x00060d30 A0 : 0x800d2b1c A1 : 0x3ffb1f00
...
Результат: Нейросеть указала на разыменование нулевого указателя в задаче FreeRTOS. Я добавил проверку if (ptr != NULL) — перезагрузки прекратились.
3. Оптимизация энергопотребления Raspberry Pi
Промт:
Ты — эксперт по Linux и embedded. Предложи 5 способов снизить энергопотребление Raspberry Pi 5 в режиме сбора данных с датчиков (опрос раз в минуту). Учти, что устройство работает от батареи 5В. Приведи конкретные команды и настройки.
Пример ответа:
- Отключить HDMI: /usr/bin/tvservice -o (для Raspberry Pi 4 и старше)
- Установить dtoverlay=disable-wifi в /boot/config.txt
- Использовать cpufreq-set -g powersave
- Заменить SD-карту на SSD для снижения потребления
- Настроить rtcwake для периодического пробуждения
4. Генерация кода для работы с датчиком без библиотеки
Промт:
Напиши код для Arduino Uno для чтения данных с датчика DHT22 без использования библиотеки DHT. Используй прямой доступ к регистрам и тайминги. Объясни каждый шаг.
Зачем: Иногда библиотеки конфликтуют или занимают много памяти. Нейросеть сгенерировала компактный код, который работал стабильнее стандартной библиотеки.
5. Перевод схемы подключения в код
Промт:
У меня есть схема подключения: Arduino Nano, LCD 1602 (I2C), кнопка на пине 2, светодиод на пине 13. Напиши скетч, который выводит на LCD "Hello, IoT!" и при нажатии кнопки мигает светодиодом. Используй библиотеки LiquidCrystal_I2C и Bounce2.
Результат: Готовый код, который я использовал в учебном проекте для студентов.
6. Поиск ошибок в существующем коде
Промт:
Проверь этот код для ESP32 на предмет утечек памяти и состояний гонки. Объясни, как исправить.
[вставить код]
Пример: Нейросеть нашла, что я не удалял объект WiFiClient после использования, что приводило к утечке. Добавил delete client;.
7. Генерация документации для проекта
Промт:
Создай README.md для проекта на Raspberry Pi, который собирает данные с датчиков и отправляет в InfluxDB. Включи: описание, схему подключения, список зависимостей, инструкцию по запуску.
Польза: Экономит час на оформление.
8. Конвертация кода с Arduino на ESP-IDF
Промт:
Перепиши этот скетч Arduino для ESP32 на ESP-IDF (версия 5.1). Сохрани функциональность: чтение температуры с DS18B20 и отправка по MQTT. Используй esp_mqtt_client.
Сложность: Требует понимания обоих фреймворков, но нейросеть справляется, если дать ей примеры.
9. Подбор компонентов для проекта
Промт:
Мне нужно собрать метеостанцию на ESP32 с датчиками температуры, влажности, давления и освещённости. Предложи конкретные модели датчиков, которые работают по I2C, доступны на AliExpress и имеют библиотеки для Arduino. Учти бюджет до 2000 рублей.
Результат: Список: BME280, BH1750, DS18B20 (не I2C, но распространён). Нейросеть учла совместимость.
10. Написание unit-тестов для embedded-кода
Промт:
Напиши unit-тесты на C++ с использованием Unity для функции calculateChecksum, которая принимает массив байт и возвращает CRC16. Покажи, как запустить тесты на хосте.
Зачем: Позволяет тестировать логику без заливки на устройство.
11. Оптимизация использования памяти на Arduino
Промт:
Мой скетч для Arduino Uno занимает 85% флеша и 70% ОЗУ. Предложи способы уменьшить потребление памяти: замена типов, использование PROGMEM, отказ от String. Приведи примеры.
Пример: Замена String на char[] сэкономила 10% ОЗУ.
12. Создание скрипта для автоматической прошивки
Промт:
Напиши bash-скрипт для прошивки ESP32 через esptool.py, который принимает путь к .bin файлу и COM-порт. Добавь проверку успешности и вывод сообщения.
Код:
#!/bin/bash
esptool.py --chip esp32 --port $2 --baud 921600 write_flash 0x10000 $1
if [ $? -eq 0 ]; then echo "Прошивка успешна"; else echo "Ошибка"; fi
Заключение
Эти промты — не волшебная таблетка, но они реально ускоряют разработку. Главное — давать нейросети контекст: модель платы, версии библиотек, цель. Если хотите глубже изучить embedded-разработку с AI, загляните на asibiont.com — там есть практические курсы по IoT и робототехнике. Пробуйте, адаптируйте промты под свои задачи и делитесь результатами.
Комментарии