Как подключить любое устройство по UART к AI-агенту ASI Biont: полный гайд
Введение
UART (Universal Asynchronous Receiver/Transmitter) — один из самых распространённых последовательных интерфейсов, который присутствует почти в каждом микроконтроллере: Arduino, ESP32, STM32, Raspberry Pi (через GPIO UART), промышленных контроллерах. До недавнего времени для интеграции таких устройств с облачными сервисами нужно было писать собственный код на Python, Node.js или C#, настраивать веб-серверы, разбираться с протоколами. ASI Biont меняет этот подход: теперь достаточно описать задачу на естественном языке, и AI-агент сам создаёт и выполняет интеграцию.
В этой статье мы шаг за шагом разберём, как подключить MCU по UART к ASI Biont, какие есть способы и сценарии, и приведём конкретные примеры с Arduino и ESP32.
Как ASI Biont подключается к UART-устройствам?
ASI Biont — это AI-агент, который работает в облаке (Railway). Он не имеет прямого доступа к COM-портам вашего компьютера. Для подключения к локальным последовательным портам используется Hardware Bridge — небольшое Python-приложение bridge.py, которое вы запускаете на своём ПК (Windows/Linux/macOS).
Архитектура:
- Bridge.py подключается к ASI Biont через WebSocket (единственный канал связи).
- AI отправляет команды с помощью инструмента industrial_command, указывая протокол serial:// и команду serial_write_and_read.
- Bridge получает команду, через pyserial пишет данные в COM-порт и сразу читает ответ.
- Ответ возвращается в ASI Biont, где AI анализирует его и принимает решения.
Поддерживаемые ОС: Windows, Linux, macOS. На Windows bridge автоматически использует CancelIoEx + PurgeComm для надёжного сброса буферов при проблемах с overlapped I/O.
Пошаговая инструкция: от скачивания bridge до первой команды
Шаг 1. Получите token и скачайте bridge.py
- Зайдите в дашборд ASI Biont → Devices → Create API Key.
- Скопируйте сгенерированный токен.
- Нажмите «Скачать bridge.py» — файл загрузится к вам на компьютер.
Шаг 2. Установите зависимости
pip install pyserial requests websockets
Шаг 3. Запустите bridge
Подключите ваше устройство (например, Arduino через USB). Узнайте номер порта (COM3 на Windows, /dev/ttyUSB0 на Linux).
python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud 115200
Флаг --ports указывает порты (можно несколько через запятую), --baud — скорость, --rate=10 — максимальное количество команд в секунду (rate limiter).
Bridge подключится к ASI Biont через WebSocket и начнёт слушать команды.
Шаг 4. Опишите задачу AI-агенту в чате
Теперь вы можете просто написать, например:
«Подключись к COM3 на скорости 115200. Отправь на устройство строку "GET_TEMP" и верни мне ответ. Если ответ содержит "TEMP=25.3", отправь уведомление в Telegram: "Температура в норме"».
AI сам сформирует и выполнит команду:
industrial_command(
protocol='serial://',
command='serial_write_and_read',
data='4745545f54454d500a' # hex для "GET_TEMP\n"
)
Обратите внимание: данные передаются в hex-формате. Функция _parse_data_field() в bridge принимает как hex-строки, так и escape-последовательности (например, BLUE_ON\n). Если вы укажете просто текст, AI самостоятельно переведёт его в hex.
Пример 1. Arduino + датчик температуры LM35
Рассмотрим классический кейс: Arduino Uno, к аналоговому пину A0 подключён датчик LM35. Arduino отправляет температуру в ASCII-формате раз в секунду.
Скетч Arduino
void setup() {
Serial.begin(115200);
}
void loop() {
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
float temperature = voltage * 100.0; // LM35: 10mV per °C
Serial.print("TEMP=");
Serial.println(temperature, 1);
delay(1000);
}
Интеграция с ASI Biont
Вы запускаете bridge на порту COM3, затем в чате говорите:
«Подключись к COM3, baud 115200. Каждые 10 секунд читай данные. Если температура превышает 30°C, отправь мне в Telegram: "Температура выше нормы: {value}°C". Также сохраняй все показания в Google Sheets (используй API).»
AI напишет и выполнит Python-код внутри execute_python (для работы с Telegram и Google Sheets) и будет циклически вызывать industrial_command для чтения данных. Никакого ручного программирования — всё через диалог.
Как это выглядит внутри:
AI генерирует скрипт в sandbox:
import requests
import time
# функция отправки в Telegram
def send_telegram(message):
token = "ВАШ_ТОКЕН"
chat_id = "ВАШ_ID"
url = f"https://api.telegram.org/bot{token}/sendMessage"
requests.post(url, json={"chat_id": chat_id, "text": message})
# чтение данных через bridge (вызывается не из execute_python, а через industrial_command)
# но для автоматизации AI использует планировщик внутри обработчика
# по факту AI сам решает, когда выполнить industrial_command, и обрабатывает ответ
Важно:
execute_pythonне имеет прямого доступа к COM-порту. Циклическое чтение реализуется не бесконечным циклом (sandbox ограничен 30 секундами), а через планировщик задач в ASI Biont — AI может настроить периодический вызовindustrial_commandс помощью встроенного планировщика или через внешний cron.
Пример 2. Управление светодиодом на ESP32 через UART
ESP32 подключён к ПК через UART-USB (порт COM5). Скетч ESP32 слушает команды:
- LED_ON\n — включить встроенный светодиод
- LED_OFF\n — выключить
- STATUS\n — вернуть текущее состояние ("LED=ON" или "LED=OFF")
Скетч ESP32
String inputString = "";
boolean stringComplete = false;
const int ledPin = 2;
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW);
}
void loop() {
if (stringComplete) {
inputString.trim();
if (inputString == "LED_ON") {
digitalWrite(ledPin, HIGH);
Serial.println("LED=ON");
} else if (inputString == "LED_OFF") {
digitalWrite(ledPin, LOW);
Serial.println("LED=OFF");
} else if (inputString == "STATUS") {
Serial.println(digitalRead(ledPin) ? "LED=ON" : "LED=OFF");
} else {
Serial.println("UNKNOWN");
}
inputString = "";
stringComplete = false;
}
}
void serialEvent() {
while (Serial.available()) {
char inChar = (char)Serial.read();
if (inChar == '\n') {
stringComplete = true;
} else {
inputString += inChar;
}
}
}
Взаимодействие через ASI Biont
Вы говорите в чате:
«Подключись к COM5, baud 115200. Отправь команду "STATUS" и покажи ответ. Затем отправь "LED_ON" и снова проверь статус.»
AI выполнит две команды:
1. industrial_command(protocol='serial://', command='serial_write_and_read', data='5354415455530a') → получит LED=OFF
2. industrial_command(protocol='serial://', command='serial_write_and_read', data='4c45445f4f4e0a') → получит LED=ON
Всё работает за секунды.
Другие способы подключения MCU к ASI Biont
Хотя UART — база, современные микроконтроллеры поддерживают и другие протоколы. ASI Biont одинаково легко подключается к любому устройству через execute_python — AI сам пишет код интеграции на Python с использованием библиотек из sandbox. Никаких панелей управления — только диалог.
| Способ | Устройства | Типичная команда AI |
|---|---|---|
| MQTT | ESP32 с датчиками, умный дом | «Подпишись на топик esp32/temperature и показывай последние 10 значений» |
| Modbus/TCP | Промышленные PLC | «Прочитай Holding Register 100 на IP 192.168.1.10» |
| SSH | Raspberry Pi, Orange Pi | «Подключись по SSH к 192.168.1.20, выполни gpio write 18 1» |
| HTTP API | Умные розетки, камеры | «Отправь GET на http://192.168.1.30/status и распарсь JSON» |
| CAN bus | Автомобили, станки | «Отправь CAN-фрейм с ID 0x123 и данными 01 02 03» |
Для всех этих протоколов не нужно скачивать bridge — достаточно описать параметры подключения (IP, порт, логин, API-ключ), и AI напишет код с использованием paho-mqtt, pymodbus, paramiko, aiohttp и выполнит его в sandbox.
Почему это выгодно?
- Экономия времени. Вместо того чтобы читать документацию по библиотекам, писать и отлаживать код вручную, вы просто описываете задачу. AI делает всю интеграцию за секунды.
- Минимум ошибок. AI проверяет синтаксис, использует проверенные библиотеки и уже тысячи раз писал подобные интеграции — вероятность опечатки или логической ошибки ниже.
- Универсальность. Не нужно ждать, пока разработчики ASI Biont добавят поддержку нового устройства. Если оно говорит по UART, SSH, MQTT, Modbus, CAN или HTTP — вы можете подключить его прямо сейчас.
- Масштабирование. Вы можете дать AI задание мониторить сотни датчиков, управлять десятками реле, отправлять отчёты — и всё это в одном диалоге.
Заключение
Интеграция микроконтроллера по UART с AI-агентом ASI Biont — это простой и мощный способ добавить «мозги» вашему устройству. Hardware Bridge обеспечивает надёжное двустороннее соединение, а AI берёт на себя всю логику: парсинг данных, принятие решений, отправку уведомлений и интеграцию с внешними сервисами.
Попробуйте сами: скачайте bridge.py в дашборде ASI Biont, подключите Arduino или ESP32 и просто напишите в чат, что нужно сделать. Увидите, как за пару минут сложная задача превращается в один диалог.
👉 asibiont.com — интегрируйте любые устройства с AI без программирования.
Комментарии