Estoy trabajando en un proyecto que actualmente funciona bien pero este año queremos expandirlo recopilando datos de él, independientemente de sus funciones actuales. Hemos configurado una aplicación de iPad para controlar un Arduino a través de Bluetooth. El siguiente paso es transmitir video a través de Bluetooth al iPad.
Con esta pregunta me gustaría centrarme en cómo un microcontrolador puede enviar un flujo de video a través de Bluetooth. Parece que no puedo encontrar ninguna manera de siquiera comenzar este proyecto.
¿Cómo interconectas la cámara con el microcontrolador?
¿Cómo envías esa transmisión a través de Bluetooth?
Desafortunadamente, en mi experiencia, lo que encontrará rápidamente es que el video es desagradablemente difícil de manipular sin mucha potencia de la CPU. Comencemos desde el principio: ¿cuánto video quieres?
Hay muchas opciones aquí, pero comience poco a poco. Digamos que, en aras de la simplicidad, desea un cuadro de 640x480 de video en blanco y negro de 8 bits, a 24 cuadros por segundo.
Eso es 640*480 píxeles = 307 200 * 8 bits por píxel = 307 200 kilobytes por cuadro * 24 cuadros por segundo = 7 372 800 bytes por segundo o ~7,37 megabytes por segundo
Esa es una línea de base para el rendimiento de datos para una cámara que emite cuadros sin procesar, y eso no incluye sonido ni color. Ahora tiene algunos caminos que puede tomar: puede comenzar a codificar la transmisión de video o puede obtener una gran cantidad de ancho de banda. No conozco el rendimiento de bluetooth, así que no puedo ayudarlo allí.
Desafortunadamente, la codificación requiere una de tres cosas: mucha potencia de procesamiento, o hardware especializado, o (posiblemente) conocimiento de FPGA que tampoco tengo. La codificación reducirá los problemas de ancho de banda, pero a un costo bastante alto. Necesitaría investigar la compresión y otras cosas para averiguar si podría incluso obtener esto a través de su interfaz y aún así hacer que el arduino haga un trabajo útil.
Si desea conectar una cámara a un microcontrolador, encontrará que incluso simplemente tomar imágenes fijas puede ser una molestia en función de cómo se entregan las imágenes fijas. Había una cámara Sparkfun que proporcionaba fotogramas jpeg pero no tenía un período fijo de cuánto tiempo tardaba la codificación, y de repente comenzaba a escupir el fotograma codificado tan rápido como podía, y dado que los fotogramas eran demasiado grandes para caber La memoria RAM en el microcontrolador tenía que pasar todo el tiempo obteniendo el marco y escupiéndolo a través de cualquier interfaz que estuvieran usando para transmitir.
tl; dr: debe establecer lo que necesita y probablemente intentar y averiguar si usar el microcontrolador como intermediario es la mejor opción.
¡Buena suerte! Espero que eso ayude.
Bluetooth es una tecnología de radio semidúplex que tiene una velocidad máxima de datos sin procesar de 1, 2 o 3 Mbps, según el esquema de modulación específico que se utilice. En la práctica, una aplicación puede obtener como máximo unos 200 KB/s de rendimiento de datos.
Incluso si reduce sus requisitos de video a un cuarto de VGA (320 × 240) a 10 fps con 8 bits/píxel (768 KB/s), aún necesitará comprimir los datos sobre la marcha en al menos 4:1 para transmitirlo en tiempo real a través de Bluetooth.
Dicho esto, si esto es algo que aún desea seguir, recomendaría buscar chips DSP como el microcontrolador que seleccione. Solo como un ejemplo, Analog Devices Blackfin ( ADSP-BF561 ) es particularmente adecuado para el procesamiento de video en tiempo real. El EZ-KIT correspondiente es una manera fácil de comenzar con el desarrollo.
lanza
tom prats
usuario18923
bruno bronosky