Введение
Системы компьютерного зрения на границе сети (Edge AI) становятся стандартом для умной безопасности. Камера OV2640 на базе ESP32-CAM — одно из самых доступных решений для распознавания лиц, но его полный потенциал раскрывается только при интеграции с интеллектуальным агентом. ASI Biont позволяет подключить ESP32-CAM к AI-ассистенту без сложного программирования: пользователь описывает задачу в чате, а AI сам пишет код интеграции, настраивает потоковую передачу, детекцию лиц и реакции — отправку уведомлений, запись видео, управление доступом. В этой статье — реальный кейс с пошаговым гайдом и примерами кода.
Как ESP32-CAM подключается к ASI Biont
ESP32-CAM — это микроконтроллер с Wi-Fi, камерой OV2640 (2 МП, 1600×1200) и microSD-слотом. Для распознавания лиц используем библиотеку ESP32-Face-Detection (на базе ESP-WHO). ASI Biont подключается к нему двумя основными способами:
- Через MQTT — ESP32 публикует результаты детекции (например, "face_detected: true") в топик MQTT-брокера. AI-агент подписывается на топик, анализирует данные и отправляет команды обратно (например, "capture_image").
- Через HTTP API — ESP32 запускает веб-сервер, который отдаёт поток MJPEG и принимает POST-запросы для управления. AI выполняет Python-скрипт с aiohttp, который читает поток и отправляет команды.
В этом гайде используем MQTT — он надёжнее для двусторонней связи и не требует публичного IP для ESP32.
Что нужно для интеграции
| Компонент | Назначение |
|---|---|
| ESP32-CAM (модуль AI-Thinker) | Камера + Wi-Fi + детекция лиц |
| FTDI-адаптер (3.3V) | Для первой прошивки ESP32 |
| MicroSD-карта (8-32 ГБ) | Хранение снимков и видео |
| MQTT-брокер (HiveMQ Cloud — бесплатно) | Обмен сообщениями |
| ASI Biont (asibiont.com) | AI-агент для автоматизации |
| Telegram-бот (опционально) | Уведомления пользователю |
Пошаговая настройка ESP32-CAM
Шаг 1. Прошивка ESP32
Установите Arduino IDE или PlatformIO. Подключите ESP32-CAM к FTDI: GPIO0 на GND (режим загрузки), RX на TX, TX на RX. Загрузите скетч с поддержкой MQTT и детекции лиц. Используем библиотеку esp_face_detection из ESP-WHO.
Пример фрагмента кода (MicroPython/C++):
#include <WiFi.h>
#include <PubSubClient.h>
#include "esp_camera.h"
#include "face_detection.hpp"
const char* ssid = "your_SSID";
const char* password = "your_PASS";
const char* mqtt_server = "broker.hivemq.com";
const char* topic_face = "home/cam1/face";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
client.setServer(mqtt_server, 1883);
camera_config_t config; // стандартная инициализация OV2640
esp_camera_init(&config);
}
void loop() {
if (!client.connected()) reconnect();
client.loop();
camera_fb_t* fb = esp_camera_fb_get();
if (fb) {
dl_matrix3du_t* image_matrix = NULL; // конвертация в DL-формат
face_detect(image_matrix, fb);
if (face_detected) {
client.publish(topic_face, "{\"face\":true,\"time\":\"2026-07-17T12:00:00Z\"}");
// Сохраняем снимок на SD
}
esp_camera_fb_return(fb);
}
delay(1000);
}
Шаг 2. Настройка MQTT-брокера
Создайте аккаунт на HiveMQ Cloud (бесплатный тариф — до 100 подключений). Получите URL, порт (8883 для TLS), имя пользователя и пароль. В коде ESP32 укажите эти параметры.
Шаг 3. Подключение ASI Biont к устройству
Перейдите в чат с AI-агентом на asibiont.com и опишите задачу:
«Подключись к MQTT-брокеру broker.hivemq.com:1883, подпишись на топик home/cam1/face. При получении JSON с face:true отправь мне уведомление в Telegram: "Обнаружено лицо на камере 1". Также сделай снимок: отправь POST-запрос на ESP32 по адресу http://192.168.1.100/capture, сохрани фото на SD-карту и пришли мне в Telegram»
AI автоматически сгенерирует и выполнит Python-скрипт в sandbox-окружении:
import paho.mqtt.client as mqtt
import requests
import json
import os
from dotenv import load_dotenv
load_dotenv()
TELEGRAM_TOKEN = os.getenv("TELEGRAM_TOKEN")
CHAT_ID = os.getenv("CHAT_ID")
def on_message(client, userdata, msg):
payload = json.loads(msg.payload)
if payload.get("face"):
# Отправляем команду на ESP32 для захвата снимка
capture_resp = requests.post("http://192.168.1.100/capture", timeout=5)
if capture_resp.status_code == 200:
# Отправляем фото в Telegram
with open("/tmp/capture.jpg", "wb") as f:
f.write(capture_resp.content)
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendPhoto",
data={"chat_id": CHAT_ID, "caption": "Обнаружено лицо!"},
files={"photo": open("/tmp/capture.jpg", "rb")}
)
# Отправляем текстовое уведомление
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": "Обнаружено лицо на камере 1"}
)
mqtt_client = mqtt.Client()
mqtt_client.on_message = on_message
mqtt_client.connect("broker.hivemq.com", 1883, 60)
mqtt_client.subscribe("home/cam1/face")
mqtt_client.loop_forever() # В sandbox таймаут 30 сек, поэтому используем loop_start()
Важно: В sandbox ASI Biont нет бесконечных циклов — AI использует loop_start() в отдельном потоке или однократный опрос. Для постоянного мониторинга AI настраивает периодический вызов скрипта.
Сценарии автоматизации
1. Уведомления о движении и лицах
ESP32 детектирует лицо → публикует в MQTT → AI получает → отправляет Telegram-сообщение. Можно добавить распознавание конкретных лиц: AI сравнивает эмбеддинги с базой, используя библиотеку face_recognition (через execute_python).
2. Запись видео при обнаружении
При детекции лица AI отправляет команду на ESP32: начать запись видео на microSD в течение 30 секунд. После записи — отправляет файл в Telegram или сохраняет в облачное хранилище (S3 через boto3).
3. Управление доступом
Если лицо распознано как «разрешённое» (например, владелец), AI отправляет команду на сервопривод (через GPIO ESP32) открыть дверь. Если незнакомое — отправляет уведомление владельцу и записывает видео.
4. Интеграция с умным домом
При обнаружении лица AI может включить свет (через MQTT-команду на умную лампочку), изменить температуру кондиционера или запустить робот-пылесос.
Почему это выгодно
- Zero-code интеграция: не нужно писать код вручную — AI генерирует его за секунды по текстовому описанию.
- Любое устройство: через execute_python можно подключиться к чему угодно — от ESP32 до промышленных контроллеров Siemens.
- Гибкость: сценарии можно менять в реальном времени, просто описав новую задачу в чате.
- Экономия времени: настройка занимает 10 минут вместо дней разработки.
Подводные камни и их решение
| Проблема | Решение |
|---|---|
| ESP32 не подключается к Wi-Fi | Проверьте питание (3.3V, 500 мА), перезагрузите, используйте статический IP |
| Детекция лиц не работает | Убедитесь, что библиотека ESP-WHO установлена и камера сфокусирована (поворачивайте объектив) |
| MQTT-сообщения не доходят | Проверьте имя топика, QoS (используйте 1), откройте порт 1883 в брандмауэре |
| Sandbox таймаут 30 секунд | Используйте однократные запросы или периодический запуск скрипта через webhook |
Заключение
ESP32-CAM с OV2640 и детекцией лиц — мощный инструмент для Edge AI, а интеграция с ASI Biont превращает его в полностью автоматизированную систему безопасности. Вы описываете логику словами — AI пишет код и управляет устройством. Попробуйте сами: зайдите на asibiont.com, создайте проект и опишите в чате вашу задачу. Умная безопасность ещё никогда не была такой доступной.
Комментарии