Введение: почему ультразвуковой дальномер HC-SR04 — идеальный датчик для AI-интеграции
Датчик расстояния HC-SR04 — один из самых популярных и доступных компонентов в мире IoT. Его цена (около $2) и простота использования делают его стандартом для прототипирования: от роботов-пылесосов до систем парковки. Однако в одиночку этот датчик — просто источник сырых сантиметров. Настоящая ценность раскрывается, когда HC-SR04 подключается к AI-агенту, который может анализировать данные в реальном времени, выявлять аномалии, управлять другими устройствами и логировать события.
ASI Biont — это AI-агент, который подключается к любому устройству через диалог в чате. Вам не нужно писать код интеграции вручную: просто опишите задачу, и AI сам сгенерирует скрипт на Python, используя одну из доступных библиотек (pyserial, paho-mqtt, pymodbus и другие). В этой статье мы разберём конкретный сценарий: подключение HC-SR04 к ASI Biont через Hardware Bridge и MQTT, настройку триггеров для оповещений и автоматизации.
Как HC-SR04 работает и какие данные он выдаёт
HC-SR04 измеряет расстояние от 2 см до 4 метров с точностью около 3 мм. Принцип действия: датчик посылает ультразвуковой импульс (40 кГц) и замеряет время возврата эха. Расстояние вычисляется по формуле: distance = (time * speed_of_sound) / 2. В сухом воздухе при 20°C скорость звука — 343 м/с.
Датчик имеет 4 пина:
- VCC — питание 5V
- GND — земля
- Trig — вход для запуска измерения
- Echo — выход эхо-сигнала (длительность импульса пропорциональна расстоянию)
Микроконтроллер (ESP32, Arduino) отправляет на Trig 10-микросекундный импульс, затем измеряет длительность импульса на Echo. Получаем расстояние в сантиметрах.
Способы подключения HC-SR04 к ASI Biont
ASI Biont поддерживает несколько способов интеграции с датчиками. Для HC-SR04 оптимальны два варианта:
| Способ | Плюсы | Минусы | Когда использовать |
|---|---|---|---|
| Hardware Bridge (COM-порт) | Прямое чтение с микроконтроллера, низкая задержка | Требуется ПК рядом с устройством | Лабораторные стенды, прототипирование |
| MQTT через ESP32 | Удалённый доступ, масштабирование | Нужен Wi-Fi, настройка MQTT-брокера | Умный дом, промышленный IoT |
В этой статье мы рассмотрим оба варианта, но основной фокус — на MQTT, как на более гибком решении для реального использования.
Вариант 1: Hardware Bridge — прямое подключение через COM-порт
Этот способ подходит, если у вас Arduino Uno или ESP32 подключены к ПК через USB. Пользователь запускает bridge.py на своём компьютере, который соединяется с ASI Biont через WebSocket. AI отправляет команды, bridge читает/пишет в COM-порт.
Шаг 1: Подготовка микроконтроллера
Загрузите на Arduino/ESP32 скетч, который отправляет данные с датчика по Serial. Вот пример для Arduino:
const int trigPin = 9;
const int echoPin = 10;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2;
Serial.print("DIST:");
Serial.println(distance);
delay(1000);
}
Шаг 2: Настройка bridge.py
- Скачайте bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge).
- Установите зависимости:
pip install pyserial requests websockets - Запустите bridge с параметрами:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud 9600
На Linux порт будет выглядеть как /dev/ttyUSB0.
Шаг 3: AI-интеграция в чате
Теперь в чате с ASI Biont напишите:
Подключись к COM3 на скорости 9600. Я отправил команду HELP — прочитай ответ и покажи данные с датчика.
AI выполнит:
# AI генерирует этот код и отправляет через industrial_command
industrial_command(
protocol='serial',
command='serial_write_and_read',
data='48454c500a' # HELP + \n в hex
)
В ответ bridge пришлёт список команд. Теперь попросите AI читать данные:
Каждые 5 секунд читай данные с COM3 и логируй их. Если расстояние меньше 30 см — отправь уведомление в Telegram.
AI сгенерирует скрипт для execute_python, который будет циклически отправлять serial_write_and_read команды через industrial_command(), парсить строки DIST:xx.xx и публиковать результаты.
Вариант 2: MQTT — облачная интеграция с ESP32
Этот способ позволяет получать данные с датчика удалённо, без привязки к ПК. ESP32 подключается к Wi-Fi и публикует показания в MQTT-топик. ASI Biont подписывается на этот топик и обрабатывает данные.
Шаг 1: Скетч для ESP32 с MQTT
#include <WiFi.h>
#include <PubSubClient.h>
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
const char* mqtt_server = "broker.hivemq.com";
const char* topic = "home/sensor/distance";
const int trigPin = 5;
const int echoPin = 18;
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) {
client.connect("ESP32Client");
}
client.loop();
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH);
float distance = duration * 0.034 / 2;
// Публикуем в формате JSON
String payload = "{\"distance\":" + String(distance) + "}";
client.publish(topic, payload.c_str());
delay(2000);
}
Шаг 2: Интеграция через execute_python
В чате с ASI Biont напишите:
Подпишись на MQTT-топик "home/sensor/distance" на брокере broker.hivemq.com. Получай данные в формате JSON. Если расстояние меньше 20 см — отправь мне уведомление в Telegram. Логируй все показания в CSV-файл.
AI сгенерирует и выполнит следующий скрипт:
import paho.mqtt.client as mqtt
import json
import csv
from datetime import datetime
LOG_FILE = "/tmp/distance_log.csv"
# Инициализируем CSV с заголовками
with open(LOG_FILE, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(["timestamp", "distance_cm"])
def on_message(client, userdata, msg):
try:
data = json.loads(msg.payload)
distance = data["distance"]
timestamp = datetime.now().isoformat()
# Логируем в CSV
with open(LOG_FILE, 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow([timestamp, distance])
# Проверяем порог
if distance < 20:
# Отправляем уведомление в Telegram
import requests
bot_token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
message = f"⚠️ Опасность! Расстояние: {distance} см"
requests.post(
f"https://api.telegram.org/bot{bot_token}/sendMessage",
json={"chat_id": chat_id, "text": message}
)
print(f"[{timestamp}] Distance: {distance} cm")
except Exception as e:
print(f"Error: {e}")
client = mqtt.Client()
client.on_message = on_message
client.connect("broker.hivemq.com", 1883, 60)
client.subscribe("home/sensor/distance")
client.loop_forever()
Важно: В sandbox ASI Biont этот скрипт будет выполняться до 30 секунд. Для постоянного мониторинга используйте industrial_command с длительным опросом.
Вариант 3: Управление через Modbus/TCP (промышленный сценарий)
Если HC-SR04 интегрирован в промышленный контроллер (например, Siemens S7-1200 с модулем расширения), ASI Biont может читать данные через Modbus TCP. Команда:
industrial_command(
protocol='modbus',
command='read_registers',
ip='192.168.1.100',
port=502,
unit_id=1,
address=0,
count=2
)
AI получит значение в регистрах и преобразует его в расстояние.
Сценарии автоматизации с HC-SR04 и ASI Biont
Вот 5 практических сценариев, которые можно реализовать за минуты в чате:
| Сценарий | Действие AI | Результат |
|---|---|---|
| Охрана периметра | При distance < 50 см → отправка Telegram + включение сирены через реле | Мгновенное оповещение о вторжении |
| Умный гараж | При distance < 30 см (машина заехала) → включение света на 5 минут | Автоматическое освещение |
| Мониторинг уровня жидкости | Логирование каждые 10 минут, построение графика в matplotlib | Прогнозирование заполнения бака |
| Робот-уборщик | При distance < 20 см → отправка команды на поворот (MQTT publish) | Объезд препятствий |
| Энергосбережение | Если distance > 200 см (никого нет) 5 минут → выключение кондиционера | Снижение счетов за электричество |
Почему ASI Biont — лучший выбор для HC-SR04
- Нулевой порог входа. Не нужно изучать документацию MQTT или Modbus. Просто опишите задачу словами.
- Гибкость. Подключайте датчик через COM, MQTT, SSH, Modbus — AI сам выберет оптимальный протокол.
- Автоматизация без кода. Триггеры настраиваются в диалоге: «Если расстояние меньше X, сделай Y».
- Логирование и аналитика. AI может вести историю показаний, строить графики, предсказывать тренды.
- Масштабирование. Добавьте 10 датчиков — AI обработает данные со всех, объединит их в единую картину.
Как начать за 5 минут
- Зарегистрируйтесь на asibiont.com.
- В дашборде создайте API-ключ и скачайте bridge.py (если используете COM-порт).
- Подключите HC-SR04 к микроконтроллеру и загрузите скетч.
- Напишите в чат: «Подключись к моему датчику расстояния через MQTT на топик home/sensor/distance. Каждые 5 секунд проверяй расстояние. Если меньше 30 см — отправь мне Telegram».
- AI сделает всё остальное.
Заключение
HC-SR04 — это не просто дешёвый датчик. В связке с AI-агентом ASI Biont он превращается в интеллектуальную систему безопасности, мониторинга и автоматизации. Вам не нужно быть программистом, чтобы настроить сложную логику: достаточно описать задачу на естественном языке. Попробуйте интеграцию на asibiont.com прямо сейчас — и ваш гараж, склад или офис станут умнее.
Комментарии