ESP32-CAM OV2640 + ASI Biont: умный дверной звонок с распознаванием лиц без облаков

Edge AI на ESP32-CAM: интеграция распознавания лиц с ASI Biont через MQTT

Представьте: ваш дверной звонок не просто транслирует видео, а сам распознаёт лица, отличает жильцов от посторонних и отправляет уведомление в Telegram. Все вычисления происходят локально на ESP32-CAM с камерой OV2640 — никаких облачных подписок и задержек. А управляет всей системой AI-агент ASI Biont, который подключается к устройству через простой диалог в чате. Никаких панелей управления — просто опишите задачу, и AI сам напишет код интеграции.

В этой статье разберём реальный сценарий: ESP32-CAM с детекцией лиц на борту, MQTT-канал связи и автоматическое оповещение в Telegram. Вы узнаете, как ASI Biont подключается к ESP32, какие библиотеки использует и как заставить всё работать за считанные минуты.

Зачем подключать ESP32-CAM к AI-агенту?

ESP32-CAM (ESP32 + OV2640) — недорогая плата со встроенной камерой 2 МП и Wi-Fi. Она способна выполнять простую детекцию лиц прямо на микроконтроллере благодаря аппаратному ускорителю. Но чтобы превратить её в элемент умного дома или системы безопасности, нужен управляющий центр. ASI Biont выступает таким центром:

  • анализирует события от камеры (кто пришёл, сколько лиц, в какое время);
  • принимает решения (открыть дверь, вызвать охрану, отправить фото);
  • управляет другими устройствами (замками, сиреной, светом).

Всё это без облачных сервисов — данные остаются локальными.

Как ASI Biont подключается к ESP32-CAM?

Для ESP32-CAM с Wi-Fi лучший выбор — MQTT. ESP32 публикует данные о детекции в MQTT-топик, а ASI Biont подписывается через execute_python с библиотекой paho-mqtt. Альтернативы:

Способ Плюсы Минусы
MQTT Двусторонняя связь, низкая задержка, стандарт IoT Требуется MQTT-брокер
HTTP API Не нужен брокер, простота Только опрос (pull), сложнее для событий
Hardware Bridge (UART) Не зависит от Wi-Fi, надёжность Требуется компьютер рядом с bridge.py

В нашем примере используем MQTT — самый распространённый протокол для Edge AI.

Сценарий: умный дверной звонок с Telegram-уведомлением

Шаг 1. Прошивка ESP32-CAM

Устанавливаем Arduino IDE или PlatformIO. Библиотеки: WiFi, PubSubClient, ESP32-Camera, esp-face (в составе ESP32 Arduino).

Код ESP32 захватывает кадр, детектирует лица и при обнаружении публикует JSON с полем count и image (base64 JPEG).

#include <WiFi.h>
#include <PubSubClient.h>
#include "esp_camera.h"
#include "face_detection.h"

const char* ssid = "...";
const char* password = "...";
const char* mqtt_server = "test.mosquitto.org";
const char* outTopic = "esp32cam/face_detected";

WiFiClient espClient;
PubSubClient client(espClient);

dl_image_metadata_t metadata;

void setup() {
  // Конфиг камеры (camera_config_t)
  // Подключение к WiFi, MQTT
}

void loop() {
  if (!client.connected()) reconnect();
  client.loop();

  camera_fb_t * fb = esp_camera_fb_get();
  if (fb) {
    metadata = dl_image_metadata_init();
    dl_image_metadata_set_image(&metadata, fb->buf, fb->len, fb->width, fb->height, fb->format);
    dl_detect_face(&metadata);  // аппаратная детекция
    if (metadata.num_faces > 0) {
      String imageBase64 = base64::encode(fb->buf, fb->len);
      String payload = "{\"count\":" + String(metadata.num_faces) + ",\"image\":\"" + imageBase64 + "\"}";
      client.publish(outTopic, payload.c_str());
    }
    esp_camera_fb_return(fb);
  }
  delay(2000);
}

Важно: ESP32-CAM может отправлять большие сообщения. Убедитесь, что MQTT-брокер допускает payload до 50 КБ (например, Mosquitto по умолчанию ограничен 256 КБ).

Шаг 2. Настройка ASI Biont через диалог

Пользователь пишет в чате:

«Подключись к MQTT-брокеру test.mosquitto.org, порт 1883. Подпишись на топик esp32cam/face_detected. При получении сообщения с count > 0 отправь мне в Telegram текст “Обнаружено лицо” и само изображение. Мой токен бота: 123456:ABC, chat_id: 789»

AI-агент генерирует Python-скрипт для execute_python:

import paho.mqtt.client as mqtt
import requests
import json
import base64
from io import BytesIO
from PIL import Image

TOKEN = "123456:ABC"
CHAT_ID = "789"

def on_message(client, userdata, msg):
    payload = json.loads(msg.payload)
    count = payload.get("count", 0)
    if count > 0:
        # Отправка текста
        requests.post(f"https://api.telegram.org/bot{TOKEN}/sendMessage",
                      data={"chat_id": CHAT_ID, "text": f"🔔 Обнаружено лиц! {count}"})
        # Если есть изображение, отправляем как фото
        if "image" in payload:
            img_bytes = base64.b64decode(payload["image"])
            image = Image.open(BytesIO(img_bytes))
            image.save("/tmp/face.jpg")
            with open("/tmp/face.jpg", "rb") as f:
                requests.post(f"https://api.telegram.org/bot{TOKEN}/sendPhoto",
                              data={"chat_id": CHAT_ID, "caption": "Фото с камеры"},
                              files={"photo": f})

client = mqtt.Client()
client.on_message = on_message
client.connect("test.mosquitto.org", 1883, 60)
client.subscribe("esp32cam/face_detected")
client.loop_forever(timeout=1.0)

Как это работает: sandbox ASI Biont (Railway) выполняет скрипт до 30 секунд, затем завершает. Для постоянной работы вы можете запустить bridge.py на своём ПК, который имеет постоянное соединение, или использовать industrial_command для подписки (но через industrial_command нельзя длительно слушать MQTT — только разовые операции). Поэтому для мониторинга событий используйте execute_python с таймаутом, достаточным для обработки одного события, или настройте внешний сервис.

Шаг 3. Управление замком (команда из чата)

Чтобы AI мог открыть дверь по запросу, ESP32 должен подписаться на топик esp32cam/command. При получении команды unlock микроконтроллер дёргает реле.

Пользователь пишет в чат:

«Отправь команду unlock на MQTT-брокер test.mosquitto.org, топик esp32cam/command»

AI выполняет industrial_command:

industrial_command(protocol='mqtt', command='publish', 
    params={"host":"test.mosquitto.org","port":1883,
            "topic":"esp32cam/command","payload":"unlock"})

На ESP32 в loop() добавим:

client.setCallback(callback);

void callback(char* topic, byte* payload, unsigned int length) {
  String msg = String((char*)payload).substring(0, length);
  if (msg == "unlock") {
    digitalWrite(RELAY_PIN, HIGH);
    delay(5000);
    digitalWrite(RELAY_PIN, LOW);
  }
}

Почему это выгодно?

  • Не нужно писать интеграционный код вручную — AI генерирует его за секунды под ваш конкретный сценарий. Пользователь просто описывает задачу.
  • Любой способ подключения: MQTT, HTTP, Modbus, SSH, COM-порт — AI выберет нужные библиотеки и протокол.
  • Безопасность: данные остаются локальными, облако ASI Biont участвует только в управлении через текст, а сам видеопоток не покидает сеть.
  • Гибкость: можно быстро менять логику — добавить интеграцию с умной лампочкой, сиреной или базой данных посетителей.

Продвинутые сценарии

  • Несколько камер: подпишитесь на разные топики cam1/face, cam2/face. AI может агрегировать данные и открывать калитку только при совпадении с расписанием.
  • Распознавание конкретных лиц: ESP32 может отправлять ID обнаруженного лица (через библиотеку esp-face, которая сравнивает с сохранёнными эмбеддингами). AI проверяет ID в локальной базе (SQLite) и решает, пускать или нет.
  • Безоблачное видеонаблюдение для малого бизнеса: ESP32-CAM детектирует движение, отправляет кадры в Telegram. ASI Biont логирует события и уведомляет охрану.

Заключение

ESP32-CAM OV2640 + ASI Biont — это готовое Edge AI-решение для умного дома и бизнеса. Вы получаете локальное распознавание лиц, управление через Telegram и полный контроль над данными. Всё это настраивается за 10 минут через диалог с AI-агентом. Попробуйте сами на asibiont.com — создайте свою систему видеонаблюдения, которая понимает, кто перед дверью.

← Все статьи

Комментарии

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

Освойте программу Cambridge Lower Secondary English (0861): учебный план, навыки и обучение с ИИ на платформе Asibiont

27 июля 2026

Почему идеальная LLM всё равно не сделает агентные системы предсказуемыми

27 июля 2026

Освоение курса Cambridge IGCSE Computer Science (0478): персонализированное обучение с ИИ на asibiont.com

27 июля 2026

Как автоматизировать HubSpot CRM с помощью AI-агента ASI Biont: интеграция без кода

27 июля 2026

WhatsApp интеграция с AI-агентом ASI Biont: автоматизация общения с клиентами без программирования

27 июля 2026

PCI DSS 4.0 — Безопасность платежных карт: Освоение соответствия в мире, управляемом ИИ

27 июля 2026

Освойте продвинутую математику с Cambridge International A-Level Further Mathematics (9231) – ваш путь к инженерии и науке

27 июля 2026

Партнерство Safe Superintelligence и Nvidia: как Илья Суцкевер масштабирует исследования безопасного сверхинтеллекта

27 июля 2026

Intel Neural Compute Stick + ASI Biont: как запустить компьютерное зрение на краю без программирования

27 июля 2026