Введение
Ультразвуковой дальномер HC-SR04 — один из самых популярных датчиков в DIY-проектах и промышленной автоматизации. Он измеряет расстояние от 2 см до 4 м с точностью до 3 мм, работает от 5 В и стоит менее 200 рублей. Но стандартный сценарий — прочитать данные через Arduino или ESP32 и вывести на LCD-дисплей — давно перестал быть актуальным. Современные задачи требуют, чтобы датчик не просто показывал цифры, а принимал решения: включал насос, когда уровень воды в резервуаре падает, отправлял уведомление в Telegram, если кто-то пересекает периметр, или корректировал маршрут робота.
Именно здесь на помощь приходит AI-агент ASI Biont. Вместо того чтобы писать десятки строк кода вручную, вы просто описываете задачу в чате — и AI сам генерирует интеграцию, подключается к устройству через один из поддерживаемых протоколов и начинает управлять датчиком. В этой статье я покажу, как подключить HC-SR04 к ASI Biont на реальном примере: мониторинг уровня жидкости в резервуаре с автоматическим включением насоса и отправкой алертов.
Почему HC-SR04 стоит подключать к AI-агенту?
Сам по себе HC-SR04 — пассивный датчик. Он выдаёт импульсы, которые микроконтроллер (Arduino, ESP32) должен интерпретировать. Без внешнего интеллекта это просто «сырые» сантиметры. ASI Biont превращает эти данные в действия:
- Анализ трендов: AI может отслеживать скорость изменения уровня, прогнозировать, когда резервуар опустеет, и включать насос заранее.
- Многоканальная логика: один и тот же датчик может одновременно участвовать в охране периметра, управлении освещением и сборе статистики — AI сам решит, какой сценарий приоритетнее.
- Интеграция с внешними сервисами: данные с HC-SR04 можно отправлять в Telegram, Google Sheets, базу данных PostgreSQL или на умную розетку — всё через один диалог.
Какой способ подключения использовать?
HC-SR04 не имеет встроенного интерфейса Ethernet или Wi-Fi. Он подключается к микроконтроллеру (Arduino, ESP32, Raspberry Pi) через GPIO-пины (Trig, Echo, VCC, GND). Поэтому возможны два сценария интеграции с ASI Biont:
- Через Arduino + Hardware Bridge (COM-порт): если вы используете Arduino Uno/Nano, подключённый к ПК по USB. ASI Biont отправляет команды на bridge.py, который читает/пишет в COM-порт через pyserial.
- Через ESP32 + MQTT: если ESP32 подключён к Wi-Fi и публикует данные датчика в MQTT-брокер. ASI Biont подписывается на топик через paho-mqtt.
В этой статье мы выберем второй вариант — он более современный, не требует постоянного подключения ПК и позволяет управлять датчиком удалённо.
Пошаговое руководство: HC-SR04 + ESP32 + MQTT + ASI Biont
Шаг 1. Аппаратная схема
Подключите HC-SR04 к ESP32 по следующей схеме:
| Пин HC-SR04 | Пин ESP32 |
|---|---|
| VCC | 5V |
| GND | GND |
| Trig | GPIO5 |
| Echo | GPIO18 |
Важно: HC-SR04 работает от 5 В, но ESP32 выдаёт 3,3 В на GPIO. Убедитесь, что пин Echo подключён через делитель напряжения (2 резистора: 1 кОм и 2 кОм), иначе можно повредить ESP32. Альтернатива — использовать модуль-преобразователь уровня.
Шаг 2. Прошивка ESP32 (MicroPython)
Установите MicroPython на ESP32 (инструкция — на официальном сайте micropython.org). Затем загрузите следующий скрипт, который измеряет расстояние и отправляет его в MQTT:
import machine
import time
import network
from umqtt.simple import MQTTClient
# Настройки Wi-Fi и MQTT
SSID = 'your_wifi'
PASSWORD = 'your_password'
BROKER = 'broker.hivemq.com' # или ваш локальный брокер
TOPIC = 'sensor/hc-sr04/distance'
CLIENT_ID = 'esp32_hcsr04'
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print('Wi-Fi connected:', wlan.ifconfig())
# Подключение к MQTT
client = MQTTClient(CLIENT_ID, BROKER)
client.connect()
print('Connected to MQTT broker')
# Настройка пинов датчика
trig = machine.Pin(5, machine.Pin.OUT)
echo = machine.Pin(18, machine.Pin.IN)
def measure_distance():
# Генерируем импульс 10 мкс
trig.value(0)
time.sleep_us(2)
trig.value(1)
time.sleep_us(10)
trig.value(0)
# Ждём отклик
while echo.value() == 0:
pulse_start = time.ticks_us()
while echo.value() == 1:
pulse_end = time.ticks_us()
pulse_duration = time.ticks_diff(pulse_end, pulse_start)
# Расстояние в см: скорость звука 343 м/с, делим на 2 (туда-обратно)
distance = pulse_duration * 0.0343 / 2
return distance
# Основной цикл
while True:
dist = measure_distance()
print('Distance:', dist, 'cm')
client.publish(TOPIC, str(dist))
time.sleep(5) # измеряем каждые 5 секунд
Шаг 3. Настройка ASI Biont
Теперь откройте чат с ASI Biont на asibiont.com и напишите примерно такое сообщение:
«Подключись к MQTT-брокеру broker.hivemq.com, подпишись на топик sensor/hc-sr04/distance. Данные — расстояние в сантиметрах. Если расстояние меньше 20 см, отправь мне уведомление в Telegram: «Резервуар почти пуст! Нужно долить воду». Если расстояние больше 150 см, отправь: «Резервуар переполнен!» Также каждые 10 минут сохраняй значение в Google Sheets через API.»
ASI Biont сгенерирует Python-скрипт, который будет работать в облачном sandbox. Вот упрощённый пример того, что получится (полный код AI создаст автоматически):
import paho.mqtt.client as mqtt
import requests
import time
# Настройки MQTT
BROKER = 'broker.hivemq.com'
TOPIC = 'sensor/hc-sr04/distance'
# Telegram Bot (замените на свои значения)
TELEGRAM_TOKEN = 'YOUR_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
def send_telegram(message):
url = f'https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage'
payload = {'chat_id': CHAT_ID, 'text': message}
requests.post(url, json=payload)
# Callback при получении сообщения
last_alert_time = 0
def on_message(client, userdata, msg):
global last_alert_time
distance = float(msg.payload.decode())
print(f'Received distance: {distance} cm')
# Проверяем условия
if distance < 20 and time.time() - last_alert_time > 300: # не чаще раза в 5 минут
send_telegram('Резервуар почти пуст! Нужно долить воду.')
last_alert_time = time.time()
elif distance > 150 and time.time() - last_alert_time > 300:
send_telegram('Резервуар переполнен!')
last_alert_time = time.time()
# Подключение
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC)
print('Listening for MQTT messages...')
client.loop_forever()
Важно: этот код выполняется в sandbox ASI Biont, который имеет доступ к сети и библиотекам (paho-mqtt, requests). AI сам подставит ваш Telegram-токен и ID чата, если вы их укажете.
Шаг 4. Проверка и доработка
После запуска AI будет непрерывно слушать MQTT-топик. Вы можете в любой момент попросить его изменить логику, например:
- «Добавь в логирование: сохраняй данные в CSV на Google Drive»
- «Если расстояние резко меняется больше чем на 10 см за 2 секунды — подозрение на неисправность, отправь alert»
- «Построй график расстояния за последний час»
AI мгновенно модифицирует код, перезапустит выполнение и продолжит работу.
Реальные сценарии использования
1. Умный паркинг
Датчик HC-SR04 устанавливается над парковочным местом. ASI Biont анализирует расстояние: если оно меньше 50 см — место занято. AI может:
- Отправлять статус в Telegram-бота (свободно/занято)
- Обновлять LED-индикатор на парковке через MQTT-команду
- Собирать статистику загруженности и строить отчёты
Пример запроса в чат: «Подключись к MQTT-брокеру 192.168.1.100, топик parking/spot1. Если расстояние > 100 см — место свободно, отправляй в Telegram «Место 1 свободно». Если < 100 см — «Место 1 занято». Обновляй статус каждые 10 секунд.»
2. Охрана периметра
HC-SR04 работает как охранный датчик: если расстояние до объекта (например, открытого окна) изменилось — ASI Biont отправляет тревогу. Ключевое преимущество: AI может различать случайные помехи (ветка дерева) и реальное проникновение по паттерну изменения расстояния.
3. Управление уровнем жидкости в резервуаре
Сценарий, который мы разобрали выше — классика. Дополнительно AI может управлять насосом через реле: если уровень < 20 см — включить насос, если > 150 см — выключить. Для этого нужно добавить MQTT-publish на топик управления реле (например, relay/pump с командой ON/OFF).
Почему это проще, чем писать код вручную?
Традиционный подход:
- Вы пишете прошивку для ESP32 на C++ (Arduino IDE) или MicroPython
- Настраиваете MQTT-брокер (Mosquitto) на сервере или используете облачный
- Пишете бекенд на Python/Node.js для обработки данных, подключения к Telegram API, логирования
- Разворачиваете бекенд на VPS или Raspberry Pi
- Отлаживаете, фиксите баги, обновляете код
Весь процесс может занять от нескольких дней до недели. С ASI Biont:
- Вы подключаете ESP32 к Wi-Fi и загружаете простой скрипт (из примера выше) — это 5 минут
- Открываете чат, пишете задачу на естественном языке — 1 минута
- AI генерирует, запускает и поддерживает интеграцию — всё работает сразу
Дополнительные возможности: execute_python и industrial_command
ASI Biont поддерживает не только MQTT. Если ваш HC-SR04 подключён к Arduino через USB, вы можете использовать Hardware Bridge. Запустите bridge.py на своём ПК:
python bridge.py --token=YOUR_TOKEN --ports=COM3 --default-baud=9600
Затем в чате напишите: «Подключись к Arduino на COM3 через bridge. Читай данные с ультразвукового датчика на пинах 7 (Trig) и 8 (Echo). Каждые 5 секунд отправляй расстояние в Telegram. Если расстояние < 10 см — включи светодиод на пине 13.»
AI использует industrial_command(protocol='serial://', command='read_data') для взаимодействия с bridge, а bridge уже общается с Arduino через pyserial.
Заключение
HC-SR04 — простой, но мощный датчик, который в связке с AI-агентом ASI Biont превращается в полноценную IoT-систему. Вам не нужно быть экспертом в программировании или разбираться в протоколах — достаточно описать задачу на естественном языке. AI сам выберет способ подключения (MQTT, COM-порт, SSH), напишет код, настроит триггеры и будет поддерживать интеграцию 24/7.
Попробуйте прямо сейчас: подключите HC-SR04 к ESP32 или Arduino, зайдите на asibiont.com и напишите в чат «Подключи HC-SR04 через MQTT, отправляй данные в Telegram». Убедитесь, что интеграция занимает минуты, а не дни.
Исходные коды прошивки для ESP32 и Arduino доступны в репозитории ASI Biont на GitHub (ссылка в документации).
Комментарии