Как подключить CNC-станок (GRBL/Marlin) к AI-агенту ASI Biont: автоматизация G-кода без программирования

Введение

CNC-станки на базе прошивок GRBL (Arduino) и Marlin (3D-принтеры/ЧПУ) — основа современной мелкосерийной обработки. Однако ручное написание G-кода, мониторинг состояния шпинделя и коррекция траекторий требуют квалификации и времени. AI-агент ASI Biont решает эту проблему: вы просто описываете в чате, что нужно сделать — и агент сам генерирует G-код, отправляет его на станок через последовательный порт (Hardware Bridge), следит за выполнением и оповещает об ошибках. В статье разберём, как за 10 минут связать CNC-станок с AI-агентом и превратить его в «умный» станок с голосовым/текстовым управлением.

1. Что такое CNC-станок с GRBL/Marlin и зачем подключать к AI?

GRBL — open-source прошивка для контроллеров на Arduino, управляющая шаговыми двигателями по G-коду. Используется в гравировальных, фрезерных и лазерных станках. Marlin — более функциональная прошивка, популярна в 3D-принтерах, но также применяется в ЧПУ-станках. Обе прошивки принимают команды через последовательный порт (USB‑UART) и возвращают статусы (ok, error:..., позиции).

Зачем подключать к AI?
- Автоматическая генерация G-кода: вместо ручного написания «G00X10Y10Z5» вы пишете «сделай квадрат 50×50 мм с глубиной 2 мм» — AI с помощью LLM формирует нужные строки.
- Удалённый мониторинг: AI опрашивает станок каждые N секунд, логирует координаты, температуру шпинделя, фиксирует ошибки.
- Автоматизация цепочек: «обработай деталь A, затем отправь уведомление в Telegram, включи подсветку через MQTT».
- Интеграция с CAD/CAM: AI может сконвертировать SVG/DFX в G-код (через скрипты с библиотеками типа svg‑to‑gcode) и сразу отправить на станок.

2. Как ASI Biont подключается к CNC-станку?

Устройства на GRBL/Marlin общаются по последовательному порту (RS-232 через USB). ASI Biont подключается к ним двумя основными способами:

Способ Когда использовать Что требуется
Hardware Bridge (COM-порт) ПК напрямую подключен к станку через USB bridge.py на том же ПК, Python 3.10+, websockets+pyserial
SSH + локальный агент Станок подключён к Raspberry Pi / Jetson Nano по UART Доступ к Pi по SSH, на Pi установлен pyserial
MQTT / HTTP Станок оснащён ESP32 с прошивкой, ретранслирующей команды (редко) MQTT-брокер или HTTP API

На практике чаще всего используется Hardware Bridge — приложение, которое пользователь запускает на своём компьютере. Оно создаёт постоянное WebSocket-соединение с облаком ASI Biont и транслирует команды от AI в COM-порт. AI не имеет прямого доступа к порту (из-за безопасности облачной среды), поэтому bridge выступает доверенным посредником.

Установка и запуск bridge

  1. Зайдите в дашборд ASI Biont → DevicesCreate API Key → скачайте bridge.py.
  2. Установите зависимости: pip install pyserial requests websockets.
  3. Запустите bridge с параметрами вашего порта:
    bash python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud=115200
    На Linux порт будет /dev/ttyUSB0. Можно указать несколько портов через запятую.
  4. Bridge подключается к облаку и теперь готов принимать команды.

3. Управление станком через чат: примеры сценариев

3.1. Отправка G-кода одной командой

Пользователь пишет в чате: «Отправь на станок команду G90 (абсолютное позиционирование) и передвинь шпиндель в точку X=10 Y=20».

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

# Шаг 1: переключение в абсолютный режим
industrial_command(
    protocol="serial",
    command="serial_write_and_read",
    data="4739300d0a"  # hex для "G90\\r\
"
)

# Шаг 2: движение в точку
industrial_command(
    protocol="serial",
    command="serial_write_and_read",
    data="4730305831305932300d0a"  # hex для "G00X10Y20\\r\
"
)

Как это работает? Bridge получает команду, преобразует hex-строку в байты через _parse_data_field(), отправляет в COM-порт через pyserial и сразу читает ответ (обычно ok или error:...). Ответ возвращается AI, который показывает его пользователю. Если станок не ответил в течение тайм-аута, bridge возвращает Error: timeout.

3.2. Чтение текущей позиции (опрос статуса)

GRBL/Marlin поддерживают команду ? (знак вопроса), возвращающую `<Idle

|Run|Hold|...|WPos:10.0,20.0,5.0|...>`.

AI может выполнять опрос через serial_write_and_read:

response = industrial_command(
    protocol="serial",
    command="serial_write_and_read",
    data="3f0d0a"  # hex для "?\\r\
"
)
# Парсим ответ в коде execute_python (если нужно дальше анализировать)

3.3. Автоматизация задачи по расписанию (с использованием execute_python)

Допустим, вам нужно каждые 10 минут проверять, не произошла ли ошибка на станке, и при появлении ALARM:... отправлять уведомление в Telegram.

AI пишет execute_python-скрипт (запускается в sandbox-окружении ASI Biont, таймаут 30 секунд):

import requests

# Функция отправки в Telegram (реальный токен и chat_id должны быть заданы пользователем)
def send_telegram(text):
    url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
    requests.post(url, json={"chat_id": CHAT_ID, "text": text})

# Симулируем опрос (на практике надо через industrial_command, но в этом скрипте его нет;
# лучше использовать комбинацию: ранее сохранённый ответ)
# Показываем логику:
last_response = "<Idle

|MPos:...|...>"  # допустим, получен ранее
if "ALARM" in last_response:
    send_telegram(f"Станок сообщил об ошибке: {last_response}")

Этот скрипт выполняется однократно; для периодического запуска используются расписания (cron-подобная система, встроенная в ASI Biont, настраиваемая через чат).

3.4. Генерация G-кода из текстового описания

Пользователь: «Напиши G-код для фрезеровки прямоугольника 100×60 мм, глубина 0.5 мм, центр в X=0 Y=0, сначала черновая, потом чистовая. Используй G17 (плоскость XY)».

AI (используя LLM) генерирует код вида:

G21 ; миллиметры
G90 ; абсолютное позиционирование
G17 ; плоскость XY
G00 Z5 ; безопасная высота
G00 X-50 Y-30 ; в левый нижний угол
G01 Z-0.5 F100 ; опускание
G01 X50 F200 ; грань 1
G01 Y30 ; грань 2
G01 X-50 ; грань 3
G01 Y-30 ; грань 4
G00 Z5

Затем вызывает industrial_command для каждой строки (или отправляет многострочный блок с паузами, изучая ответ ok). Bridge поддерживает атомарную запись+чтение, но для отправки последовательности AI может написать скрипт на execute_python, который через pyserial отправит список команд. Однако execute_python не имеет доступа к COM-порту — для этого нужен bridge. В текущей архитектуре AI может использовать serial_write_and_read много раз, ожидая ok после каждой строки. Это корректно.

Пример полной последовательности через чат:
1. AI: «Начинаю отправку G-кода. Отправляю G21...»
2. Вызов industrial_command(data="4732310d0a") → ответ ok
3. Вызов industrial_command(data="4739300d0a") → ответ ok
4. ...
5. AI: «Код выполнен. Станок закончил работу.»

4. Реальные кейсы автоматизации ЧПУ

Кейс 1. Малая мастерская
Мастер гравирует шильдики на лазерном станке с GRBL. Раньше он вручную писал G-код в Notepad. Теперь он говорит AI: *«Сделай гравировку текста

← Все статьи

Комментарии

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

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

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

Edge AI на производстве: как подключить Google Coral Edge TPU к AI-агенту ASI Biont для умной видеоаналитики

26 июля 2026

Cambridge International A-Level Computer Science (9618): подготовка к экзамену с AI-обучением

26 июля 2026

Маркетинг и SMM с AI: как построить воронку продаж и анализировать метрики — курс Asibiont

26 июля 2026

AI-агент для Avito: Автоматизация продаж, цен и аналитики без кода

26 июля 2026