Введение
BLE-модули HM-10 и HC-05 — одни из самых популярных Bluetooth-решений для IoT-проектов. Они позволяют организовать беспроводную связь между микроконтроллером (Arduino, ESP32) и внешними устройствами — смартфонами, датчиками, исполнительными механизмами. Однако ручное программирование логики управления и сбора данных с таких модулей требует времени и навыков. AI-агент ASI Biont решает эту задачу: он подключается к BLE-устройству через чат, автоматически пишет код интеграции и управляет модулем без необходимости вручную писать каждую строчку.
В этой статье мы разберём конкретный сценарий: подключение модуля HM-10 к ASI Biont через Hardware Bridge, сбор данных с датчика температуры (например, DS18B20) и отправка команд управления светодиодом. Вы увидите, как AI сам генерирует Python-скрипт для pyserial, настраивает COM-порт и запускает логику на основе ваших голосовых команд.
Как ASI Biont подключается к BLE-модулю
ASI Biont поддерживает несколько способов интеграции с устройствами, но для BLE-модулей (HM-10, HC-05) оптимальным является Hardware Bridge. Этот метод работает так:
- Пользователь скачивает файл
bridge.pyиз дашборда ASI Biont (раздел Devices → Create API Key → Скачать bridge). - Запускает bridge на своём ПК (Windows/Linux/macOS) с указанием COM-порта и скорости:
bash python bridge.py --token=YOUR_TOKEN --ports=COM3 --default-baud=9600 - Bridge подключается к облаку ASI Biont через HTTP short-polling и открывает доступ к COM-порту.
- AI-агент получает команду от пользователя (например, «прочитай температуру с HM-10») и отправляет через industrial_command tool запрос на bridge с протоколом
serial://.
Почему именно Hardware Bridge? Потому что BLE-модули работают через UART (COM-порт), а execute_python выполняется в облаке и не имеет доступа к локальным портам. Bridge — единственный способ безопасно подключиться к Arduino/ESP32 с BLE-модулем.
Сценарий: управление светодиодом и сбор данных с датчика температуры
Оборудование
- Arduino Uno (или ESP32)
- BLE-модуль HM-10 (или HC-05)
- Датчик температуры DS18B20 (или DHT22)
- Светодиод + резистор 220 Ом
- USB-кабель для подключения к ПК
Подключение
- Подключите HM-10 к Arduino: VCC→5V, GND→GND, TX→RX (пин 0), RX→TX (пин 1).
- Подключите датчик DS18B20 к пину 2 (с подтяжкой 4.7 кОм).
- Подключите светодиод к пину 9 (через резистор).
- Загрузите на Arduino прошивку, которая слушает UART и управляет пинами. Пример кода для Arduino:
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
#define LED_PIN 9
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
pinMode(LED_PIN, OUTPUT);
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd == "LED_ON") {
digitalWrite(LED_PIN, HIGH);
Serial.println("LED_ON_OK");
} else if (cmd == "LED_OFF") {
digitalWrite(LED_PIN, LOW);
Serial.println("LED_OFF_OK");
} else if (cmd == "TEMP") {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
Serial.print("TEMP:");
Serial.println(temp);
} else {
Serial.println("UNKNOWN");
}
}
}
Интеграция с ASI Biont
После запуска bridge.py пользователь пишет в чат ASI Biont:
«Подключись к HM-10 на COM3, скорость 9600. Каждые 10 секунд читай температуру с датчика. Если температура выше 30°C — включи светодиод, иначе выключи.»
AI-агент автоматически генерирует и выполняет следующий Python-скрипт (через execute_python с вызовом industrial_command):
import time
import json
from datetime import datetime
def send_serial_command(cmd):
# Эта функция будет вызвана через industrial_command
# В реальности AI использует tool call, но для примера показываем логику
result = industrial_command(
protocol='serial://',
command='write_read',
params={'port': 'COM3', 'baud': 9600, 'data': cmd + '\n', 'timeout': 2}
)
return result['response']
# Цикл сбора данных (упрощённо, без while True из-за таймаута 30 с)
for i in range(3):
response = send_serial_command('TEMP')
if 'TEMP:' in response:
temp = float(response.split(':')[1])
print(f"{datetime.now()}: Температура = {temp}°C")
if temp > 30:
send_serial_command('LED_ON')
print("LED включён")
else:
send_serial_command('LED_OFF')
print("LED выключен")
time.sleep(10)
AI также может отправить разовую команду через industrial_command:
industrial_command(protocol='serial://', command='write_read', params={'port': 'COM3', 'baud': 9600, 'data': 'TEMP\n', 'timeout': 2})
Результат
- AI-агент каждые 10 секунд опрашивает датчик.
- При превышении порога 30°C зажигается светодиод.
- Пользователь может в любой момент изменить логику голосом: «Пусть светодиод мигает, если температура выше 35».
Почему это выгодно
| Подход | Время настройки | Гибкость | Требуемые навыки |
|---|---|---|---|
| Ручное программирование | Часы–дни | Высокая | Python, Arduino, протоколы |
| ASI Biont | 5–10 минут | Очень высокая (AI переписывает код под новые условия) | Базовое понимание подключения |
ASI Biont подключается к любому устройству через execute_python — AI сам пишет код интеграции под каждое устройство. Не нужно ждать, пока разработчики добавят поддержку — подключайте что угодно прямо сейчас. Просто опишите в чате, к какому устройству подключиться и какие параметры (порт, IP, baud rate, API-ключ), и AI сам сгенерирует код на Python с использованием pyserial, paramiko, paho-mqtt, pymodbus, aiohttp или opcua-asyncio. Всё подключение происходит через диалог в чате — никаких панелей управления и кнопок «добавить устройство» не требуется.
Заключение
BLE-модули HM-10 и HC-05 открывают огромные возможности для DIY-проектов и умного дома. Интеграция с AI-агентом ASI Biont позволяет управлять ими голосом, автоматизировать сбор данных и реагировать на события без написания кода вручную. Hardware Bridge — простой и надёжный способ подключения, который работает на любом ПК.
Попробуйте сами: скачайте bridge.py в дашборде ASI Biont, подключите HM-10 к Arduino и дайте AI-агенту команду. Увидите, как сложные сценарии становятся простыми.
Комментарии