Seeed Studio XIAO nRF52840 Sense Edge Impulse 入门指南

欢迎来到这个关于在 Seeed Studio XIAO nRF52840 Sense 上使用 Edge Impulse 的快速入门指南!在本指南中,我们将探索如何使用板载 IMU 传感器来检测人体动作并分类不同的行为。无论您是经验丰富的开发者还是刚刚起步,本教程都将为您提供在 XIAO nRF52840 Sense 开发板上开始使用 Edge Impulse 所需的知识和技能。那么,让我们深入了解并开始吧!
入门指南
在本指南中,我们将向您展示如何利用 Seeed Studio XIAO nRF52840 Sense 上的加速度计结合 Edge Impulse 来实现动作识别。我们在这里提供的代码由最新版本的 Seeed nRF52 开发板支持。
当涉及到嵌入式 AI 应用时,我们强烈推荐使用"Seeed nrf52 mbed-enabled Boards Library"。
硬件
在本指南中,我们需要准备以下材料:
- Seeed Studio XIAO nRF52840 Sense
- 锂聚合物电池 (702025)
- Grove - OLED Display 0.66"
- 杜邦线或 Grove 线缆
- 3D 打印外壳
- 导光塑料光纤
硬件设置
-
步骤 1. 使用烙铁移除 Grove - OLED Display 0.66" 上的 Grove 底座
-
步骤 2. 使用剪线钳将杜邦线处理到约 3 厘米长度,并在两端剥出约 2 毫米的内芯线
-
步骤 3. 将光纤穿过前面的小孔,并将末端放置在 LED 处
-
步骤 4. 根据下图将 Seeed Studio XIAO nRF52840 Sense 与其他元件焊接:
如果您使用热熔胶来加固焊点会更好。
-
步骤 5. 组装所有组件:
- 将光纤穿过外壳前面的小孔
- 将屏幕安装到固定位置
- 将电池夹在 Seeed Studio XIAO nRF52840 和屏幕之间
- 小心处理线缆
- 将导光塑料光纤的末端放置在 Seeed Studio XIAO nRF52840 的 RGB 灯处,并切掉多余部分
- 组装外壳
组装完成的样子:
软件
所需的库文件如下所列。强烈建议使用这里的代码来检查硬件是否正常工作。如果您在安装库时遇到问题,请参考这里。
要在 Edge Impulse 中设置 Seeed Studio XIAO nRF52840 Sense,您需要安装以下软件:
- Node.js v12 或更高版本。
- Arduino CLI
- Edge Impulse CLI 和串口监视器。通过打开命令提示符或终端并运行以下命令来安装:
npm install -g edge-impulse-cli
安装 CLI 时遇到问题?请查看安装和故障排除获取更多参考。
连接到 Edge Impulse
在所有软件就位后,现在是时候将开发板连接到 Edge Impulse 了。
- 步骤 1. 通过 USB Type-C 线缆将 Seeed Studio XIAO nRF52840 Sense 连接到您的计算机。
- 步骤 2. 在 Edge Impulse 中创建一个新项目
- 步骤 3. 选择"Accelerometer data"并点击"Let's get started!"
数据采集与训练
在这一步中,我们尝试从 Seeed Studio XIAO nRF52840 Sense 板载 IMU 收集"加速度计数据"来构建数据集,然后使用 EdgeImpulse 平台训练模型。
- 步骤 4. 将"Accelerometer Raw Data"代码上传到 Seeed Studio XIAO nRF52840 Sense。
下载 Seeed_Arduino_LSM6DS3 库 作为 zip 文件
打开 Arduino IDE,导航到 Sketch > Include Library > Add .ZIP Library...
并打开下载的 zip 文件。
上传以下代码并打开串口监视器
// XIAO BLE Sense LSM6DS3 Accelerometer Raw Data
#include "LSM6DS3.h"
#include "Wire.h"
//Create a instance of class LSM6DS3
LSM6DS3 myIMU(I2C_MODE, 0x6A); //I2C device address 0x6A
#define CONVERT_G_TO_MS2 9.80665f
#define FREQUENCY_HZ 50
#define INTERVAL_MS (1000 / (FREQUENCY_HZ + 1))
static unsigned long last_interval_ms = 0;
void setup() {
Serial.begin(115200);
while (!Serial)
;
if (myIMU.begin() != 0) {
Serial.println("Device error");
} else {
Serial.println("Device OK!");
}
}
void loop() {
if (millis() > last_interval_ms + INTERVAL_MS) {
last_interval_ms = millis();
Serial.print(myIMU.readFloatAccelX() * CONVERT_G_TO_MS2, 4);
Serial.print('\t');
Serial.print(myIMU.readFloatAccelY() * CONVERT_G_TO_MS2, 4);
Serial.print('\t');
Serial.println(myIMU.readFloatAccelZ() * CONVERT_G_TO_MS2, 4);
}
}
现在您将看到加速度计和陀螺仪数据在串口监视器上依次显示,如下所示!
- 步骤 5. 在您的
terminal
或cmd
或powershell
中运行命令来启动它。
edge-impulse-data-forwarder
- 步骤 6. 我们需要使用 CLI 将 Seeed Studio XIAO nRF52840 Sense 与 Edge Impulse 连接。首先,登录您的账户并选择您的项目
为加速度计和设备命名。
- 步骤 7. 将 XIAO nRF52840 Sense 连接到 Edge Inpulse
转到 Edge Impulse "Data acquisition" 页面,如果连接成功,结果应该是这样的。您可以在页面右侧找到显示的"Seeed Studio XIAO nRF52840 Sense"设备。
- 步骤 8. 选择传感器为"3 axes"。将您的标签命名为
up
和down
,将 Sample length (ms.) 修改为 20000 并点击开始采样。
- 步骤 9. 上下摆动 Seeed Studio XIAO nRF52840 Sense 并保持运动 20 秒。您可以发现采集显示如下:
- 步骤 10. 通过点击原始数据右上角并选择"Split Sample"来分割数据。点击 +Add Segment 然后点击图表。重复 20 多次来添加片段。点击 Split,您将看到每个样本数据为 1 秒。
- 步骤 11. 重复步骤 8. 和步骤 9.,用不同的名称标记数据以点击不同的运动数据,如
left
和right
、clockwise
、anticlockwise
等等。提供的示例是分类上下、左右和圆圈。您可以根据需要在这里更改它。
在步骤 9 中,分割时间是 1 秒,这意味着您在步骤 8 中至少要在一秒内完成一次上下摆动。否则,结果将不准确。同时,您可以根据自己的运动速度调整分割时间。
构建机器学习模型
- 步骤 12. 重新平衡数据集,点击 Dashboard 并向下滚动页面找到 Perform train / test split
点击 Perform train / test split,选择 Yes 并确认
- 步骤 13. 创建脉冲
点击 Create impulse -> Add a processing block -> 选择 Spectral Analysis -> Add a learning block -> 选择 Classification (Keras) -> Save Impulse
- 步骤 14. 频谱特征
点击并设置
点击 Spectral features -> 向下滚动页面点击 Save parameters -> 点击 Generate features
输出页面应该如下所示:
- 步骤 15. 训练您的模型
点击 NN Classifier -> 点击 Start training -> 选择 Unoptimized (float32)
训练模型的精度对最终结果非常重要。如果您的输出训练结果低至65%以下,我们强烈建议您进行更多次训练。
部署到 Seeed Studio XIAO nRF52840 Sense
- 步骤 16. 模型测试
点击 Model testing -> 点击 Classify all
如果您的准确率较低,您可以通过增加训练集和延长采样时间来检查您的数据集
- 步骤 17. 构建 Arduino 库
点击 Deployment -> 点击 Arduino Library -> 点击 Build -> 下载 .ZIP 文件
- 步骤 18. .ZIP 文件的名称非常重要,默认情况下它被设置为您的 Edge Impulse 项目名称。比如这里项目名称是"XIAO-BLE-gestures_inferencing"。选择文件为"将".ZIP 文件"添加到您的 Arduino 库中
- 步骤 19. 从这里下载代码。将您的头文件名称更改为您自己的名称并上传。
- 步骤 20. 移动或握住 Seeed Studio XIAO nRF52840 Sense 并检查结果:
点击 Arduino 右上角的监视器。
当您将 Seeed Studio XIAO nRF52840 Sense 在左右方向移动时:
监视器将输出类似以下内容:
输出显示如下:
当您将 Seeed Studio XIAO nRF52840 Sense 在上下方向移动时:
监视器将输出类似以下内容:
输出显示如下:
当您握住 Seeed Studio XIAO nRF52840 Sense 处于空闲状态时:
监视器将输出类似以下内容:
输出显示如下:
恭喜!您已经完成了项目的最后阶段。我们鼓励您尝试更多方向并检查哪一个能产生最佳输出效果。
资源
技术支持与产品讨论
.
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。