|
本帖最后由 xinyu1727 于 2023-2-23 11:55 编辑
事件背景:其实这个按钮版的网络收音机是给爷爷做的,从小有这个听广播的爱好也是因为爷爷的影响,这个冬天看到他因为闲暇无事可做,那么冷的天也助着拐杖往屋外走,想必老人家也是呆不住吧,老人本有很多年的收听电台的爱好,但房间里的调频广播信号已经不能像以前在外面果园的信号质量了!而自己也一直有这个爱好用路由开发网络收音机,于是就有了做个按钮版本的网络收音机的想法!
过往相关帖子:AR9344/AR9341方案的无线音乐播放器(2020320更新)
AR9344+AR8035+AR9382千兆双频AP音乐推送网络收音机固件
1,画PCB的按钮面板,3个按钮控制音量和播放/停止,面板底部为PCM5102A的I2S音频解码芯片(因为个人不太喜欢用USB声卡,也因为这个方案的路由算是过时老旧家用路由比较少有USB口的)
2,PCB打板焊接
用的4脚RGB灯,占用2个路由处理器AR934x的io口system灯一个,wlan灯一个,还有一个灯预留吧
3,路由盖板开孔,固定按钮面板,本次使用的机器是百米路由的HQ55,25包邮买了两三年了吧!小音箱是淘来的,8块一个,全频喇叭分量足,音质超棒的,
4,编译固件,用的syb999的CC源码,仓库地址https://github.com/syb999/openwrt-15.05
AR934x路由方案可用的I2S音频驱动两年前已经分享给他加入他的源代码里去了,有兴趣玩路由音箱的小伙伴可以直接下载使用
主要加载mpd-mini(播放网络电台)和mpc(mpd播放器命令控制端),alsa-utils(音量控制)
按钮控制换台是使用的button驱动检测按钮状态来触发执行一个脚本,可参考/etc/rc.button/reset脚本,
其实这个脚本也是syb999大佬热心帮忙做的,然后增加了一点内容,再次谢过哈!
脚本命名和放置路径为/etc/rc.button/addmp3
脚本内容如下:
#!/bin/sh
prefix="http://lhttp.qingting.fm/live/"
suffix="/64k.mp3"
FILE="/tmp/addmp3.count.tmp"
if [ ! -f "$FILE" ];then
echo 1 > /tmp/addmp3.count.tmp
fi
count="$(cat $FILE)"
if [ $count -gt 1 ];then
echo $(expr $count + 1) > /tmp/addmp3.count.tmp
count=$count
fi
if [ $(busybox ps | grep addmp3 | grep -v grep | awk '{print$1}' | wc -l) -gt 2 ];then
kill -9 $(busybox ps | grep addmp3 | grep -v grep | head -n1 | awk '{print$1}')
fi
ralist="4804 20500149 4915 5022107 20500150 15318569 20210755 20207761 20026 5022405 20091 15318341 20071 20697 1756 1754 4875 1753 20769 20767 1763 4599 1762 20555 20861 1670 20571 1757 21043 20771 5042 1759 20211621 5044 5021920 20211626 15318330 1259 1270 1278 1260 4955 1271 1254 1272 20192 15318432 468 469 1277 5021523 5017 1275 5021725 1110 4864 4027 1739 1738 336 332 4938 2803 4054 2783 4963 2779 2801 1163 4866 1134 1140 4878 20450 1862 20010 5009 5008 5022283 5022610 21001 1758 4581 20212227 4873 1612 274 273 267 268 276 1676 1673 1674 1675 1677 4956 20176 4956 5022537 1675 20320 4014 15318631 4865 20839 15318631"
total=$(echo $ralist | sed 's/ /\n/g' | wc -l)
if [ $count -gt $total ];then
count=1
echo $count > /tmp/addmp3.count.tmp
fi
target="$(echo $ralist | cut -d ' ' -f $count)"
theurl="${prefix}${target}${suffix}"
mpc clear && mpc add $theurl && mpc play
count=$(expr $count + 1)
echo $count > /tmp/addmp3.count.tmp
while true;do
mpc1=$(mpc | grep -E "playing" | awk -F ' ' {'print $3'} | awk -F / {'print $1'} | awk -F : {'print $2'})
sleep 2
mpc2=$(mpc | grep -E "playing" | awk -F ' ' {'print $3'} | awk -F / {'print $1'} | awk -F : {'print $2'})
if [ "$mpc1" = "$mpc2" ]; then
echo 1 > /sys/class/leds/tp-link:green:system/brightness && echo 0 > /sys/class/leds/tp-link:green:wlan/brightness && echo -e "$(date +%F%n%T) $theurl play error\n" >> /tmp/radio.tmp && mpc clear && mpc add $theurl && mpc play
else
echo 1 > /sys/class/leds/tp-link:green:wlan/brightness
fi
done
这个脚本可以实现播放按钮连续换台,计数达到电台总数之后又从头开始顺序选台播放,并且mpd播放进程守护,按一次播放新的电台如果播放失败,点亮红色sys系统指示灯,并且再次尝试播放,播放成功后红色sys灯熄灭并且绿色wlan灯亮,网络断开后变成红灯尝试重新播放,网络恢复后继续播放!这个比较直观是否网络异常或者电台失效
半夜手机操作的排版不好看,电脑操作排版又提示帖子内容太大不给发布。
所以本帖停止更新了,请各位移步另一帖吧
基于openwrt的网络收音机按钮版本适合老人使用20230223更新 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
评分
-
查看全部评分

|