Вступление
Ещё в сентябре я не знал, чем отличается I2C от SPI, а слово «embedded» вызывало панику. Через 30 дней на моём балконе работала умная теплица с автополивом и климат-контролем, а над дачей летал дрон-разведчик, передающий телеметрию в Home Assistant. Секрет — не в гениальности, а в правильных промтах для ChatGPT и Claude. Я использовал их как инженерного напарника: генерировал скетчи, отлаживал шины, настраивал интеграции. В этой подборке — 12 проверенных промтов, которые превращают идею в работающий прототип.
Промт 1: Генерация скетча для ESP32 с датчиком DHT22
Задача: Быстро получить рабочий код для чтения температуры и влажности.
Промт: «Напиши скетч для ESP32 на Arduino IDE. Подключи датчик DHT22 к пину GPIO4. Выводи показания в Serial Monitor каждые 2 секунды. Используй библиотеку DHT sensor library. Добавь обработку ошибок чтения.»
Пример результата:
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() { Serial.begin(115200); dht.begin(); }
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) { Serial.println("Ошибка чтения DHT!"); return; }
Serial.printf("Температура: %.1f°C, Влажность: %.1f%%\n", t, h);
delay(2000);
}
Работает с первого раза, если правильно подключить питание 3.3В.
Промт 2: Отладка I2C-сканера
Задача: Найти адрес подключённого OLED-дисплея.
Промт: «Напиши скетч I2C-сканера для ESP32. Выводи адреса всех найденных устройств в Serial. Объясни, почему устройство может не определяться.»
Результат: Скетч находит адрес 0x3C. Claude добавил пояснение: «Проверьте подтягивающие резисторы 4.7кОм на SDA/SCL». Это спасло меня от часов отладки.
Промт 3: Настройка SPI для модуля RF24
Задача: Организовать беспроводную связь между двумя ESP32.
Промт: «Настрой SPI для модуля NRF24L01 на ESP32. Пины: CE=5, CSN=21, SCK=18, MISO=19, MOSI=23. Напиши код передачи строки и приёма на втором устройстве. Учти особенности библиотеки RF24.»
Пример кода:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(5, 21);
const byte address[6] = "00001";
void setup() { radio.begin(); radio.openWritingPipe(address); radio.setPALevel(RF24_PA_MIN); radio.stopListening(); }
void loop() { const char text[] = "Hello"; radio.write(&text, sizeof(text)); delay(1000); }
Промт 4: Управление сервоприводом через ШИМ
Задача: Поворачивать серву на 180 градусов по команде из Serial.
Промт: «ESP32, сервопривод SG90 на пине GPIO13. Напиши скетч, который принимает угол (0-180) из Serial и плавно поворачивает серву. Используй библиотеку ESP32Servo.»
Результат: Код с плавным изменением угла. Важно: ESP32 требует библиотеку ESP32Servo, а не стандартную Servo.
Промт 5: Интеграция с Home Assistant через MQTT
Задача: Передавать данные теплицы в умный дом.
Промт: «Настрой ESP32 для отправки данных DHT22 в Home Assistant по MQTT. Используй библиотеку PubSubClient. Топик: greenhouse/sensor. Добавь автопереподключение к Wi-Fi и MQTT.»
Пример:
#include <WiFi.h>
#include <PubSubClient.h>
WiFiClient espClient; PubSubClient client(espClient);
void reconnect() { while (!client.connected()) { if (client.connect("ESP32Client")) { client.publish("greenhouse/status", "online"); } else { delay(5000); } } }
void loop() { if (!client.connected()) reconnect(); client.loop(); float t = dht.readTemperature(); client.publish("greenhouse/temp", String(t).c_str()); delay(5000); }
Промт 6: Автополив на реле
Задача: Включать насос при сухости почвы.
Промт: «ESP32, датчик влажности почвы на ADC (GPIO34), реле на GPIO26. Напиши логику: если влажность < 30%, включить насос на 5 секунд, потом выключить. Добавь гистерезис 5%.»
Результат: Рабочий скетч с защитой от дребезга. Датчик требует калибровки — Claude подсказал сделать map() значений.
Промт 7: Сборка дрона-разведчика на ESP32
Задача: Собрать квадрокоптер с телеметрией.
Промт: «Я собираю дрон на ESP32 с MPU6050 и NRF24L01. Напиши скетч для чтения гироскопа и акселерометра, фильтрации Калмана и отправки данных на приёмник. Учти, что дрон будет управляться через PWM.»
Пример: Библиотека MPU6050, фильтр Калмана из примера. Важно: для реального полёта нужен PID-регулятор — я добавил его отдельным промтом.
Промт 8: Отладка ошибки компиляции
Задача: Исправить «undefined reference to Wire.begin».
Промт: «При компиляции скетча для ESP32 ошибка: undefined reference to Wire.begin. Как исправить?»
Результат: Claude объяснил, что нужно добавить #include <Wire.h> и выбрать правильную плату в Arduino IDE. Проблема решена за минуту.
Промт 9: Настройка Home Assistant для ESPHome
Задача: Интегрировать ESP32 в Home Assistant без программирования.
Промт: «Напиши YAML-конфиг для ESPHome, который читает DHT22 и управляет реле. Добавь в Home Assistant через интеграцию ESPHome.»
Пример YAML:
esp32:
board: nodemcu-32s
sensor:
- platform: dht
pin: GPIO4
temperature:
name: "Теплица Температура"
humidity:
name: "Теплица Влажность"
switch:
- platform: gpio
pin: GPIO26
name: "Насос"
Промт 10: Калибровка датчика влажности почвы
Задача: Получить точные проценты влажности.
Промт: «Датчик влажности почвы выдаёт 4095 в сухом воздухе и 1200 в воде. Напиши функцию для перевода в проценты с калибровкой.»
Результат: Функция map(value, 4095, 1200, 0, 100). Работает точно.
Промт 11: Управление дроном через Wi-Fi
Задача: Заменить NRF24L01 на Wi-Fi для управления с телефона.
Промт: «Переделай управление дроном на ESP32 с NRF24L01 на Wi-Fi. Создай веб-сервер, который принимает команды по HTTP и управляет моторами через PWM.»
Пример: Код с WebServer, обработка GET-запросов /forward, /back. Работает, но задержка выше, чем у радио.
Промт 12: Оптимизация энергопотребления
Задача: Продлить жизнь батареи теплицы.
Промт: «ESP32 в теплице работает от батареи. Как снизить энергопотребление? Напиши скетч с deep sleep, пробуждением по таймеру и отправкой данных раз в 10 минут.»
Результат: Использование esp_deep_sleep_start() и RTC-таймера. Потребление упало с 80 мА до 10 мкА в спящем режиме.
Заключение
Эти 12 промтов — мой рабочий инструмент. Они не заменяют инженера, но позволяют новичку пройти путь от идеи до прототипа за месяц. Главное — формулировать задачу чётко и проверять код на железе. Попробуйте начать с простого: сгенерируйте скетч для мигания LED на ESP32, а затем усложняйте. У вас получится!
Комментарии