Skip to main content

XIAO nRF52840 Sense 基于 Edge Impulse 的运动识别

欢迎使用此快速入门 wiki,了解如何将 Edge Impulse 与 Seeed Studio XIAO nRF52840 Sense 配合使用!在本指南中,我们将探讨如何使用板载 IMU 传感器来检测人体运动并对不同的动作进行分类。无论您是经验丰富的开发人员还是新手,本教程都将为您提供在 XIAO nRF52840 Sense 板上开始使用 Edge Impulse 所需的知识和技能。所以,让我们开始吧!

开始

在本 wiki 中,我们将向您展示如何利用 Seeed Studio XIAO nRF52840 Sense 上的加速度计与 Edge Impulse 相结合来实现运动识别。最新版本的 Seeed nRF52 板支持我们在这里提供的代码。

对于嵌入式 AI 应用,我们强烈建议使用“支持 Seeed nrf52 mbed 的电路板库”。

硬件

在这个wiki中,我们需要准备以下材料:

pir

Hardware Set up

  • 步骤 1. 用烙铁取下 Grove - OLED 显示屏 0.66“ 上的 Grove 底座
  • 步骤 2. 使用剪线钳将杜邦电缆加工成约 3 厘米的长度,并在两端露出约 2 毫米的内部电缆
  • 步骤 3. 将光纤穿过前面的小孔,并将末端放在 LED 上
  • 步骤 4. Solder Seeed Studio XIAO nRF52840 Sense 与其他元素如下图所示:

    pir

pir

:::注意 如果使用热熔胶加固焊缝会更好。 :::

  • 步骤 5. 组装所有组件:

    1. 将光纤穿过外壳前部的小孔
    2. 将屏幕安装到固定位置
    3. 将电池夹在 Seeed Studio XIAO nRF52840 和屏幕之间
    4. 小心处理电线
    5. 将导光塑料纤维的一端放在 Seeed Studio XIAO nRF52840 的 RGB 灯下,剪掉多余的
    6. 组装箱子

pir

组装一个:

pir

软件

下面列出了所需的库。强烈建议使用此处的代码来检查硬件是否运行良好。如果您在安装库时遇到问题,请参阅 此处.

要在Edge Impulse中设置Seeed Studio XIAO nRF52840 Sense,您需要安装以下软件:

  1. Node.js v12或更高版本。
  2. Arduino CLI
  3. Edge Impulse CLI 和串行监视器。通过打开命令提示符或终端进行安装,然后运行:
npm install -g edge-impulse-cli 

:::注意 安装 CLI 时有问题?请查看 安装和故障排除 以获取更多参考。 :::

连接到 Edge Impulse

所有软件都到位后,是时候将开发板连接到 Edge Impulse 了。

  • 步骤 1. 通过 USB Type-C 数据线将 Seeed Studio XIAO nRF52840 Sense 连接到您的计算机。

pir

pir

  • 步骤 3. 选择“Accelerometer data”,然后单击“Let's get started!”

pir

数据采集与训练

:::注意 在此步骤中,我们将尝试从 Seeed Studio XIAO nRF52840 Sense 板载 IMU 收集“加速度计数据”以构建数据集,然后使用 EdgeImpulse 平台训练模型。 :::

  • 步骤 4. 将 "Accelerometer Raw Data" 草图上传到 Seeed Studio XIAO nRF52840 Sense。

将 Seeed_Arduino_LSM6DS3 Library下载 为 zip 文件

pir

打开 Arduino IDE, 导航到 Sketch > Include Library > Add .ZIP Library... 并打开下载的zip文件。

pir

上传以下代码并打开 串行监视器

// 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);
}
}


现在,您将看到加速度计和陀螺仪数据在串行监视器上一个接一个地显示,如下所示!

IMU 原始

  • 步骤 5.terminal 或者 cmd 或者 powershell 中运行命令来打开它。
edge-impulse-data-forwarder
  • 步骤 6. 我们需要使用 CLI 将 Seeed Studio XIAO nRF52840 Sense 与 Edge Impulse 连接。首先,登录您的帐户并选择您的项目

pir

为加速度计和设备命名。

pir

  • 步骤 7. 将 XIAO nRF52840 Sense 连接到 Edge Inpulse

移动到 Edge Impulse 的“数据采集”页面,如果连接成功,结果应该是这样的。您可以在页面右侧找到“Seeed Studio XIAO nRF52840 Sense”的设备。

  • 步骤 8. 选择传感器为"3 axes"。将标注命名为 updown, 将采样长度(毫秒)修改为 20000,然后单击开始采样。

pir

  • 步骤 9. 上下摆动 Seeed Studio XIAO nRF52840 Sense 并保持运动 20 秒。您可以发现收购显示如下:

pir

  • 步骤 10. 通过单击右上角的原始数据来拆分数据,然后选择"Split Sample",单击“+Add Segment”,然后单击该图表。重复 20 次以上以添加段。 单击"Split" ,您将看到每个示例数据 1 秒钟。

pir

  • 步骤 11. 重复 步骤 8.步骤 9. 并用不同的名称标记数据以单击不同的运动数据,例如 leftright, clockwise, anticlockwise 等。 提供的示例是对上下、左和右以及圆圈进行分类。您可以根据需要在此处更改它。

pir

:::注意 在步骤 9 拆分时间为 1 秒,这意味着您在步骤 8 中至少在一秒钟内进行一次上下摆动。否则,结果将不准确。同时,您可以根据自己的运动速度调整分割时间。 :::

构建机器学习模型

  • 步骤 12. 重新平衡数据集,单击Dashboard 并下拉页面以找到Perform train / test split

单击 Perform train / test split 然后选择 Yes 并确认

pir

  • 步骤 13. 创建 Impulse

单击 Create impulse -> 添加处理块 -> 选择 Spectral Analysis -> 添加学习块 -> 选择 Classification (Keras) -> 保存 Impulse

pir

  • 步骤 14. 光谱特征

单击并设置

pir

单击 Spectral features -> 下拉页面单击保存参数 -> 单击 Generate features

pir

输出页面应如下所示:

pir

  • 步骤 15. 训练模型

单击 NN Classifier -> 单击 Start training -> 选择 Unoptimized (float32)

pir

:::注意 训练模型的精度对最终结果非常重要。如果您的输出训练结果低至 65% 以下,我们强烈建议您进行更多次训练。 :::

部署到 Seeed Studio XIAO nRF52840 Sense

  • 步骤 16. 模型测试

单击 Model testing -> 单击 Classify all

pir

:::注意 注意 如果准确率较低,可以通过增加训练集和延长采样时间来检查数据集 :::

  • 步骤 17. 构建 Arduino 库 单击 Deployment -> 单击 Arduino 库 -> 单击 Build -> 下载ZIP文件

pir

  • 步骤 18. .ZIP文件的名称非常重要,默认情况下,它被设置为Edge Impulse项目的名称。就像这里的名字是“XIAO-BLE-gestures_inferencing”。选择文件作为“将”.ZIP 文件“添加到您的 Arduino 库

pir

pir

pir

  • 步骤 20. 移动或按住 Seeed Studio XIAO nRF52840 Sense 移动或按住:

单击 Arduino右上角的显示器 。

pir

当您向向左 和 向右 移动Seeed Studio XIAO nRF52840 Sensedirection时:

显示器将输出如下内容:

pir

输出显示如下:

pir

当你 上下移动Seeed Studio XIAO nRF52840 Sense时:

显示器将输出如下内容:

pir

输出显示如下:

pir

当您在空闲状态下 握住 Seeed Studio XIAO nRF52840 Sense 时:

显示器将输出如下内容:

pir

输出显示如下

pir

祝贺!你痛苦地结束了项目。鼓励您可以尝试更多方向并检查哪一个将执行最佳输出。

资源

技术支持和产品讨论

.

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您对我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...