Reproductor multimedia del armario


Autor: Nikolai Khabarov

Un buen viernes por la noche, decidí ver una película en casa: encendí la computadora portátil, conecté el cable HDMI a través del adaptador DisplayPort, tomé el control remoto, encendí el televisor y comencé a jugar en la computadora portátil. Y me di cuenta de que el volumen en el televisor no era suficiente: tuve que buscar el control remoto nuevamente para aumentarlo ... Entonces pensé: "¿Puede este proceso simplificarse de alguna manera?"

El sábado por la mañana fue extremadamente fructífero. Decidí hacer mi propio reproductor multimedia en red, tal como lo imagino. Casi todos los detalles fueron tomados de la despensa, el corazón del jugador es la Raspberry Pi. Para más detalles, qué hay dentro y cómo ensamblar un dispositivo similar, vea debajo del corte.



Como puede ver en la descripción, mis requisitos para el reproductor son extremadamente simples: la capacidad de reproducir contenido desde la red, el almacenamiento de varios cientos de gigabytes, la capacidad de controlar el mismo control remoto que el televisor; un puerto USB es deseable, pero no necesario. Los reproductores Android comprados desaparecieron de inmediato, porque tales dispositivos son en su mayoría de China pura, en el peor sentido de la palabra, y no tenía ganas de luchar con errores dentro de ellos. Además, no está claro cómo implementar el control de dicho dispositivo desde un control remoto de televisión, además, la interfaz gráfica de Android claramente no está pensada para el control remoto en principio. Por lo tanto, comenzó la búsqueda de basura a partir de la cual uno puede hacer algo.

Seleccionamos los detalles


En primer lugar, me gustaría intentar comprender la viabilidad de fabricar el dispositivo final. Por lo tanto, para comenzar, tomaremos un mínimo de detalles y probaremos un posible reproductor multimedia en funcionamiento. Vamos a la despensa y literalmente desenterramos los detalles que necesitamos:
1. Una computadora con una salida HDMI. El viejo Raspberry Pi 1 es bastante adecuado para nuestros propósitos, también puede usar el Raspberry Pi 2.
2. Fuente de alimentación para la placa: es adecuada la carga microUSB de un teléfono antiguo. Puede tomar cualquier "probar", pero es recomendable tomar una fuente que proporcione una corriente de salida de 1A (un amperio para los ojos es suficiente para Pi 2, consulte los requisitos );
3. Tarjeta microSD con 4 GB o más.
4. Ratón y / o teclado USB (se puede usar inalámbrico) y, opcionalmente, receptor de señal infrarroja TSOP4836 o similar.
5. Adaptador USB Wi-Fi o la capacidad de conectar un cable Ethernet con Internet a la placa.

Ponemos OpenElec, intentamos


En este punto, ejecutaremos OpenElec de la manera más pequeña posible. Tan pronto como pensé en el software para mi reproductor multimedia, recordé el XBMC, más tarde renombrado Kodi . Pero no había ningún deseo de instalar ningún sistema operativo y luego configurar Kodi. Así que decidí buscarlo en Google y encontré este ensamblaje del sistema operativo GNU / Linux, sobre el cual Kodi ya está instalado. Este ensamblado se llama OpenElec, es un proyecto de código abierto. Su sitio web oficial es openelec.tv.
Entonces, descargamos la imagen de instalación desde el sitio web oficial . Seleccionamos la versión deseada y la plataforma en la que la ejecutaremos (en mi caso, la versión estable para Rasberry Pi), y descargamos el 'Diskimage' (archivo con la extensión .img.gz).
Desempaquete la imagen: y escriba en la tarjeta de memoria:
$ gunzip -d < >.img.gz


$ sudo dd if= < >.img of=/dev/mmblck0 bs=4M

Correct / dev / mmblck0: si hay más de una tarjeta de memoria en su sistema.

Atencion El contenido de la tarjeta de memoria se borrará por completo.

Los usuarios de Windows pueden usar la utilidad gratuita Win32 Disk Imager . La utilidad tiene una interfaz gráfica: seleccione el archivo, la tarjeta de memoria y presione 'Escribir'.
Ahora asegúrese de que todo esté escrito en la tarjeta con el comando
$ sync

O simplemente retire la tarjeta mediante la extracción segura del dispositivo en la interfaz gráfica del sistema operativo. Lo obtenemos físicamente y lo ponemos en la Raspberry Pi. Luego, conecte el cable Ethernet con Internet o inserte el adaptador USB Wi-Fi, conecte el mouse y el cable HDMI al televisor. Si desea utilizar un control remoto por infrarrojos, debe conectar el receptor IR a GPIO18 y la potencia del procesador (3.3V). El diagrama de conexión final es el siguiente:

si decide utilizar un receptor de infrarrojos, tenga cuidado con él
: asegúrese de que la disposición de los pines para su receptor sea correcta.
Todo, ahora puedes mirar el entorno mismo. Alimentamos la placa desde la fuente de energía. Después de cargar, el asistente de configuración inicial aparece en la pantalla:


Durante la configuración, recomiendo habilitar inmediatamente el acceso SSH. Todas las demás preguntas son triviales.

Ahora puedes jugar con el entorno del futuro jugador usando el mouse y / o el teclado. Puede intentar reproducir el video en varios formatos (puede conectar una unidad flash USB a puertos libres) y, en general, comprender qué es qué. Hay varios casos para la placa Raspberry Pi en sí, tal vez alguien esté contento con todo de una manera tan minimalista, por ejemplo, puede conectar un mouse USB inalámbrico y usar el dispositivo. Seguiremos mejorando.

Conecte el control remoto IR


Si decide no conectar un receptor IR, simplemente puede omitir esta sección.

Para usar el control remoto, necesitamos configurar LIRC . Primero, activemos el módulo, que funciona directamente con el receptor a través del puerto GPIO. Para hacer esto, agregue una línea al archivo de configuración DeviceTree. Iniciamos sesión a través de SSH en su dispositivo (¿habilitó SSH durante la configuración inicial? Si no, puede hacerlo en la interfaz gráfica del sistema). La contraseña predeterminada es openelec. Agregue la línea que necesitamos al archivo: al final agregamos la línea y luego volvemos a cargar: ahora debemos asegurarnos de que todo funcione y que el LIRC pueda recibir comandos del control remoto, para esto detenemos LIRC e intentamos obtener datos del control remoto:
$ ssh root@ip_address


# mount -o remount,rw /flash
# nano /flash/config.txt


dtoverlay=lirc-rpi


# killall lircd
# mode2 -d /dev/lirc0

Hacemos clic en cualquier botón del control remoto y brillamos en el receptor; un texto que describe los pulsos entrantes debe ejecutarse en la consola. Ahora estamos convencidos de que todo funciona y podemos entrenar a LIRC para usar su control remoto. Tenga en cuenta que lircd debe detenerse durante el proceso de configuración, lo hicimos antes usando el comando kill. Hay una utilidad especial irrecord para la capacitación, ejecutamos los siguientes comandos para iniciarla: A continuación, siga las instrucciones en pantalla. Al principio, la utilidad le pedirá que presione los diversos botones del control remoto hasta que se llenen los puntos en la pantalla para conocer el patrón de su control remoto. Luego, deberá indicar con texto qué botón desea enseñarle a LIRC a usar, y brillar en el receptor. Te recomiendo que enseñes al menos los siguientes botones: KEY_UP KEY_DOWN
# cd /storage/.config
# irrecord -d /dev/lirc0 lircd.conf





KEY_LEFT
KEY_RIGHT
KEY_OK
KEY_PLAY
KEY_EXIT
KEY_STOP
KEY_INFO
KEY_EPG

La lista completa de botones disponibles en el sistema se puede obtener mediante el comando: En el control remoto, puede elegir los botones que le resulten convenientes. La mayoría de los televisores en modo HDMI, la mayoría de los botones no hacen nada, lo que, por supuesto, está a la mano. Como resultado, deberíamos obtener el archivo lircd.conf con los parámetros de su control remoto: reiniciamos la placa e intentamos usar el control remoto. También puede encender / apagar el reproductor. Para hacer esto, conecte el receptor al segundo pin del Raspberry PI GPIO1 para Raspberry PI 1 o GPIO3 para Raspberry PI 2: en ambos tableros, estos pines se encuentran en el mismo lugar en el conector del tablero:
# irrecord -list namespace






Al conectar este pin al suelo, puede activar la placa en estado apagado. Con esta conexión, puede programar el botón KEY_POWER, y el reproductor se apagará cuando haga clic en él, y se encenderá con cualquier señal de cualquier control remoto.

Recogemos el dispositivo más en serio
Quería hacer un dispositivo más completo con la apariencia del dispositivo de fábrica y agregarle un disco duro. Miré en la despensa y encontré un viejo receptor de satélite. En el interior, ya hay una fuente de alimentación suficiente para todos los componentes de la alimentación, hay un receptor de señal IR, un interruptor de apagado en la pared posterior. También existe la oportunidad de hacer un reloj en el panel frontal debido al indicador de siete segmentos ya instalado. Y, por supuesto, el caso en sí es excelente para nuestros propósitos. El receptor de satélite se puede reemplazar con un viejo reproductor de DVD o VHS incluso cuando no funciona.
, — , . / — , 220 .

Abrimos la carcasa del receptor / VCR. Para empezar, debemos asegurarnos de que la fuente de alimentación tenga una salida de 5V, que puede proporcionar la potencia necesaria. Para hacer esto, usando un multímetro, verificamos la presencia de energía de 5V y luego rastreamos a través de qué componentes se obtienen estos 5V. Si la base del elemento del rectificador y el diámetro del devanado del transformador de la fuente de alimentación pueden soportar 2-3 amperios, tenemos suerte: hay una fuente, de lo contrario, tendrá que cambiar la fuente en el caso a una más potente. Luego sacamos la placa principal / unidad de cinta / unidad óptica y la enviamos de vuelta a la despensa, será útil. En el interior, dejamos solo la placa PSU y la placa con un panel frontal en el que hay un receptor IR.

Ahora elija dónde instalar Raspberry Pi. La elección aquí es bastante simple: el lado de la placa con HDMI debe salir de la carcasa, el lado con los puertos USB debe estar montado en el interior para conectar los componentes internos, además, necesitamos al menos algún acceso a la tarjeta microSD en caso de cambiar el firmware. Hay aberturas para los conectores RCA en la carcasa del receptor, colocaremos la placa para que el conector HDMI sea lo más accesible posible desde el exterior. En el mismo lado hay salidas de la tarjeta de sonido y microUSB que funcionan en modo periférico. No estamos interesados ​​en estos conectores; suministraremos energía desde el exterior a través del conector GPIO principal de la placa.

Marcamos dónde necesita recortar un poco para que el conector HDMI se inserte libremente en la placa desde el exterior de la carcasa y describimos cuatro agujeros para instalar la placa. Usé los siguientes bastidores:


Los bastidores de la placa base interfirieron, y los quité con la ayuda de unos alicates. Las manipulaciones deben llevarse a cabo con cuidado, con un movimiento incómodo puede doblar fácilmente la caja. Perforamos, aserramos, sujetamos el estante con pernos adecuados y la tabla en sí.


Ahora necesita encontrar un lugar para el HDD. Aquí el requisito es bastante simple: debe dejar unos centímetros libres dentro de la caja desde el lado del conector SATA, porque se insertará un adaptador allí. El disco duro tiene hilos en la superficie inferior y en los lados del HDD. Winchester necesita estar ligeramente elevado para que no descanse sobre el metal. Resolví el problema de manera muy simple: tomé tornillos adecuados para la rosca inferior, pero un poco más de lo necesario, y establecí la distancia entre la caja y el HDD con tuercas más grandes.

Ahora necesitamos encontrar un convertidor USB SATA o un contenedor antiguo para HDD, desde donde se pueda extraer dicho convertidor. Tenía un contenedor, pero desafortunadamente no funcionó. Tuve que correr a la tienda por el convertidor USB SATA. Insertaremos el conector USB en el Raspberry PI, pero para no cargar la placa con las corrientes bastante graves que requiere el HDD, especialmente al girar el eje, debe conducir energía adicional directamente desde la fuente de alimentación. En mi caso, el adaptador tenía un cable con dos conectores USB, conecté uno de ellos directamente a la unidad de fuente de alimentación soldando el conector de respuesta USB cerca de la fuente de alimentación.


Dos cosas más para pensar de inmediato. El primero es dónde y cómo se ubicará el puerto USB externo. El segundo es dónde colocar el adaptador Wi-Fi, o si planea implementar solo una conexión Ethernet, cómo colocar un conector Ethernet en la pared de la carcasa (si coloca la placa con este conector en el borde de la carcasa, no puede conectar dispositivos USB desde el interior). Ethernet puede alargarse colocando un enchufe de pared convencional dentro de la caja y engarzando un cable corto con un conector.

Ahora se venden dongles USB con Wi-Fi muy pequeños, pero no es necesario ponerlos dentro de una caja de metal: la señal puede pasar mal. Puede tomar un cable de extensión USB corto, colocar el conector USB en la parte posterior de la caja e insertarlo allí. También hay adaptadores USB con antenas extraíbles, puede extender el conector RMA a la parte posterior de la carcasa y atornillar la antena allí. Tenía un adaptador USB Wi-Fi bastante viejo y, como resultado, bastante grande con una antena envolvente y entrada miniUSB. No tenía dónde colocarlo debido a su tamaño, y decidí usarlo en los negocios. Retiró el estuche, su forma no permitía conectar la antena desde el exterior. La tarifa era bastante grande, y tuve que pensar cuidadosamente sobre su ubicación. Afortunadamente, resultó ser muy delgado, y decidí ponerlo sobre los conectores USB de la Raspberry Pi. El conector RMA está fueratorcido en una tuerca y dentro de la caja poner un estante alto para el tablero. Se mantuvo el acceso a USB y la antena se elevó por encima de la carcasa. Genial


Ahora necesita fijar de alguna manera el cable de extensión USB al panel frontal, asegurándose de que no interfiera con nada dentro de la carcasa. En mi caso, el receptor tenía una puerta para las tarjetas de acceso, y decidí poner un conector detrás para no acumular polvo. Por lo tanto, no lo corté con mucho cuidado y lo llené con pegamento caliente en la parte posterior.


La situación con la placa del panel frontal es más interesante: hay muchas opciones en qué consiste. Tuve que implementar la indicación dinámica de los indicadores de siete segmentos utilizando DMA (el acceso directo a la memoria, la implementación directa de la indicación dinámica a través de los puertos GPIO consumiría demasiados recursos de la CPU y el brillo de los segmentos sería desigual debido a la actividad del sistema operativo). Pero este ya es un tema para un artículo separado, y además, tales tableros pueden diferir radicalmente, por lo tanto, aquí le daremos el derecho de mostrar nuestro potencial creativo al lector. Puedes estudiar el código fuente de la implementación para mi placa. En el caso más simple, simplemente puede cortar las pistas que van al receptor de IR y soldar directamente con tres cables. Solo noto que utilicé un cable IDE para conectarme al conector GPIO de la placa, se adapta perfectamente al conector Raspberry Pi y los cables se pueden soldar fácilmente con otros componentes.

Al final, obtuve ese dispositivo:


Personalizar


Si cuando enciende ve un cuadrado de color en la esquina superior derecha de la pantalla, esto significa que la potencia de la Raspberry Pi no es suficiente: una fuente de alimentación débil, cables demasiado delgados o periféricos USB requieren demasiado. En el primer caso, solo reemplazará la PSU por una más poderosa ayudará. En el segundo, el problema se puede resolver fácilmente reemplazando los cables por unos más gruesos o utilizando varios núcleos en paralelo, en el tercero, el problema se resuelve alimentando los dispositivos USB directamente desde la fuente de alimentación o, por ejemplo, instalando un concentrador USB con la capacidad de conectar una fuente de alimentación externa.

Probablemente también verá que su HDD está conectada al sistema como una unidad flash externa. Hagámoslo el almacenamiento principal en el sistema operativo. En el primer inicio, OpenElec comienza a usar automáticamente todo el espacio libre en la tarjeta microSD para la sección de datos, que luego se monta como / almacenamiento. La decisión más exitosa me parece usar todo el disco duro como / almacenamiento. Para hacer esto, formatee el disco duro y cree una partición con el sistema de archivos ext3 / 4. Esto se puede hacer directamente en el reproductor usando las utilidades parted y mkfs, los comandos a continuación borrarán todo el contenido del disco y crearán una partición ext4: para esto, deberá iniciar sesión en el reproductor a través de SSH. Luego monte la nueva partición en algún lugar:

# umount /dev/sda1
# parted /dev/sda
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel GPT
mklabel GPT
Warning: The existing disk label on /dev/sda will be destroyed and all data on
this disk will be lost. Do you want to continue?
Yes/No? yes
yes
(parted) mkpart primary 2048s 100%
mkpart primary 2048s 100%
(parted) q
q
Information: You may need to update /etc/fstab.
# mkfs.ext4 /dev/sda1



# mkdir /tmp/hdd
# mount /dev/sda1 /tmp/hdd


Copie todo el contenido de / storage en una nueva partición para guardar el estado actual: desmonte la partición y, si lo desea, elimine la carpeta: ahora debe especificar qué unidad debemos montar en el momento del arranque. Puede hacer esto ajustando la línea de comando de los parámetros del núcleo, pero primero descubrimos el UUID de la partición de nuestro disco duro: copie el UUID de la partición en el portapapeles. Ahora vuelva a montar el sistema de archivos con la configuración del kernel para escribir y corríjalo: en el archivo, reemplace el parámetro de disco con el UUID de nuestro disco. El contenido del archivo debería verse así: después de reiniciar, el reproductor usará el disco duro como / almacenamiento, y la sección en la tarjeta de memoria se puede eliminar para que no se monte automáticamente cuando se inicia:
# cp -rf /storage/. /tmp/hdd



# umount /dev/sda1
# rmdir /tmp/hdd



# blkid /dev/sda1



# mount -o rw,remount /flash
# nano /flash/cmdline.txt



boot=/dev/mmcblk0p1 disk=UUID=95013338-89b1-43af-8471-9b30efc85d98 quiet



# parted -s /dev/mmcblk0 rm 2


Aquí hay un fin de semana tan divertido que tuve. No olvide que el sistema operativo GNU / Linux está integrado en este reproductor multimedia, y puede modificarlo / complementarlo usted mismo como lo desee. También puede resolver algunas tareas de domótica, utilizando el mismo dispositivo.

Y finalmente, un video del discurso del autor de un artículo sobre el dispositivo.

Que tengas una buena vista!

Source: https://habr.com/ru/post/es396967/


All Articles