Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY
I2S音频接口
nuc980
【NUC980开发板DIY项目大挑战】基于NK-980IoT的国学唐诗学习机
发布于 2022-05-30 13:13:39 浏览:1172
订阅该版
[tocm] **基于NK-980IoT的国学唐诗学习机** --- ![image.png](https://oss-club.rt-thread.org/uploads/20220530/90896846676fe4cbbdac180f5118ca4f.png) --- # 1 项目背景 最近一直在陪小孩学习国学精髓,比如唐诗、宋词这些经典国学常识;恰好看到RT-Thread官方社区有开展一个DIY活动,并且这个板子刚好带有音频相关的外设接口,于是想着试着玩一玩,没准后面可以把功能再升级一下,给小孩做个高级"玩具"(这个成本可不低啊)。 # 2 开发板简介 开发板简单的介绍,参考如下: ![image-20220530101741508](https://s2.loli.net/2022/05/30/G9pL4xbl18SRM7w.png) 整体上板子的外设情况还是非常不错的,可以做很多有用、好玩的东西。由于我本次的DIY项目主要关于音频,所以我也就重点看了这块的介绍。 ![image.png](https://s2.loli.net/2022/05/30/h6yVgCrfkbZ9dWI.webp) 音频芯片型号为NAU8822L,其中I2C接口用于配置(MODE引脚低),I2S接口用于传输数据。 I2S_LRCK接FS,用于区分左右通道数据。 I2S_BCLK接BCLK 数据传输bit时钟。 I2S_DI接ADCOUT 主<-从。 I2S_DO接ADCIN 主->从。 I2S_MCLK接MCLK 主时钟,给设备提供时钟源。 # 3 项目实现 ## 3.1 硬件部分 本方案中,硬件部分主要包括使用了2个按键和2个LED,SD卡、以及音频处理的I2S接口。 ![image-20220530104932768](https://s2.loli.net/2022/05/30/u6EDQYeGaRjqyiH.png) LED:用作功能指示;黄灯表示唐诗五言绝句模式,红灯表示唐诗七言绝句模式; 按键:用作功能选择,有唐诗 **五言绝句** 和唐诗 **七言律诗**,两种功能模式; 音频喇叭:用作音频的输出; SD卡:用作音频文件的存储。 ## 3.2 软件部分 整个代码结构比较简单,如下图所示: ![image-20220530111029942](https://s2.loli.net/2022/05/30/O1mNt5UGJ67s2IL.png) 使用到的软件包主要是 wavplayer,在播放音频时,也主要使用这个软件包的接口。 程序的简单逻辑如下: 1. 程序上电,完成初始化操作,包括按键、LED等GPIO的模式设定,创建一个信号量;另外,系统在上电初始化后,检测到SD卡存在的话,会自动挂载其文件系统,挂载点为 /mnt/sd1 这个目录; 2. 播放开机使用欢迎词; 3. while-1循环等待功能按键的输入; 4. 当识别到对应的按键输入后,响应的功能指示灯亮起,并且设定具体需要播放的音频文件名,然后通过信号量触发给main循环的信号量等待,然后由main循环调用wavplayer的接口执行对应音频文件的播放; ```c void wav_palyer_file(const char *file) { int new_argc = 3; char *new_argv[64] = { "wavplayer", "-s", "/mnt/sd1/test/test.wav", }; extern int wav_player(int argc, char *argv[]); snprintf(new_argv[2], 64, "%s", file); wav_player(new_argc, new_argv); } ``` 5. 周次循环3-4步骤。 工程代码代码已开源在gitee:[国学唐诗学习机](https://gitee.com/recan-li/NK-980IoT-Tang-Poetry) 工程代码建议使用env环境执行编译,下载使用官方的NuWriter工具。 工程中使用的音频文件,如果需要测试,可以联系 [我](http://yyds.recan-li.cn) 获取。 # 4 功能展示 ## 4.1 已实现功能 主要是用按键触发不同的国学内容,然后进行朗诵,功能属于比较简单,演示视频详见:[B站链接](https://www.bilibili.com/video/BV1UY4y1B788/) ## 4.2 未来实现功能 比如一键联网更新 唐诗音频文件:通过http或tftp等远程方式,自动更新已发布的唐诗音频文件; 比如支持本地人工朗诵录音和播放:通过读学习者的朗诵执行与原文的比对; 比如支持考察模式:学习机随机选择一首诗名,然后学习者来背诵,形成学习闭环; 比如加入语音识别功能:支持语音输入来让学习机朗诵对应的诗词; 比如加入LCD显示:支持更多样化的人机交互。 # 5 音频文件制作 本次项目使用的所有音频文件,均使用 [AI文字合成语音在线网站](https://app.xunjiepdf.com/text2voice/) 制作,详见如下: ![image-20220530103432436](https://s2.loli.net/2022/05/30/jlwUE8knmoK9IVC.png) ![image-20220530103508846](https://s2.loli.net/2022/05/30/lXKdkVcLbJNfMa9.png) 将所有制作好的音频文件,按照预定的文件名,拷贝到SD卡中,即可被读取播放了。 # 6 项目总结 - NK-980IoT版子支持下载固件程序到SRAM中快速运行,这个功能很赞,可以加快调试速度;但是,我使用烧录到SPI Flash的方式,试了好几次烧录完了都没跑起来,真是有些头疼; - 看似小的DIY项目,也需要一番构思,留有功能升级的设计; - 扩展功能,有望再花点时间,升级升级; - 体验了一把windows下使用env开发编译,虽然比不上Linux环境的流畅,但在windows环境能有这样的体验也还不错,赞一个。 # 7 参考资料 - [NK980IoT使用RT-Thread的简介](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/quick-start/nk-980iot/quick-start) - [NK-980IOT测评之I2S接口音频测试](https://club.rt-thread.org/ask/article/0a848bea7e87954b.html) - [NK-980IOT 测评之 I2S 和 SDH](https://club.rt-thread.org/ask/article/02738a52239b522c.html) # 8 致谢 最后,感谢论坛小伙伴 @[qinyunti](https://club.rt-thread.org/u/6db355ce052a35ba) 的部分技术支持,I2S音频操作部分主要参考之前的测评文章,也期待论坛中有更多关于NK-980IoT的技术文章输出。
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
李肯陪你玩赚嵌入式
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
文章
47
回答
504
被采纳
82
关注TA
发私信
相关文章
1
I2S WM8978 DMA没中断问题,参考SAI驱动改写
2
rtthread 中没有stm32的i2s(不是sai)的驱动?
3
rt-thread 官方可以对stm32系列添加i2s的驱动么?
4
求参考I2S 驱动与音频例程
5
咨询大家一个问题,单纯的I2S能调节音量吗?
6
STM32F407ZGT6音频I2S对接audio框架
7
STM32F407+PCM5102APWR+SD卡内播放wav或mp3音乐如何实现?
8
how to send i2s data from rk2108?
9
I2S WM8978 播放速度慢,有哒哒哒的噪声求助
10
ENV下的NUC980能移动到RT STUDIO上吗?
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
5
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部