Интеграция UART (любой MCU) с AI-агентом ASI Biont: полный гайд по COM-порту и последовательным интерфейсам

Введение

UART (Universal Asynchronous Receiver-Transmitter) — это один из самых распространённых протоколов последовательной связи в мире встраиваемых систем. Он используется в Arduino, ESP32, STM32, промышленных контроллерах, GPS-трекерах, счётчиках воды и электроэнергии, и тысячах других устройств. По данным Embedded Market Report 2025, более 70% всех микроконтроллеров имеют хотя бы один UART-интерфейс, а в IoT-сегменте этот показатель превышает 90%.

Проблема: чтобы подключить такое устройство к облачному AI-агенту, обычно нужно писать сложный код-мост, настраивать веб-серверы, разбираться с MQTT или HTTP API. Это требует времени и навыков программирования.

Решение: ASI Biont позволяет подключить любой MCU через UART буквально за минуты — через чат. AI-агент сам пишет код, подключается к вашему COM-порту и начинает управлять железом. В этой статье я покажу, как это работает на реальном примере с Arduino и датчиком температуры.

Что такое UART и зачем его подключать к AI-агенту?

UART — это последовательный интерфейс, который передаёт данные по одному проводу (TX) и принимает по другому (RX). Скорость передачи задаётся baud rate — типичные значения 9600, 115200, 921600 бит/с.

Подключение UART к AI-агенту даёт:
- Удалённый мониторинг датчиков (температура, влажность, давление, уровень жидкости)
- Управление исполнительными устройствами (реле, сервоприводы, моторы, светодиоды)
- Автоматизация по расписанию или по условиям (например, при превышении температуры включать вентилятор)
- Логирование и анализ данных с построением графиков
- Уведомления в Telegram/Slack при авариях

Как ASI Biont подключается к UART-устройству?

ASI Biont использует Hardware Bridge — это Python-приложение bridge.py, которое запускается на вашем компьютере (Windows, Linux, macOS). Bridge подключается к облачному AI-агенту через WebSocket (единственный канал связи) и обеспечивает доступ к локальным COM-портам.

Схема работы:
1. Вы скачиваете bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge)
2. Устанавливаете зависимости: pip install pyserial requests websockets
3. Запускаете bridge с параметрами: python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud 115200
4. В чате с AI-агентом описываете задачу: "Подключись к Arduino на COM3, прочитай температуру с датчика DS18B20 и отправляй мне в Telegram каждые 5 минут"
5. AI использует industrial_command(protocol='serial', command='serial_write_and_read', data='...') для отправки команд и чтения ответов

Важно: bridge не имеет HTTP-сервера. Все команды AI отправляет через WebSocket, bridge выполняет их локально через pyserial и возвращает результат.

Подготовка Arduino/ESP32

Для примера возьмём Arduino Uno с датчиком температуры DS18B20 (1-Wire). Подключение:
- DS18B20: DATA → пин 2, VCC → 5V, GND → GND, подтяжка 4.7 кОм между DATA и VCC
- USB-кабель к компьютеру

Прошивка для Arduino (скетч):

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(115200);
  sensors.begin();
}

void loop() {
  if (Serial.available() > 0) {
    String cmd = Serial.readStringUntil('\n');
    cmd.trim();
    if (cmd == "TEMP") {
      sensors.requestTemperatures();
      float temp = sensors.getTempCByIndex(0);
      Serial.println(String(temp, 2));
    } else if (cmd == "HELP") {
      Serial.println("TEMP - read temperature");
    } else {
      Serial.println("UNKNOWN");
    }
  }
}

Этот скетч слушает последовательный порт, и по команде "TEMP" возвращает температуру, по "HELP" — список команд.

Пошаговая интеграция с ASI Biont

Шаг 1: Запуск bridge.py

Скачайте bridge.py из дашборда ASI Biont. Установите зависимости:

pip install pyserial requests websockets

Запустите bridge, указав ваш токен и порт:

python bridge.py --token=ваш_супер_секретный_токен --ports=COM3 --baud 115200

Если порт занят, bridge сообщит об ошибке. Убедитесь, что Arduino подключена и не используется другим приложением (закройте Arduino IDE).

Шаг 2: Проверка связи в чате

Откройте чат с AI-агентом ASI Biont (веб-интерфейс или Telegram). Напишите:

Подключись к Arduino на COM3 через bridge. Отправь команду HELP и покажи ответ.

AI выполнит:

industrial_command(
    protocol='serial',
    command='serial_write_and_read',
    data='48454c500a'  # "HELP\n" в hex
)

Ответ от Arduino: TEMP - read temperature

Шаг 3: Мониторинг температуры в Telegram

Напишите в чат:

Прочитай температуру с Arduino каждые 5 минут. Если температура выше 30°C, отправь мне сообщение в Telegram. Используй execute_python с библиотекой requests для отправки в Telegram.

AI сгенерирует и выполнит такой скрипт:

import time
import requests

# Токен бота и chat ID (выдаются при создании бота у @BotFather)
BOT_TOKEN = "ваш_токен_бота"
CHAT_ID = "ваш_chat_id"

def send_telegram(text):
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    requests.post(url, json={"chat_id": CHAT_ID, "text": text})

# Бесконечный цикл не используем — выполнение в sandbox ограничено 30 секундами
# Вместо этого используем однократное чтение и отправку
# Для периодического мониторинга AI настроит расписание в ASI Biont

# Чтение температуры через bridge
response = industrial_command(
    protocol='serial',
    command='serial_write_and_read',
    data='54454d500a'  # "TEMP\n"
)

try:
    temp = float(response)
    msg = f"Температура: {temp}°C"
    if temp > 30:
        msg += " ⚠️ Превышение порога!"
    send_telegram(msg)
except:
    send_telegram("Ошибка чтения температуры")

AI выполнит этот код в облачном sandbox (execute_python) и отправит результат в Telegram. Для периодического запуска AI настроит расписание (cron) внутри ASI Biont.

Сценарии автоматизации без кода

ASI Biont позволяет автоматизировать сценарии без написания кода — через описание в чате. Примеры:

  • Умный термостат: "Если температура выше 28°C, включи реле (команда RELAY_ON). Если ниже 20°C — выключи. Проверяй каждые 10 минут."

  • Логирование в Google Sheets: "Записывай температуру и влажность в Google Sheets каждые 15 минут. Используй токен из моего аккаунта."

  • Аварийное оповещение: "Если датчик движения сработал ночью (с 23:00 до 06:00), отправь фото с камеры в Telegram и включи сирену на 10 секунд."

  • Энергомониторинг: "Считывай показания счётчика электроэнергии по RS-485 (Modbus RTU) раз в час, строй график и присылай отчёт раз в неделю."

Подводные камни и советы

  1. Проблемы с драйверами USB-UART: На Windows часто требуется установка драйвера CH340 или CP2102. Если порт не определяется, проверьте Диспетчер устройств.

  2. Конфликт портов: Закройте все программы, которые могут использовать COM-порт (Arduino IDE, терминалы).

  3. Baud rate: Убедитесь, что скорость в bridge (--baud) совпадает со скоростью в прошивке устройства (Serial.begin).

  4. HELP протокол: Для проверки связи AI отправляет команду HELP. Устройство должно ответить списком поддерживаемых команд. Если ответа нет — проверьте подключение и скорость.

  5. Hex-формат: Команды передаются в hex (например, "TEMP\n" = "54454d500a"). bridge автоматически конвертирует. Можно использовать и escape-последовательности: data="TEMP\n".

  6. Windows Overlapped I/O: Если bridge выдаёт ошибку записи (written: 0), он автоматически применяет CancelIoEx + PurgeComm + синхронный WriteFile. Обычно это решает проблему.

Пример: ESP32 + датчик DHT22 + MQTT

Хотя основная тема — UART, ASI Biont поддерживает и MQTT для ESP32. Это удобно, если устройство уже подключено к Wi-Fi.

Прошивка ESP32 (публикует температуру в топик sensor/temp):

#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>

#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
  Serial.begin(115200);
  WiFi.begin("SSID", "PASSWORD");
  client.setServer("broker.hivemq.com", 1883);
  dht.begin();
}

void loop() {
  if (!client.connected()) {
    client.connect("ESP32_Temp");
  }
  client.loop();

  float temp = dht.readTemperature();
  client.publish("sensor/temp", String(temp).c_str());
  delay(300000); // каждые 5 минут
}

В чате с ASI Biont пишем:

Подключись к MQTT-брокеру broker.hivemq.com:1883, подпишись на топик sensor/temp. Если температура выше 35°C, отправь alert в Telegram и опубликуй команду "OFF" в топик actuator/relay.

AI использует industrial_command(protocol='mqtt', command='subscribe', topic='sensor/temp') для получения данных.

Почему это выгодно?

  • Экономия времени: AI пишет код интеграции за секунды. Вам не нужно изучать документацию по pyserial, MQTT, Modbus — достаточно описать задачу словами.
  • Гибкость: Подключайте любые устройства — от Arduino до промышленных PLC. AI сам выбирает подходящий протокол.
  • Автоматизация: Настройте сценарии "если-то" без программирования. AI выполнит их по расписанию.
  • Масштабирование: Добавьте десятки устройств — AI будет управлять каждым.

Заключение

UART-устройства — это основа встраиваемых систем. Интеграция с AI-агентом ASI Biont открывает новые возможности: удалённый мониторинг, умная автоматизация, оповещения, анализ данных. Hardware Bridge делает подключение простым и безопасным — данные не покидают ваш компьютер, а AI работает через облако.

Попробуйте сами: создайте аккаунт на asibiont.com, скачайте bridge, подключите Arduino и дайте команду в чат. AI сделает всю работу за вас.

← Все статьи

Комментарии