Введение
Представьте: крошечный микроконтроллер размером с палец, на котором выполняется нейросеть в реальном времени — без облака, без Wi-Fi, только на борту. Это Arduino Nano BLE Sense — платформа для TinyML, способная классифицировать жесты, детектировать аномалии вибраций, распознавать голосовые команды. Но что, если эту локальную «умность» объединить с мощью AI-агента, который может анализировать тренды, отправлять уведомления и управлять другими устройствами? Именно такую интеграцию предлагает ASI Biont — AI-агент, который подключается к любому оборудованию через диалог.
В этой статье я разберу, как ASI Biont связывается с Arduino Nano BLE Sense по COM-порту через Hardware Bridge, как AI сам пишет код для TinyML-сценариев и почему это меняет подход к Edge AI-автоматизации.
Что такое Arduino Nano BLE Sense и при чем тут TinyML?
Arduino Nano BLE Sense — это 32-битный микроконтроллер на nRF52840 (ARM Cortex-M4F с FPU) со встроенным BLE-радио и набором датчиков: акселерометр/гироскоп (LSM9DS1), микрофон (MP34DT05), датчик цвета/освещённости (APDS-9960), датчик температуры/влажности (HTS221) и барометр (LPS22HB). Главная фишка — возможность запускать модели TensorFlow Lite Micro прямо на чипе, используя всего 256 КБ RAM и 1 МБ Flash. Это типичный представитель класса on-device ML: нейросеть работает без задержек, не требует интернета и не передаёт сырые данные наружу.
TinyML позволяет решать задачи, которые раньше требовали мощного одноплатника: обнаружение падений по акселерометру, распознавание ключевых слов (например, «включи свет»), предиктивное обслуживание по вибрациям. Но возникает проблема: как объединить десятки таких устройств в единую систему, логировать события, анализировать долгосрочные тренды и принимать сложные решения? Тут и нужен AI-агент.
Как ASI Biont подключается к Arduino Nano BLE Sense?
Прямого BLE-подключения ASI Biont пока не поддерживает (список доступных протоколов: COM-порт, SSH, MQTT, Modbus, OPC-UA и др.). Однако Arduino Nano BLE Sense по USB превращается в обычное COM-устройство (на Windows — COM3, на Linux — /dev/ttyACM0). Это идеальный канал для двустороннего обмена: AI отправляет команды, Arduino отвечает данными.
Схема подключения:
1. Пользователь запускает на своём ПК bridge.py (скачивается из дашборда ASI Biont).
2. Bridge подключается к облаку ASI Biont через WebSocket (единственный канал) и открывает COM-порт с заданным baud rate (обычно 115200).
3. AI в чате использует industrial_command(protocol='serial', command='write_and_read', params={'data': '48454c500a'}) — отправляет HEX-строку HELP\n.
4. Arduino отвечает списком поддерживаемых команд, bridge возвращает ответ AI.
Такой подход не требует открытия портов наружу, не нужно настраивать роутер — весь трафик идёт через облако, bridge работает в фоне.
Практический сценарий: мониторинг вибраций с TinyML на борту
Допустим, у вас насосная станция. На каждом насосе установлен Arduino Nano BLE Sense с акселерометром. Микроконтроллер запускает TinyML-модель, обученную определять «норма» / «аномалия» (дисбаланс, кавитация). Результат (0 — норма, 1 — аномалия) выводится через Serial. AI-агент ASI Biont собирает эти данные, считает частоту аномалий, строит график тренда и при превышении порога отправляет уведомление в Telegram или Slack.
Пример кода для Arduino (фрагмент)
#include <Arduino_LSM9DS1.h>
#include <TensorFlowLite.h>
#include "model.h" // обученная модель .tflite
tflite::MicroMutableOpResolver<10> resolver;
tflite::MicroInterpreter interpreter(resolver, model, tensor_arena, 10240);
void setup() {
Serial.begin(115200);
IMU.begin();
interpreter.AllocateTensors();
}
void loop() {
float ax, ay, az;
IMU.readAcceleration(ax, ay, az);
// заполняем входной тензор
interpreter.input(0)->data.f[0] = ax;
interpreter.input(0)->data.f[1] = ay;
interpreter.input(0)->data.f[2] = az;
interpreter.Invoke();
float output = interpreter.output(0)->data.f[0];
// отправляем результат как число 0..1000 (масштабируем)
Serial.println((int)(output * 1000));
delay(1000);
}
Примечание: Код упрощён для демонстрации. В реальности потребуется добавить DSP-фильтры и работу с буфером.
Что делает AI-агент?
Пользователь пишет в чат ASI Biont:
«Подключись к Arduino по COM3, скорость 115200, читай данные каждые 5 секунд. Если значение выше 800 (аномалия) — отправь мне в Telegram сообщение с temp-меткой времени. Данные сохраняй в CSV на сервере.»
AI-агент генерирует и выполняет Python-скрипт в sandbox (execute_python), который:
- Не взаимодействует напрямую с COM-портом (bridge нужен для этого).
- Использует industrial_command для чтения данных через bridge.
- Анализирует ответы, записывает в CSV, шлёт уведомление через Telegram API.
Пример того, как AI использует industrial_command (это tool call, не Python-функция):
industrial_command(protocol='serial', command='write_and_read', params={
'data': '0a', // просто запрос на получение данных (Arduino может отправлять их непрерывно)
'timeout': 1
})
AI может настроить циклическое чтение с помощью execute_python, где внутри цикла вызывается industrial_command (но в sandbox — не бесконечный цикл, а ограниченный, например, 100 итераций с паузой).
Результаты такой интеграции
- Скорость реакции: AI получает аномалию через 1-2 секунды после её возникновения.
- Автономность: не нужно писать бэкенд, БД, телеграм-бота — всё генерирует AI.
- Гибкость: сменили модель TinyML? AI просто подстраивает логику чтения.
- Масштабирование: 10 Arduino — просто добавьте 10 bridge на разные порты.
Как AI пишет код за вас? (универсальный execute_python)
Главная «фишка» ASI Biont — это execute_python. AI-агент на лету генерирует Python-код, используя библиотеки из sandbox (requests, matplotlib, pandas, openpyxl и т.д.), и выполняет его в облаке. Это значит, что вы можете попросить AI «проанализировать последние 1000 точек данных и построить график тренда вибраций» — и получите PNG-график, который AI прикрепит в чат.
Важно: для работы с COM-портами нужен bridge, но для обработки данных — только execute_python. AI сам решает, когда использовать industrial_command, а когда execute_python.
Пошаговая инструкция интеграции для новичков
- Подготовьте Arduino: загрузите скетч, который взаимодействует через Serial (HELP-протокол: при получении
HELP\nотправляет список команд). - Скачайте bridge.py из дашборда ASI Biont (Devices → Create API Key).
- Запустите bridge:
bash pip install pyserial requests websockets python bridge.py --token=YOUR_TOKEN --ports=COM3 --baud 115200 - Проверьте связь: в чате ASI Biont напишите:
«Отправь HELP на COM3 и покажи ответ»
AI выполнитindustrial_command(protocol='serial', command='write_and_read', params={'data': '48454c500a'})и вернёт ответ. - Настройте сценарий: опишите задачу — AI сгенерирует скрипт, который будет опрашивать Arduino и выполнять действия.
Почему это выгодно?
| Без ASI Biont | С ASI Biont |
|---|---|
| Нужно вручную писать Python-скрипт для чтения с порта, парсинга, логирования, уведомлений. | AI пишет всё за секунды по текстовому описанию. |
| При изменении логики — править код. | Достаточно переформулировать запрос в чате. |
| Для каждого нового устройства — свой бэкенд. | Единый AI-агент, который подключается к любому устройству по диалогу. |
Заключение
Arduino Nano BLE Sense — мощный инструмент для on-device ML, но его истинная ценность раскрывается, когда он становится частью экосистемы AI-автоматизации. ASI Biont позволяет подключить такой микроконтроллер к облачному AI-агенту за 5 минут, без единой строки кода со стороны пользователя. TinyML-модели теперь могут не только принимать решения на месте, но и передавать результаты для комплексной аналитики и оркестровки.
Хотите попробовать? Зайдите на asibiont.com и подключите ваше устройство через диалог с AI-агентом. Просто опишите, к какому порту подключено устройство, и AI сделает всё остальное.
Комментарии