壁橱里的媒体播放器


作者:Nikolai Khabarov

一个好的星期五晚上,我决定在家看电影:我打开笔记本电脑,通过DisplayPort适配器连接HDMI电缆,接上遥控器,打开电视,然后开始在笔记本电脑上播放。我意识到电视上的音量还不够-我不得不再次寻找遥控器以增加它的数量……然后我想,“可以以某种方式简化此过程吗?”

星期六早晨非常富有成果。我决定按照自己的想法制作自己的网络多媒体播放器。几乎所有细节都来自食品储藏室,玩家的心脏是Raspberry Pi。有关更多详细信息,其中包括什么以及如何组装类似的设备,请参见切口下方。



从描述中可以看到,我对播放器的要求非常简单:能够播放网络内容,存储能力达数百GB,能够控制与电视相同的遥控器;USB端口是可取的,但不是必需的。购买的Android播放器立即消失了,因为从最糟糕的意义上讲,此类设备大多是纯中国的,所以我不想与其中的bug战斗。另外,不清楚如何从电视遥控器实现对这种设备的控制,此外,Android图形界面原则上显然不旨在用于遥控器。因此,人们开始寻找可以制造东西的垃圾。

我们选择细节


首先,我想尝试并了解制造最终设备的可行性。因此,首先,我们将只讲一些最少的细节,然后尝试运行中的潜在媒体播放器。我们去食品储藏室,从字面上挖掘出我们需要的细节:
1.一台带HDMI输出的计算机。旧的Raspberry Pi 1非常适合我们的用途,您也可以使用Raspberry Pi2。2.板子的
电源-使用旧手机为microUSB充电是合适的。您可以选择“尝试”,但是建议使用提供1A输出电流的电源(对于Pi 2,眼睛一安培就足够了,请参阅要求)。
3.大于4 GB的microSD卡。
4. USB鼠标和/或键盘(可以使用无线),以及可选的TSOP4836红外信号接收器或类似产品。
5. USB Wi-Fi适配器或将带有Internet的以太网电缆连接到板的功能。

我们把OpenElec,我们尝试


此时,我们将以最小的方式运行OpenElec。当我想到多媒体播放器的软件时,便想起XBMC,后来将其更名为Kodi。但是没有安装任何操作系统,然后配置Kodi的愿望。因此,我决定使用Google进行搜索,并找到了GNU / Linux操作系统的程序集,并在此程序集的顶部安装了Kodi。该程序集称为OpenElec,它是一个开源项目。它的官方网站是openelec.tv。
因此,我们从官方网站下载安装映像。我们选择所需的版本和运行它的平台(在我的情况下,是Rasberry Pi的稳定版本),然后下载“ Diskimage”(扩展名为.img.gz的文件)。
打开图像包装: 并写入存储卡:
$ gunzip -d < >.img.gz


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

正确/ dev / mmblck0-如果系统中有多个存储卡。

注意!存储卡中的内容将被完全删除。

Windows用户可以使用免费的Win32 Disk Imager实用程序。该实用程序具有图形界面-选择文件,存储卡,然后按“写入”。
现在确保使用以下命令将所有内容写入卡
$ sync

或者只需通过安全地移除操作系统图形界面中的设备来移除卡。我们从物理上获得它,并将其放入Raspberry Pi中。接下来,将以太网电缆连接到Internet或插入USB Wi-Fi适配器,将鼠标,HDMI电缆连接到电视。如果要使用红外遥控器,则需要将IR接收器连接到GPIO18和处理器电源(3.3V)。最终的连接图如下:

如果决定使用红外接收器,请小心使用
-确保接收器的引脚布局正确。
一切,现在您可以查看环境本身。我们通过电源为电路板供电。加载后,初始设置向导将出现在屏幕上:


在安装过程中,我建议立即启用SSH访问。所有其他问题都是微不足道的。

现在,您可以使用鼠标和/或键盘与未来的播放器一起玩。您可以尝试以各种格式播放视频(可以将USB闪存驱动器连接到空闲端口),并且通常了解什么。Raspberry Pi板本身有多种情况,也许有人会对这种简约的方法感到满意,例如,您可以连接无线USB鼠标并使用该设备。我们将继续改进它。

连接红外遥控器


如果您决定不连接红外接收器,则只需跳过此部分。

要使用遥控器,我们需要配置LIRC。首先,让我们打开模块,该模块可通过GPIO端口直接与接收器配合使用。为此,请在DeviceTree配置文件中添加一行。我们通过SSH登录到您的设备(是否在初始设置期间启用了SSH?否则,您可以在系统本身的图形界面中进行此操作)。 默认密码是openelec。将我们需要的行添加到文件中: 最后,我们添加该行,然后重新加载: 现在我们需要确保一切正常,并且LIRC能够从远程接收命令,为此,我们停止LIRC并尝试从远程获取数据:
$ ssh root@ip_address


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


dtoverlay=lirc-rpi


# killall lircd
# mode2 -d /dev/lirc0

我们单击遥控器上的任何按钮,然后在接收器上发光-描述输入脉冲的文本应在控制台中运行。现在,我们确信一切正常,并且我们可以训练LIRC使用您的遥控器。请注意,必须在配置过程中停止lircd,我们之前使用kill命令完成了此操作。有一个特殊的irrecord实用程序用于培训,我们运行以下命令将其启动: 接下来,按照屏幕上的说明进行操作。开始时,该实用程序将要求您按遥控器上的各种按钮,直到屏幕上的点填满以了解遥控器的模式。然后,您将需要用文本指示您要教LIRC使用哪个按钮,并照亮接收器。 我建议您至少教以下按钮: 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

可以通过以下命令获取系统中可用按钮的整个列表: 在遥控器上,您可以选择任何方便的按钮。大多数处于HDMI模式的电视,大多数按钮无能为力,这当然就在眼前。因此,我们应该获得带有您的遥控器参数的lircd.conf文件-我们重新启动开发板并尝试使用遥控器。 您也可以打开/关闭播放器。为此,请将接收器连接到Raspberry PI 1的Raspberry PI GPIO1的第二个引脚或Raspberry PI 2的GPIO3的第二个引脚-在两个板上,这些引脚位于板连接器上的同一位置:
# irrecord -list namespace






通过将此引脚接地,可以在关闭状态下唤醒电路板。通过此连接,您可以对KEY_POWER按钮进行编程,并且单击播放器后它将关闭,并且通过来自任何遥控器的任何信号将其打开。

我们会更认真地收集设备
我想用出厂设备的外观制作一个更彻底的设备,并为其添加硬盘驱动器。我看着厨房,发现了一个旧的卫星接收器。内部,已经有足够的电源来满足所有电源组件的需要,还有一个IR信号接收器,后墙上的电源关闭开关。由于已经安装了七段指示器,因此还有机会在前面板上制作手表。当然,案例本身对于我们的目的而言是伟大的。即使无法使用,也可以用旧的DVD或VHS播放器替换卫星接收器。
, — , . / — , 220 .

我们打开接收器/录像机的外壳。首先,我们需要确保电源具有5V输出,可以输出必要的电源。为此,使用万用表检查5V电源是否存在,然后跟踪获得5V电源的组件。如果整流器的元件座和电源单元的变压器绕组的直径可以承受2-3安培,那么我们很幸运-有一个电源,否则您将不得不将电源改为更强大的电源。然后,我们取出主板/磁带驱动器/光盘驱动器,然后将其发送回食品储藏室-它会派上用场。在内部,我们仅保留PSU板和带有前面板的板,板上有一个IR接收器。

现在,选择Raspberry Pi本身的安装位置。这里的选择非常简单:带有HDMI的板子的一侧应该放在外壳外面,必须将带有USB端口的那一侧安装到内部以连接内部组件,此外,如果固件被更改,我们至少需要访问microSD卡。接收器的外壳上有用于RCA连接器的开口,我们将板子放好,以便可以从外部尽可能接近HDMI连接器。在同一侧,有声卡和microUSB的输出在外围模式下运行。我们对这些连接器不感兴趣;我们将通过板子的主GPIO连接器从外部供电。

我们会标出您需要修剪的位置,以便将HDMI连接器从机壳的外部自由插入板中,并勾勒出四个用于安装板的孔。我使用了以下机架:


主板的机架受到干扰,我在钳子的帮助下将其卸下。操作必须谨慎进行,以笨拙的动作才能轻松弯曲外壳本身。我们钻,锯,用合适的螺栓将机架固定在机架上。


现在,您需要找到HDD的位置。这里的要求非常简单-您需要从SATA连接器的侧面在机箱内留出几厘米的距离,因为适配器将插入那里。硬盘驱动器在HDD的底面和侧面都有螺纹。温彻斯特需要稍微抬高,以使其不躺在金属上。我非常简单地解决了这个问题-我拿了适合较低螺纹的螺栓,但螺栓的长度比必要的要长一点,并用较大的螺母固定了外壳和HDD之间的距离。

现在,我们需要找到一个SATA USB转换器或用于HDD的旧容器,从那里可以拉出此类转换器。我有一个容器,但不幸的是,事实证明它没有作用。我不得不去商店购买SATA USB转换器。我们将USB连接器插入Raspberry PI,但是为了不给HDD要求的电路板加载非常大的电流,特别是在旋转主轴时,您需要直接从PSU供电。就我而言,适配器的电缆带有两个USB连接器,我通过焊接PSU附近的USB响应连接器将其中一个直接连接到电源设备。


立即考虑两件事。首先是外部USB端口的位置和位置。第二个是放置Wi-Fi适配器的位置,或者如果您打算仅实现以太网连接,则如何将以太网连接器放置在外壳的壁上(如果将带有此连接器的板放在外壳的边缘,则无法从内部连接USB设备)。可以通过在机箱内放置传统的墙壁插座并用连接器压接短线来延长以太网。

现在出售的USB Wi-Fi加密狗非常小,但是您无需将其插入金属盒中-信号传输不畅。您可以使用一条短的USB延长线,将USB连接器放在外壳的背面,然后将其插入其中。也有带可拆卸天线的USB适配器,您可以将RMA连接器延伸到机壳的背面,然后将天线固定在那里。我有一个比较老的产品,结果是一个相当大的USB Wi-Fi适配器,带有环绕天线和miniUSB输入。由于它的大小,我无处可放,我决定在商业中使用它。他卸下了外壳-它的形状不允许从外部安装天线。费用很大,我必须仔细考虑其位置。幸运的是,结果证明它非常薄,我决定将其放在Raspberry Pi的USB连接器上。 RMA连接器不可用拧在螺母上,并在外壳内部放入一个高板架。仍然可以使用USB,并且将天线抬高到机箱上方。太好了!


现在,您需要以某种方式将USB扩展电缆固定到前面板,确保它不会干扰外壳内部的任何东西。在我的情况下,接收器有一扇门,用于存放门禁卡,我决定在其后方放置一个连接器-以免积聚灰尘!因此,我没有仔细切割,而是在背面填充了热胶。


前面板的情况更有趣-它的组成有很多选择。我必须使用DMA实现七段指示器的动态指示(直接内存访问,通过GPIO端口直接执行动态指示会消耗太多CPU资源,并且由于操作系统的活动,段的亮度会不均匀)。但是,这已经是另一篇文章的主题,此外,此类委员会可能会大相径庭,因此,在此,我们将提供权利向读者展示我们的创造潜力。您可以研究我的开发板的实现源代码在最简单的情况下,您可以简单地切割去往IR接收器的轨道,然后用三根导线直接焊接到它。我只注意到我使用IDE电缆连接到开发板的GPIO连接器,它非常适合Raspberry Pi连接器,并且可以轻松地将导线与其他组件焊接在一起。

最后,我得到了这样一个设备:


自订


如果在打开时在屏幕的右上角看到一个彩色的正方形,则表示Raspberry Pi的电源不足-电源弱,电线太细或USB外设占用太多。在第一种情况下,仅用功能更强大的PSU替换电源会有所帮助。在第二种方法中,可以通过用较粗的电线替换或通过并行使用多个芯线来轻松解决问题;在第三种方法中,可以通过直接从电源向USB设备供电,或者例如通过安装具有连接外部电源功能的USB集线器来解决此问题。

您可能还会看到您的HDD已作为外部闪存驱动器连接到系统。让它成为操作系统中的主要存储。第一次启动时,OpenElec会自动使用microSD卡上用于数据部分的所有可用空间,然后将其安装为/存储。在我看来,最成功的决定是将整个硬盘用作/存储。为此,请格式化硬盘并使用ext3 / 4文件系统在其上创建一个分区。可以使用parted和mkfs实用程序直接在播放器上完成此操作,以下命令将擦除磁盘的全部内容并创建一个ext4分区: 为此,您将需要通过SSH登录到播放器。然后将新分区挂载到某处:

# 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


将/ storage的全部内容复制到一个新分区中,以维持当前状态: 卸载该分区,并根据需要删除该文件夹: 现在,您需要指定在引导时需要挂载的驱动器。您可以通过调整内核参数的命令行来执行此操作,但是首先我们要找出硬盘分区 的UUID:将分区的UUID复制到剪贴板。现在,使用内核配置重新挂载文件系统以进行写入和修复: 在文件中,将disk参数替换为磁盘的UUID。该文件的内容应如下所示: 重新启动后,播放器会将硬盘驱动器用作/存储,并且可以删除存储卡上的该部分,以便在启动时不会自动挂载该文件:
# 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


这是我度过的一个愉快的周末。不要忘记GNU / Linux操作系统已安装在此媒体播放器上,您可以根据自己的喜好对其进行修改/补充。您还可以使用同一设备解决家庭自动化的一些任务。

最后,是一段视频,讲述了有关该设备的文章作者的演讲

祝您浏览愉快!

Source: https://habr.com/ru/post/zh-CN396967/


All Articles