Введение
Представьте: камера на ESP32 с модулем OV2640 анализирует видеопоток, детектирует лица и отправляет события в облачный AI-агент. ASI Biont преобразует эти данные в действия: открывает дверь, отправляет уведомление в Telegram, запускает сценарий умного дома. И всё это — без единой строки кода, написанной вручную. Достаточно описать задачу в чате, и AI сам напишет и выполнит интеграцию.
ESP32-CAM — это один из самых доступных и популярных микроконтроллеров для задач компьютерного зрения. Благодаря встроенному Wi-Fi, достаточной вычислительной мощности для on-device ML (например, библиотека ESP-DL) и модулю камеры OV2640 с разрешением до 2 мегапикселей, он идеально подходит для Edge AI: обработка изображений выполняется на самом устройстве, без постоянной передачи видео в облако. Это экономит трафик, снижает задержки и повышает приватность.
В этой статье мы разберём практический кейс: как подключить ESP32-CAM с OV2640 к ASI Biont через MQTT, настроить детекцию лиц на микроконтроллере, передавать события в AI и реализовать сценарии автоматизации — от контроля доступа до умного освещения.
Почему именно MQTT?
Для интеграции ESP32-CAM с ASI Biont мы используем протокол MQTT — лёгкий, надёжный и широко распространённый в IoT. MQTT идеально подходит для устройств с ограниченными ресурсами: пакеты минимальны, соединение постоянно поддерживается через брокер (например, Mosquitto), а публикация/подписка на топики позволяет гибко организовать обмен данными.
ASI Biont подключается к MQTT-брокеру через библиотеку paho-mqtt внутри execute_python. AI пишет Python-скрипт, который подписывается на топик события (например, esp32/cam/face_detected), получает данные о детекции лица, анализирует их и при необходимости публикует команды обратно на ESP32 (например, esp32/cam/command для включения светодиода или отправки снимка).
Альтернативные способы подключения:
- Hardware Bridge + COM-порт — если ESP32 подключён к ПК через UART, AI может читать данные через последовательный порт (например, строки JSON с результатами face detection).
- HTTP API — ESP32-CAM может выступать как HTTP-сервер, отдающий изображения по запросу. AI использует aiohttp для получения кадров и их анализа (но это уже не on-device ML, а облачная обработка).
- SSH — если ESP32 работает под управлением MicroPython с поддержкой Wi-Fi, можно подключиться по SSH (через paramiko) к одноплатнику, к которому подключена камера.
Однако MQTT — самый простой и масштабируемый вариант для Edge AI, когда ESP32 сам выполняет детекцию и лишь передаёт события.
Сценарий: автоматизация безопасности с face detection
Задача
ESP32-CAM с OV2640 установлен у входной двери. Когда камера детектирует лицо человека, она публикует в MQTT-топик esp32/cam/face_detected JSON с меткой времени и идентификатором лица (если распознавание уже встроено). ASI Biont получает это событие, проверяет, есть ли лицо в «белом списке» (например, сохранённом в Redis), и если нет — отправляет уведомление в Telegram с фотографией (снимком, сделанным камерой). Также AI может управлять умным замком: открывать дверь для авторизованных лиц.
Что делает AI-агент
- Подключается к MQTT-брокеру (параметры: host, port, username, password, topic).
- Подписывается на топик
esp32/cam/face_detected. - При получении сообщения парсит JSON, извлекает
face_id,timestamp,image_url(если ESP32 сохранил снимок по HTTP). - Сравнивает
face_idс белым списком (хранится в Redis или просто в словаре). - Если лицо не авторизовано — отправляет уведомление в Telegram через
requests.postкapi.telegram.org. - Если авторизовано — публикует команду
unlockв топикesp32/cam/command.
Пример кода на Python (выполняется в ASI Biont через execute_python)
import paho.mqtt.client as mqtt
import json
import requests
import time
# Конфигурация
BROKER = "broker.emqx.io"
PORT = 1883
TOPIC_FACE = "esp32/cam/face_detected"
TOPIC_CMD = "esp32/cam/command"
TELEGRAM_TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
# Белый список лиц (face_id -> имя)
white_list = {
"face_001": "Alice",
"face_002": "Bob"
}
def on_connect(client, userdata, flags, rc):
print("Connected with result code " + str(rc))
client.subscribe(TOPIC_FACE)
def on_message(client, userdata, msg):
payload = json.loads(msg.payload.decode())
face_id = payload.get("face_id")
timestamp = payload.get("timestamp")
image_url = payload.get("image_url")
if face_id in white_list:
name = white_list[face_id]
print(f"Authorized face: {name} at {timestamp}")
# Публикуем команду открыть дверь
client.publish(TOPIC_CMD, json.dumps({"action": "unlock", "face_id": face_id}))
else:
print(f"Unknown face detected at {timestamp}")
# Отправляем уведомление в Telegram
message = f"⚠️ Неизвестное лицо обнаружено в {timestamp}!"
if image_url:
message += f"\nСнимок: {image_url}"
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": message}
)
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.loop_start()
# Держим соединение 25 секунд (таймаут sandbox 30 секунд)
time.sleep(25)
client.loop_stop()
Этот скрипт запускается в sandbox-окружении ASI Biont. AI может выполнить его по команде пользователя: «Подключись к MQTT-брокеру по адресу broker.emqx.io, порт 1883, подпишись на топик esp32/cam/face_detected, и при обнаружении незнакомого лица отправь мне уведомление в Telegram». AI сам подставит токены и chat_id из контекста.
Пример прошивки ESP32 (Arduino IDE / PlatformIO)
На стороне ESP32-CAM используем библиотеку esp_face_detect (или собственную реализацию на базе ESP-DL). Ниже — упрощённый фрагмент, который детектирует лицо и публикует событие в MQTT.
#include <WiFi.h>
#include <PubSubClient.h>
#include "esp_camera.h"
#include "face_detect.h" // гипотетическая библиотека
WiFiClient espClient;
PubSubClient client(espClient);
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const char* mqtt_server = "broker.emqx.io";
const char* topic_face = "esp32/cam/face_detected";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
client.setServer(mqtt_server, 1883);
// Инициализация камеры
camera_config_t config;
// ... настройка пинов OV2640 ...
esp_err_t err = esp_camera_init(&config);
// Инициализация детектора лиц
face_detect_init();
}
void loop() {
if (!client.connected()) {
client.connect("ESP32CAM");
}
client.loop();
// Захват кадра
camera_fb_t *fb = esp_camera_fb_get();
if (fb) {
// Детекция лица (возвращает количество лиц)
int faces = face_detect(fb->buf, fb->len);
if (faces > 0) {
// Публикуем событие
char msg[200];
snprintf(msg, 200, "{\"face_id\":\"%s\",\"timestamp\":%lu,\"image_url\":\"http://192.168.1.100/capture\"}",
"face_001", millis());
client.publish(topic_face, msg);
}
esp_camera_fb_return(fb);
}
delay(1000);
}
Как это работает в ASI Biont: пошаговая инструкция
- Пользователь описывает задачу в чате: «Подключи ESP32-CAM с камерой OV2640 через MQTT к брокеру broker.emqx.io. Когда камера детектирует лицо, пусть публикует событие в топик esp32/cam/face_detected. Я хочу получать уведомления в Telegram, если лицо не из белого списка. Белый список: face_001 — Алиса, face_002 — Боб. Мой Telegram токен: ...».
- AI-агент ASI Biont анализирует запрос, выбирает протокол MQTT (через
execute_pythonс paho-mqtt) и генерирует Python-скрипт (как в примере выше). - AI выполняет скрипт в sandbox-окружении: подключается к брокеру, подписывается на топик, начинает слушать сообщения.
- ESP32-CAM уже запрограммирован пользователем (или AI может сгенерировать код для Arduino IDE) и публикует события при детекции лица.
- AI получает событие, проверяет белый список, отправляет уведомление или команду на ESP32.
Всё взаимодействие — через диалог. Никаких панелей управления, кнопок «добавить устройство» или ручного написания кода интеграции. AI сам пишет и выполняет код.
Преимущества подхода
- Edge AI на ESP32: детекция лиц выполняется локально, без передачи видео в облако. Это снижает нагрузку на сеть, уменьшает задержки и защищает приватность.
- Гибкость MQTT: протокол поддерживает двустороннюю связь, легко масштабируется на десятки устройств.
- AI-агент как оркестратор: ASI Biont не просто собирает данные, но и принимает решения (проверка белого списка, отправка уведомлений, управление замком).
- Нулевой порог входа: пользователь описывает задачу на естественном языке — AI делает всю работу.
Реальные сценарии применения
| Сценарий | Описание | Топик MQTT (пример) |
|---|---|---|
| Контроль доступа | ESP32-CAM детектирует лицо, AI проверяет авторизацию и открывает замок | esp32/cam/face_detected → команда unlock |
| Охрана периметра | Детекция лица в нерабочее время → уведомление в Telegram + запись видео | esp32/cam/intrusion |
| Умный дом: свет | Детекция лица → включение света в комнате (через MQTT-реле) | esp32/cam/face_detected → home/light/livingroom |
| Учёт посетителей | Логирование всех детекций в базу данных (Redis/PostgreSQL) | esp32/cam/face_log |
Почему стоит попробовать
Интеграция ESP32-CAM с ASI Biont — это не просто игрушка. Это реальный инструмент для создания систем безопасности, умного дома и промышленного видеонаблюдения. Вам не нужно быть экспертом в MQTT, Python или компьютерном зрении — достаточно описать задачу AI-агенту, и он сам напишет и выполнит код.
Попробуйте сами: зайдите на asibiont.com, создайте API-ключ (в разделе Devices → Create API Key), скачайте bridge.py (если нужно работать через COM-порт) или просто начните чат с AI. Опишите своё устройство — и увидите, как интеграция создаётся за секунды.
Заключение
ESP32-CAM с OV2640 — мощный инструмент для Edge AI, а ASI Biont превращает его в полностью автоматизированную систему. Благодаря поддержке MQTT, HTTP, SSH и Hardware Bridge, AI-агент может подключаться к любому микроконтроллеру или одноплатнику. Face detection на ESP32 + облачный интеллект ASI Biont = безопасность, которая работает без вашего участия.
Не ждите, пока разработчики добавят поддержку вашего устройства — подключайте его прямо сейчас через диалог с AI. Попробуйте интеграцию на asibiont.com и убедитесь сами.
Комментарии