本帖最后由 TwoOne 于 2021-8-21 17:31 编辑
OrangePi Zero可能是目前存世量最高的全志开发板设备了,H2+ SOC、百兆PHY、自带WiFi能够满足不少的开发需求。Volumio是一个非常强大的数字播放系统,我希望手里所有的开发板都能物尽其用,因此决定刷上Volumio,做成一个数播系统继续发光发热。本文主要涉及Volumio系统刷写+PCM5102解码电路绘制。
Volumio系统刷写
Volumio是一款高颜值低配置要求的数播软件,能够读取USB设备、NAS上的音乐文件,支持各种主流格式和无损音乐播放,支持苹果Airplay等无线推送播放。官方只提供了树莓派和x86设备的镜像。树莓派一代都能够完美运行,可见配置要求并不高,因此移植到香橙派上按照全志的性能绝对是绰绰有余的。通过搜寻资料果然一官方帖子中有OrangePi Zero的Volumio镜像。烧写后发现这个2017年原作者编译的镜像太古老,导致Homeasistant对其支持不友好,界面内无法调用API获取播放列表,只能简单控制音乐的播放和暂停。好在另外一个老哥分享了2020编译的版本,目前工作正常。 新版本的安装完成后,在homeassistant中能够实现联动,显示当前播放的文件名以及歌词。
烧录后第一次启动因为解压内核,需要至少10分钟时间,我一度以为镜像出错无法兼容。长时间的等待之后成功进入了系统。 Volumio默认是不开启SSH功能的,需要进入IP地址volumio.local/dev 打开SSH,即可通过用户名volumio 密码volumio 访问。 Volumio的界面非常友好,运行向导可以配置进行WiFi联网、挂载NAS等操作。
打通I2S和Wlan因为OrangePi Zero并不带音频输出接口,所以需要通过I2S接口外接解码芯片实现音频输出。全志H2+芯片的I2S接口DATA引脚为PA20,而Zero将此引脚用做了WLan LDO电源的使能信号引脚,因此需要改造一下电路。
从原理图中可以看到,PST73118BETV是一颗1.8v 300mA的LDO电源芯片,只需要将EN脚挑起,输入高电平即可。可以选择直接和VIN脚联通,也可以和板子上的3.3v测试点联通,我选择了后者。同时底部焊盘飞线引出,作为I2S输出。
线飞完后,I2S的其他引脚全部都能在排座上找到,分别是DATA、BCK、LRCK。引用一张图片:
飞线完成用ifconfig测试一下,已经能够成功找到eht0和wlan0两张网卡。
到此板子的处理就全部完成了。
PCM5102解码板绘制 I2S有3个主要信号:
1、串行时钟 SCLK,也叫做位时钟BCLK,即对应数字音频的每一位数据,SCLK的频率=2×采样频率×采样位数,I2S一般是传输立体声,有两个声道channel,采样频率指的是采样数率,多久去采集一个点,每个点是几个bit组成。
2、帧时钟LRCK,用于切换左右声道的数据,LRCK为“0”表示正在传输的是左声道的数据,为“1”表示正在传输的是右声道的数据。LRCLK == FS,就是采样频率。
3、串行数据SDATA,就是用二进制补码表示的音频数据,有时为了使系统间能够更好的同步,还需要另外传输一个信号MCLK,称为主时钟,也叫系统时钟(System Clock),是采样频率的256或384倍。 香橙派Zero这个板子并没有引出MCLK信号,因此只能将采样频率倍频后送入DAC中,完成时钟的同步。PCM5102这款芯片,刚好具有这个功能,因此无需连接MCKL(PCM芯片中又称为SCK)信号,将SCK引脚拉低即可使系统内部输出时钟完成同步。
官方发布的中文资料,值得信赖(虽然只有第一页是中文哈哈哈)
按照官方参考原理图和layout绘制即可:
电路中,PCM5102共需要三路3.3v的VCC供电,分别是数字、模拟和电荷泵。这三路电源独立设计,GND在大电容处一点接地,以最大程度降低底噪。放出我的原理图以供参考。
为了尽可能缩小成品的体积,我按叠层电路板的思路设计板子,配合3D打印的外壳做成一个内夹Zero的三层汉堡。同时为了让板子能够充分散热,SOC部分挖空以安装突起的散热片。这款板子的WLan、SOC、DRAM都是发热大户,同样需要经过降频处理以降低功耗和温度,并覆盖散热片,这个将在后面讲到。
3D打印的外壳将天线外置,用小辣椒天线,这个样子还是非常讨喜的。 上层解码板实际我调整了四次,第一次测试功能和底噪,第二次和第三次调整外形,更好地匹配外壳。
焊接部分非常常规就不讲了,一把烙铁行天下。
因为全志这款芯片的发热实在是太大了,待机能轻松超过70度,装入机壳后甚至85+,所以最终的版本中做了最大面积的开窗,在上方安装一个小风扇,让风扇下吹形成尽可能大的风道。风扇压制下,温度能降到65度上下,这样才能放心长时间运行。
功放继电器插件
利用开发板最大的优势就是GPOIO非常丰富。Volumio中有个很好用的插件库,里面有一个叫Amplifier Switch,可以利用GPIO口连接继电器,在播放音乐时自动开启,播放结束后延时关闭,延时时间可以自定义。
于是为了不影响美观,我利用了一下供电的USB口。将GPIO10焊接到USB的D+和D-上,这样可用一条USB实现供电+继电器控制,于是整机只有一条供电线和一条音频线引出,极简设计!
听感
听感这个东西就比较玄学主观了,对我而言,这块解码板确实没有让我失望。首先零底噪,上电、切歌是没有噪音的,所谓静如深海;其次动态比我的笔记本板载声卡要丰富,感觉细节更加清楚,音乐的场面能够恢弘全景的呈现。总结四个字:通透敞亮!
起初我还担心这块小芯片的表现,而它的表现作为一个数播系统的DAC解码是不折不扣的高分选手。在此也推荐给有DAC解码需求的伙伴们。
OrangePi Zero的三三两两
关于香橙派的表现,除了第一次开机时间较长外,后续开机在一分钟内都能完全启动,访问WEB界面,使用过程中也不会出现卡顿的情况,性能足够。
首先要解决的第一个问题是MP3等音乐文件中文乱码的问题,这个问题我也还在摸索中。Volumio只识别ID3v2的tag,使用Mp3tag修改工具,将其编码格式换为UTF-8,能解决一大部分乱码的问题,其次还乱码的,如果想我一样懒得折腾,那直接删除所有tag就能一劳永逸。删除tag后,Volumio将显示音乐的文件名,播放全部都正常,只是无法获取封面和歌手、专辑等信息。
第二个是插件功能。Volumio有一个非常好用的继电器插件,能够控制GPIO口连接继电器,播放音乐时自动打开功放,播放结束后延时关闭功放,这简直是懒人福音,再也不用用手开关功放了哈哈。
第三个是温度控制。这是老生常谈的问题了。Volumio是基于debian系统开发的,一些为armbian设计的软件比如h3consumption无法使用,h3consumption能够关闭GPU核心,降低发热量,但对于此时的Zero来说,经过我的多次尝试,只能通过降频的方法降温。在不人工干预的情况下,Volumio默认为CPU的调度在performance性能模式,导致主频稳在1.1GHz,测量此时的CPU供电在1.3v,温度能一路狂奔到80。在长期值守的情况下,这个问题还是让我有些担心。 修改/etc/default/cpufrequtils文件,将其改为ondemand按需模式或者conservative保守模式,保存后重启服务,CPU将长时间跑在480MHz。稳定运行一段时间以后,CPU终于能下降五度(捂脸)测量CPU供电为1.1v。降多少都是降对吧,在不损失性能又不想加装主动散热又想要极致体积的情况下,这是最佳解决办法了。
最后尽情享受音乐吧!
|