Введение
USB-to-Serial конвертеры на чипах FTDI, CH340 и CP2102 — это не просто дешёвые переходники. Это ключ к тысячам промышленных и любительских устройств, которые общаются через последовательный порт (UART/RS-232/RS-485). Arduino, ESP32, программируемые логические контроллеры, GPS-трекеры, счётчики электроэнергии — все они используют COM-порт для обмена данными. Подключив такой конвертер к компьютеру, вы получаете прямой доступ к «мозгам» оборудования. А если этим доступом управляет AI-агент — открывается автоматизация, которая раньше требовала недель ручного кодирования.
В этой статье я покажу, как интегрировать любое USB-to-Serial устройство с AI-агентом ASI Biont. Вы узнаете, какие способы подключения поддерживаются, увидите реальные сценарии с примерами кода и поймёте, почему для последовательных интерфейсов лучшим выбором является Hardware Bridge.
Почему USB-to-Serial и AI — идеальная пара?
Представьте: у вас на заводе стоит PLC, который через COM-порт выдаёт данные температуры, давления и оборотов. Традиционно вы пишете скрипт на Python (pyserial), разбираете протокол, логируете данные, настраиваете уведомления. Это занимает часы, а при смене оборудования — всё заново.
AI-агент делает это за секунды. Вы просто описываете в чате: «Подключись к COM5 на 115200, отправь команду STATUS, прочитай ответ и если температура выше 80°C — отправь мне в Telegram предупреждение». ASI Biont сам пишет код интеграции, подключается и выполняет задачу. Больше не нужно вручную разбирать даташиты — AI сделает это за вас.
Как ASI Biont подключается к USB-to-Serial?
Для работы с COM-портами ASI Biont использует Hardware Bridge — небольшое приложение bridge.py, которое запускается на вашем ПК (Windows/Linux/macOS). Bridge подключается к облачному AI-агенту через WebSocket (единственный канал связи) и действует как шлюз: принимает команды от AI и выполняет их на локальном оборудовании.
Архитектура выглядит так:
[ASI Biont (облако)] ← WebSocket → [bridge.py на вашем ПК] ←→ [USB-to-Serial устройство]
AI использует industrial_command tool с командой serial_write_and_read. Это атомарная операция: bridge отправляет данные в порт и сразу читает ответ. Данные передаются в hex-формате (например, data="48454c500a" для строки "HELP\n"). Bridge сам преобразует hex в байты и отправляет через pyserial.
Как настроить bridge?
- Скачайте
bridge.pyиз дашборда ASI Biont (раздел Devices → Create API Key → Скачать bridge). - Установите зависимости:
pip install pyserial requests websockets. - Запустите bridge с вашим токеном и списком портов:
bash python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud 115200 --rate=10
Флаг--rate=10ограничивает частоту запросов к одному устройству (до 10 команд в секунду) — защита от спама. - Bridge установит WebSocket-соединение и начнёт слушать команды.
Важно: Bridge не имеет HTTP-сервера на localhost. Вся связь — только через WebSocket к облаку. Никаких
requests.get("http://localhost:8080/...")— это не работает.
Теперь можно общаться с AI в чате.
Сценарий 1: Arduino с датчиком температуры (DHT22) и управлением светодиодом
Задача: Получать температуру и влажность с Arduino, логировать в Google Sheets и включать/выключать светодиод по команде из чата.
Arduino подключается к ПК через USB-to-Serial (обычно это встроенный конвертер на CH340). В прошивке Arduino реализован простой протокол:
- По получении символа T — отправляет строку вида Temp:23.5 Hum:60.2.
- По получении LED_ON — зажигает светодиод.
Диалог с AI
Пользователь: «Подключись к COM3 на 115200. Отправь символ "T" и прочитай ответ. Если температура больше 25°C — отправь мне в Telegram сообщение.»
AI выполняет вызов инструмента:
industrial_command(
protocol='serial',
command='serial_write_and_read',
data='54' # hex для 'T'
)
Bridge отправляет байт 0x54, получает ответ и возвращает его AI. Далее AI парсит строку, извлекает температуру, и если условие выполнено — отправляет Telegram через requests.post к api.telegram.org (этот код выполняется в sandbox ASI Biont).
Пример кода, который AI генерирует для парсинга (выполняется в sandbox)
import re
response = "Temp:23.5 Hum:60.2" # получено от bridge
match = re.search(r"Temp:([\d.]+)", response)
temp = float(match.group(1))
print(f"Temperature: {temp}°C")
if temp > 25:
# отправка в Telegram через requests
import requests
requests.post(
f"https://api.telegram.org/bot{TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": f"Температура {temp}°C!"}
)
Результат: Через 10 секунд после запроса вы получаете уведомление в Telegram. Всё без единой строки ручного кода со стороны пользователя.
Сценарий 2: GPS-трекер через NMEA (COM-порт)
GPS-модули (например, NEO-6M) подключаются к ПК через USB-to-Serial и выдают NMEA-строки вида $GPGGA,123519,4807.038,N,....
Задача: AI подключается к COM-порту, считывает NMEA-данные, парсит координаты и строит маршрут на карте.
Пользователь говорит: «Читай NMEA-строки с COM7 на 9600, каждые 10 секунд сохраняй координаты в CSV.»
AI использует serial_write_and_read с пустыми данными (просто чтение), но для NMEA проще один раз прочитать несколько строк. Он отправляет команду data='' (пустой hex, bridge будет читать таймаут). Полученные строки передаются в sandbox, где AI парсит их с помощью библиотеки pynmea2 (доступна в sandbox):
import pynmea2
nmea_data = "$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47"
msg = pynmea2.parse(nmea_data)
lat = msg.latitude
lon = msg.longitude
print(f"Lat: {lat}, Lon: {lon}")
AI может открыть долгосрочную сессию через WebSocket (bridge поддерживает постоянное чтение, но для этого используется отдельная команда serial_monitor? Нет, в спецификации bridge только serial_write_and_read. Поэтому для непрерывного мониторинга AI использует execute_python с pyserial? Но execute_python не имеет доступа к COM-портам, так как выполняется в облаке. Значит, для постоянного чтения нужен bridge, который сам шлёт данные в WebSocket. Но в текущей архитектуре bridge не умеет автоматически присылать данные — AI должен сам инициировать чтение. Поэтому для периодического опроса AI может каждые N секунд вызывать industrial_command(protocol='serial', command='serial_write_and_read', data='') — это будет атомарное чтение.
Вывод: Даже для GPS-трекера схема работает, хоть и с небольшим лагом.
Почему это выгодно?
- Скорость интеграции. Вместо часов написания и отладки кода — 10 секунд диалога с AI.
- Гибкость. Не нужно ждать, пока разработчики ASI Biont добавят поддержку конкретного устройства. AI сам напишет код на Python с использованием доступных библиотек (pyserial, pymodbus, paramiko и т.д.) и выполнит его в sandbox. Если нужно работать с COM-портом — используется bridge, для остального —
execute_python. - Единый интерфейс. Управление всем оборудованием через один чат. Не нужно переключаться между Siemens S7, Modbus TCP и Arduino — просто опишите задачу словами.
- AI понимает контекст. Вы можете попросить: «Сравни показания с прошлой неделей и построй график» — AI сам найдёт данные, построит matplotlib и пришлёт изображение.
Универсальность: execute_python для других протоколов
Хотя COM-порт требует Hardware Bridge, для большинства других протоколов (Modbus/TCP, MQTT, HTTP API, OPC UA, CAN bus) ASI Biont использует execute_python — AI пишет Python-скрипт, который выполняется в sandbox-окружении на сервере. Sandbox имеет доступ к библиотекам pymodbus, paho-mqtt, aiohttp, opcua-asyncio и другим. Пользователь просто передаёт IP, порт, пароль — и AI делает всё сам.
Но для последовательных интерфейсов локальный bridge остаётся единственным надёжным способом, и он работает отлично.
Заключение
USB-to-Serial конвертеры — это шлюз в мир «железа», а ASI Biont — интеллектуальный помощник, который делает работу с ними быстрой и удобной. Больше не нужно писать десятки строк на pyserial, разбираться в таймаутах и обработке ошибок. Достаточно описать задачу в чате — AI возьмёт на себя весь код и коммуникацию.
Хотите попробовать? Скачайте bridge из дашборда asibiont.com, подключите ваше USB-to-Serial устройство и напишите: «Подключись к COM3 на 115200, отправь HELP и покажи ответ». AI сделает всё за секунды.
Комментарии