基于NanoPi neo的网络音箱制作

因为手上有个NanoPi neo,想着做个什么东西,这货有网络接口,没有直接的HDMI之类接口,想着要把做个网络音箱吧,可以用PC或者手机去控制播放,多方便啊!
说干就干!
可光这货也不能搞啊,再找找家里的存货,
有老的适配PC的有源音箱,有淘汰的手机5V电源,小容量(8G)的中速tf卡(差不多可以放系统啦)
其实光这个也够了,不过NanoPi neo自身的DAC输出也存在接线问题,效果吗,还不够,遂想着升级一下,搞个高大上的专门DAC(因为NanoPi neo支持I2S)。
其实官方有个高大上的专门音频DAC,NanoHat PCM5102A,不过价格嘛,有点小贵,还是自力更生吧,还可以自己安排接线,遂在某宝上用官方四分之一的价格淘到同样用PCM5102A的DAC模块
它长这样:
PCM5102模块
东西齐备,可以开工啦。

基本系统安装

基本是参考官方wiki来安装基本系统,下载的是最新的nanopi-neo_sd_friendlycore-xenial_4.14固件(这里吐槽一下,官方是某度网盘下载,无会员真心慢啊!)
固件写入工具是windows下的Etcher(推荐这个工具,固件写入很方便)。具体操作就略过啦,只要固件下载完整,tf卡没有问题,写入是一次成功的。
设备的连接也省略啦,参考官方的wiki就好。
因为NanoPi neo没有直接的视频输出,就采用的串口连接来监视(接线也参考官方wiki),比特率是115200,官方没有介绍这个情况。
直接从串口USB取电来进行首次启动。一次启动成功,连接网线后自动获取到地址,后面就可以用网络ssh登录来进行管理啦。

I2S DAC的连接与启用

因为不是官方的I2S DAC,当然不能一插启用,不过也不是难事,购买的PCM5102A模块随配了管脚针,也有详细的接线图,就先焊接用到的脚,一共需要5根线(不需要6根线,可以省略时钟信号线,4根线也是不够的!),接线关系如下图
NanoPineo连接PCM5102A DAC

连接好后,还需要在系统中配置一下,才能正式启用这个I2S音频DAC的输出,主要的步骤是先登录进系统,运行

 
  1. sudo npi-config

启动配置,依次进入 Advanced Options -> I2S,选择启用(Enable) I2S设备即可,设置后需要重启。

重启后用,安装音频相关应用(主要是alsa应用),并列出系统音频设备

 
  1. apt-get update
  2. apt-get install libasound2
  3. apt-get install alsa-base
  4. apt-get install alsa-utils
  5. aplay -l

查看音频设备,我的有4个设备,其中设备4是I2S对应的PCM5102A设备,所以测试

 
  1. sudo aplay /root/Music/test.wav -D plughw:4

看是否有声音(可以插耳机试),确认后再看是否把I2S设备设置为默认音频设备:
查看/etc/asound.conf中是否和检测到的I2S设备编号一致,比如我的就是(设备编号是4):

 
  1. pcm.!default {
  2. type hw
  3. card 4
  4. device 0
  5. }
  6.  
  7. ctl.!default {
  8. type hw
  9. card 4
  10. }

这时(不指定输出设备的播放)运行

 
  1. sudo aplay /root/Music/test.wav

应该正常出声。至此I2S设备的连接成功,可以进行下一步。

音箱硬件改造

主要涉及开孔安装固定NanoPi neo,并且能外接网线(同时提供了外露USB接口),
固定I2S音频DAC,固定针对NanoPi neo的专用电源适配器(那个5V的手机,I2S的电是经过NanoPi 取的),
同时电源和原来的有源音箱公用电源开关(220V的输入开关)。
以及相应的连接线。
因为个人的物件情况不同,所以图的参考价值不大(其实除了电源外,和外部连接差不多,和音箱连接的就是把I2S音频DAC的输出接到音箱的音频输入去而已),所以这里就不放图啦,不过有一个大致DIY过程的视频可以参考下。
这个过程主要注意各种接线的准确,还要保证接线的稳定耐用,因为我主要采用的杜邦线,个别用到了焊接,对杜邦线,其实可以点点热熔胶协助固定下(我就是这么搞的)。

真正网络音箱功能的实现

真正实现网络音箱功能,还需要安装一个专门的客户端软件,就是squeezelite,这个软件是罗技Logitech Media Server 的无头(headless)客户端,
可以算作是罗技Squeezebox的一种模拟器。
在NanoPi neo的标准系统中安装它是很方便的,直接:

 
  1. sudo apt-get update
  2. sudo apt-get install squeezelite

即可安装完成,且自动启动squeezelite(同时加入到自动启动中,即下次重启也会自动启动)。
如果在同一个内网段中有罗技Logitech Media Server服务,则就可以实现网络音箱功能啦。
我是有一个罗技Logitech Media Server服务的,在NanoPi neo 安装了squeezelite后,就检测到了一个支持的NanoPi neo播放设备(因为它们在一个内网网段中,跨网段的不行),这样就可以在罗技Logitech Media Server中进行网络播放啦,如下图所示:
播放控制展示

至此(详细演示可以参考DIY过程的视频中相关部分),我的网络音箱功能实现。

可能的升级

前面网络音箱功能确实实现啦,但还有点可能的升级空间,比如网线也不接的网络音箱。
这对NanoPi neo来说,不能直接实现,还需要添加个无线网口设备,需要用到唯一的USB接口,它兼容的(测试成功的)USB wifi卡有

  1. RTL8188CUS/8188EU 802.11n WLAN Adapter
  2. RT2070 Wireless Adapter
  3. RT2870/RT3070 Wireless Adapter
  4. RTL8192CU Wireless Adapterv
  5. 小米WiFi mt7601
  6. 5G USB WiFi RTL8821CU
  7. 5G USB WiFi RTL8812AU

选择任意一款后,使用nmcli来完成无线联网即可,如果是其它不在列表中的wifi卡,也可以尝试

 
  1. sudo apt-get install linux-firmware

安装更多的wifi网口驱动来看看是否能正确驱动起来。

具体nmcli管理无线网络的步骤如下:

  • 切换到root账户
     
    1. sudo su root
  • 查看网络设备列表

     
    1. nmcli dev

    注意,如果列出的设备状态是 unmanaged 的,说明网络设备不受NetworkManager管理,你需要清空 /etc/network/interfaces下的网络设置,然后重启.

  • 开启WiFi

     
    1. nmcli r wifi on
  • 扫描附近的 WiFi 热点
     
    1. nmcli dev wifi
  • 连接到指定的 WiFi 热点
     
    1. nmcli dev wifi connect "SSID" password "PASSWORD" ifname wlan0
    注意请将 SSIDPASSWORD 替换成实际的 WiFi名称和密码。
    连接成功后,下次开机,WiFi 也会自动连接。

这样网络有源音箱就升级为无线有源音箱,可以摆脱网线束缚啦。

原文转自:https://www.icxbk.com/article/detail/1662.html(电子芯巴客)

猜你喜欢

转载自blog.csdn.net/ICXBK/article/details/108144117