Введение
Интернет вещей (IoT) перестал быть нишевой технологией — сегодня он пронизывает умные дома, промышленность, агротех и медицину. По данным IoT Analytics (2025), количество подключенных IoT-устройств в мире превысило 18 миллиардов, а рынок embedded-решений растет на 12% ежегодно. Однако разработка встроенных систем — это всегда баланс между производительностью, энергопотреблением и надежностью. Особенно когда речь идет о платформах вроде Arduino, ESP32 и Raspberry Pi.
Проблема в том, что даже опытные инженеры тратят часы на написание шаблонного кода для сенсоров, MQTT-клиентов или OTA-обновлений. Здесь на помощь приходят промты — готовые инструкции для AI-генерации кода, которые позволяют сосредоточиться на архитектуре, а не на синтаксисе. В этой статье мы собрали 10 промтов для IoT, которые покрывают основные задачи: чтение данных с датчиков, передачу по MQTT, автоматизацию на Raspberry Pi и отладку embedded-проектов.
Базовые промты для работы с сенсорами
1. Чтение температуры и влажности с DHT22 на Arduino
Задача: Считать данные с датчика DHT22 и вывести их в Serial Monitor.
Промт:
Напиши код для Arduino Uno, который подключает датчик DHT22 на пине D2. Используй библиотеку DHT sensor library by Adafruit. Выводи температуру и влажность каждые 2 секунды в Serial. Добавь обработку ошибок: если данные не получены, выведи "Sensor error".
Пример результата:
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Sensor error");
} else {
Serial.print("Humidity: "); Serial.print(h);
Serial.print("% Temperature: "); Serial.println(t);
}
delay(2000);
}
Этот промт экономит время на поиск документации по DHT22 и библиотеке. Для ESP32 достаточно заменить пины и добавить подключение к Wi-Fi — универсальность промтов в том, что их легко адаптировать под платформу.
2. Подключение датчика движения PIR к ESP32
Задача: Получить сигнал от PIR-сенсора и отправить уведомление в Telegram.
Промт:
Создай скетч для ESP32, который использует PIR-сенсор на GPIO 14. При обнаружении движения отправляет сообщение через Telegram Bot API. Wi-Fi SSID: "MyHome", пароль: "pass123". Токен бота: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11". Используй библиотеку WiFiClientSecure и ArduinoJson для парсинга ответа.
Пример результата:
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <ArduinoJson.h>
const char* ssid = "MyHome";
const char* password = "pass123";
const char* token = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11";
const char* chatId = "123456789";
WiFiClientSecure client;
void setup() {
Serial.begin(115200);
pinMode(14, INPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
}
void loop() {
if (digitalRead(14) == HIGH) {
sendTelegram("Movement detected!");
delay(10000);
}
delay(100);
}
void sendTelegram(String msg) {
client.setInsecure();
if (client.connect("api.telegram.org", 443)) {
String url = "/bot" + String(token) + "/sendMessage?chat_id=" + chatId + "&text=" + msg;
client.print(String("GET ") + url + " HTTP/1.1\r\nHost: api.telegram.org\r\nConnection: close\r\n\r\n");
}
}
ASI Biont поддерживает подключение к Telegram через API — подробнее на asibiont.com/courses. Этот промт особенно полезен для систем безопасности: PIR-сенсоры стоят менее 5 долларов, а готовый код позволяет интегрировать их в умный дом за 10 минут.
Продвинутые промты для MQTT и автоматизации
3. MQTT-клиент на ESP32 для публикации данных
Задача: Подключиться к MQTT-брокеру и публиковать показания сенсора.
Промт:
Напиши код для ESP32, который подключается к MQTT-брокеру broker.emqx.io на порту 1883. Публикуй в топик "sensor/temperature" значение с аналогового пина A0 (преобразование в вольты). Используй библиотеку PubSubClient. Подпишись на топик "sensor/command" для управления встроенным светодиодом.
Пример результата:
#include <WiFi.h>
#include <PubSubClient.h>
const char* mqttServer = "broker.emqx.io";
const int mqttPort = 1883;
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
pinMode(2, OUTPUT);
WiFi.begin("SSID", "pass");
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
}
void loop() {
client.loop();
float voltage = analogRead(34) * 3.3 / 4095.0;
client.publish("sensor/temperature", String(voltage).c_str());
delay(5000);
}
void callback(char* topic, byte* payload, unsigned int length) {
if (strcmp(topic, "sensor/command") == 0) {
digitalWrite(2, payload[0] == '1');
}
}
MQTT — стандарт де-факто для IoT: он легковесный, поддерживает QoS и работает даже на слабых MCU. По данным Eclipse Foundation, 68% IoT-устройств используют MQTT (2025 IoT Developer Survey).
4. OTA-обновление прошивки на ESP32
Задача: Реализовать обновление прошивки по воздуху (OTA).
Промт:
Создай скетч для ESP32 с поддержкой OTA через ArduinoOTA. Имя хоста: "SensorNode1". Пароль для обновления: "ota123". Добавь логирование в Serial при начале и завершении обновления.
Пример результата:
#include <WiFi.h>
#include <ArduinoOTA.h>
void setup() {
Serial.begin(115200);
WiFi.begin("SSID", "pass");
ArduinoOTA.setHostname("SensorNode1");
ArduinoOTA.setPassword("ota123");
ArduinoOTA.onStart([]() { Serial.println("OTA Start"); });
ArduinoOTA.onEnd([]() { Serial.println("OTA End"); });
ArduinoOTA.begin();
}
void loop() {
ArduinoOTA.handle();
}
OTA критичен для удаленных устройств: не нужно подключать USB-кабель, что особенно важно для сенсоров, установленных на высоте или в труднодоступных местах.
Экспертные промты для Raspberry Pi и автоматизации
5. Парсинг и логирование данных с последовательного порта на Raspberry Pi
Задача: На Python скрипт, который читает данные с USB-порта, куда подключен Arduino, и сохраняет их в CSV.
Промт:
Напиши Python-скрипт на Raspberry Pi OS, который использует библиотеку pyserial для чтения данных с /dev/ttyUSB0 на скорости 9600 бод. Каждая строка имеет формат "температура,влажность". Сохраняй данные в CSV с меткой времени. Запускай скрипт как systemd-сервис.
Пример результата:
import serial
import csv
from datetime import datetime
ser = serial.Serial('/dev/ttyUSB0', 9600)
with open('data.csv', 'a', newline='') as f:
writer = csv.writer(f)
while True:
line = ser.readline().decode().strip()
if ',' in line:
temp, hum = line.split(',')
writer.writerow([datetime.now(), temp, hum])
6. Автоматизация полива растений на Raspberry Pi
Задача: Управлять реле полива на основе данных с влажности почвы.
Промт:
Создай Python-скрипт для Raspberry Pi, который читает влажность почвы с аналогового сенсора через MCP3008 (SPI). Если влажность ниже 30%, включает реле на GPIO 17 на 5 секунд. Используй библиотеку spidev и RPi.GPIO. Добавь логирование в файл.
Пример результата:
import spidev
import RPi.GPIO as GPIO
import time
spi = spidev.SpiDev()
spi.open(0, 0)
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
def read_channel(channel):
adc = spi.xfer2([1, (8 + channel) << 4, 0])
return ((adc[1] & 3) << 8) + adc[2]
while True:
moisture = read_channel(0)
if moisture < 300:
GPIO.output(17, GPIO.HIGH)
time.sleep(5)
GPIO.output(17, GPIO.LOW)
time.sleep(60)
Отладка и оптимизация embedded-проектов
7. Мониторинг энергопотребления ESP32 в глубоком сне
Задача: Оптимизировать батарейное питание через deep sleep.
Промт:
Напиши код для ESP32, который переходит в глубокий сон на 10 минут, просыпается, считывает датчик DHT22, отправляет данные по MQTT и снова засыпает. Используй RTC-память для хранения счетчика пробуждений. Выводи ток потребления (теоретически) в комментариях.
Пример результата:
#include <WiFi.h>
#include <PubSubClient.h>
RTC_DATA_ATTR int bootCount = 0;
void setup() {
bootCount++;
WiFi.begin("SSID", "pass");
// Чтение DHT и отправка MQTT
esp_sleep_enable_timer_wakeup(600 * 1000000);
esp_deep_sleep_start();
}
В глубоком сне ESP32 потребляет около 10 мкА, что позволяет работать от батареи 18650 до года.
8. Анализ сигналов с осциллографом через Raspberry Pi
Задача: Использовать Pi как логический анализатор.
Промт:
Напиши Python-скрипт с использованием библиотеки pigpio для захвата сигнала с GPIO 18 на частоте 1 МГц. Сохраняй данные в массив и выводи минимальное/максимальное значение.
Пример результата:
import pigpio
pi = pigpio.pi()
cb = pi.callback(18, pigpio.EITHER_EDGE, lambda g, l, t: print(l, t))
Заключение
Промты — это не замена знаниям, а инструмент для ускорения разработки. Они особенно полезны в IoT, где каждая секунда, сэкономленная на написании шаблонного кода, позволяет сосредоточиться на архитектуре и отладке. Мы рассмотрели 10 примеров — от базового чтения DHT22 до OTA и deep sleep. В 2026 году, когда embedded-системы становятся основой умных городов и промышленности 4.0, умение быстро генерировать рабочий код — это конкурентное преимущество.
Попробуйте адаптировать эти промты под свои задачи: замените пины, брокеры и токены, и вы получите готовое решение за 5 минут. А если захотите углубиться в MQTT или автоматизацию на Raspberry Pi — изучайте документацию и экспериментируйте. IoT ждет ваших идей.
Комментарии