Evaluating bids

Reproductor de videos interactivo, según señales leídas de expansor de puertos Mcp23s17

Published on the April 28, 2019 in IT & Programming

About this project

Open

El proyecto se trata de un reproductor de vídeos interactivo. El hardware consiste en dos expansores de puertos MCP23S17, conectados por SPI al Raspberry, de ambos se usan también sus dos señales de interrupción, esto es importante porque las señales son muy rápidas y el Raspberry solo debe de leerlos cuando se disparen las interrupciones, leyendo entonces los registros que los MCP guardan al dispararse cada interrupción.

En función del estado de las señales leídas en los mcp, y de una configuración que el usuario pueda hacer en un archivo de texto guardado en un pendrive usb conectado al raspberry, este se pondrá a reproducir un vídeo. Si se está reproduciendo un vídeo, y llegan señales para reproducir otro vídeo, el que está en curso debe de parar de inmediato y reproducirse el nuevo también al instante, sin retrasos apreciables.

El reproductor de video NO puede usar omxplayer, ni reproductores de video precompilados, ya que no responden con la rapidez necesaria en un sistema  interactivo en base a señales externas rápidas. Puede estar basado en el hello_video que trae el Raspberry, por cuestiones de rapidez, ya que en cuanto se active una señal el vídeo debe de reproducirse al instante. En cualquier caso el programa principal y el que reproduce el vídeo serán independientes, desde el programa principal se lanzará el programa que reproduce el vídeo pasándole como parámetro el nombre del vídeo a reproducir (como lo hace el hello_video).


El Raspberry, queda también conectado a un microcontrolador por puerto serie, para en el arranque enviar un código aleatorio, al que el microcontrolador le contestará con un contracódigo en base a una fórmula, de está manera se establece un sistema de seguridad para comprobar que el producto es original. Cada vez que arranque el Raspberry debe de hacer esta comprobación, con un código distinto, osea aleatorio. Si el contracódigo no es el correcto, o no hay respuesta, el software no continuará y mostrará  una pantalla de error, no con texto, sino con una imagen que muestre el mensaje de error con letras grandes, o con alguna rutina que permita sacar textos grandes.


Los vídeos se reproducirán a pantalla completa, nada de en ventanas o con marcos.  En principio con el vídeo es suficiente, pero prefiero que también saque sonido.

El desarrollo debe de ser en C++, no hace falta entorno gráfico tipo QT. Pero si puede ser necesario sacar alguna imagen en JPG a pantalla completa, además de la reproducción de los vídeos.

El archivo de configuración que creará el usuario, es un archivo de texto, almacenado también en el pendrive USB junto a los vídeos. En este archivo, se indicará en cada linea una condición de las señales leídas y que vídeo se reproducirá cuando se cumplan. También se puede indicar, cuanto tiene que pasar hasta que se pueda reproducir de nuevo el mismo vídeo, aunque las señales se vuelvan a dar de nuevo en el estado que lo dispara.
Se puede establecer un orden de prioridad de un vídeo, de manera que si hay un vídeo reproduciéndose, y llegan señales para que se reproduzca otro vídeo, este solo lo hará si tiene una prioridad igual o superior, sino seguirá el vídeo que ya estaba reproduciéndose. Por cada linea también se puede indicar que se elija entre varios vídeos, al azar, para que con las mismas señales cada vez se reproduzca un vídeo distinto, por ejemplo de entre 5 vídeos máximo. El identificador del vídeo será un número entre 000 y 999, y esos serán también los nombres de los vídeos, por ejemplo 274 será el vídeo 274.h264

Cuando arranque el Raspberry, además de conectar por puerto serie con el microcontrolador, para intercambiar códigos de seguridad, debe de comprobar que el pendrive USB está conectado, que existe un archivo de configuración, y que los vídeos que se indican en el archivo de configuración existen.
Además habrá un vídeo de arranque o pantalla de presentación, ese vídeo estará en la tarjeta SD del sistema operativo, y el Raspberry tiene que comprobar que existe y su checksum, para detectar que no se hay modificado o substituido, si detecta un checksum incorrecto, el programa no seguirá y mostrará una pantalla de error con texto grande o un JPG con el texto en letras grandes. Si todo es correcto, reproducirá el vídeo de presentación, y quedará a la espera de las señales de los expansores de puertos.

El proyecto no hace uso de teclado ni de ratón. Las unicas señales que el Raspberry lee son las que le llegan por los expansores de puertos MCP23s17, el archivo de configuración en el pendrive USB, los videos en el Pendrive USB, y la comunicación serie con el microcontrolador de seguridad.

Si es posible, se establecerá un encendido y apagado controlado automático, en función del estado de una señal externa. El producto va a funcionar sobre un Rasbperry Pi 3.

Hay algunos detalles más que se verían sobre la marcha, en relación al archivo de texto de configuración, aunque la esencia es lo que he indicado.

Category IT & Programming
Subcategory Other
Project size Large
Is this a project or a position? Project
I currently have I have specifications
Required availability As needed

Delivery term: May 19, 2019

Skills needed

Other projects posted by L. H. S.