Введение
Ультразвуковой датчик HC-SR04 — легендарный компонент любого IoT-проекта. Он стоит копейки, измеряет расстояние от 2 см до 4 метров с точностью до 3 мм и используется везде: от парктроников и роботов-пылесосов до систем мониторинга уровня жидкости в резервуарах. Но просто собрать данные — половина дела. Настоящая ценность появляется, когда эти данные попадают в AI-агент, который не только логирует показания, но и прогнозирует тренды, отправляет уведомления в Telegram и автоматически управляет исполнительными механизмами.
В этой статье я покажу, как подключить HC-SR04 к AI-агенту ASI Biont, используя ESP32 и протокол MQTT. Вы узнаете, как AI сам пишет код интеграции, запускает его в облаке и начинает анализировать ваши измерения за считанные секунды. Никаких панелей управления — только диалог в чате.
Что такое HC-SR04 и зачем его подключать к AI?
HC-SR04 — это ультразвуковой дальномер, работающий по принципу эхолокации. Он излучает звуковой импульс частотой 40 кГц и замеряет время, за которое отражённый сигнал возвращается обратно. Расстояние вычисляется по формуле: distance = (time * speed_of_sound) / 2.
Стандартное применение — отслеживание заполнения баков, контроль проходов, измерение уровня воды. Но когда данные уходят в AI, появляются новые возможности:
- Прогнозирование трендов: AI анализирует историю измерений и предсказывает, когда бак опустеет или уровень достигнет критической отметки.
- Автоматические уведомления: при выходе за границы AI отправляет сообщение в Telegram или Slack.
- Управление устройствами: AI может включить насос, если уровень жидкости падает ниже порога, или отправить команду на сервопривод.
Какой способ подключения используем и почему
Для HC-SR04 идеально подходит связка ESP32 + MQTT + ASI Biont. ESP32 — дешёвый Wi-Fi-микроконтроллер, который легко программируется в Arduino IDE. MQTT — лёгкий протокол IoT, идеальный для передачи небольших пакетов данных с датчиков. ASI Biont использует библиотеку paho-mqtt внутри execute_python, чтобы подписываться на топики и публиковать команды.
Почему не COM-порт? HC-SR04 — цифровой датчик, он не выдаёт данные в последовательный порт напрямую. Для чтения нужен микроконтроллер (ESP32, Arduino), который опрашивает датчик и передаёт данные по Wi-Fi. MQTT — самый простой и надёжный способ для такого сценария.
Пошаговый сценарий: мониторинг уровня воды в баке
Допустим, у вас есть бак с водой, и вы хотите знать уровень в реальном времени, получать прогнозы и уведомления, когда вода заканчивается.
Шаг 1. Собираем схему на ESP32
Подключение HC-SR04 к ESP32:
- VCC → 5V (ESP32)
- GND → GND
- TRIG → GPIO5
- ECHO → GPIO18
Шаг 2. Загружаем прошивку на ESP32
В Arduino IDE пишем простой скетч, который отправляет данные по MQTT:
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
const char* mqtt_server = "test.mosquitto.org";
WiFiClient espClient;
PubSubClient client(espClient);
const int trigPin = 5;
const int echoPin = 18;
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) client.connect("ESP32_HCSR04");
client.loop();
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2;
char msg[10];
dtostrf(distance, 1, 2, msg);
client.publish("sensor/water_level", msg);
delay(5000);
}
Шаг 3. Подключаем ASI Biont к MQTT-брокеру
В чате с AI-агентом пишем:
"Подключись к MQTT-брокеру test.mosquitto.org:1883, подпишись на топик sensor/water_level, читай данные с датчика HC-SR04, каждые 10 минут анализируй тренд и, если уровень упадёт ниже 10 см, отправь мне уведомление в Telegram."
AI генерирует код и выполняет его в sandbox-окружении. Вот как выглядит реальный скрипт, который генерирует AI:
import paho.mqtt.client as mqtt
import requests
import json
from collections import deque
# Настройки
BROKER = "test.mosquitto.org"
TOPIC = "sensor/water_level"
TELEGRAM_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "YOUR_CHAT_ID"
window = deque(maxlen=10)
def on_message(client, userdata, msg):
try:
distance = float(msg.payload.decode())
window.append(distance)
if len(window) == window.maxlen:
avg = sum(window) / len(window)
trend = "снижается" if window[-1] < window[0] else "растёт"
alert = ""
if distance < 10:
alert = "⚠️ КРИТИЧЕСКИ НИЗКИЙ УРОВЕНЬ!"
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": alert}
)
print(f"Уровень: {distance:.1f} см
| Среднее: {avg:.1f} см | Тренд: {trend}")
except Exception as e:
print(f"Ошибка: {e}")
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC)
client.loop_forever()
Шаг 4. Получаем результат
AI запускает скрипт и начинает слушать MQTT. В чате появляются логи, а при снижении уровня — приходит сообщение в Telegram. Если нужно изменить порог или добавить команду на включение насоса — просто пишем в чат, AI модифицирует код на лету.
Почему это выгодно?
- AI пишет код за секунды — не нужно разбираться в paho-mqtt или парсинге JSON.
- Любой протокол — MQTT, HTTP, Modbus, SSH — AI поддерживает всё из коробки.
- Без панелей управления — просто опишите задачу в чате.
- Прогнозирование — AI может строить тренды, предсказывать отказы и оптимизировать процессы.
Заключение
HC-SR04 — простой и доступный датчик, но в связке с AI-агентом ASI Biont он превращается в умную систему мониторинга с прогнозами и автоматическим реагированием. Вам не нужно писать код вручную — достаточно описать задачу в чате, и AI сам создаст и запустит интеграцию. Попробуйте прямо сейчас на asibiont.com.
Комментарии