Введение
Шаговые двигатели — основа точного позиционирования в 3D-принтерах, станках с ЧПУ, роботах и лазерных граверах. Драйверы A4988 и TMC2209 — самые популярные бюджетные решения для управления такими двигателями. Обычно для настройки перемещений нужно писать код на C++ для Arduino или G-код для контроллера, а затем вручную загружать его. Но что, если этим займётся AI-агент, которому достаточно описать задачу на естественном языке?
ASI Biont — AI-агент, который подключается к любому оборудованию через диалог в чате. Вы просто говорите: «Подключись к моему станку через COM3, отправь G-код для прямоугольника», — и AI сам пишет код интеграции, используя Hardware Bridge или execute_python. Никаких панелей управления, никаких кнопок «добавить устройство» — только чат.
В этой статье разберём реальный сценарий: подключение шагового двигателя с драйвером A4988 к ASI Biont через COM-порт (Arduino) и по MQTT (ESP32), примеры кода и автоматизации.
Почему именно COM-порт и MQTT?
ASI Biont поддерживает несколько протоколов для промышленного оборудования. Для шаговых двигателей наиболее практичны два варианта:
| Способ | Устройство | Преимущества |
|---|---|---|
| COM-порт через Hardware Bridge | Arduino/STM32 с драйвером | Прямое управление, минимальные задержки, работа с G-кодом |
| MQTT через execute_python | ESP32 + драйвер TMC2209 | Беспроводное управление, интеграция с IoT-датчиками |
Hardware Bridge — это bridge.py, который вы скачиваете из дашборда ASI Biont (Devices → Create API Key). Он запускается на вашем ПК, подключается к облаку через WebSocket и открывает доступ к локальным COM-портам. AI отправляет команды через industrial_command, bridge пишет их в порт и возвращает ответ.
Второй способ — AI пишет Python-скрипт с paho-mqtt, который выполняется в sandbox-окружении ASI Biont (execute_python). Скрипт подключается к вашему MQTT-брокеру (например, Mosquitto) и обменивается сообщениями с ESP32.
Реальный сценарий: управление шаговым двигателем через ChatGPT-подобный интерфейс
Проблема
Инженеру нужно быстро проверить работу двигателя после сборки. Он хочет отправить несколько команд: повернуть на 200 шагов, изменить скорость, остановить при превышении температуры. Раньше он писал Arduino-скетч, компилировал, заливал, запускал монитор порта и вводил команды вручную. Это занимало 15–20 минут.
Решение с ASI Biont
Пользователь запускает bridge.py, указывает токен и порт:
pip install pyserial requests websockets
python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud 115200
Затем в чате ASI Biont пишет:
Подключись к COM3, скорость 115200. Я хочу управлять шаговым двигателем A4988 через Arduino. Команды: MOVE 200 (шаги), SPEED 500 (шагов/сек), STOP. Проверь связь командой HELP.
AI автоматически использует industrial_command с протоколом serial://:
industrial_command(
protocol='serial://',
command='serial_write_and_read',
params={
'port': 'COM3',
'baudrate': 115200,
'data': '48454c500a' # HEX для HELP\n
}
)
Bridge отправляет HELP\n, Arduino отвечает списком команд. AI понимает, что устройство готово, и предлагает пользователю:
Связь установлена. Хотите повернуть двигатель на 200 шагов? Отправляю MOVE 200.
После подтверждения AI отправляет MOVE 200\n и читает ответ (например, OK\n).
Пример кода для Arduino
На стороне микроконтроллера достаточно простого скетча, который слушает Serial и выполняет команды. Вот минимальный пример с библиотекой AccelStepper:
#include <AccelStepper.h>
#define STEP_PIN 2
#define DIR_PIN 3
#define ENABLE_PIN 4
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
void setup() {
Serial.begin(115200);
pinMode(ENABLE_PIN, OUTPUT);
digitalWrite(ENABLE_PIN, LOW); // включить драйвер
stepper.setMaxSpeed(1000);
stepper.setSpeed(500);
}
void loop() {
if (Serial.available()) {
String cmd = Serial.readStringUntil('\n');
cmd.trim();
if (cmd.startsWith("MOVE ")) {
int steps = cmd.substring(5).toInt();
stepper.move(steps);
Serial.println("OK");
} else if (cmd.startsWith("SPEED ")) {
int speed = cmd.substring(6).toInt();
stepper.setSpeed(speed);
Serial.println("OK");
} else if (cmd == "STOP") {
stepper.stop();
Serial.println("OK");
} else if (cmd == "HELP") {
Serial.println("MOVE, SPEED, STOP");
} else {
Serial.println("ERR");
}
}
stepper.runSpeedToPosition();
}
Этот код заливается в Arduino один раз. Всё дальнейшее управление — через чат с AI.
Расширенные сценарии автоматизации
Мониторинг температуры драйвера TMC2209
Драйвер TMC2209 имеет встроенный датчик температуры. Подключив его к аналоговому пину ESP32, можно отправлять данные по MQTT. ASI Biont через execute_python подписывается на топик sensor/temp и при превышении 80°C автоматически отправляет команду STOP.
Пример скрипта, который сгенерирует AI по запросу «Следи за температурой TMC2209 по MQTT, и при перегреве останавливай двигатель»:
import paho.mqtt.client as mqtt
import time
import json
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
temp = data['temperature']
if temp > 80:
# публикуем команду остановки
client.publish('motor/cmd', 'STOP')
print(f"Стоп! Температура {temp}°C превышена")
client = mqtt.Client()
client.on_message = on_message
client.connect("broker.emqx.io", 1883, 60)
client.subscribe("sensor/temp")
client.loop_start()
time.sleep(60) # слушаем 60 секунд (таймаут sandbox 30 сек, можно меньше)
client.loop_stop()
Голосовое управление через Telegram
Добавив интеграцию с Telegram-ботом (через requests), пользователь может говорить голосом в бот, а AI транслировать команды двигателю. Например, «Поверни на 90 градусов» преобразуется в расчёт шагов и отправку MOVE.
Почему это выгодно?
- Экономия времени: интеграция занимает секунды вместо часов написания кода.
- Гибкость: не нужно ждать обновлений прошивки — AI адаптируется под любое устройство с COM, MQTT, Modbus и т.д.
- Безопасность: bridge работает локально, данные не покидают вашу сеть.
Заключение
Шаговые двигатели A4988 и TMC2209 — идеальные кандидаты для интеграции с AI-агентом. ASI Biont позволяет управлять ими через простой чат, автоматизировать мониторинг и реагировать на события без написания сложного кода. Попробуйте сами: скачайте bridge из дашборда, подключите Arduino или ESP32 и напишите в чат: «Хочу управлять шаговым двигателем». ASI Biont сделает всё остальное.
Использованные источники: Datasheet A4988 (Allegro), TMC2209 (Trinamic), документация AccelStepper, документация ASI Biont по Hardware Bridge.
Комментарии