用单片机来玩机器学习

2022-08-311.3万
精华项目
AI 快速预览详细 收起
本文介绍了如何使用Wio Terminal和Edge Impulse平台在单片机上实现机器学习。首先,介绍了Wio Terminal的硬件配置,包括光感测器、麦克风、加速度感测器等。接着,详细说明了如何注册Edge Impulse平台,并通过该平台上传数据、训练模型。最后,展示了如何将训练好的模型导出并在Arduino IDE中使用。整个过程简单易懂,适合初学者入门。


今天给大家讲开源硬件Wio Terminal的开箱和Wio与tinyML网站edge impulse的结合来完成机器学习的挑战。这个帖子就作为开篇吧。或者作为一个避坑指南
edge impulse平台让你在几乎不了解python和C++的情况下,快速做出TinyML项目。而鉴于TinyML项目都是面向C端的。目标用户群极其庞大。市场前景看好。似乎眼下影响它发展的最大障碍是ML单片机的价格。

先来介绍Wio-terminal
Wio-terminal被选中的原因是edge impulse系统指定它为配合edge系统的硬件之一。有点小贵,但性能比Arduino好很多。跑机器学习呢,没个大心脏(芯片)根本无法负荷,arduino的AVR小心脏只能望ML兴叹。而Wio Terminal 是一款专门用于 IoT 与 TinyML 的多功能开发板 – 包含了 ATSAMD51P19 晶片并以 ARM Cortex-M4F 为核心 (20MHz),已支援多种针对微控制器的 ML推论框架.
用单片机来玩机器学习图1
Wio开发板已包含:
光感测器(类比)
麦克风
可自订按钮 x 3
4 英吋彩色LCD
加速度感测器
Grove 接头 x 2



当然,这里不是要推销这个板子,以后会介绍能跑ML的其它类型的板子。只是刚好手里有这个板子。就拿它说事儿了。
用单片机来玩机器学习图2
用单片机来玩机器学习图3
用单片机来玩机器学习图4Wio在开箱后,先要来一个测试,测试过程如下:
用单片机来玩机器学习图15
用单片机来玩机器学习图16
用单片机来玩机器学习图17
实测效果如下:edge平台给大家最大的惊喜之一是它导出的文件可以用在arduino ide这个最大的开源硬件ide。这让广大创客可以无缝接轨机器学习项目。
用单片机来玩机器学习图18



下面隆重介绍下TinyML

TinyML 的 tiny 代表 ML 模型已针对低功耗的微型装置进行最佳化,例如 Arduino 为首的各种 MCU,各种应用纷纷出笼,但依然受限于 MCU 的算力。

常见应用:声音辨识、语音控制、影像辨识等


它内置和外延很多的传感。

光线传感        小夜灯        手势辨识
声音传感        拍手开门
加速度传感        倾斜警告装置        
气体传感        瓦斯警报器        
温湿度传感        物联网空调        


但想通过ML实现以上功能,需要一个ML平台配合。当当当当。该edge impulse登场了。
用单片机来玩机器学习图5


我们接下来要注册 Edge Impulse
地址是:https://studio.edgeimpulse.com/
记下你的登录名和密码,后面要用到
用单片机来玩机器学习图13用单片机来玩机器学习图14


其它需要安装的工具

需要安装Arduino IDE 2.0、
arduino download
https://www.arduino.cc/en/software#experimental-software

edge官方要求arduino ide得是1.8以上。但个人实测ide 1.8也能跑通,装不装2.0其实无所谓,但最好装一个。
用单片机来玩机器学习图7

在arduino的prference导入 wio terminal 开发板定义
https://files.seeedstudio.com/ar ... o_boards_index.json
用单片机来玩机器学习图8
安装Node.js 最新版,例如nodejs v16
https://nodejs.org/zh-cn/download/用单片机来玩机器学习图9

安装 edge impulse CLI tool 用来上传资料
通过CMD来安装,位置如下。有的人找不到AppData目录,需要打开win10隐藏文件。
C:\Users\Administrator\AppData\Roaming\npm\node_modules
安装命令是
npm install -g edge-impulse-cli

用单片机来玩机器学习图6

用单片机来玩机器学习图19
安装好的CLI的路径如上。如没装好,需要检查环境变量的设置
用单片机来玩机器学习图20
用单片机来玩机器学习图21

用单片机来玩机器学习图22


把wio的这个按钮连续拨两下
用单片机来玩机器学习图10
这时候你的PC会出现一个arduino盘符

用单片机来玩机器学习图11
打开这个盘符,把wio-terminal -ei-1.4文件拖入盘中,这是硬件厂商官方发布的文件,它内置了一些wio上内置的传感的调用文件。
用单片机来玩机器学习图12



edge impuls ML设置


用单片机来玩机器学习图23
用单片机来玩机器学习图24
要连接wio terminal,需要打开PC的CMD窗口。输入如下命令和你的登陆名与密码
edge-impulse-daemon --clean
用单片机来玩机器学习图25
用单片机来玩机器学习图26
并通过给出的网址,进入edge系统来做ML项目
用单片机来玩机器学习图27
用单片机来玩机器学习图28
设备支持的传感如下
用单片机来玩机器学习图29
edge主界面布局如下
用单片机来玩机器学习图30
用单片机来玩机器学习图31
然后开始取样,样本数据多一点好,不然会因为欠拟合导致精度不够。我这里做测试使用了光感传感来判断石头和布。
用单片机来玩机器学习图32
用单片机来玩机器学习图33
用单片机来玩机器学习图34
用单片机来玩机器学习图35
用单片机来玩机器学习图36
用单片机来玩机器学习图37
代码能力强的,可以看看你的ML项目的代码
用单片机来玩机器学习图38
用单片机来玩机器学习图39
我这里样本只有两笔,导致了欠拟合。精度不够,会在之后的测试中加大样本量看看。后续会持续报告。
用单片机来玩机器学习图40
用单片机来玩机器学习图41接下来汇出库文件,这里Edge把本来python ML项目文件转成了C++文件来给arduino ide使用。让单片机也能玩高大上的东东。
用单片机来玩机器学习图42
用单片机来玩机器学习图43
用单片机来玩机器学习图44
用单片机来玩机器学习图45
用单片机来玩机器学习图46
用单片机来玩机器学习图47
案例文件并不能匹配我们选择的传感的具体功能。例如我这里想要剪刀石头布,然后打开不同颜色的LED。那么需要我们手动添加一些代码。案例提供了我们最讨厌的C++的内容。而我们只需要有ardiuno C的基础。添加获取传感数据的内容和执行其它命令。如下代码给出数据采样的内容。其它内容可根据自己需要添加。需要你有一定的arduino C的代码基础。
  1. int raw_feature_get_data(size_t offset, size_t length, float *out_ptr) {
  2. float features[??]; //这里的??是你的项目采样的频率
  3.   for (byte i = 0; i < ??; i = i + 1)
  4.   {
  5.   features[i]=analogRead(WIO_LIGHT);
  6.   delay(??); //这里的??是你的训练数据时候设置的延迟
  7.   }
  8.   memcpy(out_ptr, features + offset, length * sizeof(float));
  9.   return 0;
复制代码

用单片机来玩机器学习图48
最后烧录到Wio即可。以上是跑通ML的具体步骤,以后会出具体玩转edge ML的实战项目。敬请期待。。。。






wio-terminal-ei-1.4.0.rar

82.22 KB, 下载次数: 4265

ei-handshake-arduino-1.0.2.zip

4.09 MB, 下载次数: 4499

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
vvjr
vvjr
6666666666
Mr-k
Mr-k
厉害厉害
云天
云天
我用电脑google chrome浏览器访问不了,用手机也不行。
云天
云天
https://studio.edgeimpulse.com/
大家能访问吗?我之前能访问,这半个月就上不去!
gada888
gada888
作者
回复云天
我这边chrome正常访问,要用google chrome浏览器或者微软的edge浏览器
- 没有更多了 -