一.项目描述
其配备超低功耗 Syntiant ® NDP101神经决策处理器™,可以使语音和传感器应用程序分别在 140 和 100 微瓦以下运行,与基于 MCU 的传统 MCU 相比,吞吐量提高 20 倍,系统效率提高 200 倍。
Syntiant TinyML 板的尺寸为 24 毫米 x 28 毫米,是一个小型的独立系统,通过微型 USB 连接通过 Edge Impulse 轻松下载经过训练的模型,而无需任何专用硬件。
主机处理器:SAMD21 Cortex-M0+ 32位低功耗48MHz ARM MCU
内置256KB FLASH和32KB SRAM
- 5个数字I/O,与Arduino MKR系列板兼容
- 其中包含1路UART接口和1路I2C接口(包括在数字I/O引脚中)
- 2MB板载串行闪存
- 一个用户定义的RGB LED
- uSD卡插槽
- 神经决策处理器使用NDP101,连接了两个传感器:
- BMI160 6轴运动传感器
- SPH0641LM4H麦克风
- NDP101支持多达 560k 个参数和 64 种输出分类
- 电路板可使用5V micro-USB或3.7V LiPo电池供电
关于Arduino配置
安装TinyML依赖库,现在的软件已经很少有“不依赖”的情况了.我们需要分别安装如下6个库,以及对应的版本号.依次点击Arduino IDE “项目”->“加载库”->“管理库”打开管理,等待“更新已安装库”进度条完成后,在“搜索框”中输入 如下6个库的名称,等待显示完成,选择对应的库版本号,最后点击安装即可。
Adafruit BusIO v1.5.0
Adafruit ZeroTimer Library v1.0.1
HID-Project v2.6.1
avdweb_SAMDtimer v1.0.0
Adafruit GFX Library v1.10.1
Adafruit SSD1306 v2.4.0
我们在EDGE IMPULSE官方网站上进行语音记录,我记录了三种语音,分别为siri开灯,把灯关闭,灯光闪烁实现三种方式。每种录音训练大约100s,测试50s,识别效率高。我们在训练界面可以清晰看到声音频谱分布,识别率等,十分方便。随后我们生成一个库文件,和烧录固件,结合arduino可以做到神经网络的更新。
二.代码
// 在这里写反馈执行
if (strcmp(event, "kaideng") == 0) { //判断语句,看收听到的语音标签是对应匹配 这里是开灯
// Toggle LED
digitalWrite(LED_GREEN, HIGH);//如果匹配,就点绿灯
}
if (strcmp(event, "guandeng") == 0) {//判断语句,看收听到的语音标签是对应匹配 这里是关灯
// Toggle LED
digitalWrite(LED_RED, LOW); //如果匹配,灯光全灭
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
}
if (strcmp(event, "shanshuo") == 0) {//判断语句,看收听到的语音标签是对应匹配 这里是灯光闪烁
// Toggle LED
for(i=0;i<=5;i++)
{
digitalWrite(LED_GREEN, HIGH);//灯光进行开 关 开 关闪烁
delay(800);
digitalWrite(LED_RED, LOW);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
delay(800);
}
}
}
void setup(void)
{
syntiant_setup();//初始化
}
void loop(void)
{
syntiant_loop();//循环
}
void syntiant_loop(void)
{
if (timer4TimedOut)//计时器溢出
{
// timer4TimedOut = 0;
// Turn Off Arduino LED
// digitalWrite(LED_RED, LOW);
// digitalWrite(LED_BLUE, LOW);
// digitalWrite(LED_GREEN, LOW);
//这里我进行了注释处理,不注释的话,灯光过一会会自动熄灭,为了方便进行关灯处理,所以选择了注释
}
}
//本次funpack代码部分相比之前一期,占比很少,更多的是进行神经网络训练的处理
三.效果展示
四.总结
首先很感谢硬禾学堂,能够提供一个平台,能够在空余时间提高自己开发的能力。我作为一名大二学生,第一次接触到机器学习,可以说有很大的新鲜感,同时,也学习到了更多的知识。同时我也期待未来还能够通过电子森林的funpack等活动学习更多的内容。感谢电子森林能够提供这个平台。希望未来电子森林能够有更多好玩有趣的项目(多出点非Arduino项目)。