Введение
Arduino Nano BLE Sense — это микроконтроллер размером с палец, который объединяет Bluetooth Low Energy (BLE) и возможность запуска TinyML-моделей прямо на борту. В отличие от классических IoT-решений, где данные отправляются в облако для анализа, Nano BLE Sense выполняет инференс локально: распознаёт жесты, звуки (например, хлопок или голосовую команду), магнитные поля или вибрации. Это даёт мгновенную реакцию, снижает энергопотребление и устраняет зависимость от интернета. Но как управлять такими устройствами и автоматизировать сценарии, не написав десятки строк кода вручную? Ответ — ASI Biont.
ASI Biont — это AI-агент, который подключается к любому оборудованию через диалог в чате. Вы просто описываете, к какому устройству нужно подключиться и какие данные собирать, а AI сам пишет Python-код интеграции, используя execute_python. Для Arduino Nano BLE Sense естественный интерфейс — BLE, так как на плате нет Ethernet или Wi-Fi. Но ASI Biont работает в облаке, а BLE — локальный протокол. Решение — Hardware Bridge: небольшое приложение bridge.py, которое пользователь запускает на своём ПК (Windows, Linux, macOS). Bridge подключается к ASI Biont через HTTP short-polling и обеспечивает доступ к COM-портам, к которым подключён микроконтроллер. AI отправляет команды через industrial_command с протоколом serial://, а bridge читает/пишет в порт локально.
В этой статье мы разберём реальный сценарий: загружаем на Arduino Nano BLE Sense предобученную TinyML-модель для распознавания жестов (например, встряхивание, вращение), передаём результаты инференса в ASI Biont через BLE и автоматизируем сценарий умного дома — включение света при определённом жесте. Никаких облачных затрат, только локальный AI на микроконтроллере и облачный AI-агент для принятия решений.
Почему именно BLE и Hardware Bridge?
Arduino Nano BLE Sense, как следует из названия, использует Bluetooth Low Energy для связи. Это энергоэффективный протокол с радиусом действия до 10-30 метров. Прямое подключение ASI Biont по BLE невозможно, так как AI-агент работает в облаке на серверах Railway. Поэтому мы используем Hardware Bridge:
- Пользователь подключает Nano BLE Sense к ПК через USB (виртуальный COM-порт).
- Запускает bridge.py с флагом --ports=COM3 (или /dev/ttyACM0 на Linux).
- Bridge соединяется с ASI Biont через HTTP short-polling и передаёт данные из COM-порта.
- AI в чате использует industrial_command(protocol='serial', command='...'), чтобы читать или писать данные.
Этот подход безопасен: bridge не открывает HTTP-сервер на localhost, а только подключается к облаку. Все команды идут через защищённый канал.
Сценарий: Распознавание жестов и автоматизация умного дома
Проблема
Вы хотите, чтобы при встряхивании Arduino Nano BLE Sense (например, закреплённого на двери) AI-агент отправлял команду на умную лампочку (через HTTP API) — включал свет. Традиционно нужно:
1. Написать прошивку на C++ для Nano с TinyML-моделью.
2. Написать Python-скрипт для чтения данных с COM-порта, парсинга и отправки HTTP-запроса.
3. Настроить cron или systemd для автоматического запуска.
С ASI Biont всё проще: вы описываете задачу в чате, AI генерирует код и выполняет его.
Решение
Шаг 1. Прошивка Arduino Nano BLE Sense
На микроконтроллер загружается стандартный скетч, который использует библиотеку Arduino_TensorFlowLite для распознавания жестов. Пример прошивки (сокращённый):
#include <ArduinoBLE.h>
#include <TensorFlowLite.h>
#include "model.h" // предобученная модель
BLEService gestureService("180A");
BLEStringCharacteristic gestureChar("2A57", BLERead | BLENotify, 20);
void setup() {
Serial.begin(115200);
BLE.begin();
BLE.setLocalName("NanoGesture");
BLE.setAdvertisedService(gestureService);
gestureService.addCharacteristic(gestureChar);
BLE.addService(gestureService);
BLE.advertise();
}
void loop() {
// Захват данных с акселерометра
// Инференс TinyML-модели
String result = "shake"; // или "spin", "still"
gestureChar.writeValue(result.c_str());
Serial.println(result); // дублируем на COM-порт
delay(1000);
}
Прошивка отправляет результат инференса как по BLE (для мобильных приложений), так и через Serial (для bridge).
Шаг 2. Запуск Hardware Bridge
Пользователь скачивает bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge) и запускает:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --default-baud=115200
Bridge подключается к ASI Biont и начинает слушать COM3.
Шаг 3. Интеграция через чат с AI
Пользователь пишет в чате ASI Biont:
«Подключись к Arduino Nano BLE Sense через Hardware Bridge на COM3, baud 115200. Читай данные каждые 5 секунд. Если получено слово "shake", отправь HTTP POST на http://192.168.1.100/api/light/on с JSON {"state": "on"}. Логируй все результаты.»
AI генерирует Python-скрипт и выполняет его через execute_python. Пример кода, который AI может написать:
import time
import requests
# industrial_command будет вызываться из чата, но для примера покажем логику
# AI сам вызывает industrial_command с protocol='serial'
# Ниже — упрощённая версия того, что делает AI внутри execute_python
def read_from_serial():
# AI использует industrial_command, но в sandbox нет прямого доступа к COM
# Вместо этого AI генерирует код, который выполняется на bridge?
# Нет, bridge только передаёт данные. AI получает данные через industrial_command.
# Покажем, как AI отправляет команду:
pass
На практике AI не пишет код для чтения COM-порта напрямую (sandbox не имеет доступа), а использует industrial_command tool:
industrial_command(
protocol='serial',
command='read',
params={'port': 'COM3', 'baud': 115200, 'timeout': 5}
)
Эта команда отправляется на bridge, который читает данные и возвращает результат. AI анализирует ответ и при необходимости вызывает другой tool для HTTP-запроса:
# AI выполняет внутри execute_python:
import requests
response = requests.post(
'http://192.168.1.100/api/light/on',
json={'state': 'on'},
timeout=5
)
print(f'Light status: {response.status_code}')
Шаг 4. Результат
Через несколько секунд после настройки AI начинает циклически читать данные с Arduino. Как только на COM-порт приходит "shake", AI отправляет HTTP-запрос на лампочку. Всё работает без участия человека.
Другие сценарии с Arduino Nano BLE Sense и ASI Biont
| Сценарий | Данные с Nano | Действие AI | Интерфейс |
|---|---|---|---|
| Охранная сигнализация | Магнитное поле (открытие двери) | Отправка SMS через Twilio API | COM-порт → Hardware Bridge → AI → Twilio |
| Мониторинг вибраций станка | Акселерометр (частота вибраций) | Логирование в Google Sheets через API | COM-порт → Hardware Bridge → AI → HTTP |
| Голосовое управление | Аудио (команда "включи свет") | Управление умной розеткой через MQTT | COM-порт → Hardware Bridge → AI → MQTT broker |
Почему это выгодно?
- Нет облачных затрат на инференс. TinyML-модель работает на микроконтроллере, данные не уходят в интернет. ASI Biont получает только результат (например, "shake"), а не сырые сэмплы.
- Мгновенная реакция. Локальный инференс занимает миллисекунды, а AI-агент принимает решение за секунды.
- AI пишет код за вас. Вам не нужно разбираться в pyserial, requests или BLE-протоколах — просто опишите задачу.
- Любое устройство. ASI Biont подключается к чему угодно через execute_python: к ESP32 по MQTT, к Raspberry Pi по SSH, к PLC по Modbus. Для Nano BLE Sense используется Hardware Bridge, но принцип тот же.
Заключение
Arduino Nano BLE Sense в паре с ASI Biont — это мощный тандем для Edge AI и автоматизации. Вы получаете локальный интеллект на микроконтроллере и облачный AI-агент, который управляет сценариями, не требуя ручного программирования. Всё, что нужно — описать задачу в чате, запустить bridge.py и подключить устройство через USB.
Попробуйте интеграцию прямо сейчас на asibiont.com. Загрузите bridge.py из дашборда, подключите Arduino Nano BLE Sense и напишите AI: «Считай данные с COM3 и включи свет при жесте». Через минуту ваша автоматизация будет работать.
Комментарии