Введение
Ультразвуковой дальномер HC-SR04 — один из самых популярных датчиков в DIY-проектах и промышленной автоматизации. Его цена (менее $2), простота подключения и диапазон от 2 см до 4 метров делают его идеальным для измерения расстояния, уровня жидкости, обнаружения препятствий. Однако сам по себе датчик — это просто источник сырых данных. Чтобы превратить их в умное решение (автоматические ворота, сигнализация, мониторинг резервуара), нужно написать код, настроить логику, интегрировать с другими системами.
Здесь на помощь приходит ASI Biont — AI-агент, который самостоятельно пишет код интеграции и управляет устройствами через диалог в чате. В этой статье мы разберём, как подключить HC-SR04 к ASI Biont, какие способы интеграции доступны и как решить реальные задачи без ручного программирования. Всё, что нужно — описать задачу на естественном языке.
Почему HC-SR04 + ASI Biont?
HC-SR04 работает по принципу эхолокации: посылает ультразвуковой импульс (40 кГц) и замеряет время возврата отражённого сигнала. Расстояние вычисляется по формуле: S = (t * 343) / 2, где t — время в секундах, 343 м/с — скорость звука. Точность составляет ±3 мм (по данным производителя).
Основные ограничения датчика:
- Зависимость от температуры и влажности (скорость звука меняется)
- Слепая зона 2 см
- Возможны ложные срабатывания от отражений и помех
ASI Biont снимает эти ограничения: AI может компенсировать температуру (если подключён датчик BME280), фильтровать шумы с помощью медианного фильтра, анализировать тренды и принимать решения на основе контекста. Например, отличать приближение человека от проезжающей машины по скорости изменения расстояния.
Способы подключения HC-SR04 к ASI Biont
ASI Biont поддерживает более 15 протоколов промышленной и IoT-связи. Для HC-SR04 наиболее практичны два маршрута:
| Маршрут | Микроконтроллер | Протокол | Область применения |
|---|---|---|---|
| COM-порт (Hardware Bridge) | Arduino Uno/Nano, ESP32 | Serial RS-232 (USB-UART) | Локальные проекты, точное время отклика, работа с несколькими датчиками |
| MQTT | ESP32, ESP8266 | Wi-Fi + MQTT | Удалённый мониторинг, интеграция с умным домом (Home Assistant) |
| GPIO через SSH | Raspberry Pi | Paramiko (execute_python) | Высокоуровневая обработка видео/данных, запуск OpenCV |
В этом гайде мы сфокусируемся на самом надёжном и быстром способе — COM-порт через Hardware Bridge. Он обеспечивает минимальную задержку (около 10 мс) и не требует Wi-Fi.
Пошаговая инструкция: HC-SR04 + Arduino + ASI Biont
Шаг 1. Подключение HC-SR04 к Arduino
Схема подключения (стандартная):
- VCC → 5V
- GND → GND
- Trig → D9
- Echo → D10
Шаг 2. Прошивка Arduino
Скетч ниже ожидает команду MEASURE (в hex: 4D4541535552450A), измеряет расстояние и возвращает значение в сантиметрах, завершая переводом строки. Используем библиотеку NewPing для стабильных показаний.
#include <NewPing.h>
#define TRIGGER_PIN 9
#define ECHO_PIN 10
#define MAX_DISTANCE 400
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(115200);
}
void loop() {
if (Serial.available() > 0) {
String cmd = Serial.readStringUntil('\n');
if (cmd == "MEASURE") {
unsigned int uS = sonar.ping();
unsigned int cm = uS / US_ROUNDTRIP_CM;
Serial.print("DIST:");
Serial.println(cm);
}
}
}
Шаг 3. Настройка Hardware Bridge
- В дашборде ASI Biont (раздел Devices → Create API Key) скачайте
bridge.py. - Установите зависимости:
pip install pyserial requests websockets - Подключите Arduino к ПК, определите номер COM-порта (например, COM3 на Windows или /dev/ttyUSB0 на Linux).
- Запустите bridge:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud 115200 --rate=10
Флаг --rate=10 ограничивает частоту запросов к COM-порту (10 команд в секунду) для предотвращения перегрузки.
Шаг 4. Первая команда в чате ASI Biont
Теперь в чате с AI-агентом достаточно написать:
«Подключись к Arduino на COM3 через bridge и измерь расстояние с помощью датчика HC-SR04. Верни результат в сантиметрах.»
AI сгенерирует и выполнит следующий вызов инструмента:
# AI использует industrial_command tool
industrial_command(
protocol='serial://',
command='serial_write_and_read',
data='4D4541535552450A', # 'MEASURE\n' в hex
timeout=2000
)
Bridge отправляет MEASURE\n в COM-порт, Arduino отвечает DIST:123\n. Bridge возвращает ответ в чат, AI парсит значение и выводит пользователю:
«Расстояние: 123 см.»
Реальные сценарии использования
Сценарий 1: Автоматическое открытие ворот
Задача: При подъезде автомобиля на расстояние менее 3 метров открывать ворота, используя сервопривод MG995.
Решение: AI периодически опрашивает HC-SR04 (например, каждые 200 мс). Если расстояние < 300 см и стабильно уменьшается (признак приближения), AI отправляет команду на второй COM-порт (Arduino с сервоприводом) через serial_write_and_read. Одновременно AI проверяет время суток (чтобы не открывать ночью без света) и записывает событие в лог.
Пример фрагмента кода AI (выполняется в execute_python с таймаутом, поэтому используем однократный опрос и выход):
import requests
# Условный пример - реальный AI генерирует код под задачу
def check_distance():
# Здесь была бы команда industrial_command, но для примера - REST к bridge (не рекомендуется)
pass
Важно: В реальной интеграции AI использует industrial_command для отправки и получения данных, а не HTTP к bridge. Bridge не имеет HTTP API.
Сценарий 2: Мониторинг уровня жидкости в резервуаре
Задача: Отслеживать уровень воды в баке (глубиной 2 метра) и отправлять уведомление в Telegram при достижении 90%.
Решение: AI по расписанию (через cron-подобную логику, реализованную в пользовательском скрипте) запрашивает расстояние. Высота уровня = высота бака – измеренное расстояние. AI строит график изменения уровня (библиотека matplotlib) и сохраняет в PNG. При превышении порога отправляет уведомление через Telegram Bot API:
import requests
import matplotlib.pyplot as plt
# Предположим, AI получил историю измерений
distances = [150, 148, 145, 130] # пример
height = max(distances) - min(distances)
if height > 180: # 90% от 200 см
requests.post('https://api.telegram.org/bot<TOKEN>/sendMessage',
json={'chat_id': '<CHAT_ID>', 'text': 'Внимание! Уровень достиг 90%'})
Сценарий 3: Интеллектуальная сигнализация с фильтрацией ложных срабатываний
Задача: Сигнализация срабатывает, если объект приближается к двери, но игнорирует проходящих мимо людей (например, соседскую кошку).
Решение: AI анализирует временной ряд расстояний. Резкое изменение (более 20 см за 100 мс) – потенциальное движение. Если после изменения расстояние продолжает уменьшаться – это приближение. Если после изменения расстояние возвращается к исходному – ложная тревога. AI использует библиотеку numpy для скользящего среднего и стандартного отклонения.
Почему это выгодно?
Традиционно интеграция датчика требует:
- Написания кода на C++ для Arduino
- Настройки протокола передачи
- Разработки серверной логики обработки
- Интеграции с уведомлениями и другими устройствами
С ASI Biont всё это делает AI за секунды. Пользователь лишь описывает на русском языке, что нужно сделать:
«Сделай так, чтобы каждые 5 секунд измерялось расстояние и если оно меньше 50 см — зажигался красный светодиод и отправлялось сообщение в Telegram.»
AI самостоятельно напишет скетч для Arduino, Python-скрипт для bridge, настроит MQTT (если нужно) и будет готов к работе.
Заключение
HC-SR04 — доступный и надёжный датчик, но его истинная мощь раскрывается в связке с интеллектуальным агентом. ASI Biont превращает сырые показания в полноценные автоматизированные сценарии: от умного дома до промышленного мониторинга. При этом не требуется знать ни C++, ни Python — достаточно описать задачу словами.
Готовы попробовать? Переходите на asibiont.com и создайте своего первого AI-агента для HC-SR04 уже сегодня. Загрузите bridge, подключите датчик — и увидите, как AI сам пишет код интеграции.
Комментарии