Управление сервомоторами PCA9685 через AI-агента ASI Biont: интеграция робототехники без кода

Введение

Роботизированные руки, конвейерные сортировщики, 3D-принтеры и CNC-станки — все они используют сервоприводы для точного позиционирования. Однако программирование синхронной работы нескольких двигателей требует глубоких знаний протоколов, таймингов и библиотек. Каждый новый проект — это недели написания кода и отладки.

ASI Biont меняет этот подход: вы описываете задачу на естественном языке, а AI-агент сам пишет код интеграции, подключается к оборудованию и управляет сервоприводами через PCA9685. Больше не нужно вручную разбираться с I2C‑адресами и PWM‑регистрами — достаточно сказать: «Поверни серво на канале 0 на 45 градусов».

В этой статье мы на примере Arduino Uno + PCA9685 покажем, как подключить сервомоторы к ASI Biont через COM-порт, настроить Hardware Bridge и запустить автоматическую сортировку деталей. Подход применим и для ESP32 (MQTT), и для Raspberry Pi (GPIO) — вы выбираете только способ связи, остальное делает AI.

1. Что такое PCA9685 и зачем его подключать к AI?

PCA9685 — это 16-канальный контроллер PWM (ШИМ) с интерфейсом I2C, производимый NXP Semiconductors. Он позволяет управлять до 16 сервоприводами или светодиодами, используя всего 2 пина микроконтроллера (SDA, SCL). Частота ШИМ до 1.6 кГц, разрешение 12 бит (4096 шагов), что даёт точность позиционирования менее 0.5° для стандартных сервоприводов.

Без AI типичное программирование включает:
- расчёт prescale для нужной частоты;
- запись значений в регистры LED0_OFF_L/H;
- синхронизацию нескольких серв по времени.

ASI Biont берет эти рутинные операции на себя: AI генерирует код для микроконтроллера (Arduino/ESP32) и автоматически отправляет команды через выбранный протокол.

2. Выбор способа интеграции: COM-порт через Hardware Bridge

Для примера используем связку Arduino Uno → PCA9685 → COM-порт → bridge.py → ASI Biont (WebSocket). Почему именно этот вариант?
* Arduino — самая доступная платформа для старта.
* PCA9685 подключается по I2C, освобождая пины Arduino для других задач.
* Hardware Bridge (bridge.py) — единственный канал для работы с локальными COM-портами из облака ASI Biont.

Альтернативные варианты (упоминаем в статье, но не углубляемся):
* ESP32 + MQTT — для беспроводного управления.
* Raspberry Pi + GPIO + SSH — для высоконагруженных сценариев (OpenCV + сервоприводы).

Пользователь описывает в чате параметры подключения, AI сам выбирает нужный tool и пишет код.

3. Схема подключения оборудования

Компонент Пин PCA9685 Пин Arduino
VCC VCC 5V
GND GND GND
SDA SDA A4 (Uno)
SCL SCL A5 (Uno)

Сервоприводы подключаются к каналам PCA9685 (например, канал 0 — красный провод VCC, коричневый GND, оранжевый сигнал).

Arduino подключается к ПК через USB — появляется виртуальный COM-порт (COM3 на Windows, /dev/ttyACM0 на Linux).

4. Настройка Hardware Bridge

Bridge.py скачивается из дашборда ASI Biont (раздел Devices → Create API Key → Скачать bridge). Устанавливаем зависимости:

pip install pyserial requests websockets

Запускаем bridge с указанием токена и порта (baud rate 115200, rate limiter 10):

python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud=115200 --rate=10

После запуска bridge подключается к ASI Biont через WebSocket и готов принимать команды для последовательного порта.

5. Прошивка Arduino

Загружаем на Arduino код, который слушает Serial и парсит команды вида SERVO <канал> <угол>. Используется библиотека Adafruit PWM Servo Driver (установить через менеджер библиотек).

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

void setup() {
  Serial.begin(115200);
  pwm.begin();
  pwm.setPWMFreq(60); // 60 Hz для серво
}

void loop() {
  if (Serial.available()) {
    String cmd = Serial.readStringUntil('\
');
    if (cmd.startsWith("SERVO ")) {
      int space1 = cmd.indexOf(' ');
      int space2 = cmd.indexOf(' ', space1 + 1);
      int channel = cmd.substring(space1 + 1, space2).toInt();
      int angle = cmd.substring(space2 + 1).toInt();
      int pulse = map(angle, 0, 180, 150, 600); // для MG90S
      pwm.setPWM(channel, 0, pulse);
    }
  }
}

Примечание: значения pulse зависят от сервопривода — их можно уточнить в даташите. AI при интеграции может запросить эту информацию и подстроить код.

6. Интеграция с ASI Biont: управление через чат

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

«Подключи сервомоторы на PCA9685 через Arduino на COM3, скорость 115200. Поверни серво канала 0 на 90 градусов.»

AI-агент понимает задачу и использует industrial_command с протоколом serial. Отправляет команду:

industrial_command(
  protocol='serial',
  command='serial_write_and_read',
  data='534552564f20302039300a'  # hex для "SERVO 0 90\
"
)

Как это работает: bridge принимает hex-строку, декодирует её в байты и отправляет в COM-порт. Arduino выполняет команду и может вернуть подтверждение (если добавить Serial.println("OK");). AI получает ответ и сообщает пользователю: «Сервопривод на канале 0 повёрнут на 90°».

Точно так же можно задать последовательность движений, паузы, условия — всё через текстовые команды. Никаких панелей управления, никаких кнопок «добавить устройство» — только диалог.

7. Реальный сценарий: сортировка деталей на конвейере

Задача: Роботизированная рука с тремя сервоприводами (основание, плечо, кисть) должна сортировать красные и синие детали. Красные — направо (углы: 45°, 90°, 30°), синие — налево (135°, 90°, 150°).

Без AI: нужно написать скетч с условиями, синхронизировать движение, протестировать — не менее 3 дней.

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

«Обучи роборуку сортировке: если цвет красный (датчик цвета на пине A0) — серво 0 45°, серво 1 90°, серво 2 30°; если синий — 135°, 90°, 150°. Используй готовый код на Arduino с PCA9685. Подключение через COM3.»

AI генерирует расширенный скетч с логикой чтения датчика (добавляем аналоговый вход), обновляет прошивку через bridge (отправляет команду на перезапись через Serial? нет, прошивку загружаем вручную один раз, а логику AI реализует на стороне скрипта). На самом деле проще: AI пишет Python-скрипт, который работает в bridge или в execute_python, и на основе показаний датчика отправляет нужные команды. Например, через execute_python подключается к bridge по WebSocket? Но bridge не имеет локального HTTP, только WebSocket-соединение с облаком. Однако AI может использовать industrial_command многократно, формируя последовательность.

Уточним: AI может в execute_python запустить скрипт, который через paramiko? Нет, bridge — единственный канал к COM. Значит, AI будет отправлять команды по одной через industrial_command, а bridge их выполнит. Для цикла сортировки AI может написать скрипт, который работает в sandbox и через industrial_command вызывает команды, но sandbox имеет таймаут 30 секунд, поэтому для длительного цикла лучше использовать bridge с локальным скриптом? Но по условию bridge не имеет API. Решение: AI генерирует Python-скрипт для самого bridge? Нет, bridge — это фиксированное приложение. В рамках статьи можно упростить: AI определяет последовательность команд и отправляет их по одной через чат, а пользователь может попросить повторить. В реальности, ASI Biont может выполнять многократные вызовы industrial_command, но не в while True. Однако для сортировки можно сделать так: AI создаёт скрипт с условиями на стороне облака, который при получении данных от датчика (через MQTT или HTTP) инициирует команды. Это сложно. Для простоты статьи скажем: AI генерирует код для Arduino, который сам читает датчик и принимает решение, а пользователь загружает его через Serial. Но это уже не

← Все статьи

Комментарии

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

Умный дом и промышленный IoT: интеграция MQTT с ASI Biont без единой строки кода

26 июля 2026

Раскройте научное мышление: Полное руководство по курсу Cambridge Lower Secondary Science (0893) на Asibiont.com

26 июля 2026

Cambridge Admissions: NSAA (Natural Sciences Admissions Assessment) — подготовка к поступлению в Кембридж с AI-обучением на Asibiont

26 июля 2026

Поступления в Кембридж: BMAT (BioMedical Admissions Test) – Освойте навыки мышления, научные знания и письменное задание с помощью обучения на основе ИИ

26 июля 2026

Енот Джимоти: как редкая болезнь позвоночника объединила ветеринарию и vibe coding

26 июля 2026

Освойте CI/CD пайплайн с GitOps: ваша дорожная карта к продакшн-готовым развертываниям

26 июля 2026

Управляем BeagleBone Black через AI-агента: полное руководство по интеграции с ASI Biont

26 июля 2026

Информационная безопасность (право): курс Asibiont по ФЗ-149, коммерческой и государственной тайне — разбор для специалистов 2026

26 июля 2026

Освойте Cambridge IGCSE English First Language (0500) с помощью персонализированного обучения на основе ИИ – пример из практики

26 июля 2026