聚丰项目 > 基于 AB32VG1的智能音频控制系统
本系统支持本地按键触发控制音频播放、切换音量控制,LED通过闪烁时的亮度实时反映音高低,方便易用;同时通过wifi连接本地或远程云端控制上位机,云端可远程控制的音频播放、切换、指定播放,音量控制等功能,设备实时上报状态信息,交由云端处理,实现数据的实时交互,云与物的有机结合。 上位机软件使用python Tkinter GUI 库完成设计实现,可运行在windows、linux等系统,适配性、稳定性、兼容性强,且UI交互更符合人性化设计。
April8820
分享April8820
团队成员
April8820 嵌入式软件工程师
硬件组成:
本地硬件:AB32VG1开发版+ESP-C3-32S评估板
远程控制:PC或其他终端设备
硬件介绍:
AB32VG1开发版使用到的外设有:SDIO,AUDIO,KEY,LED,PWM,UART等
ESP-C3-32S评估板UART与AB32VG1开发版UART1连接
PC:windows系统且已安装python编译环境
模块图片:
RT-thread使用情況:
内核:线程、消息队列等
驱动:uart、pwm、io、spi、sdio、audio等
组件:dfs、romfs、fatfs、finsh等
软件包:wavplayer、optparse、multibutton等
key线程、uart线程、业务处理线程:
1.rtthread内核类模块初始化:rthread启动相关初始化
2.驱动、组件、软件包初始化:uart、sdio、pwm、audio、msh、dfs、fatfs、multibutton、optparse、wavplayer等
3.romfs初始化,挂载到"/"目录,并在rom中创建了sd文件夹(romfs.c如下)
4.sd卡挂载文件系统,目录为“/sd”
5.目录“/sd”下的wav文件检索
6.注册按键回调,创建按键检测线程
7.pwm初始化及LED的亮度控亮
将当前播放音量作为pwm脉冲的周期,音量越高,闪烁时的LED越亮
1.按键循环检测触发对应回调。
2.按键0回调:单击:上一首 ;长按:音量增加
3.按键1回调:单击:播放/暂停
4.按键2回调:单击:下一首 ;长按:音量降低
1.接收数据打包后放入接收信息队列:
这里采用循环读取的方式完成了串口打包,打包间隔为5ms
1.启动串口接收线程
2.WIFI联网,建立socke连接
进入socket(这里使用UDP,可根据需求修改配置)透传的指令及回复:
AT设置函数:
该函数将根据配置指令结构体数组,依次在重试次数内发送AT指令,等待模组回复,并对比回复结果
AT命令交互函数:
该函数实现了AT指令的一次交互,具体流程:串口数据缓存冲刷,发送AT指令,更剧结构体定义控制发送换行,在超时时间内等待模组回复,最终返回指令交互结果。
3.数据解析及处理,状态上报
循环接收socket收到的数据,对符合格式的数据进行处理;
无接收数据时,获取当前播放状态,上报状态信息到socket
状态控制:
对命令码进行相应动作:上一曲、下一曲、开始/暂停、音量加、减已经播放指定歌曲
状态获取:
获取当前播放状态、播放音量、播放歌曲已经播放列表
创建socket,接收到数据后对数据进行解析,更新界面的信息展示
控制按钮功能:上一曲、下一曲、开始/暂停、音量加、减
列表选择功能:双击选择歌曲后,上位机下发播放该歌曲指令
1.主演示视频
2.补充视频