【Follow me第二季第4期】Arduino_Nano_Connect板子---任务3:驱动外设PDM麦克风
[复制链接]
继续完成任务3驱动集成的PDM数字麦克风并串口打印录音数据和波形,同样的这里我也想尝试利用本机OLED显示模块来显示这些信息,图形数据等。当然这一切还是建立在mpy生态中大量存在的第三方模块基础上。
板上集成的全向式PDM接口数字麦克风依然是来自大名鼎鼎的意法半导体ST公司,基础资料介绍如下:
■ ST MP34DT06JTR MEMS麦克风
▪ AOP = 122.5 dBSPL
▪ 64 dB信噪比
▪ 全向灵敏度
▪ -26 dBFS ± 1 dB灵敏度
数字麦就没啥可展开介绍的,下面继续快速实现一下以上简单测试的功能。
这里我首先有用到arduino官方的例程https://docs.arduino.cc/micropython/basics/board-examples/#microphone-mp34dt05,如下图所示。
当我打开omv-ide时,它会提示要求更改Nano板子的固件,如下图所示。
选择升级到最新版本4.5.9后,如下图所示。
可以看到升级后的固件版本确实时4.5.9。然后点击绿色小三角运行脚本mic.py,提示如下图所示。
很显然,它说是模块没有对应的方法,虽然不明白为啥没有方法官方还要这么写,那还是确认一下。找到https://micropython-ulab.readthedocs.io/en/latest/scipy-signal.html文档一看API介绍,signal模块确实没有这个频谱计算的方法,此路不通,暂且不管他好了。
于是转换一下思路,自己去试试看怎么实现任务三。在百度后找到一个GitHub上面开源大佬的dmic驱动模块 ,这依然体现了mpy开发的便利和代码复用特性。既然有第三方模块可用,那就还是回到thonny开发环境下,连接Nano板子后打开如下图所示。
Mpy固件版本已经变1.23了,不是之前自己烧录的1.24版了,当然还是一样能用。然后就要把dmic的驱动库clone下来,如下图所示。
简单浏览一下源码可以发现,使用了pio汇编指令实现的dmic驱动。接下来把这个驱动库下载到Nano板子上,就可以驱动来自ST的dmic外设MP34DT06JTR,如下图所示。
运行一下test.py测试脚本文件,就可以看到录音后的输出wav文件了,wavsimple.py这个脚本文件时这个第三方驱动库作者自己写的wav格式容器工具,所以我们这里可以很简单的得到录音结果,并且被保存在root根目录下。
在thonny环境下,我们可以把录音好的wav文件上传到pc上,进行播放测试和聆听。
在我电脑的vlc播放器中,已经听到了我自己说话的录音。可以看出,在使用了第三方的驱动模块后,很方便搞定了录音并输出wav文件。
回到我们自己的任务三------串口打印录音数据和波形的目标上,就只需要在test程序基础上做点改变就行,而且thonny开发环境里也有集成波形显示的可视化窗口,如下图所示。
最后需要搞定的一个问题是要录屏才能展示结果,这里用了一个迅捷录屏工具完成录屏,并继续使用了vlc播放器完成录屏文件的回放操作,来检查一下录屏波形打印结果的视频效果。
录屏文件也放在下方,方便大家查看。
Rec 0001
以上,完成任务三。
|