SPI-устройства под управлением AI: как ASI Biont читает датчики и управляет дисплеями через COM-порт и GPIO

Введение

SPI (Serial Peripheral Interface) — один из самых распространённых протоколов для подключения периферийных устройств к микроконтроллерам. Датчики температуры, дисплеи, АЦП, сдвиговые регистры — всё это работает через SPI. Однако написание кода для инициализации, чтения и обработки данных с таких устройств требует времени и глубоких знаний. ASI Biont — AI-агент, который берёт на себя всю эту работу. В этой статье мы разберём, как подключить SPI-устройство к AI-агенту через COM-порт и GPIO, используя реальные сценарии: мониторинг температуры с выводом на дисплей и управление по голосовым командам.

Зачем подключать SPI-устройства к AI-агенту?

SPI-устройства используются повсеместно: от промышленных контроллеров до IoT-датчиков. Традиционная интеграция требует написания прошивки на C/C++, настройки регистров и отладки. ASI Biont позволяет:

  • Автоматизировать сбор данных: AI сам пишет код для чтения SPI-датчиков (температура, давление, освещённость).
  • Интегрировать с внешними сервисами: отправлять данные в Telegram, Google Sheets, базы данных.
  • Управлять через голос: AI может интерпретировать голосовые команды и отправлять SPI-команды на устройство.
  • Не писать код вручную: пользователь описывает задачу в чате, AI генерирует и выполняет код.

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

SPI-устройства сами по себе не имеют сетевого интерфейса. Они подключаются к микроконтроллеру (ESP32, Arduino, Raspberry Pi), который выступает мостом. ASI Biont подключается к этому микроконтроллеру одним из следующих способов:

Способ Описание Устройство-посредник
Hardware Bridge (COM-порт) Пользователь запускает bridge.py на ПК, AI отправляет команды через industrial_command() Arduino / ESP32 через USB-UART
SSH AI подключается по SSH к Raspberry Pi и управляет GPIO через RPi.GPIO или spidev Raspberry Pi
MQTT ESP32 публикует данные с датчиков в MQTT-брокер, AI подписывается и анализирует ESP32 с Wi-Fi
execute_python AI пишет Python-скрипт, который запускается в облаке и взаимодействует с устройством через один из вышеперечисленных способов Универсально

В этой статье мы рассмотрим два сценария: подключение ESP32 с датчиком DHT22 и дисплеем через MQTT, и управление Arduino через Hardware Bridge.

Сценарий 1: Мониторинг температуры с выводом на OLED-дисплей (ESP32 + MQTT)

Что нужно:

  • ESP32 (например, ESP32-WROOM-32)
  • Датчик температуры/влажности DHT22
  • OLED-дисплей 128x64 (SSD1306, SPI-интерфейс)
  • MQTT-брокер (например, Mosquitto, HiveMQ Cloud)
  • ASI Biont (asibiont.com)

Схема подключения

ESP32 GPIO5  → OLED CS
ESP32 GPIO18 → OLED SCK (CLK)
ESP32 GPIO23 → OLED MOSI (DATA)
ESP32 GPIO4  → DHT22 DATA
ESP32 3.3V   → OLED VCC, DHT22 VCC
ESP32 GND    → OLED GND, DHT22 GND

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

import network
import time
import machine
import dht
from machine import Pin, SPI
import ssd1306
from umqtt.simple import MQTTClient

# Настройка Wi-Fi
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect('SSID', 'PASSWORD')
while not wifi.isconnected():
    time.sleep(1)

# Настройка SPI для OLED
spi = SPI(1, baudrate=8000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(23))
cs = Pin(5, Pin.OUT)
dc = Pin(2, Pin.OUT)
rst = Pin(15, Pin.OUT)
oled = ssd1306.SSD1306_SPI(128, 64, spi, dc, rst, cs)

# Датчик DHT22
dht_sensor = dht.DHT22(Pin(4))

# MQTT клиент
client = MQTTClient('esp32_temp', 'broker.hivemq.com', port=1883)
client.connect()

while True:
    dht_sensor.measure()
    temp = dht_sensor.temperature()
    hum = dht_sensor.humidity()

    # Вывод на OLED
    oled.fill(0)
    oled.text('Temp: {} C'.format(temp), 0, 0)
    oled.text('Hum: {} %'.format(hum), 0, 16)
    oled.show()

    # Публикация в MQTT
    payload = '{{"temperature": {}, "humidity": {}}}'.format(temp, hum)
    client.publish('sensors/temperature', payload)

    time.sleep(10)

Интеграция с ASI Biont

Пользователь пишет в чате ASI Biont:

«Подключись к MQTT-брокеру broker.hivemq.com, подпишись на топик sensors/temperature, получай данные с ESP32. Если температура выше 30°C, отправь уведомление в Telegram. Также по команде „покажи температуру“ выведи текущие показания на OLED-дисплей через MQTT publish в топик esp32/command.»

AI генерирует и выполняет следующий Python-скрипт (через execute_python):

import paho.mqtt.client as mqtt
import json
import requests

TELEGRAM_TOKEN = 'YOUR_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'

def on_message(client, userdata, msg):
    data = json.loads(msg.payload)
    temp = data['temperature']
    hum = data['humidity']

    print(f'Получены данные: температура {temp}°C, влажность {hum}%')

    if temp > 30:
        message = f'⚠️ Внимание! Температура превысила 30°C: {temp}°C'
        requests.post(f'https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage', 
                      json={'chat_id': CHAT_ID, 'text': message})

broker = 'broker.hivemq.com'
client = mqtt.Client()
client.on_message = on_message
client.connect(broker, 1883, 60)
client.subscribe('sensors/temperature')
client.loop_forever()

AI также настраивает обработку голосовых команд: когда пользователь говорит «покажи температуру», AI публикует в топик esp32/command сообщение {"cmd": "display_temp"}, а прошивка ESP32 реагирует на это выводом данных на OLED.

Сценарий 2: Управление SPI-АЦП через Hardware Bridge (Arduino + COM-порт)

Что нужно:

  • Arduino Uno или Nano
  • АЦП MCP3208 (SPI, 12 бит, 8 каналов)
  • ПК с Windows/Linux/macOS
  • ASI Biont (asibiont.com)

Схема подключения

Arduino Pin 10 (SS) → MCP3208 CS
Arduino Pin 11 (MOSI) → MCP3208 DIN
Arduino Pin 12 (MISO) → MCP3208 DOUT
Arduino Pin 13 (SCK) → MCP3208 CLK
Arduino 5V → MCP3208 VDD
Arduino GND → MCP3208 VSS, AGND

Прошивка Arduino (C++)

#include <SPI.h>

const int CS_PIN = 10;

void setup() {
  Serial.begin(115200);
  SPI.begin();
  pinMode(CS_PIN, OUTPUT);
  digitalWrite(CS_PIN, HIGH);
}

int readADC(int channel) {
  digitalWrite(CS_PIN, LOW);

  byte command = 0b00000001; // Start bit
  command |= (channel << 4);  // Channel selection (bits 6-4)

  SPI.transfer(command);
  byte high = SPI.transfer(0x00);
  byte low = SPI.transfer(0x00);

  digitalWrite(CS_PIN, HIGH);

  int value = ((high & 0x0F) << 8) | low;
  return value;
}

void loop() {
  if (Serial.available()) {
    char cmd = Serial.read();
    if (cmd == 'r') {
      int channel = Serial.parseInt();
      int value = readADC(channel);
      Serial.println(value);
    }
  }
}

Интеграция с ASI Biont через Hardware Bridge

  1. Пользователь запускает bridge.py на ПК:
python bridge.py --token=YOUR_ASI_TOKEN --ports=COM3 --default-baud=115200
  1. Пользователь пишет в чате ASI Biont:

«Подключись к Arduino через COM3 на скорости 115200. Каждые 5 секунд читай данные с канала 0 АЦП MCP3208. Если значение превышает 2000 (что соответствует примерно 2.5V), отправь уведомление в Telegram. Также по команде „статус АЦП“ выведи все 8 каналов.»

AI использует industrial_command для отправки команд на bridge:

industrial_command(protocol='serial://COM3', command='r0', baud=115200)

AI генерирует скрипт для периодического опроса:

import time
import requests

TELEGRAM_TOKEN = 'YOUR_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'

def send_serial_command(command):
    # AI использует industrial_command для отправки
    # В реальном коде это tool call, но для примера:
    result = industrial_command(protocol='serial://COM3', command=command, baud=115200)
    return result

while True:
    value = int(send_serial_command('r0'))
    voltage = value * 5.0 / 4095.0
    print(f'Канал 0: {value} ({voltage:.2f}V)')

    if value > 2000:
        message = f'⚠️ Напряжение на канале 0 превысило 2.5V: {voltage:.2f}V'
        requests.post(f'https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage',
                      json={'chat_id': CHAT_ID, 'text': message})

    time.sleep(5)

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

  • Экономия времени: AI пишет код за секунды, а не часы.
  • Гибкость: можно подключать любые SPI-устройства без ожидания обновлений.
  • Голосовое управление: интеграция с голосовыми ассистентами через AI.
  • Никаких панелей управления: всё через диалог в чате.

Заключение

SPI-устройства — основа многих embedded-систем. ASI Biont позволяет подключить их к AI-агенту без написания кода вручную. Будь то датчик температуры, АЦП или дисплей — AI сам разберётся с протоколом, напишет код и настроит автоматизацию. Попробуйте интеграцию на asibiont.com и убедитесь, насколько это просто.

← Все статьи

Комментарии

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

Интеграция Banana Pi с AI-агентом ASI Biont: автоматизация на одноплатнике без единой строки кода

14 июля 2026

Telegram Bot Development: как автоматизировать бизнес и заработать на ботах в 2026 году

14 июля 2026

AI-агент оживляет завод: интеграция Modbus RTU (RS-485) с ASI Biont для предиктивного обслуживания

14 июля 2026

Uber не хочет быть «всем для всех»: что на самом деле сказал продакт-директор про отели, роботакси и будущее платформы

14 июля 2026

Курс «Промышленный интернет вещей (IIoT) и системы SCADA»: ваш путь к Индустрии 4.0 в 2026 году

14 июля 2026

ИИ незаметно меняет мнения пользователей в соцсетях: как алгоритмы формируют нашу реальность

14 июля 2026

CKA + CKAD — Kubernetes Administrator & Developer: как подготовиться к сертификации в 2026 году с AI-тьютором

14 июля 2026

Как перестать терять сделки из-за языка: обзор курса «Английский для бизнеса» на asibiont.com

14 июля 2026

Трансформационное лидерство и стратегическое мышление CEO: Программа для основателей на уровне Гарварда, желающих овладеть принятием решений

14 июля 2026