Введение
Камера на базе ESP32-CAM с сенсором OV2640 — одно из самых популярных устройств для DIY-проектов компьютерного зрения. 2-мегапиксельная камера, встроенный Wi-Fi и microSD-карта позволяют снимать фото, записывать видео и передавать их по сети. Но чтобы превратить ESP32-CAM в умную систему мониторинга с детекцией объектов, распознаванием лиц и уведомлениями в Telegram, нужно написать десятки строк кода, настроить серверную часть и разобраться с протоколами передачи данных.
AI-агент ASI Biont решает эту проблему: вы просто описываете в чате, какую камеру используете и что хотите получать, а AI сам пишет код интеграции — от прошивки ESP32 до скрипта анализа изображений. В этой статье я покажу, как подключить ESP32-CAM (OV2640) к ASI Biont через MQTT и HTTP, настроить автоматический захват фото по движению и отправку снимков с распознанными объектами в Telegram.
Как ASI Biont подключается к камере
ASI Biont не имеет предустановленных драйверов для каждой модели камеры — он подключается к любому устройству через универсальные протоколы. Для ESP32-CAM используются два основных способа:
- MQTT — через брокер (например, Mosquitto). ESP32 публикует фото (base64) и статусы в топики; AI подписывается и анализирует.
- HTTP API — ESP32 запускает простой веб-сервер, который отдаёт JPEG-кадры. AI через
requestsилиaiohttpзабирает их и обрабатывает.
В обоих случаях AI пишет Python-скрипт, который выполняется в sandbox-окружении ASI Biont (на сервере). Для работы с локальной сетью пользователя (например, ESP32 в домашней Wi-Fi) AI использует execute_python с библиотеками paho-mqtt, requests или aiohttp. Если нужно получить доступ к COM-порту (например, для отладки через UART), применяется Hardware Bridge — отдельное приложение bridge.py, которое пользователь запускает на своём ПК.
Сценарий: умный детектор движения с уведомлениями в Telegram
Представьте: вы хотите, чтобы при обнаружении движения в кадре ESP32-CAM делала фото, AI-агент распознавал на нём объекты (человек, животное, автомобиль) и отправлял снимок с подписью в Telegram. Вот как это реализуется за 5 минут.
Шаг 1. Прошивка ESP32-CAM
Используем стандартную прошивку на C++ (Arduino Framework), которая:
- Подключается к Wi-Fi
- Запускает MQTT-клиент
- При детекции движения (по разнице пикселей или PIR-датчику) захватывает фото, кодирует в base64 и публикует в топик esp32/cam/motion
Пример фрагмента:
#include <WiFi.h>
#include <PubSubClient.h>
#include "esp_camera.h"
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASS";
const char* mqtt_server = "test.mosquitto.org";
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
// ... настройка камеры, Wi-Fi, MQTT
client.setServer(mqtt_server, 1883);
}
void loop() {
if (motion_detected()) {
camera_fb_t * fb = esp_camera_fb_get();
if (fb) {
String base64 = convert_to_base64(fb->buf, fb->len);
client.publish("esp32/cam/motion", base64.c_str());
esp_camera_fb_return(fb);
}
}
client.loop();
}
Готовую прошивку можно найти в репозитории ESP32-CAM на GitHub (официальный пример от Espressif: github.com/espressif/esp32-camera).
Шаг 2. Подключение AI-агента к MQTT
В чате с ASI Biont вы пишете:
«Подключись к MQTT-брокеру test.mosquitto.org:1883, подпишись на топик esp32/cam/motion, получай фото в base64, декодируй, запусти детекцию объектов через OpenCV (каскады Хаара) или предобученную модель (MobileNet SSD). Если обнаружен человек — отправь фото в Telegram @mybot с подписью "Обнаружен человек в офисе"»
AI генерирует Python-скрипт с использованием paho-mqtt, cv2 (OpenCV), numpy и requests (для Telegram API). Вот как выглядит такой скрипт (выполняется в sandbox ASI Biont):
import paho.mqtt.client as mqtt
import cv2
import numpy as np
import base64
import requests
import json
TELEGRAM_BOT_TOKEN = "YOUR_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
MQTT_BROKER = "test.mosquitto.org"
MQTT_PORT = 1883
TOPIC = "esp32/cam/motion"
# Загружаем каскад для детекции лиц (можно заменить на MobileNet)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
def on_message(client, userdata, msg):
try:
# Декодируем base64 в изображение
img_data = base64.b64decode(msg.payload)
np_arr = np.frombuffer(img_data, np.uint8)
img = cv2.imdecode(np_arr, cv2.IMREAD_COLOR)
# Детекция лиц
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
if len(faces) > 0:
# Сохраняем фото с bounding box
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
_, buffer = cv2.imencode('.jpg', img)
photo_bytes = buffer.tobytes()
# Отправляем в Telegram
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendPhoto"
files = {'photo': ('motion.jpg', photo_bytes, 'image/jpeg')}
data = {'chat_id': TELEGRAM_CHAT_ID, 'caption': f"Обнаружено {len(faces)} лиц(а) в офисе"}
requests.post(url, files=files, data=data)
except Exception as e:
print(f"Error: {e}")
client = mqtt.Client()
client.on_message = on_message
client.connect(MQTT_BROKER, MQTT_PORT, 60)
client.subscribe(TOPIC)
client.loop_forever()
Шаг 3. Запуск и результат
AI выполняет скрипт в sandbox (таймаут 30 секунд — достаточно для одного цикла). Если нужно постоянное прослушивание MQTT, ASI Biont может запустить скрипт как долгоживущий процесс через отдельный сервис. Теперь при каждом движении перед камерой вы получаете в Telegram фото с выделенными лицами.
Почему это выгодно?
- Нет ручного кода: вы не пишете ни строчки Python или C++ — AI генерирует всё под ваш сценарий.
- Гибкость: хотите заменить детекцию лиц на распознавание номеров машин — просто меняете промпт в чате.
- Low-code: для настройки ESP32-CAM достаточно скопировать готовую прошивку из примера; всю логику обработки берёт на себя AI.
- Интеграция с любым устройством: ASI Biont подключается к камере, датчику, PLC, ROS-роботу — через execute_python с любой библиотекой из 50+ доступных.
Альтернативный способ: Hardware Bridge + COM-порт
Если вы используете ESP32-CAM не по Wi-Fi, а через UART (например, для отладки), можно подключить её через Hardware Bridge. Для этого:
- Скачайте
bridge.pyиз дашборда ASI Biont (Devices → Create API Key). - Запустите на ПК:
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud 115200 - В чате напишите: «Подключись к ESP32 через bridge, отправь команду PHOTO и получи ответ»
AI использует industrial_command(protocol='serial', command='serial_write_and_read', data='PHOTO') — bridge отправляет команду в порт и возвращает ответ.
Заключение
Подключение камеры OV2640 на ESP32-CAM к AI-агенту ASI Biont открывает возможности для быстрого прототипирования систем видеоаналитики: от умного домофона до мониторинга производственных линий. Вам не нужно разбираться в OpenCV, MQTT или Telegram Bot API — просто опишите задачу на естественном языке, и AI сделает всё за вас.
Попробуйте сами: зайдите на asibiont.com, создайте API-ключ, подключите свою ESP32-CAM через MQTT или bridge, и начните получать умные уведомления с камеры уже сегодня.
Комментарии