10 промтов для IoT и Embedded: Arduino, ESP32, Raspberry Pi — готовые решения для прошивок, сенсоров и MQTT

Введение

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). Используйте промпты как стартовую точку, адаптируйте их под свои компоненты и делитесь результатами в сообществе.

← Все статьи

Комментарии