Tabla de contenido:

CribSense: un vigilabebés sin contacto basado en video: 9 pasos (con imágenes)
CribSense: un vigilabebés sin contacto basado en video: 9 pasos (con imágenes)

Video: CribSense: un vigilabebés sin contacto basado en video: 9 pasos (con imágenes)

Video: CribSense: un vigilabebés sin contacto basado en video: 9 pasos (con imágenes)
Video: Los 5 mejores vigilabebés: opinión y análisis 2024, Noviembre
Anonim
CribSense: un monitor para bebés sin contacto basado en video
CribSense: un monitor para bebés sin contacto basado en video
CribSense: un monitor para bebés sin contacto basado en video
CribSense: un monitor para bebés sin contacto basado en video

CribSense es un monitor para bebés sin contacto basado en video que puede hacer usted mismo sin gastar mucho dinero

CribSense es una implementación C ++ de Video Magnification sintonizada para ejecutarse en una Raspberry Pi 3 Modelo B. Durante un fin de semana, puede configurar su propio monitor para bebés en la parte superior de la cuna que activa una alarma si su bebé deja de moverse. Como beneficio adicional, todo el software es de uso gratuito para fines no comerciales y se puede ampliar fácilmente.

El repositorio completo que contiene los archivos fuente y la documentación se puede encontrar en

Si bien creemos que CribSense es bastante divertido, es importante recordar que este no es en realidad un dispositivo de seguridad certificado e infalible. Es decir, debe estar configurado correctamente y tener un entorno bien controlado para que funcione. Por ejemplo, si no está bien calibrado y / o el entorno en el video no es propicio para la ampliación del video, es posible que no pueda usarlo. Hicimos esto como un proyecto divertido para ver qué tan bien podíamos hacer que el software de procesamiento pesado, como la ampliación de video, se ejecutara en hardware de cómputo limitado como una Raspberry Pi. Cualquier producto real requeriría muchas más pruebas de las que hemos hecho. Entonces, si usa este proyecto, tómelo por lo que es: una breve exploración de la ampliación de video en una Pi.

Que necesitarás:

Raspberry Pi + Cámara + Herramientas de configuración:

  • Raspberry Pi 3 Modelo B
  • Fuente de alimentación micro USB de 5 V y 2,5 A
  • Módulo de cámara Raspberry Pi NoIR V2
  • Tarjeta MicroSD (utilizamos una tarjeta de clase 10 de 16 GB)
  • Cable flexible para cámara Raspberry Pi (12 ")
  • Altavoces con entrada de 3,5 mm
  • Monitor HDMI
  • Teclado USB
  • Ratón USB
  • [opcional] Disipador de calor Raspberry Pi (si le preocupa el calor, puede pegar uno de estos en su Pi)

Circuito LED IR para funcionamiento con poca luz:

  • [3x] Diodos 1N4001
  • Resistencia de 1 ohmio, 1 W
  • LED IR de 1W
  • 2 cables para enganchar el LED al Pi
  • Soldador

Chasis:

  • Acceso a una impresora 3D (volumen de construcción mínimo = 9.9 "L x 7.8" W x 5.9 "H) para imprimir nuestro chasis. Sin embargo, siéntase libre de construir el suyo propio.
  • Pegamento (cualquier tipo de pegamento funcionará, pero se recomienda pegamento caliente para la creación de prototipos).

Paso 1: requisitos previos

Antes de comenzar nuestra guía paso a paso, ya debería haber instalado la última versión de Raspbian en su tarjeta SD y asegurarse de que su Pi funciona. También deberá habilitar el módulo de la cámara antes de poder acceder a la cámara.

Paso 2: Instalación del software CribSense

CribSense depende de autoconf, libtool, OpenCV y libcanberra, así como de herramientas de software comunes.

  • autoconf y libtool se utilizan para configurar automáticamente archivos MAKE y crear scripts para CribSense en muchas plataformas (como Linux, OSX y Raspberry Pi).
  • OpenCV es un poderoso paquete de visión por computadora que se utiliza para procesar imágenes y es la base del código de aumento de video y detección de movimiento. Tiene un gran soporte, es fácil de usar y tiene un buen rendimiento.
  • libcanberra es una biblioteca simple para reproducir sonidos de eventos. Se utiliza para reproducir el sonido de la alarma de CribSense.

Visite sus páginas individuales para obtener todos los detalles.

Instálelos abriendo una terminal en su Pi y ejecutando:

sudo apt-get install git build-essential autoconf libtool libopencv-dev libcanberra-dev

A continuación, debe configurar el controlador de la cámara para que se cargue automáticamente agregando bcm2835-v4l2 a `/ etc / modules-load.d / modules.conf`. Su modules.conf debería verse así:

# / etc / modules: módulos del kernel para cargar en el momento del arranque.

# # El archivo contiene los nombres de los módulos del kernel que se deben # cargar en el momento del arranque, uno por línea. Las líneas que comienzan con "#" se ignoran. i2c-dev bcm2835-v4l2

Una vez que se ha editado el archivo, debe reiniciar su Pi. CribSense utiliza este controlador para extraer fotogramas directamente de la cámara NoIR.

Luego, puede clonar el repositorio ejecutando:

clon de git

Luego, muévase al repositorio y compile el software ejecutando

cd CribSense

./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug make sudo make install sudo systemctl daemon-reload

¡Felicitaciones, ha instalado todo el software necesario!

Configuración

CribSense se puede personalizar a través de un simple archivo de configuración INI. Después de ejecutar `make install`, el archivo de configuración se encuentra en /etc/cribsense/config.ini. Puede ver y editar estos parámetros ejecutando

sudo nano /etc/cribsense/config.ini

Se proporciona una breve explicación de cada parámetro en la configuración predeterminada, pero hay más detalles disponibles en https://lukehsiao.github.io/CribSense/setup/config/. También discutiremos la calibración y la configuración al final de esta guía.

Ejecutando CribSense

CribSense fue diseñado para ejecutarse al inicio mediante el uso de un servicio systemd. Mientras esté conectado a su Raspberry Pi con su teclado y mouse, debe asegurarse de que los parámetros de configuración funcionen para su cuna. Es posible que deba volver a ajustar estos parámetros si lo mueve.

Mientras ajusta los parámetros, puede ejecutar cribsense a voluntad desde la línea de comandos ejecutando

cribsense --config /etc/cribsense/config.ini

Una vez que esté satisfecho, puede habilitar la ejecución automática ejecutando

sudo systemctl habilitar cribsense

Puede evitar que cribsense se ejecute automáticamente ejecutando

sudo systemctl deshabilitar cribsense

Descripción general del software

El software CribSense es el corazón y el alma de este proyecto. Vimos algunas de las grandes demostraciones de ampliación de video del MIT y queríamos probar y ejecutar un algoritmo similar en una Raspberry Pi. Esto requirió una aceleración de más de 10 veces del trabajo de tbl3rd en su implementación C ++ de ampliación de video para poder ejecutarse en tiempo real en la Pi. Las optimizaciones necesarias guiaron nuestro diseño del software.

En un nivel alto, CribSense recorre repetidamente una máquina de estado de software. Primero, divide cada cuadro de video en escala de grises de 640x480 en 3 secciones horizontales (640x160) para una mejor ubicación de la caché. Luego aumenta cada banda en un hilo separado y monitorea el movimiento que se ve en el marco. Después de monitorear el movimiento durante varios segundos, determina el área principal de movimiento y le recorta el marco. Esto reduce el número total de píxeles que necesita procesar el algoritmo. Luego, CribSense monitorea la cantidad de movimiento en el flujo recortado y hace sonar una alarma si no se percibe movimiento durante un período de tiempo configurable. Periódicamente, CribSense abrirá su vista nuevamente para monitorear el cuadro completo en caso de que el bebé se haya movido y vuelva a recortar alrededor de la nueva área principal de movimiento.

La ampliación de video se utiliza para aumentar la relación señal / ruido de movimientos sutiles como la respiración infantil. No sería necesario para movimientos más grandes, pero puede ayudar para movimientos muy sutiles. Tenga en cuenta que nuestra implementación se basa libremente en el algoritmo descrito en los artículos del MIT y no funciona tan bien como su código propietario.

Optimizaciones como multiproceso, recorte adaptativo y optimizaciones del compilador nos dieron aproximadamente 3x, 3x y 1.2x de aceleración, respectivamente. Esto nos permitió alcanzar la aceleración 10x requerida para ejecutar en tiempo real en la Pi.

Los detalles completos se pueden encontrar en la página Arquitectura de software del repositorio de CribSense.

Si está interesado en la ampliación de video, visite la página del MIT.

Paso 3: Prepare su hardware: conecte su cámara

Preparar su hardware: conecte su cámara
Preparar su hardware: conecte su cámara

Primero, debe cambiar el cable de 6 "que viene con la cámara por el cable de 12". Para hacer esto, simplemente puede seguir este tutorial sobre cómo reemplazar el cable de la cámara.

En resumen, verá una pestaña de empujar / tirar en la parte posterior de la cámara que puede sacar para liberar el cable flexible. Reemplace el cable corto por el más largo y empuje la pestaña hacia adentro.

Notará que tenemos un cable de 24 "en nuestras fotos. Era demasiado largo. El cable de 12" en la lista de materiales tiene una longitud mucho más razonable.

Paso 4: Preparación del hardware: LED de infrarrojos

Preparar su hardware: LED IR
Preparar su hardware: LED IR
Preparar su hardware: LED IR
Preparar su hardware: LED IR
Preparar su hardware: LED IR
Preparar su hardware: LED IR

CribSense es relativamente fácil de construir y se compone principalmente de piezas disponibles comercialmente. Como se ve en la figura anterior, hay 5 componentes de hardware principales, de los cuales solo 2 están hechos a medida. En esta página se explica cómo construir el circuito de LED de infrarrojos, y en la página siguiente se explica cómo construir el chasis.

Para esta parte, necesita obtener su soldador, cables, diodos, LED de infrarrojos y resistencia. Construiremos el circuito que se muestra en la segunda figura. Si eres nuevo en la soldadura, aquí tienes una buena guía que te pondrá al día. Si bien esta guía trata sobre la soldadura de orificios pasantes, puede utilizar las mismas técnicas básicas para conectar estos componentes como se muestra en la tercera figura.

Para proporcionar una iluminación adecuada por la noche, utilizamos un LED IR, que no es visible para el ojo humano pero sí para la cámara NoIR. El LED IR no consume mucha energía en comparación con la Raspberry Pi, por lo que dejamos encendido el LED IR en aras de la simplicidad.

En versiones anteriores del Pi, la salida de corriente máxima de estos pines era de 50 mA. La Raspberry Pi B + aumentó esto a 500 mA. Sin embargo, solo usamos los pines de alimentación de 5V para simplificar, que pueden suministrar hasta 1.5A. El voltaje directo del LED IR es de aproximadamente 1,7 ~ 1,9 V según nuestras medidas. Aunque el LED IR puede consumir 500 mA sin dañarse a sí mismo, reducimos la corriente a alrededor de 200 mA para reducir el calor y el consumo general de energía. Los resultados experimentales también muestran que el LED IR es lo suficientemente brillante con 200 mA de corriente de entrada. Para cerrar la brecha entre 5V y 1.9V, usamos tres diodos 1N4001 y una resistencia de 1 Ohm en serie con el LED IR. La caída de voltaje sobre el cable, los diodos y la resistencia es de aproximadamente 0,2 V, 0,9 V (para cada uno) y 0,2 V, respectivamente. Por lo tanto, el voltaje sobre el LED de infrarrojos es de 5 V - 0,2 V - (3 * 0,9 V) - 0,2 V = 1,9 V. La disipación de calor sobre el LED es de 0,18 W y de 0,2 W sobre la resistencia, todo dentro de sus valores máximos.

¡Pero aún no hemos terminado! Para lograr un mejor ajuste en el chasis impreso en 3D, queremos que la lente LED IR sobresalga de nuestro chasis y que la placa PCB quede al ras con el orificio. El pequeño fotodiodo en la parte inferior derecha se interpondrá. Para remediar esto, lo desoldamos y lo volteamos al lado opuesto del tablero como se muestra en las dos fotos finales. El fotodiodo no es necesario ya que queremos que el LED esté siempre encendido. Simplemente cambiarlo al lado opuesto deja el circuito LED original sin cambios.

Cuando suelde a los cables, asegúrese de que los cables tengan al menos 12 pulgadas de largo y que tengan cabezales de clavija que puedan deslizarse sobre los GPIO de Pi.

Paso 5: Preparación del hardware: chasis

Preparar su hardware: chasis
Preparar su hardware: chasis
Preparar su hardware: chasis
Preparar su hardware: chasis
Preparar su hardware: chasis
Preparar su hardware: chasis

Archivos fuente:

  • Caso STL
  • Case Makerbot
  • Cubierta STL
  • Cover Makerbot

Usamos un chasis simple impreso en 3D para alojar el Pi, la cámara y el LED. El uso de nuestro chasis es opcional, aunque se recomienda para evitar que los niños pequeños toquen los circuitos electrónicos expuestos. Cada cuna es diferente, por lo que nuestro chasis no incluye incluye un soporte de montaje. Varias opciones de montaje podrían incluir:

  • Sujetacables
  • Cerradura doble 3M
  • Velcro
  • Cinta

Si tiene acceso a un MakerBot Replicator (5.ª generación), simplemente puede descargar los archivos.makerbot para el estuche y la cubierta en su MakerBot Replicator e imprimir. Se necesitan aproximadamente 6 horas para imprimir la funda y 3 horas para imprimir la portada. Si está utilizando un tipo diferente de impresora 3D, siga leyendo.

Se requiere un volumen de construcción mínimo de 9.9 "(L) x 7.8" (W) x 5.9 "(H) para imprimir CribSense. Si no tiene acceso a una impresora 3D con este volumen de construcción, puede utilizar una impresión 3D en línea servicio (como Shapeways o Sculpteo) para imprimir CribSense. La resolución mínima de impresión es 0.015 ". Si está utilizando una impresora 3D del tipo de fabricación de filamentos fundidos, esto significa que el diámetro de la boquilla debe ser de 0,015 "o menos. Las impresoras con resoluciones de impresión más bajas (diámetros de boquilla más grandes) pueden funcionar, pero la Raspberry Pi podría no encajar en el chasis. Recomendamos PLA (ácido poliláctico) como material de impresión preferido. Otros plásticos pueden funcionar, pero la Raspberry Pi puede no encajar en la carcasa si el coeficiente de expansión térmica del plástico elegido es mayor que el del PLA. Si su impresora 3D tiene un placa de construcción calentada, apague el calentador antes de continuar.

Orientar el modelo en la placa de impresión de su impresora es fundamental para una impresión exitosa. Estos modelos fueron cuidadosamente diseñados para que no sea necesario imprimirlos con material de soporte, ahorrando plástico y mejorando la calidad de impresión. Antes de continuar, descargue los archivos 3D para la carcasa y la cubierta. Al imprimir estos modelos, el cuello de CribSense debe quedar plano sobre la placa de construcción. Esto asegura que todos los ángulos de voladizo en los modelos no excedan los 45 grados, eliminando así el requisito de material de soporte. Para obtener instrucciones sobre cómo orientar modelos 3D en el volumen de construcción de su impresora, consulte el manual de instrucciones que viene con su impresora 3D. Los ejemplos de la orientación de construcción de la carcasa y la cubierta se muestran arriba.

Además de colocar el cuello de CribSense plano contra la placa de construcción, puede notar que los modelos giran alrededor del eje vertical. Esto puede ser necesario para ajustar el modelo dentro del volumen de construcción de su impresora 3D. Esta rotación es opcional si la longitud de su volumen de construcción es lo suficientemente larga para acomodar CribSense.

Paso 6: Preparación del hardware: ensamblaje

Preparación del hardware: montaje
Preparación del hardware: montaje
Preparación del hardware: montaje
Preparación del hardware: montaje
Preparación del hardware: montaje
Preparación del hardware: montaje
Preparación del hardware: montaje
Preparación del hardware: montaje

Una vez que tenga todo el hardware listo, puede comenzar a ensamblar. Se puede usar cualquier pegamento en este proceso, pero recomendamos el pegamento caliente por dos razones principales. El pegamento caliente se seca rápidamente, por lo que no es necesario esperar mucho tiempo para que se seque. Además, el pegamento caliente se puede quitar si comete un error. Para quitar el pegamento termofusible seco, sumerja el pegamento termofusible en alcohol isopropílico. Recomendamos una concentración del 90% o más, pero la concentración del 70% seguirá funcionando. Remojar el pegamento caliente seco en alcohol isopropílico debilitará la unión entre el pegamento y la superficie subyacente, lo que le permitirá despegar el pegamento limpiamente. Al remojar el pegamento en alcohol isopropílico, la Raspberry Pi debe apagarse y desenchufarse. Asegúrese de dejar que todo se seque antes de volver a aplicar pegamento caliente y arrancar la Raspberry Pi.

Todas las imágenes de estos pasos están en orden y siguen los pasos del texto.

  1. Inserte la Raspberry Pi en el chasis. Deberá flexionarlo un poco para que entre el puerto de audio, pero una vez que esté adentro, el conector de audio lo mantendrá en su lugar. Una vez que esté en su lugar, asegúrese de que aún se pueda acceder a todos los puertos (por ejemplo, puede enchufar el cable de alimentación).
  2. A continuación, use pegamento termofusible para fijar el Pi en su lugar y coloque la cámara en el Pi. También hay orificios para tornillos si prefiere usarlos.
  3. Ahora, pegue el LED y la cámara a la cubierta frontal (en la imagen). Comience pegando en caliente la cámara NoIR al orificio de la cámara. Asegúrese de que la cámara esté ajustada y alineada con el chasis. No use demasiado pegamento; de lo contrario, no podrá colocar la cámara en la carcasa principal. Asegúrese de encender el Pi y echar un vistazo a la cámara (`raspistill -v`, por ejemplo) para asegurarse de que tenga un buen ángulo y un buen campo de visión. Si no es así, retire el pegamento caliente y vuelva a colocarlo.
  4. A continuación, pegue el LED de infrarrojos en el orificio del cuello de la cubierta. El cuello está en un ángulo de 45 grados para iluminar el costado de la cuna, lo que da como resultado más sombras en situaciones de poca luz. Esto agrega más contraste a la imagen, lo que facilita la detección de movimiento.
  5. Conecte los cables del LED IR a los pines del cabezal de la Raspberry Pi como se muestra en la imagen esquemática.
  6. Empaquete los cables en el chasis de una manera que no los doble ni los fuerce. Terminamos doblando el cable en forma de acordeón porque el cable flexible de nuestra cámara era demasiado largo.
  7. Con todo metido, pega pegamento caliente alrededor de los bordes donde se unen las dos piezas, sellándolos en su lugar.

Paso 7: Calibración

Image
Image
Calibración
Calibración

Los detalles sobre los parámetros de configuración se pueden encontrar en la documentación del repositorio de CribSense. También vea el video para ver un ejemplo de cómo podría calibrar CribSense después de haber configurado todo.

Aquí hay una muestra del archivo de configuración:

[io]; Configuración de E / S

; input = path_to_file; Archivo de entrada para usar input_fps = 15; fps de entrada (40 máx., se recomiendan 15 si se usa la cámara) full_fps = 4.5; fps a los que se pueden procesar fotogramas completos crop_fps = 15; fps a los que se pueden procesar los fotogramas recortados camera = 0; Cámara para usar ancho = 640; Ancho de la altura del video de entrada = 480; Altura del video de entrada time_to_alarm = 10; Cuántos segundos esperar sin movimiento antes de la alarma. [cultivo]; Ajustes de recorte adaptativo crop = true; Si recortar o no frames_to_settle = 10; # marcos para esperar después del reinicio antes de procesar roi_update_interval = 800; # fotogramas entre recalcular el ROI roi_window = 50; # fotogramas para monitorear antes de seleccionar ROI [movimiento]; Configuración de detección de movimiento erode_dim = 4; dimensión del núcleo erosionado dilate_dim = 60; dimensión del kernel dilatado diff_threshold = 8; diferencia de abs necesaria antes de reconocer la duración del cambio = 1; # fotogramas para mantener el movimiento antes de marcar el umbral de píxel verdadero = 5; # píxeles que deben ser diferentes para marcar como movimiento show_diff = false; mostrar la diferencia entre 3 fotogramas [ampliación]; Los ajustes de ampliación de vídeo amplifican = 25; El% de amplificación de corte bajo deseado = 0,5; La baja frecuencia del paso de banda. corte alto = 1.0; La alta frecuencia del paso de banda. umbral = 50; El umbral de fase como% de pi. show_magnification = falso; Muestra los fotogramas de salida de cada aumento [depuración] print_times = false; Tiempos de análisis de impresión

La calibración del algoritmo es un esfuerzo iterativo, sin una solución exacta. Le recomendamos que experimente con varios valores, combinándolos con las funciones de depuración, para encontrar la combinación de parámetros más adecuada para su entorno. Antes de comenzar la calibración, asegúrese de que show_diff y show_magnification estén configurados en true.

Como pauta, aumentar la amplificación y los valores de umbral de fase aumenta la cantidad de aumento aplicado al video de entrada. Debe cambiar estos valores hasta que vea claramente el movimiento que desea rastrear en el cuadro de video. Si ve artefactos, reducir el umbral de fase mientras se mantiene la misma amplificación podría ayudar.

Los parámetros de detección de movimiento ayudan a compensar el ruido. Al detectar regiones de movimiento, erode_dim y dilate_dim se utilizan para dimensionar las dimensiones de los núcleos OpenCV utilizados para erosionar y dilatar el movimiento de modo que el ruido se erosione primero y luego la señal de movimiento restante se dilata significativamente para hacer obvias las regiones de movimiento. Es posible que también sea necesario ajustar estos parámetros si su cuna está en un entorno de muy alto contraste. En general, necesitará un erode_dim más alto para configuraciones de alto contraste y un erode_dim más bajo para bajo contraste.

Si ejecuta CribSense con show_diff = true y observa que gran parte de la salida del acumulador es blanca, o una parte del video que no está relacionada con nada se detecta como movimiento (por ejemplo, una lámpara parpadeante), aumente erode_dim hasta que solo sea una parte del video correspondiente a su bebé es la sección más grande de blanco. La primera figura muestra un ejemplo donde la dimensión de erosión es demasiado baja para la cantidad de movimiento en el marco, mientras que la siguiente muestra un marco bien calibrado.

Una vez que se haya calibrado, asegúrese de que pixel_threshold esté establecido en un valor tal que "Pixel Movement" solo informe los valores máximos del movimiento de píxeles, y no todos (lo que significa que debe eliminar el ruido). Idealmente, verá un resultado como este en su terminal, donde hay un patrón periódico claro correspondiente al movimiento:

[información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 1,219812 Hz

[info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 1,219812 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 1,219812 Hz [info] Movimiento de píxeles: 0 [información] Estimación de movimiento: 1,219812 Hz [info] Movimiento de píxeles: 44 [info] Estimación de movimiento: 1.219812 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 1.219812 Hz [info] Movimiento de píxeles: 161 [info] Estimación de movimiento: 1.219812 Hz [info] Movimiento de píxeles: 121 [info] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 86 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 0,841416 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 0,841416 Hz [info] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [info] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles ent: 0 [info] Estimación de movimiento: 0,841416 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 0,841416 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 0,841416 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 97 [información] Estimación de movimiento: 0,841416 Hz [información] Movimiento de píxeles: 74 [información] Estimación de movimiento: 0,839298 Hz [información] Píxeles Movimiento: 0 [info] Estimación de movimiento: 0,839298 Hz [info] Movimiento de píxeles: 60 [info] Estimación de movimiento: 0,839298 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 0,839298 Hz [info] Movimiento de píxeles: 0 [info] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 48 [información] Movimiento Estimación: 0,839298 Hz [información] Movimiento de píxeles: 38 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 29 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 28 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 22 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,839298 Hz [información] Movimiento de píxeles: 0 [información] Estimación de movimiento: 0,839298 Hz

Si su salida se parece más a esto:

[información] Movimiento de píxeles: 921 [información] Estimación de movimiento: 1,352046 Hz

[información] Movimiento de píxeles: 736 [información] Estimación de movimiento: 1,352046 Hz [información] Movimiento de píxeles: 666 [información] Estimación de movimiento: 1,352046 Hz [información] Movimiento de píxeles: 663 [información] Estimación de movimiento: 1,352046 Hz [información] Movimiento de píxeles: 1196 [info] Estimación de movimiento: 1.352046 Hz [info] Movimiento de píxeles: 1235 [info] Estimación de movimiento: 1.352046 Hz [info] Movimiento de píxeles: 1187 [info] Estimación de movimiento: 1.456389 Hz [info] Movimiento de píxeles: 1115 [info] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 959 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 744 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 611 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 468 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 371 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 307 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 270 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 234 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 197 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 179 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 164 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 239 [información] Estimación de movimiento: 1.456389 Hz [info] Movimiento de píxeles: 733 [información] Estimación de movimiento: 1.456389 Hz [información] Movimiento de píxeles: 686 [información] Estimación de movimiento: 1.229389 Hz [información] Movimiento de píxeles: 667 [información] Estimación de movimiento: 1.229389 Hz [información] Movimiento de píxeles: 607 [información] Estimación de movimiento: 1.229389 Hz [información] Movimiento de píxeles: 544 [información] Estimación de movimiento: 1.229389 Hz [información] Movimiento de píxeles: 499 [información] Estimación de movimiento: 1.229389 Hz [información] Movimiento de píxeles: 434 [información] Estimación de movimiento: 1,229389 Hz [información] Movimiento de píxeles: 396 [información] Estimación de movimiento: 1,229389 Hz [información] Movimiento de píxeles: 375 [información] Estimación de movimiento: 1,229389 Hz [información] Movimiento de píxeles: 389 [información] Estimación de movimiento: 1,229389 Hz [información] Movimiento de píxeles: 305 [información] Estimación de movimiento: 1,312346 Hz [información] Movimiento de píxeles: 269 [información] Estimación de movimiento: 1,312346 Hz [información] Movimiento de píxeles: 1382 [información] Movimiento E estimación: 1,312346 Hz [información] Movimiento de píxeles: 1086 [información] Estimación de movimiento: 1,312346 Hz [información] Movimiento de píxeles: 1049 [información] Estimación de movimiento: 1,312346 Hz [información] Movimiento de píxeles: 811 [información] Estimación de movimiento: 1,312346 Hz [información] Movimiento de píxeles: 601 [información] Estimación de movimiento: 1.312346 Hz [información] Movimiento de píxeles: 456 [información] Estimación de movimiento: 1.312346 Hz

Ajuste pixel_threshold y diff_threshold hasta que solo se vean los picos y el movimiento de píxeles sea 0 en caso contrario.

Paso 8: demostración

Image
Image

Aquí hay una pequeña demostración de cómo funciona CribSense. Tendrás que imaginar que está pegado al costado de una cuna.

Cuando coloque CribSense sobre su cuna, deberá optimizar la distancia entre el bebé y la cámara. Idealmente, el pecho de su bebé llenará menos de 1/3 del marco. El niño no debe estar demasiado lejos, de lo contrario, el video de baja resolución tendrá dificultades para encontrar suficientes detalles para ampliar. Si la cámara está demasiado cerca, es posible que la cámara no pueda ver a su hijo si rueda o se sale del encuadre. De manera similar, si el niño está debajo de una manta "cubierta", donde hay un contacto limitado entre la manta y el pecho del niño, puede ser difícil detectar el movimiento. ¡Mételos bien!

También querrá considerar la situación de iluminación alrededor de su cuna. Si su cuna está justo al lado de una ventana, es posible que obtenga sombras en movimiento o valores de luz cambiantes cuando el sol está bloqueado por las nubes o hay movimiento fuera de la ventana. Lo mejor es un lugar con iluminación constante.

Con un poco más de trabajo, creemos que alguien podría mejorar nuestro software para que la calibración sea un proceso mucho más fluido. En el futuro, también se podrían agregar funciones adicionales como notificaciones automáticas.

Paso 9: solución de problemas

Puede encontrar algunos problemas comunes al configurar CribSense. Por ejemplo, tener problemas para construir / ejecutar el programa o no escuchar ningún audio. Recuerde, CribSense no es un monitor para bebés perfectamente confiable. ¡Agradeceríamos contribuciones en nuestro repositorio de GitHub a medida que realiza mejoras!

Aquí hay algunos consejos para la resolución de problemas que hemos recopilado al crear CribSense.

No suena ninguna alarma

  • ¿Están funcionando tus altavoces?
  • ¿Puedes reproducir otros sonidos del Pi fuera de la alarma CribSense?
  • ¿Si su Pi intenta reproducir audio a través de HDMI en lugar del puerto de audio? Consulte la página de configuración de audio de Raspberry Pi para asegurarse de haber seleccionado la salida correcta.
  • ¿El software CribSense detecta movimiento? Si CribSense se está ejecutando en segundo plano, puede verificar con journalctl -f en una terminal.
  • Si CribSense detecta mucho movimiento, es posible que deba calibrar CribSense.

El LED de infrarrojos no funciona

  • ¿Puede ver un color rojo tenue cuando mira el LED de infrarrojos? Debería verse un anillo rojo tenue cuando el LED está encendido.
  • Verifique la polaridad de las conexiones. Si se invierten + 5V y GND, no funcionará.
  • Conecte el LED a una fuente de alimentación con un límite de voltaje / corriente de 5V / 0.5A. Normalmente, debería consumir 0,2 A a 5 V. Si no es así, su LED puede estar funcionando mal.

CribSense detecta movimiento aunque no haya un bebé

  • ¿Ha calibrado correctamente CribSense?
  • Recuerde, CribSense solo busca cambios en los valores de los píxeles

    • ¿Hay sombras moviéndose dentro del marco?
    • ¿Hay luces parpadeantes o cambiantes?
    • ¿CribSense está montado en una superficie estable (es decir, algo que no se mueva si la gente camina junto a él)?
    • ¿Hay otras fuentes de movimiento en el marco (espejos que captan reflejos, etc.)?

CribSense NO detecta movimiento aunque haya movimiento

  • ¿Ha calibrado correctamente CribSense?
  • ¿Hay algo en el camino de la cámara?
  • ¿Puede conectarse a la cámara desde Raspberry Pi? Verifique ejecutando raspistill -v en una terminal para abrir la cámara en la Pi durante unos segundos.
  • Si observa sudo systemctl status cribsense, ¿CribSense realmente se está ejecutando?
  • ¿Está su bebé debajo de una manta que está "carpada" para que no entre en contacto con el niño? Si hay espacios de aire significativos entre la manta y el niño, la manta puede enmascarar el movimiento.
  • ¿Puedes ver el movimiento si amplificas más el video?
  • ¿Puede ver el movimiento si sintoniza los cortes de frecuencia baja y alta?
  • Si esto sucede solo con poca luz, ¿se aseguró de que su calibración funcione con poca luz?

CribSense no construye

¿Instalaste todas las dependencias?

No puedo ejecutar cribsense desde la línea de comandos

  • ¿Escribió incorrectamente algo cuando ejecutó./autogen.sh --prefix = / usr --sysconfdir = / etc --disable-debug durante la compilación del software?
  • ¿Cribsense está presente en / usr / bin?
  • ¿Qué ruta se proporciona si ejecuta "qué cribsense"?

Recomendado: