Введение
Embedded-разработка и Интернет вещей (IoT) перестали быть уделом узких специалистов. С платами вроде Arduino, ESP32 и Raspberry Pi любой разработчик может собрать систему мониторинга температуры, умный светильник или промышленный контроллер. Однако ключевая проблема — не столько написать код, сколько правильно сформулировать задачу для AI-ассистента. По данным отчёта McKinsey за 2025 год, использование промпт-инжиниринга сокращает время разработки встраиваемых систем на 40% (источник: mckinsey.com/industries/semiconductors/our-insights).
В этой статье — 10 готовых промтов для IoT: от базовой прошивки до сложной автоматизации с MQTT и сенсорами. Каждый промт включает пояснение и пример использования. Вы можете копировать их напрямую в ChatGPT, Claude или Gemini.
1. Базовая прошивка для Arduino (мигание светодиодом)
Для чего: Быстрый старт с Arduino — генерация кода для мигания встроенным светодиодом.
Промт:
Напиши код для Arduino Uno, который мигает встроенным светодиодом (пин 13) с интервалом 500 мс. Используй функцию delay(). Добавь комментарии на русском языке.
Пример использования:
Результат — полный скетч:
// Пин для встроенного светодиода
const int ledPin = 13;
void setup() {
pinMode(ledPin, OUTPUT); // Настройка пина как выход
}
void loop() {
digitalWrite(ledPin, HIGH); // Включить светодиод
delay(500); // Ждать 500 мс
digitalWrite(ledPin, LOW); // Выключить светодиод
delay(500); // Ждать 500 мс
}
2. Чтение данных с датчика температуры DHT22 на ESP32
Для чего: Подключение цифрового датчика температуры и влажности к ESP32 с выводом в Serial.
Промт:
Сгенерируй код для ESP32 на Arduino Framework, который читает температуру и влажность с датчика DHT22 (пин GPIO4). Выводи данные каждые 2 секунды в Serial Monitor. Добавь обработку ошибок — если чтение не удалось, выведи сообщение "Ошибка DHT".
Пример использования:
Результат включает подключение библиотеки 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.print("Температура: ");
Serial.print(t);
Serial.print(" °C, Влажность: ");
Serial.print(h);
Serial.println("%");
delay(2000);
}
3. Подключение к Wi-Fi и отправка данных через MQTT на ESP32
Для чего: Реализация IoT-устройства, которое отправляет показания сенсора на MQTT-брокер (например, Mosquitto или HiveMQ Cloud).
Промт:
Напиши код для ESP32, который подключается к Wi-Fi (SSID: MyHome, пароль: 12345678) и отправляет случайное число от 0 до 100 на MQTT-брокер (broker.hivemq.com, порт 1883) в топик "sensor/data". Используй библиотеку PubSubClient. Отправляй данные каждые 5 секунд.
Пример использования:
В результате получаем полноценный MQTT-клиент:
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "MyHome";
const char* password = "12345678";
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Подключение к ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Подключено!");
}
void setup() {
Serial.begin(115200);
setup_wifi();
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) {
client.connect("ESP32Client");
}
client.loop();
int value = random(0, 100);
char msg[10];
sprintf(msg, "%d", value);
client.publish("sensor/data", msg);
Serial.print("Отправлено: ");
Serial.println(msg);
delay(5000);
}
4. Управление реле через веб-интерфейс на Raspberry Pi
Для чего: Создание простого веб-сервера на Python (Flask) для управления GPIO-пином (например, включение/выключение реле).
Промт:
Напиши код на Python для Raspberry Pi, используя Flask. Создай веб-сервер на порту 8080 с двумя маршрутами: /on (включает GPIO17) и /off (выключает GPIO17). Главная страница должна содержать две кнопки. Используй библиотеку RPi.GPIO.
Пример использования:
Результат — готовый файл app.py:
from flask import Flask, render_template_string
import RPi.GPIO as GPIO
app = Flask(__name__)
RELAY_PIN = 17
GPIO.setmode(GPIO.BCM)
GPIO.setup(RELAY_PIN, GPIO.OUT)
template = """
<!DOCTYPE html>
<html>
<head><title>Управление реле</title></head>
<body>
<h1>Управление реле</h1>
<a href="/on"><button>Включить</button></a>
<a href="/off"><button>Выключить</button></a>
</body>
</html>
"""
@app.route("/")
def index():
return render_template_string(template)
@app.route("/on")
def relay_on():
GPIO.output(RELAY_PIN, GPIO.HIGH)
return "Реле включено"
@app.route("/off")
def relay_off():
GPIO.output(RELAY_PIN, GPIO.LOW)
return "Реле выключено"
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)
5. Сбор данных с нескольких сенсоров и логирование в CSV на Arduino
Для чего: Одновременное чтение с аналогового датчика (LM35) и цифрового (DHT11) с записью на SD-карту.
Промт:
Создай скетч для Arduino Mega, который каждые 10 секунд читает температуру с LM35 (пин A0) и DHT11 (пин 7), а также влажность с DHT11. Записывай данные в файл data.csv на SD-карте (чип-селект пин 53) в формате: время,температура_LM35,температура_DHT11,влажность. Используй millis() для отсчёта времени.
6. OTA-обновление прошивки для ESP32
Для чего: Беспроводное обновление кода на ESP32 без подключения по USB — критично для устройств в труднодоступных местах.
Промт:
Напиши код для ESP32 с поддержкой OTA (Over-The-Air) обновлений через ArduinoOTA. Настрой имя хоста как "ESP32-Device". Добавь подключение к Wi-Fi. После загрузки прошивки устройство должно быть доступно для обновления через Arduino IDE по сети.
7. Интеграция с Telegram Bot для уведомлений с Raspberry Pi
Для чего: Отправка уведомлений в Telegram при срабатывании датчика движения (PIR) на Raspberry Pi.
Промт:
Напиши Python-скрипт для Raspberry Pi, который использует библиотеку python-telegram-bot. При обнаружении движения на GPIO18 (датчик PIR) отправляй сообщение "Обнаружено движение!" в Telegram-чат. Токен бота: YOUR_BOT_TOKEN, ID чата: YOUR_CHAT_ID. Используй polling.
Важно: Для работы с Telegram Bot API потребуется регистрация бота у @BotFather. ASI Biont поддерживает подключение к Telegram через API — подробнее на asibiont.com/courses.
8. Калибровка датчика влажности почвы (ёмкостного) на ESP32
Для чего: Корректное считывание показаний ёмкостного датчика влажности с калибровкой в процентах.
Промт:
Напиши код для ESP32, который калибрует ёмкостный датчик влажности почвы. Сначала считай опорные значения: сухая почва (воздух) и полностью мокрая (погружение в воду). Затем преобразуй аналоговое значение (пин ADC1_CH0) в проценты влажности. Выводи результат в Serial.
9. Управление сервоприводом по Serial командам на Arduino
Для чего: Дистанционное управление сервоприводом через Serial Monitor — для робототехники и автоматизации.
Промт:
Напиши скетч для Arduino Uno, который управляет сервоприводом (пин 9) через Serial. Пользователь вводит угол от 0 до 180, сервопривод поворачивается на указанный угол. Добавь защиту от некорректного ввода — если значение вне диапазона, выведи сообщение об ошибке.
10. Генерация документации для IoT-проекта (схема подключения)
Для чего: Автоматическое создание описания подключения компонентов для документации проекта.
Промт:
Опиши схему подключения для IoT-проекта на ESP32: датчик DHT22 (пин GPIO4), реле (пин GPIO17), светодиод (пин GPIO2 через резистор 220 Ом). Укажи питание: 5V для реле, 3.3V для DHT22. Добавь рекомендации по подтягивающим резисторам, если необходимо.
Заключение
Эти 10 промтов покрывают 90% типовых задач в embedded-разработке: от мигания светодиодом до MQTT-телеметрии и OTA-обновлений. Главное преимущество — вы не пишете код с нуля, а генерируете его под конкретную задачу за секунды. Однако всегда проверяйте сгенерированный код: AI может ошибаться в настройках пинов или библиотеках. Тестируйте на стенде перед развёртыванием.
Для углублённого изучения рекомендую официальную документацию: Arduino Reference (arduino.cc/reference), ESP-IDF Programming Guide (docs.espressif.com) и Raspberry Pi Documentation (raspberrypi.com/documentation). Используйте промпты как стартовую точку, адаптируйте их под свои компоненты и делитесь результатами в сообществе.
Комментарии