

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 → 浮空或接地
步骤 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
}
设置边缘脉冲

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


步骤7:数据收集
在 Edge Impulse Studio → 数据采集中:
– 设备:Arduino板
– 传感器:加速度计(3轴)
– 年代amp长度:2000 毫秒(2 秒)
– 频率:18 Hz
至少记录 40 秒amp每班费用:
– 封面球
直驱
拉射
收集数据示例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 
步骤 8:脉冲设计
打开创建脉冲:
输入模块:时间序列数据(3 个轴)。
窗口大小:1000 毫秒 窗口增量(步长):200 毫秒 启用:轴、幅度(可选)、频率 18。
处理模块:频谱分析(又称运动频谱特征)。窗口大小:1000 毫秒。窗口增量(步长):200 毫秒。启用:坐标轴、幅度(可选),首先保留所有默认值。
学习模块:分类(Keras)。
点击保存冲动。 
生成特征:
进入光谱分析,点击保存参数,然后生成训练集的特征。

训练一个小型模型
转到 Classifier(Keras),并使用类似这样的简洁配置:
神经网络:1-2 个全连接层(例如,60 → 30),ReLU 激活函数
时期:40–60
学习率:0.001–0.005
批次大小:32
数据划分:80/20(训练集/测试集)
保存并训练数据
使用保留集评估和检查模型测试。
检查混淆矩阵;如果圆圈和向上重叠,则收集更多样化的数据或进行调整。
频谱参数(窗口大小/噪声基底)。
步骤 9:部署到 Arduino
转到部署:
选择 Arduino 库(C++ 库也可以)。
启用 EON 编译器(如果可用)以缩小模型大小。
下载 .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乐:
尖端:
请确保 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 ABX00087 UNO R4 WiFi 开发板 [pdf] 用户指南 R4 WiFi、ADXL345、ABX00087 UNO R4 WiFi 开发板、ABX00087、UNO R4 WiFi 开发板、WiFi 开发板、开发板、板 |
