Práctico con PineCube: cámara IP abierta que solicita una mejor compatibilidad con el núcleo

Cuando PineCube fue anunciado por el proyecto Pine64 en 2020, fue bastante interesante. La mayor parte de esto se debió al atractivo de una computadora de placa única (SBC) en un factor de forma de cámara basada en red (IP) con un módulo de cámara integrado, por solo $ 29.99. Agregue un archivo adjunto y tendrá un pequeño paquete que combina una cámara de 5 MP con Ethernet y WiFi de 100 Mbit. Como complemento, el sistema podría ser alimentado por una batería opcional y también por PoE pasivo, además de MicroUSB.

Hace unas semanas compré dos de estas placas, como parte de un proyecto de cliente, y comencé a usarlas para una implementación de cámara IP personalizada. Con las cámaras expertas existentes en Linux-on-SBC y MIPI (CSI) a mi lado, desde la Raspberry Pi hasta las placas Odroid, Orange Pi y Banana Pi, estaba bastante seguro de que podría encenderlo con un mínimo de problemas.

Desafortunadamente, mis experiencias fueron todo menos positivas. Después de pasar muchas horas con PineCube, no puedo recomendarlo para aquellos que buscan una cámara IP. Hay muchas razones para esto que intentaré explicar en este artículo.

Primeras impresiones

La parte frontal del PineCube, sin el cabezal de la lente.

Pedir estas dos placas PineCube (¿PineCubes?) Fue una experiencia bastante curiosa, incluso si uno está acostumbrado a pedir hardware en línea. Después de hacer clic en los cuadros de diálogo en la tienda Pine64 y pagar el pedido (eligiendo un envío estándar), recibí un correo electrónico de confirmación. No había una fecha de envío estimada, pero después de esperar unas semanas y preguntarme si alguna vez recibiría una actualización, recibí una notificación de que mi pedido había sido enviado, junto con un enlace de seguimiento.

Este rastreo terminó en algún lugar de la oficina de aduanas, así que un día de repente entregué el paquete con los PineCubes. En la sencilla caja de cartón estaban las dos pequeñas cajas blancas, cada una de las cuales contenía un tablero PineCube de forma ligeramente ancha. Durante el boxeo, me preocupaba arrancar algunos cables o cables flexibles mientras extraía el soporte de la bolsa blanda.

El recinto para PineCube, que no se puede obtener. Sin emabargo.

El módulo de altavoz cuelga en el extremo de sus dos cables bastante largos, y pensé que era necesario revisar el flex plano que conecta las dos placas que componen el sistema (¿una Computadora de Dos Placas sigue siendo un término?), Si hubiera ha sido expulsado. No es el tipo de placa que desea manejar con demasiada frecuencia, como lo haría con una Raspberry Pi o similar. Se siente delicado y desearía poder ponerlo en un gabinete de inmediato para mantenerlo seguro, sin una orientación realmente estable para colocarlo en un escritorio.

Dado que la página Wiki de PineCube contiene un enlace a lo que debería ser un archivo STL del caso que estaría a la venta más tarde, según una publicación reciente del blog, asumí que imprimiría una copia en la impresora 3D en la que estaba parado. aquí antes de que llegaran las tablas. Desafortunadamente, como señalaron las personas en los comentarios de esa publicación del blog, no se publicaron archivos STL, sino archivos CAD patentados de SolidWorks. Tres meses después, todavía no hay archivos STL disponibles (Actualizar: se agregó “conversión STL rápida y sucia” entre la escritura y la publicación de esta revisión). Aún no hay ningún archivo adjunto disponible para su compra.

Sensores EoL y compatibilidad con Linux

Hay un encabezado GPIO que también proporciona UART, SPI, I2C y demás.

Con el gabinete como un detalle “agradable de tener” en la imagen más grande (juego de palabras), luego me concentré en las partes funcionales del hardware que me dieron. Es bastante decepcionante ver que la cámara es un OV5640, un sensor de aproximadamente 9 años que ha estado al final de su vida útil durante algún tiempo. Eso hace que el futuro de PineCube parezca un poco dudoso y probablemente de corta duración.

Bueno, esto también significa que la compatibilidad con Linux no es un problema, ya que Video4Linux (v4l) lo acepta felizmente como fuente de entrada al configurar una transmisión RTMP a través de ffmpeg. Sin embargo, esto es completamente diferente de la situación con la GPU en el S3 SoC. Como se puede ver en la página “esfuerzo de la línea principal de Linux” en Linux-sunxi, el kernel de Linux 5.11 es el primero en listar el soporte de S3 como fusionado. El soporte de S3 en el kernel 5.10 se realiza con el soporte de V3s SoC, como se puede saber al mirar el archivo de superposición del dispositivo en Armbian para PineCube, que usa el kernel 5.10. Los SoCs S3 y Allwinner V3 son derivados, por lo que tiene sentido cierta compatibilidad.

Una mirada al PineCube. Observe los cables que se dañan fácilmente.

En este momento, la codificación de video sigue siendo WIP (trabajo en curso). Esto significa que ffmpeg, gstreamer o cualquier marco de gráficos utilizado para la codificación de video debe hacer todo esto en el software, utilizando el único núcleo de CPU Cortex-A7 y las extensiones de progreso de vector NEON. Con un simple flujo de RTMP de la cámara, esto parecía ser bastante eficiente.

El PineCube también tiene un altavoz, como se mencionó anteriormente. Desafortunadamente, esto no se puede usar en este momento y no se graba ningún dispositivo de audio. Parece que el soporte para esto puede venir con la próxima versión de Armbian, sin embargo, cortesía de una solución de superposición de hardware mejorada que se ha aportado recientemente.

Usar como cámara

Generalmente utilizado, el PineCube es similar a cualquier otro SBC. Descarga la imagen para la placa de destino, la escribe en una tarjeta MicroSD y la inserta en el lector de tarjetas MicroSD antes de encender el sistema. Debido a que PineCube no tiene salidas de video, los métodos interactivos se limitan a una conexión en serie o SSH (si está conectado a Ethernet). Después de establecer una conexión de consola usando ambos métodos, iniciar sesión en Armbian es tan simple como 1234. (Esta es la contraseña predeterminada).

Una vez que haya iniciado sesión en Armbian, para llegar al punto en el que es posible configurar un flujo RTMP, se necesita poco más que instalar media-ctl (paquete v4l-utils) y ffmpeg antes de ejecutar los siguientes comandos para configurar el código FLV de difusión de 640 × 480 al servidor RTMP:

$ media-ctl --set-v4l2 '"ov5640 1-003c":0[fmt:UYVY8_2X8/640x480@1/15]'
$ ffmpeg -s 640x480 -r 15 -i /dev/video0 -vcodec flv -f flv rtmp://<rtmp_server>/live/pinecube

Después de ejecutar este comando y conectarse al servidor RTMP con un reproductor de sistema de escritorio, el video de PineCube ahora se puede ver en gloriosos 640 × 480 a 15 FPS, con unos segundos de retraso. El FPS se puede aumentar a 30 FPS a 1080p, pero sin soporte de código de hardware, esto puede resultar en tartamudeo y problemas.

Durante la instalación del sistema, noté que se cuelga de manera confiable al descargar algunos recursos a través de HTTP y solo se reiniciará después de que la descarga HTTP haya expirado. Cuando salvé top abierto en otra terminal SSH, pude ver que el sistema estaba cargando hasta 12 y más mientras se llenaban los 111 MB de RAM del sistema (de un total de 128 MB), junto con el intercambio.

Este mismo patrón se repitió cuando intenté configurar un flujo RTMP que agregó más procesamiento local (codificación h.264) y una capa de seguridad personalizada (cifrado). Sin soporte de código de hardware, podría ver una carga del sistema explotar hasta que el sistema dejó de responder. El envío de Ctrl + C a través de la terminal SSH finalmente funcionó después de una demora de diez minutos.

El SoC S3

El S3 SoC se puede ver en el interior de la pila PineCube.

Cuando comparo el PineCube con otros SBC con los que he trabajado, el S3-SoC en esta placa en particular parece ser el principal factor limitante, y especialmente la baja cantidad de RAM y la persistente falta de hardware. Parece ser sobre todo un SoC dirigido a cámaras IP baratas, lo que significa que intentar traspasar los límites con ese enfoque tendrá repercusiones.

En este sentido, es fascinante ver que Olimex también planea lanzar una placa basada en S3 este año, en forma de S3-OLinuXino. Quizás el hecho de que tener más tableros de código abierto ayude a aumentar el soporte para estos SoC más oscuros. Lo que está claro para mí es que sin un hardware completo, especialmente para la codificación de video, los usos de estas plataformas serán limitados.

Envolvente

Para el usuario más casual, podría comparar el PineCube de $ 30 con las consideraciones anteriores, y algo como el Raspberry Pi Zero W ($ 18) o Banana Pi M2 Zero (Allwinner H2 + SoC, $ 25), junto con algo como el Cámara Raspberry Pi V2. módulo con módulo de cámara Sony IMX219 de 8 MP ($ 25). Por menos de $ 50 tendrías una placa con más RAM (incluso la RPi Zero tiene 512 MB), una mejor cámara y también la opción de estar listo para comprar o imprimir carcasas (incluso con un módulo de cámara).

Tanto los SoC BCM2835 de Allwinner H2 + como de Raspberry Pi Zero han sido compatibles con Linux durante años, incluidas cosas como la codificación de video. Todo esto hace que uno se pregunte cuál es exactamente la razón de ser de PineCube, junto con la de la presencia del S3-SoC en entornos más generales.

En cuanto a la configuración más especial para la que compré estas placas PineCube, estoy bastante seguro de que funcionará, y lo más probable es que la mayoría de los problemas y deficiencias de hardware a largo plazo se sigan resolviendo con el tiempo. Sin embargo, después de esta experiencia, siento que no es la plataforma adecuada para cualquiera que no esté dispuesto a dedicar un tiempo considerable a operar incluso las cosas básicas.

Miguel Vidal
Miguel Vidal

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *