树莓派 + Arduino 联手打造 Wi-Fi 网络收音机,畅听全球电台
项目背景
作者因当地 FM 接收差、不想用手机听广播,参考 akellyirl 的教程,用树莓派 3B(内置 Wi-Fi)运行 MPD(Music Player Daemon),Arduino Uno 配合 SainSmart LCD Keypad Shield 控制播放、换台、音量,外接有源音箱输出声音。后期升级加入旋钮编码器、3D 打印外壳。
系统架构
- 树莓派:运行 Python 脚本,通过
nanpy库与 Arduino 通信,控制 MPD/MPC 播放网络电台流。 - Arduino:刷
nanpy固件,驱动 LCD 1602 显示台名/曲目,读取屏蔽板按键(上/下/左/右/选)和额外 4 按键扩展功能。 - 音频:树莓派 3.5mm 接有源音箱。
树莓派软件部署步骤
- 更新系统:
sudo apt-get update - 安装 MPD/MPC:
sudo apt-get install mpc mpd - 安装 Arduino IDE 与 Python 依赖:
setuptools、pyserial、nanpy(从源码编译安装) - 给 Arduino 刷
nanpy固件:cd nanpy/firmware && export BOARD=uno && make && make upload - 编写 Python 主程序(
piradio)与播放列表脚本(radio_playlist.sh),设为开机自启(crontab)。
Python 控制程序核心功能
- LCD 显示当前台名、曲目、音量、IP 地址;
- 5 向按键:上/下切台,左/右调音量,Select 进入菜单(显示 IP、切换音频输出 HDMI/模拟/自动、重载列表、关机);
- 播放列表含 12 个以色列/国际电台流媒体 URL(通过 URL Helper 嗅探获取);
- 异常处理:MPD 卡顿自动重启,网络断开重连。
进阶改进
后期版本加入旋转编码器控制选台/音量,3D 打印一体化外壳,体验更接近传统收音机。代码与播放列表开源,可自定义电台源。
制造工艺
- 树莓派 LIRC 通用红外遥控器专业构建指南
- 树莓派射频转直流:包络检波器构建与故障排查
- Cycle Chaser:树莓派让自行车变身夜间光影秀
- 树莓派防窃报警器 DIY:压力触发播放警报声
- 树莓派 + MCP9808 + InfluxDB + Grafana:家庭温度监测系统
- 树莓派打造家庭自动化系统:手机远程控制灯风扇大门
- MrRobot:Ubuntu移动端控制Rapiro机器人,支持语音、触控与摇晃交互
- DIY仿Wall-E树莓派CD盒机器人
- 蓝牙控制树莓派机器人:语音反馈功能构建指南
- Arduino与树莓派构建互联网控制视频流机器人完整指南
- RasPiRobot Board V2:将树莓派扩展为强大机器人控制器
- 树莓派 2 运行 Windows IoT Core 打造 Rover 机器人:从入门到进阶指南