『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 11694|回复: 16

[修仙教程] 香橙派OrangePi Zero之Volumio数字播放系统 快来DIY!

[复制链接]

11

主题

217

帖子

3232

积分

元老级技术达人

积分
3232
金钱
2980
HASS币
170

活跃会员教程狂人卓越贡献

发表于 2021-8-21 15:17:46 | 显示全部楼层 |阅读模式
本帖最后由 TwoOne 于 2021-8-21 17:31 编辑

OrangePi Zero可能是目前存世量最高的全志开发板设备了,H2+ SOC、百兆PHY、自带WiFi能够满足不少的开发需求。Volumio是一个非常强大的数字播放系统,我希望手里所有的开发板都能物尽其用,因此决定刷上Volumio,做成一个数播系统继续发光发热。本文主要涉及Volumio系统刷写+PCM5102解码电路绘制。


b8b3b7fa4c515a728eeb24d6e6e9c17.jpg

Volumio系统刷写

Volumio是一款高颜值低配置要求的数播软件,能够读取USB设备、NAS上的音乐文件,支持各种主流格式和无损音乐播放,支持苹果Airplay等无线推送播放。官方只提供了树莓派和x86设备的镜像。树莓派一代都能够完美运行,可见配置要求并不高,因此移植到香橙派上按照全志的性能绝对是绰绰有余的。通过搜寻资料果然一官方帖子中有OrangePi Zero的Volumio镜像。烧写后发现这个2017年原作者编译的镜像太古老,导致Homeasistant对其支持不友好,界面内无法调用API获取播放列表,只能简单控制音乐的播放和暂停。好在另外一个老哥分享了2020编译的版本,目前工作正常。
新版本的安装完成后,在homeassistant中能够实现联动,显示当前播放的文件名以及歌词。

微信截图_20210805120001.png


烧录后第一次启动因为解压内核,需要至少10分钟时间,我一度以为镜像出错无法兼容。长时间的等待之后成功进入了系统。
Volumio默认是不开启SSH功能的,需要进入IP地址volumio.local/dev 打开SSH,即可通过用户名volumio 密码volumio 访问。
Volumio的界面非常友好,运行向导可以配置进行WiFi联网、挂载NAS等操作。

主界面.png

打通I2S和Wlan
因为OrangePi Zero并不带音频输出接口,所以需要通过I2S接口外接解码芯片实现音频输出。全志H2+芯片的I2S接口DATA引脚为PA20,而Zero将此引脚用做了WLan LDO电源的使能信号引脚,因此需要改造一下电路。

878099896.png

1611407343.png

从原理图中可以看到,PST73118BETV是一颗1.8v 300mA的LDO电源芯片,只需要将EN脚挑起,输入高电平即可。可以选择直接和VIN脚联通,也可以和板子上的3.3v测试点联通,我选择了后者。同时底部焊盘飞线引出,作为I2S输出。

2776532149.png

线飞完后,I2S的其他引脚全部都能在排座上找到,分别是DATA、BCK、LRCK。引用一张图片:

Orange-Pi-Zero-Pinout-banner2.jpg

飞线完成用ifconfig测试一下,已经能够成功找到eht0和wlan0两张网卡。

微信截图_20210717114432.png

到此板子的处理就全部完成了。


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引脚拉低即可使系统内部输出时钟完成同步。

2802846521.png

官方发布的中文资料,值得信赖(虽然只有第一页是中文哈哈哈)
按照官方参考原理图和layout绘制即可:

20210821150405.png


电路中,PCM5102共需要三路3.3v的VCC供电,分别是数字、模拟和电荷泵。这三路电源独立设计,GND在大电容处一点接地,以最大程度降低底噪。放出我的原理图以供参考。

880620847.png


为了尽可能缩小成品的体积,我按叠层电路板的思路设计板子,配合3D打印的外壳做成一个内夹Zero的三层汉堡。同时为了让板子能够充分散热,SOC部分挖空以安装突起的散热片。这款板子的WLan、SOC、DRAM都是发热大户,同样需要经过降频处理以降低功耗和温度,并覆盖散热片,这个将在后面讲到。

67b2da031a9da4d86d11bace44bb898.jpg

3D打印的外壳将天线外置,用小辣椒天线,这个样子还是非常讨喜的。
上层解码板实际我调整了四次,第一次测试功能和底噪,第二次和第三次调整外形,更好地匹配外壳。
焊接部分非常常规就不讲了,一把烙铁行天下。

3d853fbade346afb9ecd26bf075ac35.jpg

因为全志这款芯片的发热实在是太大了,待机能轻松超过70度,装入机壳后甚至85+,所以最终的版本中做了最大面积的开窗,在上方安装一个小风扇,让风扇下吹形成尽可能大的风道。风扇压制下,温度能降到65度上下,这样才能放心长时间运行。



功放继电器插件
利用开发板最大的优势就是GPOIO非常丰富。Volumio中有个很好用的插件库,里面有一个叫Amplifier Switch,可以利用GPIO口连接继电器,在播放音乐时自动开启,播放结束后延时关闭,延时时间可以自定义。

功放继电器插件.png

于是为了不影响美观,我利用了一下供电的USB口。将GPIO10焊接到USB的D+和D-上,这样可用一条USB实现供电+继电器控制,于是整机只有一条供电线和一条音频线引出,极简设计!

1502384231.jpg

听感
听感这个东西就比较玄学主观了,对我而言,这块解码板确实没有让我失望。首先零底噪,上电、切歌是没有噪音的,所谓静如深海;其次动态比我的笔记本板载声卡要丰富,感觉细节更加清楚,音乐的场面能够恢弘全景的呈现。总结四个字:通透敞亮!
起初我还担心这块小芯片的表现,而它的表现作为一个数播系统的DAC解码是不折不扣的高分选手。在此也推荐给有DAC解码需求的伙伴们。


OrangePi Zero的三三两两
关于香橙派的表现,除了第一次开机时间较长外,后续开机在一分钟内都能完全启动,访问WEB界面,使用过程中也不会出现卡顿的情况,性能足够。
首先要解决的第一个问题是MP3等音乐文件中文乱码的问题,这个问题我也还在摸索中。Volumio只识别ID3v2的tag,使用Mp3tag修改工具,将其编码格式换为UTF-8,能解决一大部分乱码的问题,其次还乱码的,如果想我一样懒得折腾,那直接删除所有tag就能一劳永逸。删除tag后,Volumio将显示音乐的文件名,播放全部都正常,只是无法获取封面和歌手、专辑等信息。

432126101.png

第二个是插件功能。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。降多少都是降对吧,在不损失性能又不想加装主动散热又想要极致体积的情况下,这是最佳解决办法了。

CPUfreq.png

最后尽情享受音乐吧!




Gerber_PCB_PCM5102.zip

77.91 KB, 下载次数: 4

售价: 10 金钱  [记录]

BOM_PCB_PCM5102_2021-08-21.csv

1.54 KB, 下载次数: 1

售价: 10 金钱  [记录]

评分

参与人数 4金钱 +58 HASS币 +20 收起 理由
l24195656 + 8 感谢楼主分享!
whxciotw + 20 感谢楼主分享!
+ 20 + 20 膜拜大神!
Tao173 + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

10

主题

101

帖子

1517

积分

金牌会员

Rank: 6Rank: 6

积分
1517
金钱
1416
HASS币
0
发表于 2021-8-21 15:49:55 | 显示全部楼层
围观大佬,先
回复

使用道具 举报

13

主题

220

帖子

644

积分

高级会员

Rank: 4

积分
644
金钱
422
HASS币
0
发表于 2021-8-21 16:59:17 | 显示全部楼层
高手啊,字都跟零件一样密集了
回复

使用道具 举报

11

主题

217

帖子

3232

积分

元老级技术达人

积分
3232
金钱
2980
HASS币
170

活跃会员教程狂人卓越贡献

 楼主| 发表于 2021-8-21 17:28:46 | 显示全部楼层
ryanh7 发表于 2021-8-21 16:45
我记得有音频输出来着

CPU内确实有一个内置的DAC,效果不好只能听个响。
回复

使用道具 举报

0

主题

37

帖子

477

积分

中级会员

Rank: 3Rank: 3

积分
477
金钱
440
HASS币
0
发表于 2021-8-21 19:38:43 | 显示全部楼层
厉害了,拜膜一下
回复

使用道具 举报

21

主题

162

帖子

2122

积分

论坛DIY达人

积分
2122
金钱
1955
HASS币
30
发表于 2021-8-22 14:45:31 | 显示全部楼层
厉害厉害
回复

使用道具 举报

2

主题

239

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
573
HASS币
20
发表于 2021-8-22 18:28:36 | 显示全部楼层
用习惯了贴片元件的焊接方法,才能说焊接容易把,不管怎么说,不同的开发者有最适合自己的选择方法
回复

使用道具 举报

2

主题

239

帖子

817

积分

高级会员

Rank: 4

积分
817
金钱
573
HASS币
20
发表于 2021-8-23 16:49:20 | 显示全部楼层
厉害,不知道楼主是第一次焊接还是专门做这个的,o(∩∩)o...哈哈

不过,如果是我,会选择树莓派,连解码板都不需要
回复

使用道具 举报

11

主题

217

帖子

3232

积分

元老级技术达人

积分
3232
金钱
2980
HASS币
170

活跃会员教程狂人卓越贡献

 楼主| 发表于 2021-8-23 20:03:29 | 显示全部楼层
jack9603301 发表于 2021-8-23 16:49
厉害,不知道楼主是第一次焊接还是专门做这个的,o(∩∩)o...哈哈

不过,如果是我,会选择树莓派,连解码 ...

也可以的哈,我这是闲置利用哈哈。树莓派有输出,音质没有这个独立DAC来的好的
回复

使用道具 举报

39

主题

477

帖子

2689

积分

金牌会员

Rank: 6Rank: 6

积分
2689
金钱
2212
HASS币
10
发表于 2021-8-23 20:12:40 | 显示全部楼层
看不懂,围观一下大佬
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-25 19:15 , Processed in 0.063567 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表