Введение
Робототехника прочно вошла в нашу жизнь: от промышленных манипуляторов на заводах до образовательных наборов и домашних проектов. Однако управление даже простыми сервоприводами часто требует написания кода, настройки протоколов и постоянного контроля. А если нужно изменить угол поворота или запустить новую последовательность движений удалённо? Приходится заново открывать IDE, компилировать скетч или писать REST-клиент. Это замедляет итерации и ограничивает гибкость.
AI-агент ASI Biont решает эту проблему кардинально: вы просто описываете в чате, что нужно сделать, и агент сам генерирует код интеграции, подключается к вашему оборудованию и выполняет задачу. В этой статье мы разберём, как подключить популярный драйвер сервоприводов PCA9685 (на базе I2C) к ASI Biont тремя разными способами: через SSH на Raspberry Pi, через COM-порт с Arduino и через MQTT на ESP32. В каждом случае вы получите готовый сценарий, пример кода и пошаговую инструкцию.
Что такое PCA9685 и зачем его подключать к AI?
PCA9685 — это 16-канальный ШИМ-контроллер с интерфейсом I2C, который позволяет управлять до 16 сервоприводами одновременно, используя всего два провода (SDA, SCL) и питание. Он широко применяется в роботах-манипуляторах, шагающих платформах, системах автоматизации и аниматронике. Без AI настройка углов и временных задержек требует ручного программирования микроконтроллера. С ASI Biont вы можете:
- Задавать углы поворота голосом или текстом.
- Создавать сложные хореографии движений одной фразой.
- Автоматизировать процессы, например, сортировку деталей по цвету на конвейере.
- Управлять роботом из любой точки мира через чат.
Как ASI Biont подключается к устройствам?
ASI Biont работает в облаке, поэтому для связи с локальным оборудованием использует один из прокси-каналов:
| Способ | Когда применять | Типичное оборудование |
|---|---|---|
| SSH (через paramiko) | Устройство имеет сетевой доступ и SSH-сервер | Raspberry Pi, Orange Pi, серверы |
| COM-порт (через Hardware Bridge) | Устройство подключено по USB/RS-232/RS-485 к ПК | Arduino, ESP32 (в режиме USB-Serial), PLC |
| MQTT (через paho-mqtt) | Устройство подписано на MQTT-брокер | ESP32, умные розетки, датчики |
| execute_python (универсальный) | Прямой запуск Python-скрипта в облаке | Любое устройство, доступное через библиотеки (HTTP, Modbus, OPC UA и др.) |
Выбор способа зависит от вашего сценария. Рассмотрим три конкретных примера подключения PCA9685.
Сценарий 1: Raspberry Pi + PCA9685 (SSH)
Это классическая связка для прототипов: на Raspberry Pi установлена библиотека Adafruit CircuitPython ServoKit, которая через I2C управляет PCA9685. ASI Biont подключается по SSH, выполняет Python-скрипт и устанавливает нужный угол.
Что нужно сделать в чате
Пользователь: «Подключись по SSH к Raspberry Pi (192.168.1.100, логин pi, пароль raspberry) и поверни сервопривод на канале 0 в 90 градусов. Библиотека ServoKit уже установлена.»
Код, который сгенерирует AI
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='pi', password='raspberry')
# Скрипт, который выполнится на Raspberry Pi
command = """
from adafruit_servokit import ServoKit
import board
kit = ServoKit(channels=16)
kit.servo[0].angle = 90
print("Servo 0 set to 90 degrees")
"""
stdin, stdout, stderr = ssh.exec_command(f"python3 -c '{command}'")
print(stdout.read().decode())
print(stderr.read().decode())
ssh.close()
Этот код выполняется в sandbox ASI Biont (через execute_python). AI видит вывод и подтверждает успех.
Что происходит на стороне Raspberry Pi
Процесс:
1. Пользователь заранее установил зависимости на Raspberry: pip3 install adafruit-circuitpython-servokit.
2. PCA9685 подключён по I2C к контактам SDA (GPIO2) и SCL (GPIO3) с питанием 5 В.
3. AI создаёт SSH-соединение, отправляет скрипт и получает результат.
Результат: сервопривод сразу поворачивается на 90°. Никакого ручного копирования файлов или конфигурации.
Сценарий 2: Arduino + PCA9685 (COM-порт через Hardware Bridge)
Arduino — идеальный контроллер для простых задач, но он не имеет встроенного Wi-Fi. Управлять им удалённо можно через USB-COM порт. Для этого ASI Biont использует Hardware Bridge — небольшое приложение bridge.py, которое запускается на вашем ПК и связывает облако с локальным COM-портом.
Подготовка
- Скачайте
bridge.pyиз дашборда ASI Biont (Devices → Create API Key). - Запустите bridge:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud 115200. - Загрузите в Arduino прошивку, которая обрабатывает команды вида
S<канал>:<угол>\n. Пример прошивки:
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
void setup() {
Serial.begin(115200);
pwm.begin();
pwm.setPWMFreq(60);
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
if (cmd.startsWith("S")) {
int colon = cmd.indexOf(':');
int channel = cmd.substring(1, colon).toInt();
int angle = cmd.substring(colon + 1).toInt();
int pulse = map(angle, 0, 180, 150, 600);
pwm.setPWM(channel, 0, pulse);
Serial.println("OK");
}
}
}
Команда от AI
Пользователь пишет в чате: «Отправь на COM3 команду S0:90, чтобы повернуть сервопривод на 90 градусов». AI формирует вызов инструмента:
industrial_command(protocol='serial', command='serial_write_and_read', params={'port': 'COM3', 'baud': 115200, 'data': '53303a39300a'})
Здесь 53303a39300a — hex-представление строки S0:90\n. Bridge получает команду через WebSocket, пишет в COM-порт и мгновенно читает ответ („OK“).
Преимущество: вся логика на стороне AI — он сам решает, какую строку и в каком формате отправить. Пользователю не нужно программировать Arduino дополнительно.
Сценарий 3: ESP32 + PCA9685 (MQTT)
ESP32 с Wi-Fi — популярный выбор для IoT. Он может подписаться на MQTT-топик и управлять сервоприводами по командам из облака. ASI Biont напрямую публикует сообщения в MQTT-брокер.
Прошивка ESP32 (Arduino-ide)
#include <WiFi.h>
#include <PubSubClient.h>
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
const char* ssid = "ваш_ssid";
const char* password = "ваш_пароль";
const char* mqtt_server = "broker.hivemq.com";
WiFiClient espClient;
PubSubClient client(espClient);
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
void callback(char* topic, byte* message, unsigned int length) {
String msg = String((char*)message).substring(0, length);
// ожидаем JSON вида {"channel":0,"angle":90}
int ch = 0, ang = 90;
// упрощённый парсинг (в реальности используйте ArduinoJson)
if (msg.indexOf("channel":) != -1) {
int chPos = msg.indexOf("channel":) + 9;
int chEnd = msg.indexOf(',', chPos);
ch = msg.substring(chPos, chEnd).toInt();
int angPos = msg.indexOf("angle":) + 7;
int angEnd = msg.indexOf('}', angPos);
ang = msg.substring(angPos, angEnd).toInt();
}
int pulse = map(ang, 0, 180, 150, 600);
pwm.setPWM(ch, 0, pulse);
}
void setup() {
Serial.begin(115200);
pwm.begin();
pwm.setPWMFreq(60);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
client.connect("ESP32_Servo");
client.subscribe("servo/command");
}
void loop() {
client.loop();
}
Команда от AI через execute_python
Пользователь: «Опубликуй в MQTT (брокер broker.hivemq.com, топик servo/command) команду повернуть серво 0 на 90 градусов». AI генерирует и выполняет такой скрипт:
import paho.mqtt.client as mqtt
import json
client = mqtt.Client()
client.connect("broker.hivemq.com", 1883, 60)
msg = json.dumps({"channel": 0, "angle": 90})
client.publish("servo/command", msg)
client.disconnect()
print("Command published")
ESP32 получает сообщение, парсит JSON и устанавливает угол. Весь цикл занимает доли секунды.
Универсальность execute_python
Во всех трёх сценариях AI использует механизм execute_python — песочницу, где выполняются скрипты со всеми необходимыми библиотеками (pyserial, paramiko, paho-mqtt, aiohttp, pymodbus и т.д.). Это значит, что вы не ограничены предустановленными драйверами: ASI Biont может подключиться к любому устройству, если для него есть Python-библиотека. Просто опишите в чате:
«Подключись к моему контроллеру через Modbus TCP по адресу 192.168.1.10:502, прочитай регистр 100 и запиши туда значение 42.»
AI сам напишет код с pymodbus, выполнит его и вернёт результат. Никаких панелей управления или кнопок — только диалог.
Почему это выгодно?
- Скорость разработки. Не нужно писать код вручную — AI делает это за секунды. По нашим наблюдениям, время настройки типового сценария с сервоприводами сокращается в несколько раз.
- Удалённое управление. Вы можете менять углы и последовательности движений из любой точки мира, просто отправляя сообщения в чат.
- Гибкость. Легко комбинировать сервоприводы с датчиками, камерами и другими устройствами. Например, AI может анализировать видео с камеры и на основе распознавания объектов управлять роборукой.
- Отсутствие vendor lock-in. ASI Biont не привязан к конкретному производителю — он работает с любым оборудованием, которое имеет стандартный интерфейс (UART, I2C, SPI, Ethernet, Wi-Fi).
Заключение
Интеграция сервоприводов PCA9685 с AI-агентом ASI Biont открывает простой и элегантный способ управлять робототехникой. Вы больше не пишете код вручную — достаточно описать задачу на естественном языке. Хотите повернуть камеру на 30 градусов? Скажите об этом в чате. Нужно запустить сложную последовательность сортировки деталей? Опишите условия, и AI сгенерирует всю логику.
Попробуйте сами! Перейдите на asibiont.com, создайте API-ключ, скачайте bridge.py или подключите свой Raspberry Pi по SSH, и начните управлять роботами с помощью текста и голоса.
Комментарии