0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NUC980开发板应用 基于NK-980IoT的国学唐诗学习机

RTThread物联网操作系统 来源:recan 作者:recan 2022-06-23 14:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:recan

链接:

https://club.rt-thread.org/ask/article/372fe88529e45e45.html

基于NK-980IoT的国学唐诗学习机


ab8c1bcc-f227-11ec-ba43-dac502259ad0.png

1 项目背景

最近一直在陪小孩学习国学精髓,比如唐诗、宋词这些经典国学常识;恰好看到RT-Thread官方社区有开展一个DIY活动,并且这个板子刚好带有音频相关的外设接口,于是想着试着玩一玩,没准后面可以把功能再升级一下,给小孩做个高级”玩具”(这个成本可不低啊)。

2 开发板简介

开发板简单的介绍,参考如下:

ab9d0374-f227-11ec-ba43-dac502259ad0.png

整体上板子的外设情况还是非常不错的,可以做很多有用、好玩的东西。由于我本次的DIY项目主要关于音频,所以我也就重点看了这块的介绍。

abcd95fc-f227-11ec-ba43-dac502259ad0.png

音频芯片型号为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个LEDSD卡、以及音频处理的I2S接口。

abdfaada-f227-11ec-ba43-dac502259ad0.png

LED:用作功能指示;黄灯表示唐诗五言绝句模式,红灯表示唐诗七言绝句模式;

按键:用作功能选择,有唐诗五言绝句和唐诗七言律诗,两种功能模式;

音频喇叭:用作音频的输出;

SD卡:用作音频文件的存储。

3.2 软件部分

整个代码结构比较简单,如下图所示:

abffd0ee-f227-11ec-ba43-dac502259ad0.png

使用到的软件包主要是 wavplayer,在播放音频时,也主要使用这个软件包的接口。

程序的简单逻辑如下:

1、程序上电,完成初始化操作,包括按键、LED等GPIO的模式设定,创建一个信号量;另外,系统在上电初始化后,检测到SD卡存在的话,会自动挂载其文件系统,挂载点为 /mnt/sd1 这个目录;

2、播放开机使用欢迎词;

3、while-1循环等待功能按键的输入;

4、当识别到对应的按键输入后,响应的功能指示灯亮起,并且设定具体需要播放的音频文件名,然后通过信号量触发给main循环的信号量等待,然后由main循环调用wavplayer的接口执行对应音频文件的播放;


	
  1. void wav_palyer_file(constchar*file)

  2. {

  3. int new_argc =3;

  4. char*new_argv[64]={

  5. "wavplayer",

  6. "-s",

  7. "/mnt/sd1/test/test.wav",

  8. };

  9. externint wav_player(int argc,char*argv[]);

  10. snprintf(new_argv[2],64,"%s", file);

  11. wav_player(new_argc, new_argv);

  12. }

1、周次循环3-4步骤。

工程代码代码已开源在gitee:国学唐诗学习机

工程代码建议使用env环境执行编译,下载使用官方的NuWriter工具。

工程中使用的音频文件,如果需要测试,可以联系我获取。

4 功能展示

4.1 已实现功能

主要是用按键触发不同的国学内容,然后进行朗诵,功能属于比较简单,演示视频详见:B站链接

B站链接:

https://www.bilibili.com/video/BV1UY4y1B788/

4.2 未来实现功能

比如一键联网更新 唐诗音频文件:通过http或tftp等远程方式,自动更新已发布的唐诗音频文件;

比如支持本地人工朗诵录音和播放:通过读学习者的朗诵执行与原文的比对;

比如支持考察模式:学习机随机选择一首诗名,然后学习者来背诵,形成学习闭环;

比如加入语音识别功能:支持语音输入来让学习机朗诵对应的诗词;

比如加入LCD显示:支持更多样化的人机交互。

5 音频文件制作

本次项目使用的所有音频文件,均使用 AI文字合成语音在线网站制作,详见如下:

ac150c48-f227-11ec-ba43-dac502259ad0.png

ac23e9b6-f227-11ec-ba43-dac502259ad0.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 的部分技术支持,I2S音频操作部分主要参考之前的测评文章,也期待论坛中有更多关于NK-980IoT的技术文章输出。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 音频
    +关注

    关注

    31

    文章

    3136

    浏览量

    84940
  • 开发板
    +关注

    关注

    25

    文章

    6133

    浏览量

    113536
  • RT-Thread
    +关注

    关注

    32

    文章

    1543

    浏览量

    44295
  • nuc980
    +关注

    关注

    0

    文章

    4

    浏览量

    1559

原文标题:【NUC980开发板DIY项目大挑战】基于NK-980IoT的国学唐诗学习机

文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ‌AVR-IoT蜂窝迷你开发板技术解析与应用指南

    Microchip Technology AVR-IoT蜂窝迷你开发板 (EV70N78A) 是一个完整的平台,可用于评估和开发物联网解决方案。它采用AVR128DB48 avr®微控制器
    的头像 发表于 10-14 14:57 371次阅读
    ‌AVR-<b class='flag-5'>IoT</b>蜂窝迷你<b class='flag-5'>开发板</b>技术解析与应用指南

    RK3506开发板Linux开发板极致性价比之选

    RK3506开发板Linux开发板极致性价比之选瑞芯微RK3506开发板,3核Cortex-A7@1.5GHz+Cortex-M0,Linux+RT-Thread系统支持,128MB超大
    的头像 发表于 09-11 16:26 2837次阅读
    RK3506<b class='flag-5'>开发板</b>Linux<b class='flag-5'>开发板</b>极致性价比之选

    如何在 nuc980 上切换到持久文件系统?

    我遵循了“NUC980 Linux 4.4 BSP 用户手册EN.pdf”文档,但当我尝试取消选择“初始 RAM 文件系统和 RAM 磁盘 (initramfs/initrd) 支持
    发表于 08-29 07:58

    为什么无法将 PG.12、PG.13、PG.14 用作 NUC980 的 GPIO?

    无法将 PG.12、PG.13、PG.14 用作 NUC980 的 GPIO
    发表于 08-29 07:52

    轻松配置小智AI语音开发板,安信可IOT小程序功能更新

    版使用教程: 安信可AI语音开发板全面升级商用版!(附教程) 为了让开发体验更加流畅,安信可IOT小程序本次进行了多项功能升级,一起来看看吧   PART.01角色音色试听 选声音,不再“盲选”。 在语音交互场景中,声音的质感决
    的头像 发表于 08-19 17:46 927次阅读
    轻松配置小智AI语音<b class='flag-5'>开发板</b>,安信可<b class='flag-5'>IOT</b>小程序功能更新

    如何使用 NUC980 系列微处理器 (MPU) 构建具有带外 (OOB) 功能的简单远程监控应用?

    如何使用 NUC980 系列微处理器 (MPU) 构建具有带外 (OOB) 功能的简单远程监控应用。
    发表于 08-19 06:21

    ESP32开发板元件资料

    ESP32开发板元件
    发表于 07-21 14:47 14次下载

    【新品】远距离图传数传模块开发板、蓝牙模块开发板、无线模块开发板

    新品上市图传数传模块开发板蓝牙模块开发板国产无线模块开发板部分型号参与送样文末了解详情↓↓↓EWT611-900NW20S远距离图传数传模块开发板EWT611-900NW20S是一款入
    的头像 发表于 06-12 19:33 908次阅读
    【新品】远距离图传数传模块<b class='flag-5'>开发板</b>、蓝牙模块<b class='flag-5'>开发板</b>、无线模块<b class='flag-5'>开发板</b>

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制FLASH外设

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的FLASH接口,进行FLASH编程开发。例程将创建一个任务,实现FLASH读写操作。例程源代码:https
    的头像 发表于 04-22 14:49 696次阅读
    基于小凌派RK2206<b class='flag-5'>开发板</b>:OpenHarmony如何使用<b class='flag-5'>IoT</b>接口控制FLASH外设

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制UART外设

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的UART接口,进行UART编程开发。例程将创建一个任务,通过配置UART引脚,实现UART读写操作。例程源代码:https
    的头像 发表于 04-22 14:22 806次阅读
    基于小凌派RK2206<b class='flag-5'>开发板</b>:OpenHarmony如何使用<b class='flag-5'>IoT</b>接口控制UART外设

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO中断

    1、实验简介本实验将演示如何在小凌派-RK2206开发板上使用IOT库的GPIO中断模式,进行GPIO编程开发。例程将创建一个任务,通过配置GPIO引脚为中断模式,实现GPIO中断操作。例程源代码
    的头像 发表于 04-21 10:39 897次阅读
    基于小凌派RK2206<b class='flag-5'>开发板</b>:OpenHarmony如何使用<b class='flag-5'>IoT</b>接口控制GPIO中断

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制GPIO外设

    1、案例简介本案例主要是如何在小凌派-RK2206开发板上使用IOT库的GPIO接口,进行GPIO编程开发。例程将创建一个任务,通过配置GPIO引脚,实现GPIO读写操作。例程源代码:https
    的头像 发表于 04-11 15:36 1626次阅读
    基于小凌派RK2206<b class='flag-5'>开发板</b>:OpenHarmony如何使用<b class='flag-5'>IoT</b>接口控制GPIO外设

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制ADC外设

    1、案例简介本案例主要讲解如何在小凌派-RK2206开发板上使用IoT库的ADC接口,进行ADC编程开发。例程内容为创建一个任务,读取按键的ADC值,并打印到串口。例程源代码:https
    的头像 发表于 04-10 16:00 719次阅读
    基于小凌派RK2206<b class='flag-5'>开发板</b>:OpenHarmony如何使用<b class='flag-5'>IoT</b>接口控制ADC外设

    基于小凌派RK2206开发板:OpenHarmony如何使用IoT接口控制PWM外设

    1、案例简介本案例是在小凌派-RK2206开发板上使用IoT库PWM接口,进行PWM编程开发。例程将创建一个任务,每隔5秒将PWM0~10依次启用,输出1000Hz。
    的头像 发表于 04-09 08:59 2079次阅读
    基于小凌派RK2206<b class='flag-5'>开发板</b>:OpenHarmony如何使用<b class='flag-5'>IoT</b>接口控制PWM外设

    GSK980tdb车床CNC使用手册

    广数980tdb使用手册
    发表于 02-26 17:53 16次下载