Введение
SPI (Serial Peripheral Interface) — это синхронный последовательный интерфейс, который используется в миллионах устройств: от датчиков температуры и акселерометров до дисплеев и SD-карт. Однако прямое подключение SPI-устройства к AI-агенту — задача нетривиальная: нужен мост между «железом» и облаком. ASI Biont решает эту проблему через Hardware Bridge — приложение bridge.py, которое запускается на вашем ПК и связывает COM-порт с WebSocket-каналом. В этой статье я покажу, как за 5 минут подключить датчик на SPI к AI-агенту и автоматизировать мониторинг через Telegram.
Почему SPI?
SPI — стандарт де-факто для высокоскоростного обмена с периферией. Он поддерживается почти всеми микроконтроллерами (ESP32, Arduino, STM32) и позволяет читать данные с датчиков на частотах до 10 МГц. Проблема в том, что прямое подключение SPI к облаку требует написания драйвера, настройки MQTT или HTTP-сервера на микроконтроллере — это время и ресурсы. ASI Biont упрощает процесс: вы подключаете SPI-устройство через переходник USB-UART (например, FT232) к COM-порту ПК, запускаете bridge.py, и AI-агент получает полный контроль над шиной.
Как это работает
ASI Biont подключается к SPI-устройствам через Hardware Bridge — это единственный канал для работы с COM-портами. Пользователь скачивает bridge.py из дашборда (Devices → Create API Key), указывает порт (например, COM3) и baud rate. AI отправляет команды через industrial_command tool с протоколом serial://, а bridge выполняет атомарную операцию записи и чтения. Данные передаются в hex-формате (например, data="48454c500a" для HELP+\n). Для SPI-устройств вы можете эмулировать протокол: отправлять байты на выбранные пины CS, SCK, MOSI и читать MISO.
Пример настройки bridge:
pip install pyserial requests websockets
python bridge.py --token=YOUR_API_KEY --ports=COM3 --baud 115200 --rate=10
Сценарий: мониторинг температуры через SPI + Telegram
Возьмём классический датчик температуры MAX31855 (термопара) на SPI. Он подключается к ESP32, но для простоты используем Arduino Nano с переходником USB-UART. Мы хотим, чтобы AI-агент каждые 5 минут читал температуру и отправлял её в Telegram.
Шаг 1. Подготовка устройства
Загрузите на Arduino скетч, который при получении команды TEMP отправляет по UART значение температуры в формате: TEMP:25.4C\n. Код для Arduino:
#include <SPI.h>
#include <Adafruit_MAX31855.h>
#define CS_PIN 10
Adafruit_MAX31855 thermocouple(CS_PIN);
void setup() {
Serial.begin(115200);
SPI.begin();
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
if (cmd == "TEMP") {
double c = thermocouple.readCelsius();
Serial.print("TEMP:");
Serial.print(c);
Serial.println("C");
}
}
}
Шаг 2. Подключение к ASI Biont
В чате с AI-агентом пишем:
Подключись к COM3 на скорости 115200. Отправляй команду TEMP раз в 5 минут, парси ответ вида TEMP:25.4C, и если температура выше 50°C — отправь уведомление в Telegram (бот: @my_bot, токен: 123:ABC, чат ID: 98765).
AI сам генерирует и выполняет Python-скрипт через execute_python. Пример кода, который напишет AI:
import requests
import time
from datetime import datetime
# Параметры (AI получает их из чата)
TELEGRAM_TOKEN = "123:ABC"
CHAT_ID = "98765"
def get_temperature():
# AI использует industrial_command для отправки команды через bridge
# Здесь показана логика, реальный вызов — через tool call
# industrial_command(protocol='serial', command='serial_write_and_read', data='54454d50')
response = "TEMP:25.4C" # пример ответа от bridge
if response.startswith("TEMP:") and response.endswith("C"):
temp_str = response[5:-1]
return float(temp_str)
return None
def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
data = {"chat_id": CHAT_ID, "text": message}
requests.post(url, data=data)
while True:
temp = get_temperature()
if temp is not None:
timestamp = datetime.now().isoformat()
send_telegram(f"[{timestamp}] Температура: {temp}°C")
if temp > 50:
send_telegram(f"⚠️ Авария! Температура {temp}°C превышает 50°C!")
time.sleep(300)
Важно: в реальном сценарии AI не пишет бесконечный цикл — он использует планировщик (например, schedule или внешний триггер). Здесь код упрощён для демонстрации.
Автоматизация и тренды
SPI-интерфейс идеален для сбора данных с множества датчиков на одной шине. ASI Biont позволяет:
- Собирать историю показаний в CSV или PostgreSQL.
- Строить графики трендов через matplotlib.
- Отправлять отчёты в Telegram по расписанию.
- Интегрировать с другими промышленными протоколами (Modbus, OPC UA) через один AI-агент.
Пример запроса в чате:
Запиши все показания температуры за последние 24 часа в файл temperature_log.csv и построй график тренда.
AI сгенерирует код, который прочитает данные из bridge, запишет в CSV и отобразит график.
Почему это выгодно
- Не нужно писать код. Пользователь описывает задачу на естественном языке — AI пишет Python-скрипт с pyserial, paho-mqtt или paramiko. \n- Подключение за минуты. Не нужно ждать обновлений прошивки или патчей — AI адаптируется к любому устройству. \n- Единый интерфейс. Один AI-агент управляет и SPI-датчиками, и Modbus-контроллерами, и HTTP-розетками.
Заключение
SPI-устройства — это не «чёрный ящик» для AI. С Hardware Bridge и ASI Biont вы можете подключить любой датчик или исполнительный механизм на SPI к облачному AI-агенту за считанные минуты. Попробуйте сами: скачайте bridge.py из дашборда, подключите Arduino с датчиком, и напишите в чат «Прочитай температуру и отправь в Telegram». AI сделает всё остальное.
Попробуйте интеграцию на asibiont.com.
Комментарии