Введение
SPI (Serial Peripheral Interface) — один из самых распространённых последовательных интерфейсов во встраиваемой электронике. По данным NXP Semiconductors, SPI используется более чем в 80% микроконтроллерных проектов: от датчиков температуры и давления до дисплеев и SD-карт. Но как сделать так, чтобы эти устройства не просто передавали данные, а взаимодействовали с AI-агентом, который анализирует показания, принимает решения и управляет оборудованием без участия человека?
ASI Biont решает эту задачу: AI-агент подключается к SPI-устройствам через Hardware Bridge, пишет код на Python и выполняет интеграцию за секунды. В этой статье мы разберём конкретный механизм подключения, пример кода и сценарий автоматизации сбора данных с SPI-сенсора.
Как ASI Biont подключается к SPI-устройствам?
SPI — это проводной интерфейс, который чаще всего работает через GPIO микроконтроллера (например, Raspberry Pi, ESP32, Arduino) или через COM-порт с преобразователем. ASI Biont использует два основных способа для интеграции с SPI-устройствами:
-
Hardware Bridge (bridge.py) — если SPI-устройство подключено к ПК через USB-преобразователь (например, FT232H) или к Arduino/STM32, которые передают данные по COM-порту. Пользователь запускает bridge.py на своём компьютере, указывает порт и baud rate. AI отправляет команды через
industrial_commandс протоколомserial://илиarduino://, bridge читает/пишет данные локально. -
SSH (execute_python с paramiko) — если SPI-устройство подключено к Raspberry Pi или другому одноплатнику. AI пишет Python-скрипт, который через SSH выполняет код на устройстве, используя библиотеку
spidevдля работы с шиной SPI.
Почему именно эти способы? SPI не имеет стандартного сетевого протокола (как MQTT или Modbus), поэтому необходим bridge или SSH для доступа к аппаратным пинам. ASI Biont автоматически выбирает нужный метод на основе описания пользователя.
Конкретный сценарий: сбор данных с SPI-датчика температуры (MAX31855) на Raspberry Pi
Задача: Подключить термопару через SPI-интерфейс к Raspberry Pi, чтобы AI-агент ASI Biont каждые 5 минут считывал температуру, анализировал тренды и отправлял уведомление в Telegram, если температура превышает 80°C.
Оборудование:
- Raspberry Pi 4 (Raspberry Pi OS)
- Датчик MAX31855 (SPI-интерфейс, работает с термопарой типа K)
- Соединение: MISO → GPIO 9, MOSI → GPIO 10, SCLK → GPIO 11, CS → GPIO 8
Пошаговая интеграция через ASI Biont:
-
Пользователь описывает задачу в чате:
«Подключись к Raspberry Pi по SSH (IP: 192.168.1.100, логин: pi, пароль: raspberry). Настрой SPI-устройство MAX31855 на GPIO 8 (CS). Каждые 300 секунд считывай температуру, логируй в CSV и отправляй в Telegram @my_bot, если температура > 80°C.»
-
AI-агент пишет и выполняет код (execute_python с paramiko и spidev):
```python
import paramiko
import time
import csv
import requests
from io import StringIO
# Подключение по SSH
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='pi', password='raspberry')
# Создание Python-скрипта на Raspberry Pi
script = '''
import spidev
import time
import csv
import requests
spi = spidev.SpiDev()
spi.open(0, 0) # bus 0, device 0 (CS на GPIO 8)
spi.max_speed_hz = 1000000
def read_temp():
raw = spi.xfer2([0x00, 0x00, 0x00, 0x00])
data = (raw[0] << 24)
| (raw[1] << 16) | (raw[2] << 8) | raw[3]
if data & 0x80000000:
data = ~data & 0xFFFFFFFF
temp = (data >> 18) * 0.25 * -1
else:
temp = (data >> 18) * 0.25
return round(temp, 2)
TELEGRAM_TOKEN = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
CHAT_ID = "-1001234567890"
while True:
temp = read_temp()
with open('/home/pi/temp_log.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow([time.time(), temp])
if temp > 80:
msg = f"⚠️ Температура превысила 80°C: {temp}°C"
requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": msg})
time.sleep(300)
'''
# Загрузка и запуск скрипта на Raspberry Pi
with ssh.open_sftp() as sftp:
with sftp.open('/home/pi/spi_temp.py', 'w') as f:
f.write(script)
ssh.exec_command('nohup python3 /home/pi/spi_temp.py &')
ssh.close()
```
Важно: sandbox execute_python имеет таймаут 30 секунд, поэтому AI не запускает бесконечный цикл локально, а отправляет скрипт на Raspberry Pi через SSH, где он выполняется независимо.
- Результат:
- AI-агент подключился к Raspberry Pi по SSH, настроил SPI, создал скрипт и запустил его в фоне.
- Каждые 5 минут данные записываются в
/home/pi/temp_log.csv. - При превышении 80°C приходит уведомление в Telegram.
- Пользователь может в любой момент запросить в чате: «Покажи последние 10 записей температуры» — AI прочитает CSV через SSH и вернёт данные.
Почему это выгодно?
- Нет ручного кодирования: пользователь не пишет ни строчки кода — всё делает AI.
- Универсальность: ASI Biont подключается к любому SPI-устройству через execute_python, поддерживая spidev, RPi.GPIO, pigpio и любые Python-библиотеки.
- Мгновенная интеграция: не нужно ждать обновлений прошивки или специальных драйверов — AI адаптирует код под конкретное устройство.
Заключение
SPI-интерфейс остаётся стандартом для миллионов сенсоров, дисплеев и карт памяти. Интеграция с AI-агентом ASI Biont превращает эти устройства в интеллектуальные узлы автоматизации: от мониторинга температуры до управления производственными линиями. Попробуйте сами — подключите своё SPI-устройство к ASI Biont на asibiont.com и оцените, как AI берёт на себя всю техническую работу.
Комментарии