USB-to-Serial (FTDI, CH340, CP2102) + AI-агент ASI Biont: интеграция COM-порта для сбора данных и управления микроконтроллерами
Введение
USB-to-Serial адаптеры на базе чипов FTDI, CH340 и CP2102 — это мост между современными компьютерами и устройствами, общающимися через последовательный порт (UART). Микроконтроллеры Arduino, ESP8266, промышленные контроллеры, GPS-трекеры, считыватели штрихкодов — всё это подключается к ПК через USB-to-Serial. Без такого адаптера работа с COM-портом на ноутбуках без встроенного RS-232 невозможна.
Интеграция USB-to-Serial с AI-агентом ASI Biont открывает возможность автоматизировать сбор данных с датчиков, удалённо управлять исполнительными механизмами и анализировать потоки информации в реальном времени. Вместо того чтобы писать скрипты вручную, вы просто описываете задачу на естественном языке, а AI самостоятельно генерирует код и организует взаимодействие.
Как ASI Biont подключается к USB-to-Serial устройствам
ASI Biont работает в облаке (на платформе Railway) и не имеет прямого доступа к COM-портам вашего компьютера. Для подключения к последовательному порту используется Hardware Bridge — небольшое приложение bridge.py, которое вы запускаете на своей машине.
Hardware Bridge: мост между облаком и COM-портом
bridge.py — это Python-скрипт, который:
- подключается к ASI Biont через WebSocket (единственный канал связи);
- слушает команды от AI-агента;
- отправляет данные в COM-порт через pyserial и возвращает ответ.
Bridge не имеет HTTP-сервера или REST API — все команды приходят по WebSocket из облака.
Как запустить bridge:
1. Установите зависимости: pip install pyserial requests websockets.
2. Скачайте bridge.py из дашборда ASI Biont (раздел Devices → Create API Key → Скачать bridge).
3. Запустите с параметрами:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud=115200
После запуска bridge регистрируется в системе и готов принимать команды.
Протокол взаимодействия: serial_write_and_read
AI использует специальный инструмент industrial_command с протоколом serial. Команда serial_write_and_read позволяет отправить данные в порт и сразу получить ответ. Данные передаются в hex-формате или escape-последовательностях.
Пример вызова (выполняется AI, вы его не видите):
industrial_command(
protocol='serial',
command='serial_write_and_read',
data='54454D503F0A' # HEX для "TEMP?\n"
)
Bridge преобразует hex-строку в bytes, отправляет в COM-порт, читает ответ и возвращает его AI.
Важно: работать с COM-портом через execute_python в облаке нельзя — у sandbox нет доступа к локальным портам. Только Hardware Bridge.
Практический сценарий: Arduino + датчик температуры и влажности DHT11
Рассмотрим конкретный пример. У вас есть Arduino Uno, подключённый к компьютеру через USB-to-Serial адаптер (например, на CH340). К Arduino подключён датчик DHT11. Вы хотите, чтобы AI-агент ASI Biont считывал температуру и влажность каждые 10 секунд, анализировал тренды и предупреждал, если температура превышает 30 °C.
Шаг 1: Подготовка и запуск bridge
На Arduino загружен скетч, который по команде TEMP? отправляет строку вида 25.3,60.1 (температура, влажность).
Вы запускаете bridge:
python bridge.py --token=abc123 --ports=COM3 --baud=9600
Шаг 2: Описание задачи AI
Вы пишете в чат ASI Biont:
«Подключись к Arduino на COM3, скорость 9600. Каждые 10 секунд отправляй команду TEMP? и читай ответ. Если температура выше 30°C, отправь уведомление в Telegram. Логируй данные в CSV.»
Шаг 3: AI формирует план действий
AI анализирует запрос и:
1. Проверяет, что bridge активен через WebSocket.
2. Создаёт расписание (триггер) для периодического опроса.
3. Для каждого опроса использует serial_write_and_read с данными 'TEMP?\n'.
4. Парсит ответ (строка в формате CSV).
5. Сравнивает температуру с порогом.
6. Выполняет отправку в Telegram (через requests.post к api.telegram.org).
7. Сохраняет данные в CSV-файл (через execute_python).
Шаг 4: Пример кода, который генерирует AI (для иллюстрации)
Хотя вы не видите код, вот как выглядит логика, выполняемая AI на сервере:
import json
import csv
from datetime import datetime
# Эта функция вызывается при срабатывании триггера
def read_and_analyze():
# 1. Отправить команду через bridge (industrial_command)
# На самом деле AI использует tool call, но для понимания:
response = serial_write_and_read(data='54454D503F0A') # "TEMP?\n"
# 2. Парсинг ответа
parts = response.strip().split(',')
temp = float(parts[0])
humidity = float(parts[1])
# 3. Проверка порога
if temp > 30:
import requests
requests.post(
'https://api.telegram.org/bot<TOKEN>/sendMessage',
json={'chat_id': 'CHAT_ID', 'text': f'⚠️ Температура {temp}°C превышает порог!'}
)
# 4. Логирование в CSV
with open('data.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow([datetime.now(), temp, humidity])
Шаг 5: Результат
Вы получаете:
- периодический сбор данных без написания скрипта;
- уведомления в Telegram при аномалиях;
- накопленный CSV с историей.
Другие сценарии автоматизации
Управление светодиодами и сервоприводами
Вы можете попросить AI: «Включи светодиод на Arduino на 5 секунд, затем выключи». AI отправит команду LED_ON через serial_write_and_read.
Чтение аналоговых пинов
«Прочитай значение с аналогового пина A0 на ESP32». AI сформирует команду READ_A0\n и вернёт вам значение.
Логирование данных с GPS-трекера
«Подключись к GPS-трекеру на COM5, 9600 baud, парси NMEA-строки и сохраняй координаты в базу данных». AI использует bridge для получения сырых данных, затем через execute_python парсит $GPGGA и записывает в PostgreSQL.
Интеграция с промышленным контроллером через Modbus RTU
USB-to-Serial адаптер часто используется для подключения к Modbus RTU. В этом случае AI может использовать industrial_command с протоколом modbus_rtu (если поддерживается) или написать скрипт на pymodbus и выполнить его через execute_python, но для Modbus RTU требуется доступ к порту — поэтому используется bridge.
Почему это выгодно
- Нулевой порог входа — не нужно знать API последовательного порта, формат команд и библиотеки. Достаточно описать задачу словами.
- Скорость интеграции — то, что раньше занимало часы написания и отладки кода, теперь выполняется за секунды.
- Гибкость — AI подстраивается под любой протокол и формат данных. Если ваше устройство отвечает в JSON, AI распарсит JSON. Если в бинарном виде — AI сконвертирует.
- Масштабируемость — один AI-агент может одновременно общаться с десятками устройств через разные bridge-соединения.
Заключение
USB-to-Serial адаптеры — это классический интерфейс для связи с микроконтроллерами и промышленным оборудованием. Интеграция с AI-агентом ASI Biont превращает их в управляемые интеллектуальные узлы, которыми можно командовать голосом или текстом. Hardware Bridge обеспечивает безопасное и надёжное соединение между облачным AI и вашим локальным оборудованием.
Попробуйте сами: загрузите bridge.py из дашборда ASI Biont, подключите любой USB-to-Serial адаптер и скажите AI, что вы хотите сделать. Вся интеграция займёт меньше минуты.
Статья подготовлена для блога asibiont.com/blog.
Комментарии