Pet Monitor con Raspberry Pi 5 & Hailo-8L (AI HAT) Sistema de monitorización inteligente para mascotas utilizando aceleración por hardware NPU (chip Hailo-8L) para visión por computador a 30 FPS y detección de audio local en CPU para ladridos/sonidos anómalos. --- 1. Hardware Utilizado Placa: Raspberry Pi 5. Coprocesador IA: Raspberry Pi AI HAT (Hailo-8L, 13 TOPS). Cámara: Módulo de cámara Raspberry Pi (CSI). Entrada de audio: Micrófono USB (pendiente de conectar). --- 2. Configuración del Sistema y Hardware Habilitar PCIe Gen 3 Para maximizar el ancho de banda con el chip Hailo-8L, se configuró el bus PCIe en `/boot/firmware/config.txt`: ```ini dtparam=pciex1 dtparam=pciex1_gen=3 ``` Paquetes del Sistema Instalados Se instalaron las utilidades de cámara, controladores del kernel y librerías dinámicas de audio requeridas por el sistema operativo: ```bash sudo apt update && sudo apt full-upgrade -y sudo apt install -y hailo-all rpicam-apps libportaudio2 portaudio19-dev libasound2-dev python3-picamera2 ``` Verificación de hardware NPU Hailo: `lspci` muestra el coprocesador Hailo Technologies y `hailortcli fw-control identify` responde con el firmware cargado. Cámara: `rpicam-hello --list-cameras` detecta correctamente el sensor CSI. --- 3. Entorno de Desarrollo Python (`uv`) Se configuró el entorno virtual utilizando `uv` con acceso a los paquetes del sistema (`--system-site-packages`) para reutilizar los bindings compilados de `picamera2` y `hailo_platform` instalados por Debian/Raspberry Pi OS: ```bash cd ~/pet_monitor # Creación del entorno con acceso a librerías nativas uv venv --system-site-packages # Instalación de librerías en el entorno virtual uv pip install sounddevice numpy scipy requests onnxruntime ``` > **Nota técnica:** Se seleccionó `onnxruntime` en lugar de `tflite-runtime` para garantizar compatibilidad con versiones modernas de Python en ARM64 sin necesidad de compilar desde fuente. --- 4. Estado Actual del Software `pet_speed.py`: Script de visión artificial que: Inicializa `Picamera2` a 1280x720 a 30 FPS. Carga el pipeline oficial de Hailo (`/usr/share/rpi-camera-assets/hailo_yolov8_inference.json`). Filtra detecciones de COCO para gato (id: 15) y perro (id: 16). Calcula el centroide del animal y evalúa el desplazamiento entre frames consecutivos para alertar si la velocidad supera el umbral de carrera (`SPEED_THRESHOLD = 0.30`). Ejecución actual: ```bash uv run python pet_speed.py ``` --- 5. Próximos Pasos (Hoja de Ruta) Fase A: Integración de Audio (Ladridos y Sonidos) Conectar el micrófono USB. Identificar el índice del dispositivo con: ```bash uv run python -m sounddevice ``` Descargar el modelo YAMNet en formato ONNX (`yamnet.onnx`) y el diccionario de clases de AudioSet (`yamnet_classes.csv`). Desarrollar el listener en un hilo secundario (`threading.Thread`) analizando fragmentos de audio de 0.975 segundos en busca de la clase `Bark`. Fase B: Sistema de Alertas y Notificaciones Crear un bot en Telegram con `@BotFather` y obtener el `TELEGRAM_BOT_TOKEN` y `CHAT_ID`. Programar un despachador asíncrono con control de enfriamiento (cooldown de 30-60 s) para evitar spam. Guardar una captura JPEG con la caja delimitadora en el momento de la carrera o ladrido y enviarla a Telegram. Fase C: Despliegue Autónomo (Systemd) Crear una unidad de servicio `/etc/systemd/system/pet_monitor.service`. Habilitar arranque automático al encender la Raspberry Pi: ```bash sudo systemctl enable --now pet_monitor.service ```