Интеграция любого MCU с UART и AI-агентом ASI Biont: от ESP32 до Arduino

Введение

UART (Universal Asynchronous Receiver/Transmitter) — один из самых распространённых последовательных интерфейсов в мире встраиваемых систем. ESP32, Arduino, STM32, промышленные контроллеры — все они имеют UART. До недавнего времени, чтобы подключить такое устройство к AI-ассистенту, нужно было писать сложные скрипты, настраивать брокеры и разбираться в протоколах. С AI-агентом ASI Biont процесс упрощается до одного диалога в чате. В этой статье мы на практическом примере покажем, как подключить любой MCU с UART (на примере ESP32 с датчиком DHT22) к ASI Biont через Hardware Bridge, автоматизировать сбор данных и управление нагрузкой, и получить готового AI-помощника для умного дома или лаборатории.

Почему UART и зачем подключать к AI?

UART даёт прямой, низкоуровневый доступ к устройству. Вы можете читать сырые данные с сенсоров, отправлять команды на исполнительные механизмы, обновлять прошивку. Но без AI-агента вы либо вручную мониторите COM-порт, либо пишете жёсткий скрипт, который не адаптируется к нестандартным ситуациям. ASI Biont решает эту проблему: AI сам пишет код под вашу задачу, интерпретирует данные и принимает решения. Например, если температура превысила порог — AI может отправить уведомление в Telegram, включить реле и записать данные в Google Sheets — и всё это без вашего участия.

Способы подключения UART-устройства к ASI Biont

ASI Biont поддерживает два основных способа работы с UART:

  1. Hardware Bridge — для устройств, подключённых к COM-порту вашего ПК (Arduino, ESP32 через USB-UART). Вы скачиваете bridge.py из дашборда, запускаете его на своём компьютере, и AI через WebSocket отправляет команды, которые bridge транслирует в COM-порт.
  2. execute_python — если устройство имеет свой IP и SSH-доступ (например, Raspberry Pi, Orange Pi). AI пишет Python-скрипт с paramiko, который выполняется в облачном sandbox и удалённо управляет UART на устройстве.

В этой статье мы рассмотрим первый вариант как самый универсальный для MCU.

Практический сценарий: ESP32 + DHT22 + реле + Telegram-уведомления

Аппаратная схема

  • ESP32 (любая плата с USB-UART, например ESP32 DevKit V1)
  • Датчик температуры и влажности DHT22 (подключён к GPIO4)
  • Реле (подключено к GPIO16, управляет нагрузкой 220В, например лампой)
  • Питание: USB от ПК или внешний блок 5В

Схема подключения:
- DHT22 VCC -> ESP32 3.3V
- DHT22 GND -> ESP32 GND
- DHT22 DATA -> ESP32 GPIO4 (с подтяжкой 10кОм к 3.3V)
- Реле IN -> ESP32 GPIO16
- Реле VCC -> ESP32 5V (если реле 5В) или внешний источник
- Реле GND -> ESP32 GND

Прошивка ESP32 (MicroPython)

Загрузите на ESP32 следующий код. Он принимает команды по UART (например, "READ" возвращает температуру и влажность, "LED_ON" включает реле, "LED_OFF" выключает).

import machine
import dht
import time
import ubinascii

sensor = dht.DHT22(machine.Pin(4))
relay = machine.Pin(16, machine.Pin.OUT)
relay.value(0)

uart = machine.UART(0, baudrate=115200)

while True:
    if uart.any():
        cmd = uart.readline().decode().strip()
        if cmd == "READ":
            try:
                sensor.measure()
                t = sensor.temperature()
                h = sensor.humidity()
                response = f"TEMP:{t:.1f},HUM:{h:.1f}\n"
                uart.write(response)
            except Exception as e:
                uart.write("ERROR\n")
        elif cmd == "LED_ON":
            relay.value(1)
            uart.write("OK\n")
        elif cmd == "LED_OFF":
            relay.value(0)
            uart.write("OK\n")
        elif cmd == "HELP":
            uart.write("READ,LED_ON,LED_OFF\n")
    time.sleep_ms(100)

Настройка Hardware Bridge

  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

Где COM3 — порт, к которому подключена ESP32. На Linux это может быть /dev/ttyUSB0.

Диалог с AI-агентом

Теперь вы просто пишете в чат ASI Biont:

«Подключись к ESP32 на COM3, 115200 baud. Каждые 5 минут читай температуру и влажность с датчика DHT22. Если температура выше 30°C, включи реле на GPIO16 и отправь мне уведомление в Telegram. Если ниже 25°C — выключи реле. Также отправляй сводку в Telegram раз в час.»

AI сам сгенерирует и выполнит Python-скрипт, который:
- Подключится к bridge через WebSocket
- Будет циклически отправлять команду serial_write_and_read(data="524541440A") (HEX для "READ\n")
- Парсить ответ и сравнивать с порогами
- Использовать serial_write_and_read(data="4C45445F4F4E0A") для включения реле
- Отправлять сообщения через Telegram Bot API (используя библиотеку requests)

Пример сгенерированного кода (упрощённо):

import asyncio
import websockets
import json
import requests

TELEGRAM_TOKEN = "ваш_токен"
TELEGRAM_CHAT_ID = "ваш_chat_id"

async def monitor():
    async with websockets.connect("wss://bridge.asi.biont/ws?token=токен") as ws:
        while True:
            # Читаем температуру
            await ws.send(json.dumps({
                "action": "serial_write_and_read",
                "data": "524541440A"  # READ\n в hex
            }))
            response = await ws.recv()
            data = json.loads(response)
            if data.get("result"):
                temp_str = data["result"]
                # парсим TEMP:25.3,HUM:60.1
                temp = float(temp_str.split(",")[0].split(":")[1])
                if temp > 30:
                    # Включить реле
                    await ws.send(json.dumps({
                        "action": "serial_write_and_read",
                        "data": "4C45445F4F4E0A"
                    }))
                    requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
                                  json={"chat_id": TELEGRAM_CHAT_ID, "text": f"Температура {temp}°C, реле включено!"})
                elif temp < 25:
                    await ws.send(json.dumps({
                        "action": "serial_write_and_read",
                        "data": "4C45445F4F4F0A"
                    }))
            await asyncio.sleep(300)  # 5 минут

asyncio.run(monitor())

Важно: Этот код не нужно писать вручную — AI сделает это за вас. Вы просто описываете задачу на естественном языке.

Другие сценарии для UART-устройств

  • Arduino + датчик CO2: AI парсит показания, при превышении 1000 ppm отправляет предупреждение и включает вентиляцию.
  • GPS-трекер (NMEA): AI принимает NMEA-строки через bridge, определяет местоположение и строит маршрут на карте.
  • Промышленный контроллер с RS-485: Если MCU использует RS-485, подключаете через USB-конвертер, и AI управляет Modbus RTU командами.
  • Логирование данных: AI каждые 10 минут опрашивает датчики и сохраняет в CSV или отправляет в Google Sheets.

Сравнение: традиционный подход vs AI-агент

Характеристика Традиционный подход ASI Biont + AI
Время настройки Часы (написание скрипта, отладка) Минуты (описание задачи в чате)
Гибкость Нужно переписывать код при изменении условий Просто изменить запрос в чате
Обработка ошибок Требуется ручное программирование исключений AI сам обрабатывает таймауты, пустые ответы
Интеграции Нужно подключать каждую новую систему отдельно AI использует любые API по запросу
Масштабирование Сложно, требует рефакторинга AI адаптирует код под новые устройства

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

Вы получаете готового AI-инженера, который:
- Пишет код интеграции за секунды
- Работает с любыми протоколами (UART, MQTT, Modbus, OPC UA, HTTP)
- Не требует ручного программирования логики
- Может комбинировать данные с разных устройств
- Отправляет уведомления куда угодно (Telegram, Slack, email)

Заключение

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

← Все статьи

Комментарии