作者:recan
链接:
https://club.rt-thread.org/ask/article/372fe88529e45e45.html
基于nk-980iot的国学唐诗学习机
1 项目背景 最近一直在陪小孩学习国学精髓,比如唐诗、宋词这些经典国学常识;恰好看到rt-thread官方社区有开展一个diy活动,并且这个板子刚好带有音频相关的外设接口,于是想着试着玩一玩,没准后面可以把功能再升级一下,给小孩做个高级”玩具”(这个成本可不低啊)。
2 开发板简介 开发板简单的介绍,参考如下:
整体上板子的外设情况还是非常不错的,可以做很多有用、好玩的东西。由于我本次的diy项目主要关于音频,所以我也就重点看了这块的介绍。
音频芯片型号为nau8822l,其中i2c接口用于配置(mode引脚低),i2s接口用于传输数据。
i2s_lrck接fs,用于区分左右通道数据。
i2s_bclk接bclk 数据传输bit时钟。
i2s_di接adcout 主从。
i2s_mclk接mclk 主时钟,给设备提供时钟源。
3 项目实现
3.1 硬件部分
本方案中,硬件部分主要包括使用了2个按键和2个led,sd卡、以及音频处理的i2s接口。
led:用作功能指示;黄灯表示唐诗五言绝句模式,红灯表示唐诗七言绝句模式;
按键:用作功能选择,有唐诗 五言绝句 和唐诗 七言律诗,两种功能模式;
音频喇叭:用作音频的输出;
sd卡:用作音频文件的存储。
3.2 软件部分 整个代码结构比较简单,如下图所示:
使用到的软件包主要是 wavplayer,在播放音频时,也主要使用这个软件包的接口。
程序的简单逻辑如下:
1、程序上电,完成初始化操作,包括按键、led等gpio的模式设定,创建一个信号量;另外,系统在上电初始化后,检测到sd卡存在的话,会自动挂载其文件系统,挂载点为 /mnt/sd1 这个目录;
2、播放开机使用欢迎词;
3、while-1循环等待功能按键的输入;
4、当识别到对应的按键输入后,响应的功能指示灯亮起,并且设定具体需要播放的音频文件名,然后通过信号量触发给main循环的信号量等待,然后由main循环调用wavplayer的接口执行对应音频文件的播放;
void wav_palyer_file(constchar*file)
{
int new_argc =3;
char*new_argv[64]={
wavplayer,
-s,
/mnt/sd1/test/test.wav,
};
externint wav_player(int argc,char*argv[]);
snprintf(new_argv[2],64,%s, file);
wav_player(new_argc, new_argv);
}
1、周次循环3-4步骤。
工程代码代码已开源在gitee:国学唐诗学习机
工程代码建议使用env环境执行编译,下载使用官方的nuwriter工具。
工程中使用的音频文件,如果需要测试,可以联系 我 获取。
4 功能展示 4.1 已实现功能 主要是用按键触发不同的国学内容,然后进行朗诵,功能属于比较简单,演示视频详见:b站链接
b站链接:
https://www.bilibili.com/video/bv1uy4y1b788/
4.2 未来实现功能 比如一键联网更新 唐诗音频文件:通过http或tftp等远程方式,自动更新已发布的唐诗音频文件;
比如支持本地人工朗诵录音和播放:通过读学习者的朗诵执行与原文的比对;
比如支持考察模式:学习机随机选择一首诗名,然后学习者来背诵,形成学习闭环;
比如加入语音识别功能:支持语音输入来让学习机朗诵对应的诗词;
比如加入lcd显示:支持更多样化的人机交互。
5 音频文件制作 本次项目使用的所有音频文件,均使用 ai文字合成语音在线网站 制作,详见如下:
将所有制作好的音频文件,按照预定的文件名,拷贝到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 的部分技术支持,i2s音频操作部分主要参考之前的测评文章,也期待论坛中有更多关于nk-980iot的技术文章输出。
美国禁令之下华为手机出货明年或将暴跌75%,小米OV瓜分市场
SN74193构成的具有奇次和偶次分频的分频器
Nvidia发布世界最大GPU
Linley Group 针对该产品测试后打造 AI 嵌入式物联网
高速PCB的铜箔选用指南—外层避坑设计
NUC980开发板应用 基于NK-980IoT的国学唐诗学习机
华为赢了!韩国三星侵权其专利,被判理所当然
搜狗联合发布首个“AI虚拟法官”
比尔盖茨新冠阳性,目前正处于隔离状态
四款性价比高的数码礼物推荐
大数据技术如何进行融合发展
小米便携鼠标怎么样,蓝牙/2.4G无线适配器双连接+金属工艺
如何让你的AVR单片机功耗超低
Soitec公布2020财年第四季度业绩 业绩实现了45.3%的增长
投3630万元!伦敦将安装1000个电动车充电站
铟泰公司新的InFORMS ESM02焊片有什么优势
赶超iOS成为国内第二大手机操作系统,余承东:2024年是原生鸿蒙的关键一年
iPhone8什么时候上市:iPhone8四项黑科技秒杀一切,足以改变世界的经典之作
欧司朗将提供适用于所有投影系统和类别的LED产品
苹果停止了iOS 12.5的签名工作