Интеграция Computer Vision (OpenMV, OV2640) с AI-агентом ASI Biont: автоматизация контроля качества через MQTT

Введение

Ручной контроль качества на производстве — это узкое место, которое съедает до 30% времени операторов и приводит к пропуску дефектов из-за усталости. Камера с модулем OV2640 на базе OpenMV (STM32 + Python) позволяет захватывать изображения деталей, но самостоятельный анализ требует написания сложных алгоритмов. AI-агент ASI Biont решает эту задачу: он подключается к OpenMV через MQTT, получает снимки, анализирует их на наличие брака (царапины, сколы, перекосы) и отправляет уведомления в Telegram с архивацией в облаке. В этой статье — пошаговый гайд по интеграции с реальными примерами кода.

Что такое OpenMV и OV2640?

OpenMV — это микроконтроллерная платформа для компьютерного зрения на базе STM32F7 с поддержкой MicroPython. Модуль камеры OV2640 (2 Мп, 1600×1200) подключается через CSI-интерфейс и позволяет захватывать кадры с частотой до 30 FPS. OpenMV имеет встроенный Wi-Fi (модуль ESP8266) или внешний Wi-Fi-адаптер, что даёт возможность передавать изображения по сети. Подробнее — в официальной документации OpenMV.

Зачем подключать OpenMV к ASI Biont?

AI-агент ASI Biont — это программный агент, который умеет писать и выполнять Python-код для взаимодействия с оборудованием. Вместо того чтобы вручную писать прошивку для OpenMV и серверный код для анализа, вы просто описываете задачу в чате: «Подключись к OpenMV через MQTT, каждые 10 секунд получай снимок детали, анализируй на дефекты и при обнаружении брака отправляй фото в Telegram». AI сам генерирует код на MicroPython для OpenMV и Python-скрипт для приёма/анализа.

Какой способ подключения используется?

Мы используем MQTT через paho-mqtt. Почему именно MQTT?
- OpenMV поддерживает MQTT через MicroPython (библиотека umqtt.simple).
- MQTT — лёгкий протокол, работающий даже с низкой пропускной способностью.
- AI-агент ASI Biont подписывается на топик с изображениями и публикует команды (например, «сделай снимок»).

Альтернатива — SSH (если OpenMV подключён к Raspberry Pi) или COM-порт через Hardware Bridge, но MQTT — наиболее гибкий вариант для удалённой работы.

Сценарий: Автоматический контроль качества на конвейере

Задача: На производстве пластиковых деталей необходимо выявлять царапины глубиной более 0,1 мм. Камера OpenMV с OV2640 установлена над конвейером. При прохождении детали OpenMV делает снимок, отправляет его по MQTT на ASI Biont. AI анализирует изображение (используя OpenCV или предобученную модель) и при обнаружении дефекта отправляет фото в Telegram с пометкой «Брак».

Шаг 1. Подготовка OpenMV

На OpenMV загружается прошивка на MicroPython, которая:
- Подключается к Wi-Fi.
- Подключается к MQTT-брокеру (например, Mosquitto, работающему на сервере).
- По команде (подписка на топик cmd/camera) делает снимок и публикует JPEG-изображение в топик data/camera.

Пример кода для OpenMV (MicroPython):

import sensor, image, time
from umqtt.simple import MQTTClient
import network

# Настройка Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect('your_ssid', 'your_password')

# Настройка камеры
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time=2000)

# MQTT клиент
client = MQTTClient('openmv', 'broker_ip', port=1883)
client.connect()

def capture_and_send():
    img = sensor.snapshot()
    buf = img.compress(quality=90)
    client.publish('data/camera', buf)
    print('Image sent')

# Подписка на команды
def callback(topic, msg):
    if msg == b'capture':
        capture_and_send()

client.set_callback(callback)
client.subscribe('cmd/camera')

while True:
    client.check_msg()
    time.sleep_ms(100)

Шаг 2. Подключение ASI Biont к MQTT

Пользователь пишет в чате ASI Biont: «Подключись к MQTT-брокеру по адресу 192.168.1.100:1883, подпишись на топик data/camera, каждые 10 секунд читай изображение, анализируй на наличие царапин (используй OpenCV с пороговой фильтрацией), если дефект обнаружен — отправь фото в Telegram chat_id -1001234567890».

AI генерирует и выполняет Python-скрипт в sandbox-окружении (execute_python):

import paho.mqtt.client as mqtt
import cv2
import numpy as np
import requests
import io

TELEGRAM_TOKEN = 'your_token'
CHAT_ID = '-1001234567890'

def on_message(client, userdata, msg):
    # Преобразуем байты в изображение
    nparr = np.frombuffer(msg.payload, np.uint8)
    img = cv2.imdecode(nparr, cv2.IMREAD_COLOR)

    # Анализ дефектов (простой пороговый метод)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    edges = cv2.Canny(gray, 50, 150)
    defect_area = np.sum(edges > 0)

    if defect_area > 500:  # порог брака
        # Сохраняем фото и отправляем в Telegram
        _, buffer = cv2.imencode('.jpg', img)
        files = {'photo': ('defect.jpg', buffer.tobytes(), 'image/jpeg')}
        requests.post(f'https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendPhoto',
                     data={'chat_id': CHAT_ID, 'caption': f'Обнаружен дефект! Площадь: {defect_area} пикселей'},
                     files=files)
        print(f'Defect detected: {defect_area}')

mqtt_client = mqtt.Client()
mqtt_client.on_message = on_message
mqtt_client.connect('192.168.1.100', 1883, 60)
mqtt_client.subscribe('data/camera')
mqtt_client.loop_start()

# Ждём 30 секунд (таймаут sandbox)
import time
time.sleep(30)
mqtt_client.loop_stop()

Шаг 3. Результат

  • Каждые 10 секунд ASI Biont получает снимок.
  • При обнаружении дефекта (например, царапины площадью > 500 пикселей) отправляется фото в Telegram.
  • Все снимки можно архивировать в облаке (например, через boto3 в S3).

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

  • Экономия времени: AI пишет код за секунды, вместо часов ручной разработки.
  • Гибкость: можно менять алгоритм анализа одной фразой: «Теперь ищи сколы, а не царапины».
  • Масштабируемость: добавьте 10 камер — AI сам подпишется на все топики.

Как подключить OpenMV к ASI Biont?

  1. Установите MQTT-брокер (например, Mosquitto) на сервере или ПК.
  2. Загрузите приведённый выше MicroPython-код на OpenMV (через OpenMV IDE).
  3. Откройте чат с ASI Biont на asibiont.com и опишите задачу: «Подключись к MQTT брокеру IP 192.168.1.100, подпишись на data/camera, анализируй дефекты, отправляй в Telegram».
  4. AI сам сгенерирует и выполнит код — вы получите работающую систему за минуту.

Заключение

Интеграция OpenMV с OV2640 и AI-агента ASI Biont через MQTT — это готовое решение для автоматизации визуального контроля качества. Вам не нужно быть экспертом в Python или компьютерном зрении: AI сделает всю интеграцию за вас. Попробуйте прямо сейчас на asibiont.com — опишите своё оборудование и получите работающий код за секунды.

← Все статьи

Комментарии