Arduino徽标Arduino ABX00087 UNO R4 WiFi 开发板

ABX00087 UNO R4 WiFi 开发板

使用 Arduino UNO R4 WiFi + ADXL345 + Edge 实现板球击球识别
冲动
本文档提供了使用 Arduino UNO R4 WiFi、ADXL345 加速度计和 Edge Impulse Studio 构建板球击球识别系统的完整工作流程。该项目包括采集加速度计数据、训练机器学习模型,以及将训练好的模型部署回 Arduino 以进行实时击球分类。
本项目中考虑的板球击球方式:
– 封面球
直驱
拉射

步骤 1:硬件要求

– Arduino UNO R4 WiFi
– ADXL345 加速度计(I2C)
跳线
– 面包板(可选)
– USB Type-C 数据线

第 2 步:软件要求

– Arduino IDE(最新版)
– Edge Impulse Studio 帐户(免费)
– Edge Impulse CLI 工具(需要 Node.js)
– Adafruit ADXL345 库

步骤 3:连接 ADXL345

按如下方式将 ADXL345 传感器连接到 Arduino UNO R4 WiFi:
VCC → 3.3V
接地 → 接地
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V(可选,用于 I2C 模式)
SDO → 浮空或接地Arduino ABX00087 UNO R4 WiFi 开发板 - 超过view

步骤 4:准备 IDE 传感器

如何在Arduino IDE中安装传感器库?
打开 Arduino IDE
打开“工具”→“管理库…”并安装:Adafruit ADXL345 Unified 和 Adafruit Unified Sensor
(如果您使用的是 LSM6DSO 或 MPU6050:请分别安装 SparkFun LSM6DSO、Adafruit LSM6DS 或 MPU6050。)

步骤 5:用于数据采集的 Arduino 程序

将此程序上传到您的 Arduino UNO R4 WiFi。它以约 18 Hz 的频率,以 CSV 格式 (x,y,z) 传输加速度计数据,用于边缘脉冲检测。
#包括
#包括
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
无效设置(){
串行.开始(115200);
如果 (!accel.begin()) {
Serial.println(“未检测到 ADXL345”);
同时(1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
无效循环(){
sensors_event_t e;
accel.getEvent(&e);
Serial.print(e.acceleration.x);
Serial.print(“,”);
Serial.print(e.acceleration.y);
Serial.print(“,”);
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}

设置边缘脉冲

Arduino ABX00087 UNO R4 WiFi 开发板 - 设置

步骤 6:连接到 Edge Impulse

  1. 关闭Arduino串口监视器。
  2. 运行命令:edge-impulse-data-forwarder –frequency 18
  3. 输入坐标轴名称:accX、accY、accZ
  4. 给你的设备命名:Arduino-Cricket-Board
  5. 在 Edge Impulse Studio 的“设备”下确认连接。

Arduino ABX00087 UNO R4 WiFi 开发板 - 连接至 Edge ImpulseArduino ABX00087 UNO R4 WiFi 开发板 - 连接至 Edge Impulse 1

步骤7:数据收集

在 Edge Impulse Studio → 数据采集中:
– 设备:Arduino板
– 传感器:加速度计(3轴)
– 年代amp长度:2000 毫秒(2 秒)
– 频率:18 Hz
至少记录 40 秒amp每班费用:
– 封面球
直驱
拉射Arduino ABX00087 UNO R4 WiFi 开发板 - 数据采集收集数据示例amp莱斯
封面驱动
设备:Arduino板
标签:封面驱动器
传感器:三轴传感器(accX、accY、accZ)
Samp长度:10000毫秒
频率: 18 Hz
Examp原始数据:
accX -0.32
accY 9.61
accZ -0.12
直驱
设备:Arduino板
标签:直驱
传感器:三轴传感器(accX、accY、accZ)
Samp长度:10000毫秒
频率: 18 Hz
Examp原始数据:
accX 1.24
accY 8.93
accZ -0.42
拉射
设备:Arduino板
标签:拉射
传感器:三轴传感器(accX、accY、accZ)
Samp长度:10000 毫秒
频率: 18 Hz
Examp原始数据:
accX 2.01
accY 7.84
accZ -0.63 Arduino ABX00087 UNO R4 WiFi 开发板 - 数据采集 1

步骤 8:脉冲设计

打开创建脉冲:
输入模块:时间序列数据(3 个轴)。
窗口大小:1000 毫秒 窗口增量(步长):200 毫秒 启用:轴、幅度(可选)、频率 18。
处理模块:频谱分析(又称运动频谱特征)。窗口大小:1000 毫秒。窗口增量(步长):200 毫秒。启用:坐标轴、幅度(可选),首先保留所有默认值。
学习模块:分类(Keras)。
点击保存冲动。 Arduino ABX00087 UNO R4 WiFi 开发板 - Impulse Design

生成特征:
进入光谱分析,点击保存参数,然后生成训练集的特征。

Arduino ABX00087 UNO R4 WiFi 开发板 - 培训套装

训练一个小型模型
转到 Classifier(Keras),并使用类似这样的简洁配置:
神经网络:1-2 个全连接层(例如,60 → 30),ReLU 激活函数
时期:40–60
学习率:0.001–0.005
批次大小:32
数据划分:80/20(训练集/测试集)
保存并训练数据Arduino ABX00087 UNO R4 WiFi 开发板 - 保存和训练数据

使用保留集评估和检查模型测试。
检查混淆矩阵;如果圆圈和向上重叠,则收集更多样化的数据或进行调整。
频谱参数(窗口大小/噪声基底)。

步骤 9:部署到 Arduino

转到部署:
选择 Arduino 库(C++ 库也可以)。
启用 EON 编译器(如果可用)以缩小模型大小。 Arduino ABX00087 UNO R4 WiFi 开发板 - 部署到 Arduino下载 .zip 文件后,在 Arduino IDE 中:草图 → 包含库 → 添加 .ZIP 库… 这会添加示例amp类似静态缓冲区和连续缓冲区 File → 前amp文件 →
您的项目名称 – Edge Impulse。适用于 Arduino UNO EK R4 WiFi + ADXL345 的推理草图。

步骤 10:Arduino 推理草图

#包括
#包括
#包括// 替换为 Edge Impulse 标头
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
static bool debug_nn = false;
无效设置(){
串行.开始(115200);
while (!Serial) {}
如果 (!accel.begin()) {
Serial.println(“错误:未检测到 ADXL345”);
同时(1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
无效循环(){
float buffer[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
for (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t next_tick = micros() + (EI_CLASSIFIER_INTERVAL_MS *
1000);
sensors_event_t e;
accel.getEvent(&e);
buffer[ix + 0] = e.acceleration.x;
buffer[ix + 1] = e.acceleration.y;
buffer[ix + 2] = e.acceleration.z;
int32_t wait = (int32_t)(next_tick – micros());
如果 (wait > 0) delayMicroseconds(wait);
}
signal_t 信号;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE,&signal);
如果 (err != 0) 返回;

ei_impulse_result_t result = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, &result,
debug_nn);
如果 (res != EI_IMPULSE_OK) 返回;

for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(“%s: %.3f “, result.classification[ix].label,
result.classification[ix].value);
}
#如果 EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf(“异常值:%.3f”, result.anomaly);
#结束
ei_printf(“\n”);
}

输出前amp乐:

Arduino ABX00087 UNO R4 WiFi 开发板 - Arduino 推理草图尖端:
请确保 EI_CLASSIFIER_INTERVAL_MS 与数据转发器的频率保持同步(例如,100 Hz → 10 ms)。Edge Impulse 库会根据您的脉冲自动设置此常量。
如果您想要连续检测(滑动窗口),请从连续检测示例开始。ample 包含在 EI 库中,并在 ADXL345 读取中进行交换。
我们很快会添加视频教程;在此之前,敬请期待—— https://www.youtube.com/@RobuInlabs
如果您还有疑问,可以观看 Edged Impulse 制作的这段视频: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Arduino徽标

文件/资源

Arduino ABX00087 UNO R4 WiFi 开发板 [pdf] 用户指南
R4 WiFi、ADXL345、ABX00087 UNO R4 WiFi 开发板、ABX00087、UNO R4 WiFi 开发板、WiFi 开发板、开发板、板

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *