Syntiant TinyML Board简介
配备超低功耗 Syntiant ® NDP101神经决策处理器™,可以使语音和传感器应用程序分别在 140 和 100 微瓦以下运行,与基于 MCU 的传统 MCU 相比,吞吐量提高 20 倍,系统效率提高 200 倍。Syntiant TinyML 板的尺寸为 24 毫米 x 28 毫米,是一个小型的独立系统,通过微型 USB 连接通过 Edge Impulse 轻松下载经过训练的模型,而无需任何专用硬件。
主要特点:
· 主机处理器:SAMD21 Cortex-M0+ 32位低功耗48MHz ARM MCU · 神经决策处理器使用NDP101,连接了两个传感器:
· 内置256KB FLASH和32KB SRAM · BMI160 6轴运动传感器
· 5个数字I/O,与Arduino MKR系列板兼容 · SPH0641LM4H麦克风
· 其中包含1路UART接口和1路I2C接口(包括在数字I/O引脚中) · NDP101支持多达 560k 个参数和 64 种输出分类
· 2MB板载串行闪存 · 电路板可使用5V micro-USB或3.7V LiPo电池供电
· 一个用户定义的RGB LED · uSD卡插槽
任务一:用自带的麦克风,搭建机器学习模型,使板卡上的LED灯根据中文语音指令(不少于三个指令)呈现出不同效果,如开灯、关灯、闪烁、SOS、呼吸等
任务二:若您针对这个板卡有更好的创意,可自命题完成(难度不能低于任务一)
本次funpack活动,我选择任务二,选择用自带的六轴传感器,搭建机器学习模型,通过是板卡呈现出不同的动作,来使板卡上的灯光呈现出不同的效果。
首先,在配置机器学习之前前,我们需要先收集不同动作的数据。
将sd卡格式化后,插入板卡中,并将板卡与电脑相连。将板卡按照一定方向进行摆动,使系统可以识别其摆动方位的值。
数据收集好后点击,save impulse进行数据分类
scale 16 bits to 8 bits,不用选择,点击save parameters进行数据分类,效果如下图所示
下来进行机器学习,效果如下
学习完成后,想直接看效果的下载Syntiant TinyML,想进行代码编写的下载Syntiant NDP101 library。此次我选择的是第二个,进行代码编写。
再此页面下,进入GitHub下载能编辑的adruino文件
下载好后,将之前下载的模型文件中的model文件替换arduino文件中src里的model文件
按如图所示将27行和38-44行代码注释掉
编辑arduino程序代码,然后将代码下到板卡中,通过串口和灯光设置来检查训练效果是否满意。
程序代码:
#include "src/syntiant.h"
#include <NDP.h>
#include <NDP_utils.h>
#include <Arduino.h>
/**
* @brief Called when a inference matches 1 of the features
*
* @param[in] event The event
* @param[in] confidence The confidence
* @param[in] anomaly_score The anomaly score
*/
void on_classification_changed(const char *event, float confidence, float anomaly_score) {
// here you can write application code, e.g. to toggle LEDs based on keywords
if (strcmp(event, "LR") == 0) {
// Toggle LED
digitalWrite(LED_RED, HIGH);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, LOW);
}
if (strcmp(event, "LSR") == 0) {
// Toggle LED
digitalWrite(LED_RED, LOW);
digitalWrite(LED_BLUE, HIGH);
digitalWrite(LED_GREEN, LOW);
}
if (strcmp(event, "high") == 0) {
// Toggle LED
digitalWrite(LED_RED, LOW);
digitalWrite(LED_BLUE, LOW);
digitalWrite(LED_GREEN, HIGH);
}
}
void setup(void)
{
syntiant_setup();
}
void loop(void)
{
syntiant_loop();
}
效果展示:左右摆动时亮红灯
前后摆动亮蓝灯
上下摆动亮绿灯
心得体会
本次活动基于Syntiant TinyML Board进行开发,并通过对一些动作的机器学习,让我了解并会使用机器学习。后面可以针对视觉识别进行一定量的学习。
十分期待硬禾学堂下期的活动!