Умное видеонаблюдение на ESP32-CAM и ASI Biont: интеграция камер OV2640/OV7670 с AI-агентом без кода
Рынок умного видеонаблюдения растёт взрывными темпами: по данным MarketsandMarkets, к 2027 году его объём достигнет $74,2 млрд. Однако большинство решений требуют либо дорогих IP-камер с облачными сервисами, либо написания сложного кода для DIY-проектов. Камеры на базе дешёвых сенсоров OV2640 и OV7670 (цена от $5) в связке с ESP32-CAM открывают доступ к видеонаблюдению за копейки. Но как заставить их работать «с умом» — детектировать движение, распознавать лица и присылать уведомления в Telegram без ручного программирования? Ответ — AI-агент ASI Biont.
В этой статье я покажу, как подключить ESP32-CAM с камерой OV2640 к AI-агенту ASI Biont по протоколу MQTT, настроить детекцию движения и получать оповещения в Telegram — причём весь код интеграции напишет сам AI за секунды.
Что такое OV2640/OV7670 и почему они интересны?
OV2640 и OV7670 — это CMOS-сенсоры изображения, разработанные компанией OmniVision. Основные характеристики:
| Параметр | OV2640 | OV7670 |
|---|---|---|
| Разрешение | до 2 Мп (1600×1200) | VGA (640×480) |
| Интерфейс | DVP (parallel) + SPI | DVP |
| Скорость | 30 fps при UXGA | 30 fps при VGA |
| Размер пикселя | 2.2 µm | 3.6 µm |
| Цена (на AliExpress) | ~$5-7 | ~$3-5 |
Оба сенсора широко используются в модулях ESP32-CAM, AI-Thinker и OV7670 для Arduino. Их главное преимущество — низкое энергопотребление и простота подключения к микроконтроллерам. Однако для полноценного компьютерного зрения (распознавание лиц, детекция объектов) нужен мощный процессор, например Raspberry Pi, или облачный AI. ASI Biont решает эту задачу, выступая в роли «мозга», который анализирует изображения из любого места.
Как ASI Biont подключается к камере?
ASI Biont — это AI-агент, который умеет подключаться к устройствам через несколько промышленных протоколов. Для камер на ESP32-CAM лучше всего подходит MQTT — лёгкий протокол IoT, который поддерживается на ESP32 из коробки и позволяет передавать изображения в реальном времени. AI-агент использует execute_python — он пишет Python-скрипт с библиотекой paho-mqtt, который подписывается на MQTT-топик, получает base64-кодированные кадры и анализирует их с помощью PIL и numpy. Другие варианты:
- SSH — для Raspberry Pi с камерой, AI запускает скрипты OpenCV удалённо.
- HTTP API — если ESP32-CAM отправляет изображения по HTTP, AI может получать их через
aiohttp.
Но MQTT — самый экономичный по трафику и удобный для ESP32-CAM. Всё подключение описано в документации ASI Biont (раздел Devices → MQTT Integration).
Конкретный сценарий: ESP32-CAM → MQTT → ASI Biont → Telegram
Представьте, что вы хотите установить камеру в гараже или офисе, чтобы следить за движением и получать фото при срабатывании датчика. В классическом подходе вам нужно:
- Написать прошивку ESP32-CAM для захвата изображения.
- Написать код для отправки по MQTT.
- Написать серверный код на Python/Nod для подписки и анализа.
- Написать код для отправки уведомлений в Telegram.
С ASI Biont шаги 2-4 выполняет AI. Вы просто описываете задачу в чате, и AI генерирует и запускает нужный скрипт.
Шаг 1: Прошивка ESP32-CAM
Установите на ESP32-CAM базовую прошивку, которая захватывает кадр с OV2640 и отправляет его в MQTT-топик camera/image в формате Base64. Пример на Arduino IDE (библиотеки ESP32Camera и PubSubClient):
#include <WiFi.h>
#include <PubSubClient.h>
#include <esp_camera.h>
const char* ssid = "Ваш WiFi";
const char* password = "Ваш пароль";
const char* mqtt_server = "mqtt.eclipseprojects.io";
const char* topic = "camera/image";
WiFiClient espClient;
PubSubClient client(espClient);
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;
config.ledc_channel = LEDC_CHANNEL_0;
// ... стандартная инициализация ESP32-CAM
esp_camera_init(&config);
}
void loop() {
if (!client.connected()) client.connect("ESP32CAM");
client.loop();
camera_fb_t *fb = esp_camera_fb_get();
if (fb) {
String base64Image = base64::encode(fb->buf, fb->len);
client.publish(topic, base64Image.c_str());
esp_camera_fb_return(fb);
}
delay(5000); // каждые 5 секунд
}
Важно: в реальном проекте используйте локальный MQTT-брокер (Mosquitto) или облачный (HiveMQ Cloud), чтобы не перегружать публичный сервер.
Шаг 2: Получение API-ключа и запуск интеграции
- Зарегистрируйтесь на asibiont.com.
- Зайдите в раздел Devices → Create API Key, скачайте
bridge.py(если нужно — но для MQTT bridge не обязателен, AI работает напрямую). - Откройте чат с AI-агентом и напишите, например:
Подпишись на MQTT-брокер mqtt.eclipseprojects.io:1883, топик camera/image, каждые 10 секунд получай текущий кадр, обнаруживай движение, сравнивая с предыдущим кадром (если среднее изменение яркости > 20%), и при обнаружении отправь мне в Telegram фото и сообщение.
AI уточнит ваш Telegram chat ID и токен бота, после чего сгенерирует и выполнит следующий скрипт (он будет работать в sandbox-окружении на сервере ASI Biont):
import paho.mqtt.client as mqtt
import numpy as np
from PIL import Image
import io
import base64
import requests
import time
# Настройки
BROKER = "mqtt.eclipseprojects.io"
TOPIC = "camera/image"
TELEGRAM_TOKEN = "ваш_токен"
CHAT_ID = "ваш_чат_ид"
previous_frame = None
def send_telegram_photo(base64_img, caption):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendPhoto"
# декодируем Base64 в байты
img_bytes = base64.b64decode(base64_img)
files = {'photo': ('image.jpg', img_bytes)}
data = {'chat_id': CHAT_ID, 'caption': caption}
requests.post(url, files=files, data=data)
def on_message(client, userdata, msg):
global previous_frame
try:
# Декодируем Base64 в изображение
image_bytes = base64.b64decode(msg.payload.decode())
image = Image.open(io.BytesIO(image_bytes)).convert('L') # переводим в серый
current_frame = np.array(image)
if previous_frame is not None:
diff = np.abs(current_frame.astype(int) - previous_frame.astype(int))
mean_diff = np.mean(diff)
if mean_diff > 20: # порог движения
caption = f"Движение обнаружено! Среднее изменение: {mean_diff:.1f}"
send_telegram_photo(msg.payload.decode(), caption)
previous_frame = current_frame
except Exception as e:
print(f"Ошибка: {e}")
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC)
client.loop_start()
# Держим скрипт активным 25 секунд (таймаут sandbox)
time.sleep(25)
client.loop_stop()
Этот код AI сгенерировал сам, используя только библиотеки из sandbox (paho-mqtt, numpy, PIL, requests, base64). Вы можете попросить его запускать скрипт каждые 10 минут или настроить вебхук через Telegram.
Шаг 3: Результат
Как только ESP32-CAM отправит кадр, AI обнаружит движение и пришлёт вам в Telegram фото с подписью. Причём если вы захотите добавить распознавание лиц — просто скажите: «Теперь при обнаружении движения сравнивай лицо с базой известных, если незнакомое — отправь alert». AI допишет код, задействуя, например, API сервиса Face++ или Hugging Face (также доступны в sandbox через requests).
Почему это выгодно?
- Ноль строк кода вручную. Вы описываете логику на естественном языке, AI реализует её за секунды.
- Гибкость. Можете менять сценарий в любой момент — просто напишите новое требование.
- Доступность. ESP32-CAM с OV2640 стоит $7, а AI-агент заменяет серверную часть за $0 (до определённого лимита).
- Открытый код. Вы всегда можете посмотреть и модифицировать сгенерированный скрипт.
Подключаем любую камеру к ASI Biont
Не обязательно использовать MQTT. Если у вас USB-камера на Arduino — AI подключится через Hardware Bridge (COM-порт). Если Raspberry Pi с камерой — через SSH. ASI Biont поддерживает 13 протоколов (список — в документации), и AI сам выбирает нужный и пишет код. Пример для Raspberry Pi с OpenCV:
Подключись по SSH к 192.168.1.100, загрузи скрипт на Python, который запускает OpenCV для детекции лиц, и при обнаружении нового лица отправляй мне в Telegram фото.
AI сгенерирует paramiko-скрипт, загрузит его на Raspberry Pi и запустит.
Заключение
Интеграция дешёвых камер OV2640/OV7670 с AI-агентом ASI Biont превращает «железку» за $5 в полноценную систему компьютерного зрения с уведомлениями в Telegram. Вам не нужно быть программистом — всё делает AI. Попробуйте сами:
- Возьмите ESP32-CAM или Raspberry Pi с камерой.
- Зарегистрируйтесь на asibiont.com.
- Опишите в чате, что хотите получить — AI сделает всё остальное.
Умное видеонаблюдение без кода — это реальность. Присоединяйтесь!
Комментарии