Как подключить любое устройство по UART к AI-агенту ASI Biont: полный гайд по интеграции ESP32, Arduino и других MCU

Как подключить любое устройство по 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

  1. Зайдите в дашборд ASI Biont → Devices → Create API Key.
  2. Скопируйте сгенерированный токен.
  3. Нажмите «Скачать 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.

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

  1. Экономия времени. Вместо того чтобы читать документацию по библиотекам, писать и отлаживать код вручную, вы просто описываете задачу. AI делает всю интеграцию за секунды.
  2. Минимум ошибок. AI проверяет синтаксис, использует проверенные библиотеки и уже тысячи раз писал подобные интеграции — вероятность опечатки или логической ошибки ниже.
  3. Универсальность. Не нужно ждать, пока разработчики ASI Biont добавят поддержку нового устройства. Если оно говорит по UART, SSH, MQTT, Modbus, CAN или HTTP — вы можете подключить его прямо сейчас.
  4. Масштабирование. Вы можете дать AI задание мониторить сотни датчиков, управлять десятками реле, отправлять отчёты — и всё это в одном диалоге.

Заключение

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

Попробуйте сами: скачайте bridge.py в дашборде ASI Biont, подключите Arduino или ESP32 и просто напишите в чат, что нужно сделать. Увидите, как за пару минут сложная задача превращается в один диалог.

👉 asibiont.com — интегрируйте любые устройства с AI без программирования.

← Все статьи

Комментарии

Читайте также