Lecteur multimédia du placard
Auteur: Nikolai KhabarovUn beau vendredi soir, j'ai décidé de regarder un film à la maison: j'ai allumé l'ordinateur portable, connecté le câble HDMI via l'adaptateur DisplayPort, pris la télécommande, allumé le téléviseur et commencé à jouer sur l'ordinateur portable. Et je me suis rendu compte que le volume du téléviseur n'était pas suffisant - j'ai dû chercher à nouveau la télécommande pour l'augmenter ... Puis j'ai pensé: "Ce processus peut-il être simplifié d'une manière ou d'une autre?"Le samedi matin a été extrêmement fructueux. J'ai décidé de créer mon propre lecteur multimédia réseau, comme je l'imagine. Presque tous les détails ont été pris dans le garde-manger, le cœur du joueur est le Raspberry Pi. Pour plus de détails, ce qu'il y a à l'intérieur et comment assembler un appareil similaire, voir sous la coupe.
Comme vous pouvez le voir dans la description, mes exigences pour le lecteur sont extrêmement simples: la capacité de lire du contenu depuis le réseau, le stockage de plusieurs centaines de gigaoctets, la possibilité de contrôler la même télécommande que le téléviseur; un port USB est souhaitable, mais pas nécessaire. Les joueurs Android achetés ont disparu immédiatement, car ces appareils sont principalement de la Chine pure, dans le pire sens du terme, et je n'avais aucune envie de lutter contre les bugs à l'intérieur. De plus, il n'est pas clair comment mettre en œuvre le contrôle d'un tel appareil à partir d'une télécommande de télévision, de plus, l'interface graphique Android n'est clairement pas destinée en principe à la télécommande. Par conséquent, la recherche a commencé pour les déchets à partir desquels on peut faire quelque chose.Nous sélectionnons les détails
Tout d'abord, je voudrais juste essayer de comprendre la faisabilité de la fabrication du dispositif final. Par conséquent, pour commencer, nous allons prendre un minimum de détails et essayer un lecteur multimédia potentiel en fonctionnement. Nous allons au garde-manger et creusons littéralement les détails dont nous avons besoin:1. Un ordinateur avec une sortie HDMI. L'ancien Raspberry Pi 1 est tout à fait adapté à nos besoins, vous pouvez également utiliser le Raspberry Pi 2.2. Alimentation électrique de la carte - La charge microUSB à partir d'un ancien téléphone convient. Vous pouvez prendre n'importe quel "essayer", mais il est conseillé de prendre une source fournissant un courant de sortie de 1A (un ampère pour les yeux suffit pour Pi 2, voir les exigences );3. Carte microSD de 4 Go ou plus.4. Souris et / ou clavier USB (sans fil peut être utilisé) et, en option, récepteur de signal infrarouge TSOP4836 ou similaire.5. Adaptateur Wi-Fi USB ou possibilité de connecter un câble Ethernet avec Internet à la carte.On met OpenElec, on essaie
À ce stade, nous exécuterons OpenElec de la manière la plus petite possible. Dès que j'ai pensé au logiciel de mon lecteur multimédia, je me suis souvenu du XBMC, renommé plus tard Kodi . Mais il n'y avait aucune envie d'installer un système d'exploitation, puis de configurer Kodi. J'ai donc décidé de le rechercher sur Google et j'ai trouvé cet assemblage du système d'exploitation GNU / Linux, sur lequel Kodi est déjà installé. Cet assemblage s'appelle OpenElec, c'est un projet open source. Son site officiel est openelec.tv.Nous téléchargeons donc l'image d'installation à partir du site officiel . Nous sélectionnons la version souhaitée et la plateforme sur laquelle nous l'exécuterons (dans mon cas, la version stable pour Rasberry Pi), et téléchargeons le 'Diskimage' (fichier avec l'extension .img.gz).Déballez l'image: Et écrivez sur la carte mémoire:$ gunzip -d < >.img.gz
$ sudo dd if= < >.img of=/dev/mmblck0 bs=4M
Corrigez / dev / mmblck0 - s'il y a plus d'une carte mémoire dans votre système.Attention! Le contenu de la carte mémoire sera complètement effacé.Les utilisateurs de Windows peuvent utiliser l'utilitaire gratuit Win32 Disk Imager . L'utilitaire a une interface graphique - sélectionnez le fichier, la carte mémoire et appuyez sur «Écrire».Assurez-vous maintenant que tout est écrit sur la carte avec la commande$ sync
Ou retirez simplement la carte grâce au retrait sûr de l'appareil dans l'interface graphique du système d'exploitation. Nous l'obtenons physiquement et le mettons dans le Raspberry Pi. Ensuite, connectez le câble Ethernet à Internet ou insérez l'adaptateur Wi-Fi USB, connectez la souris, le câble HDMI au téléviseur. Si vous souhaitez utiliser une télécommande infrarouge, vous devez connecter le récepteur IR au GPIO18 et la puissance du processeur (3,3 V). Le schéma de connexion final est le suivant:
Si vous décidez d'utiliser un récepteur infrarouge, soyez prudent avec lui- assurez-vous que la disposition des broches de votre récepteur est correcte.Tout, maintenant vous pouvez regarder l'environnement lui-même. Nous alimentons la carte à partir de la source d'alimentation. Après le chargement, l'assistant de configuration initiale apparaît à l'écran:
Lors de l'installation, je recommande d'activer immédiatement l'accès SSH. Toutes les autres questions sont triviales.Vous pouvez maintenant jouer avec l'environnement même du futur joueur à l'aide de la souris et / ou du clavier. Vous pouvez essayer de lire la vidéo dans différents formats (vous pouvez connecter un lecteur flash USB à des ports libres) et comprendre généralement ce qui est quoi. Il existe différents cas pour la carte Raspberry Pi elle-même, peut-être que quelqu'un sera satisfait de tout d'une manière si minimaliste, par exemple, vous pouvez connecter une souris USB sans fil et utiliser l'appareil. Nous continuerons de l'améliorer.Connectez la télécommande infrarouge
Si vous décidez de ne pas connecter de récepteur IR, vous pouvez simplement ignorer cette section.Pour utiliser la télécommande, nous devons configurer LIRC . Tout d'abord, allumons le module, qui fonctionne directement avec le récepteur via le port GPIO. Pour ce faire, ajoutez une ligne au fichier de configuration DeviceTree. Nous nous connectons via SSH à votre appareil (avez-vous activé SSH lors de la configuration initiale? Sinon, vous pouvez le faire dans l'interface graphique du système lui-même). Le mot de passe par défaut est openelec. Ajoutez la ligne dont nous avons besoin au fichier: à la toute fin, nous ajoutons la ligne, puis rechargeons: Maintenant, nous devons nous assurer que tout fonctionne et que le LIRC peut recevoir des commandes de la télécommande, pour cela, nous arrêtons le LIRC et essayons d'obtenir des données de la télécommande:$ ssh root@ip_address
# mount -o remount,rw /flash
# nano /flash/config.txt
dtoverlay=lirc-rpi
# killall lircd
# mode2 -d /dev/lirc0
Nous cliquons sur n'importe quel bouton de la télécommande et brillons sur le récepteur - un texte décrivant les impulsions entrantes devrait s'exécuter dans la console. Maintenant, nous sommes convaincus que tout fonctionne et nous pouvons former LIRC à utiliser votre télécommande. Veuillez noter que lircd doit être arrêté pendant le processus de configuration, nous l'avons fait plus tôt en utilisant la commande kill. Il existe un utilitaire spécial non enregistré pour la formation, nous exécutons les commandes suivantes pour le lancer: Ensuite, suivez les instructions à l'écran. Au début, l'utilitaire vous demandera d'appuyer sur les différents boutons de la télécommande jusqu'à ce que les points sur l'écran soient remplis pour apprendre le modèle de votre télécommande. Ensuite, vous devrez indiquer avec le texte le bouton que vous souhaitez apprendre au LIRC à utiliser et faire briller le récepteur. Je vous recommande d'enseigner au moins les boutons suivants: KEY_UP KEY_DOWN# cd /storage/.config
# irrecord -d /dev/lirc0 lircd.conf
KEY_LEFTKEY_RIGHTKEY_OKKEY_PLAYKEY_EXITKEY_STOPKEY_INFOKEY_EPGLa liste complète des boutons disponibles dans le système peut être obtenue par la commande: Sur la télécommande, vous pouvez choisir n'importe quel bouton qui vous convient. La plupart des téléviseurs en mode HDMI, la plupart des boutons ne font rien, ce qui, bien sûr, est à portée de main. Par conséquent, nous devrions obtenir le fichier lircd.conf avec les paramètres de votre télécommande - nous redémarrons la carte et essayons d'utiliser la télécommande. Vous pouvez également allumer / éteindre le lecteur. Pour ce faire, connectez le récepteur à la deuxième broche du Raspberry PI GPIO1 pour Raspberry PI 1 ou GPIO3 pour Raspberry PI 2 - sur les deux cartes, ces broches sont situées au même endroit sur le connecteur de la carte:# irrecord -list namespace
En connectant cette broche à la terre, vous pouvez réveiller la carte à l'état désactivé. Avec cette connexion, vous pouvez programmer le bouton KEY_POWER, et le lecteur s'éteindra lorsque vous cliquez dessus, et il sera activé par n'importe quel signal provenant de n'importe quelle télécommande.Nous collectons l'appareil plus au sérieuxJe voulais créer un appareil plus complet avec l'apparence de l'appareil d'usine et y ajouter un disque dur. J'ai regardé dans le garde-manger et j'ai trouvé un vieux récepteur satellite. À l'intérieur, il y a déjà une alimentation suffisante pour tous les composants de l'alimentation, il y a un récepteur de signal IR, un interrupteur de mise hors tension sur la paroi arrière. Il est également possible de faire une montre sur le panneau avant en raison de l'indicateur à sept segments déjà installé. Et bien sûr, le boîtier lui-même est parfait pour nos besoins. Le récepteur satellite peut être remplacé par un ancien lecteur DVD ou VHS même s'il ne fonctionne pas., — , . / — , 220 .Nous ouvrons le boîtier du récepteur / magnétoscope. Pour commencer, nous devons nous assurer que l'alimentation a une sortie 5V qui peut fournir la puissance nécessaire. Pour ce faire, à l'aide d'un multimètre, nous vérifions la présence d'une puissance de 5V puis nous traçons à travers quels composants ces 5V sont obtenus. Si la base de l'élément du redresseur et le diamètre de l'enroulement du transformateur du bloc d'alimentation peuvent supporter 2 à 3 ampères, nous avons de la chance - il y a une source, sinon vous devrez changer la source dans le boîtier pour une plus puissante. Ensuite, nous sortons la carte principale / le lecteur de bande / le lecteur optique et le renvoyons au garde-manger - il vous sera utile. A l'intérieur, on ne laisse que la carte PSU et la carte avec un panneau avant sur lequel se trouve un récepteur IR.Choisissez maintenant où installer le Raspberry Pi lui-même. Le choix ici est assez simple: le côté de la carte avec HDMI doit sortir du boîtier, le côté avec les ports USB doit être monté à l'intérieur pour connecter les composants internes, de plus, nous avons besoin d'au moins un accès à la carte microSD en cas de changement de firmware. Il y a des ouvertures pour les connecteurs RCA sur le boîtier du récepteur, nous allons mettre la carte de sorte que le connecteur HDMI soit aussi accessible que possible à l'extérieur. Du même côté, il y a des sorties de la carte son et du microUSB fonctionnant en mode périphérique. Nous ne sommes pas intéressés par ces connecteurs, nous fournirons une alimentation de l'extérieur via le connecteur GPIO principal de la carte.Nous indiquons où vous devez couper un peu afin que le connecteur HDMI soit inséré librement dans la carte depuis l'extérieur du boîtier et décrivons quatre trous pour l'installation de la carte. J'ai utilisé les racks suivants:
Les racks de la carte mère sont intervenus et je les ai retirés à l'aide d'une pince. Les manipulations doivent être effectuées avec soin, avec un mouvement maladroit, vous pouvez facilement plier le boîtier lui-même. Nous forons, scions, fixons le rack avec des boulons appropriés et la planche elle-même.
Vous devez maintenant trouver un emplacement pour le disque dur. Ici, l'exigence est assez simple - vous devez laisser quelques centimètres libres à l'intérieur du boîtier depuis le côté du connecteur SATA, car un adaptateur y sera inséré. Le disque dur a des fils sur la surface inférieure et les côtés du disque dur. Winchester doit être légèrement surélevé afin qu'il ne repose pas sur le métal. J'ai résolu le problème très simplement - j'ai pris des boulons adaptés au filetage inférieur, mais un peu plus longtemps que nécessaire, et j'ai établi la distance entre le boîtier et le disque dur avec des écrous plus gros.Maintenant, nous devons trouver un convertisseur USB SATA ou un ancien conteneur pour disque dur, d'où un tel convertisseur peut être retiré. J'avais un conteneur, mais malheureusement il s'est avéré inopérant. J'ai dû courir au magasin pour le convertisseur USB SATA. Nous allons insérer le connecteur USB dans le Raspberry PI, mais afin de ne pas charger la carte avec des courants assez graves dont le disque dur a besoin, en particulier lors de la rotation de la broche, vous devez effectuer une alimentation supplémentaire directement à partir du bloc d'alimentation. Dans mon cas, l'adaptateur avait un câble avec deux connecteurs USB, j'ai connecté l'un d'entre eux directement au bloc d'alimentation en soudant le connecteur de réponse USB près du bloc d'alimentation.
Deux choses de plus à penser tout de suite. Le premier est où et comment le port USB externe sera situé. La seconde est où placer l'adaptateur Wi-Fi, ou si vous prévoyez de n'implémenter qu'une connexion Ethernet, comment placer le connecteur Ethernet sur le mur du boîtier (si vous placez la carte avec le bord de ce connecteur sur le boîtier, vous ne pouvez pas connecter de périphériques USB de l'intérieur). Ethernet peut être allongé en plaçant une prise murale conventionnelle à l'intérieur du boîtier et en sertissant un fil court avec un connecteur.De très petits dongles Wi-Fi USB sont vendus maintenant, mais vous n'avez pas besoin de les mettre dans un boîtier métallique - le signal peut mal passer. Vous pouvez prendre un court câble d'extension USB, mettre le connecteur USB à l'arrière du boîtier et l'insérer là. Il existe également des adaptateurs USB avec des antennes amovibles, vous pouvez étendre le connecteur RMA à l'arrière du boîtier et y visser l'antenne. J'avais un adaptateur Wi-Fi USB assez ancien et, par conséquent, plutôt grand avec une antenne enveloppante et une entrée miniUSB. Je n'avais nulle part où le mettre à cause de sa taille, et j'ai décidé de l'utiliser en entreprise. Il a retiré le boîtier - sa forme ne permettait pas de fixer l'antenne de l'extérieur. Les frais étaient assez élevés et je devais réfléchir soigneusement à leur emplacement. Heureusement, il s'est avéré être très mince, et j'ai décidé de le mettre sur les connecteurs USB du Raspberry Pi. Le connecteur RMA est sortitordu sur un écrou et à l'intérieur du boîtier, placez un support haut pour la carte. L'accès à l'USB est resté et l'antenne a été soulevée au-dessus du boîtier. Super!
Maintenant, vous devez en quelque sorte fixer le câble d'extension USB sur le panneau avant, en vous assurant qu'il n'interfère pas avec quoi que ce soit à l'intérieur du boîtier. Dans mon cas, le récepteur avait une porte pour les cartes d'accès, et j'ai décidé de mettre un connecteur derrière - pour ne pas accumuler de poussière! Par conséquent, je ne l'ai pas coupé trop soigneusement et je l'ai rempli de colle chaude à l'arrière.
La situation avec la carte du panneau avant est plus intéressante - il existe de nombreuses options pour ce qu'elle comprend. J'ai dû implémenter l'indication dynamique des indicateurs à sept segments en utilisant DMA (l'accès direct à la mémoire, l'implémentation directe de l'indication dynamique via les ports GPIO consommerait trop de ressources CPU et la luminosité des segments serait inégale en raison de l'activité du système d'exploitation). Mais c'est déjà un sujet pour un article séparé, et en outre, de tels tableaux peuvent différer radicalement.Par conséquent, nous donnerons ici le droit de montrer notre potentiel créatif au lecteur. Vous pouvez étudier le code source de l'implémentation de ma carte. Dans le cas le plus simple, vous pouvez simplement couper les pistes allant vers le récepteur IR et les souder directement avec trois fils. Je note seulement que j'ai utilisé un câble IDE pour se connecter au connecteur GPIO de la carte, il s'adapte parfaitement au connecteur Raspberry Pi et les fils peuvent être facilement soudés avec d'autres composants.Au final, j'ai eu un tel appareil:
Personnaliser
Si, lorsque vous allumez, vous voyez un carré coloré dans le coin supérieur droit de l'écran, cela signifie que l'alimentation du Raspberry Pi n'est pas suffisante - soit une alimentation faible, des fils trop fins ou des périphériques USB prennent trop. Dans le premier cas, seul le remplacement du bloc d'alimentation par un bloc plus puissant vous aidera. Dans le second, le problème peut être facilement résolu en remplaçant les fils par des câbles plus épais ou en utilisant plusieurs noyaux en parallèle, dans le troisième, le problème est résolu en alimentant les périphériques USB directement à partir de l'alimentation, ou, par exemple, en installant un concentrateur USB avec la possibilité de connecter une source d'alimentation externe.Vous verrez également probablement que votre disque dur est connecté au système en tant que lecteur flash externe. Faisons-en le stockage principal du système d'exploitation. Au premier démarrage, OpenElec commence automatiquement à utiliser tout l'espace libre sur la carte microSD pour la section de données, qui est ensuite montée en tant que / stockage. La décision la plus réussie me semble utiliser l'intégralité du disque dur comme / stockage. Pour ce faire, formatez le disque dur et créez une partition dessus avec le système de fichiers ext3 / 4. Cela peut être fait directement sur le lecteur à l'aide des utilitaires parted et mkfs, les commandes ci-dessous effaceront l'intégralité du contenu du disque et créeront une partition ext4: Pour cela, vous devrez vous connecter au lecteur via SSH. Montez ensuite la nouvelle partition quelque part:# 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
Copiez l'intégralité du contenu de / stockage sur une nouvelle partition afin de conserver l'état actuel: démontez la partition et, si vous le souhaitez, supprimez le dossier: vous devez maintenant spécifier le lecteur que nous devons monter au démarrage. Vous pouvez le faire en ajustant la ligne de commande des paramètres du noyau, mais nous découvrons d'abord l'UUID de la partition de notre disque dur: Copiez l'UUID de la partition dans le presse-papiers. Remontez maintenant le système de fichiers avec la configuration du noyau pour l'écriture et corrigez-le: Dans le fichier, remplacez le paramètre de disque par l'UUID de notre disque. Le contenu du fichier devrait ressembler à ceci: Après le redémarrage, le lecteur utilisera le disque dur comme / stockage, et la section sur la carte mémoire peut être supprimée afin qu'elle ne se monte pas automatiquement au démarrage:# 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
Voici un week-end si amusant que j'ai eu. N'oubliez pas que le système d'exploitation GNU / Linux est à bord de ce lecteur multimédia, et vous pouvez le modifier / compléter vous-même à votre guise. Vous pouvez également résoudre certaines tâches de domotique, en utilisant le même appareil.Et enfin, une vidéo du discours de l' auteur d'un article racontant l'appareil.Bonne visualisation!Source: https://habr.com/ru/post/fr396967/
All Articles