HC-SR04 и ASI Biont: шпаргалка по интеграции ультразвукового дальномера в IoT без кода

Введение

Ультразвуковой дальномер 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:

  1. Через Arduino + Hardware Bridge (COM-порт): если вы используете Arduino Uno/Nano, подключённый к ПК по USB. ASI Biont отправляет команды на bridge.py, который читает/пишет в COM-порт через pyserial.
  2. Через 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).

Почему это проще, чем писать код вручную?

Традиционный подход:

  1. Вы пишете прошивку для ESP32 на C++ (Arduino IDE) или MicroPython
  2. Настраиваете MQTT-брокер (Mosquitto) на сервере или используете облачный
  3. Пишете бекенд на Python/Node.js для обработки данных, подключения к Telegram API, логирования
  4. Разворачиваете бекенд на VPS или Raspberry Pi
  5. Отлаживаете, фиксите баги, обновляете код

Весь процесс может занять от нескольких дней до недели. С ASI Biont:

  1. Вы подключаете ESP32 к Wi-Fi и загружаете простой скрипт (из примера выше) — это 5 минут
  2. Открываете чат, пишете задачу на естественном языке — 1 минута
  3. 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 (ссылка в документации).

← Все статьи

Комментарии