【RealtekRTL8722DM物联网开发套件】II. 进阶:运行针对RTL8722DM MINI的示例
【RealtekRTL8722DM物联网开发套件】III. 问题与困惑,反转与感受
Ameba RTL8722DM MINI(Ameba 23) 开发板功能强大,如果仅仅运行内置的简单示例项目显然是大材小用。在对板子还不够熟悉的情况下,曾经试着运行过几个相对简单的针对Ameba 23板子的示例项目,有的可以运行,有的不行。因为对Ameba 23 开发板太不了解,即使能够正常运行的程序也是“知其然不知其所以然”。通过阅读相关资料,特别是阅读REALTEK公司提供的关于这些示例项目的说明,对板子有了一定了解,再去运行这些示例,就对其机理明白了一些,也敢去对程序做一些简单修改了。
1 读写SD卡(FatfsSDIO)
因为看到Ameba 23板子上配备了音频输出接口和麦克风,觉得运行一下AudioCodec(音频编码解码)示例应该是比较有意思的,试了一下,不行。大致读了一下程序,看到涉及到SD卡文件的读写,估计问题就出在这里,决定先来运行一下SD卡的读写示例项目(FatfsSDIO),大致弄明白SD卡读写的机理。
将一块手Micro SD卡(TF卡)插到Ameba 23板子的卡槽中,根据示例的名字推测示例项目用的文件系统应该是FAT,和windows系统下SD卡的文件系统一致,因此插入的并不是一块空白卡,心想反正卡上也没什么重要内容,就算是文件系统不一样或其他什么原因把卡上的内容毁了也没大关系。
编译、下载、运行“AmebaFatfsSDIO”下的“list_root_files”示例项目,打开“串口监视器”工具,运行正常,在串口监视器输出窗口显示的结果正是卡上根目录下的内容:
又运行了“file_read_write”,验证了SD卡的文件读写都没问题。
2 音频编码与解码(AudioCodec)
再次运行“AmebaAudioCodec”下的示例,首先运行“RecordPlaybackWav”示例,这个示例项目是用板载的麦克风收音,编码后保存在SD卡的一个文件中,然后再对这个文件内容解码,将解码后的音频通过板载的音频接口输出。对原生的项目程序做了一处小修改:将录音启动按键的定义“#define RECORDBTN 9”修改为板载按键“#define RECORDBTN PUSH_BTN”,这样就可以利用板载按键启动录音,而不必另外搭建按键电路。编译、下载、运行,似乎一切正常,按下录音启动键,对着麦克风说话,串口监视器的显示也和预期的一样,可在插在音频输出口的耳机中听不到任何声音。把SD卡取下(取SD卡时要小心,弹出的少了用手指很难取出SD卡,我每次都要动用镊子;弹出的劲头大了卡就飞了,我的SD卡曾经飞得差点儿找不到。但愿只是我的板子上的卡座是这种情况。我想如果把卡槽做在板子的边缘可能会好得多),从我的台式机上读,发现文件创建正常,文件尺寸也不是0,用台式机端的播放器播放似乎也没声。想到我早些时候运行“AmebaAudioCodec”下最简单的示例“BasicInputOutput”时一切正常,对着麦克风吹气可以在耳机中听到“呼呼”声,说明麦克风、音频输出接口以及Codec系统都是正常的。插上SD卡再试,这次在按下录音启动按键后,近距离地对着麦克风狂喊,终于在松开按键后在耳机中听到了期待的声音,只是声音比较小而已,音质也不怎么样。
运行“PlaybackWavFile”示例可以播放SD卡上的音频文件(wav格式),我将台式机硬盘上的音频文件拷贝到SD卡上,播放没问题。试了不同采样率、采用数据位数、立体声或单声道等等设置下的情况,播放效果各有不同,深入的了解大概需要去发掘、阅读相关的文档了。
3 TensorFlow(机器学习)
浏览REALTEK公司Ameba 23开发板示例项目网页时,看到有“TensorFlow”示例项目,我孤陋寡闻,不知道“TensorFlow”是什么东东。上网查了一下,知道了是机器学习相关的,听着就那么高大上。找了个最简单的“hello_world”示例准备试试,按照网页上给出的说明进到Arduino IDE中寻找,居然找不到。有点儿不甘心,终于在github中找到了“TensorFlow”的patch,一通折腾总算是安装成功,编译过程中出了一堆红色的提示,仔细看了一下都是警告,下载、运行后通过“串口绘图器”工具显示结果如下,和示例说明中给出的结果类似,只是实在不明白是什么意思。
运行“TensorFlow”中的另一个示例“micro_speech”,同样是编译时一堆警告,下载、运行后串口监视器,出现了一行提示,开始没理会。按照REALTEK公司给出示例说明对着板载的麦克风一通“yes”、“no”的狂喊(有点儿傻),串口监视器输出的结果与示例说明中说的基本一致,几个LED灯也按照语音识别的结果点亮(识别结果有时对有时不对,看来Ameba 23的智力还有待提高)。每行输出结果的最前面少了时间戳信息,似乎与程序开始运行是串口监视器给出的提示一致,想试着修改程序解决这个问题,无果。
4 WIFI与蓝牙
作为一块面向IoT(物联网)应用的开发评估板,无线通信手段WIFI和蓝牙无疑是最重要的功能。初步试了一些简单的WIFI和BLE示例,“AmebaWIFI”中的“SimpleWebServerWIFI”示例项目很有意思:通过计算机或手机的浏览器控制Ameba 23板上连接的LED点亮与熄灭(由于示例程序中的LED输出是用板子的端口号给出的,且在程序中多处出现,为了避免改程序出错,我搭建了外接的LED电路)。
运行BLE相关的示例不太顺利,除了“AmebaBLE”中的“BLEBatteryService”示例项目运行正常以外,其他几个以“BLEUart”为基础的示例都有些不正常,原因待查。
【RealtekRTL8722DM物联网开发套件】I. 通过Arduino示例热身
【RealtekRTL8722DM物联网开发套件】II. 进阶:运行针对RTL8722DM MINI的示例
【RealtekRTL8722DM物联网开发套件】III. 问题与困惑,反转与感受