Логотип ArduinoArduino ABX00087 UNO R4 WiFi Development Board

Плата розробки WiFi ABX00087 UNO R4

Cricket Shot Recognition using Arduino UNO R4 WiFi + ADXL345 + Edge
Імпульс
This document provides a complete workflow for building a cricket shot recognition system using Arduino UNO R4 WiFi with an ADXL345 accelerometer and Edge Impulse Studio. The project involves collecting accelerometer data, training a machine learning model, and deploying the trained model back to the Arduino for real-time shot classification.
Cricket shots considered in this project:
– Cover Drive
– Straight Drive
– Pull Shot

Крок 1: Вимоги до обладнання

– Arduino UNO R4 WiFi
– ADXL345 Accelerometer (I2C)
– Jumper wires
– Breadboard (optional)
– кабель USB Type-C

Крок 2: Вимоги до програмного забезпечення

– Arduino IDE (latest)
– Edge Impulse Studio account (free)
– Edge Impulse CLI tools (Node.js required)
– Adafruit ADXL345 library

Step 3: Wiring the ADXL345

Connect the ADXL345 sensor to the Arduino UNO R4 WiFi as follows:
VCC → 3.3 В
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (optional, for I2C mode)
SDO → floating or GNDArduino ABX00087 UNO R4 WiFi Development Board - overview

Step 4: Make IDE Sensor Ready

Як встановити бібліотеки датчиків в Arduino IDE?
Відкрийте середовище розробки Arduino
Open Tools → Manage Libraries… and install: Adafruit ADXL345 Unified Adafruit Unified Sensor
(If you have LSM6DSO or MPU6050 instead: install SparkFun LSM6DSO , Adafruit LSM6DS or MPU6050 accordingly.)

Step 5: Arduino Sketch for Data Collection

Upload this sketch to your Arduino UNO R4 WiFi. It streams accelerometer data in CSV format (x,y,z) at ~18 Hz for Edge Impulse.
#включити
#include <Adafruit_ADXL345_U.h>
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
якщо (!accel.begin()) {
Serial.println(“No ADXL345 detected”);
поки (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
sensors_event_t e;
accel.getEvent(&e);
Serial.print (e.acceleration.x);
Серійний.друк(",");
Serial.print(e.acceleration.y);
Серійний.друк(",");
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}

Set Up Edge Impulse

Arduino ABX00087 UNO R4 WiFi Development Board - Set Up

Step 6: Connecting to Edge Impulse

  1. Close Arduino Serial Monitor.
  2. Run the command: edge-impulse-data-forwarder –frequency 18
  3. Enter axis names: accX, accY, accZ
  4. Name your device: Arduino-Cricket-Board
  5. Confirm connection in Edge Impulse Studio under ‘Devices’.

Arduino ABX00087 UNO R4 WiFi Development Board - Connecting to Edge ImpulseArduino ABX00087 UNO R4 WiFi Development Board - Connecting to Edge Impulse 1

Крок 7: Збір даних

In Edge Impulse Studio → Data acquisition:
– Device: Arduino-Cricket-Board
– Sensor: Accelerometer (3 axes)
– Сample length: 2000 ms (2 seconds)
– Частота: 18 Гц
Record at least 40 samples per class:
– Cover Drive
– Straight Drive
– Pull ShotArduino ABX00087 UNO R4 WiFi Development Board - Data CollectionCollect Data Exampлес
Обкладинка Драйв
Device: Arduino-Cricket-Board
Label: Cover Drive
Sensor: Sensor with 3 axes (accX, accY, accZ)
Sample length: 10000ms
Частота: 18 Гц
Example Raw Data:
accX -0.32
accY 9.61
accZ -0.12
Straight Drive
Device: Arduino-Cricket-Board
Label: Straight Drive
Sensor: Sensor with 3 axes (accX, accY, accZ)
Sample length: 10000ms
Частота: 18 Гц
Example Raw Data:
accX 1.24
accY 8.93
accZ -0.42
Pull Shot
Device: Arduino-Cricket-Board
Label: Pull Shot
Sensor: Sensor with 3 axes (accX, accY, accZ)
Sample length:10000 ms
Частота: 18 Гц
Example Raw Data:
accX 2.01
accY 7.84
accZ -0.63 Arduino ABX00087 UNO R4 WiFi Development Board - Data Collection 1

Step 8: Impulse Design

Open Create impulse:
Вхідний блок: Дані часових рядів (3 осі).
Window size: 1000 ms Window increase (stride): 200 ms Enable: Axes, Magnitude (optional), frequency 18.
Processing block: Spectral analysis (a.k.a. Spectral Features for motion). Window size: 1000 ms Window increase (stride): 200 ms Enable: Axes, Magnitude (optional), keep all defaults first.
Навчальний блок: Класифікація (Keras).
Натисніть «Зберегти імпульс». Arduino ABX00087 UNO R4 WiFi Development Board - Impulse Design

Generate features:
Перейдіть до розділу Спектральний аналіз, натисніть кнопку Зберегти параметри, а потім згенеруйте ознаки для навчального набору.

Arduino ABX00087 UNO R4 WiFi Development Board - training set

Train a small model
Go to Classifier (Keras) and use a compact config like:
Neural network: 1–2 dense layers (e.g., 60 → 30), ReLU
Epochs: 40–60
Швидкість навчання: 0.001–0.005
Розмір партії: 32
Data split: 80/20 (train/test)
Save and train the dataArduino ABX00087 UNO R4 WiFi Development Board - Save and train the data

Evaluate and Check Model testing with the holdout set.
Inspect the confusion matrix; if circle and up overlap, collect more diverse data or tweak
Spectral parameters (window size / noise floor).

Step 9: Deployment to Arduino

Go to Deployment:
Choose Arduino library (C++ library also works).
Увімкніть компілятор EON (якщо доступний), щоб зменшити розмір моделі. Arduino ABX00087 UNO R4 WiFi Development Board - Deployment to ArduinoDownload the .zip, then in Arduino IDE: Sketch → Include Library → Add .ZIP Library… This adds exampтакі як статичний буфер та безперервний під File → Впрampлес →
Your Project Name – Edge Impulse. Inference sketch for Arduino UNO EK R4 WiFi + ADXL345.

Step 10: Arduino Inference Sketch

#включити
#включити
#include <your_project_inference.h> // Replace with Edge Impulse header
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
статична булева змінна debug_nn = false;
void setup() {
Serial.begin(115200);
поки (!Серійний) {}
якщо (!accel.begin()) {
Serial.println(“ПОМИЛКА: ADXL345 не виявлено”);
поки (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
буфер з плаваючою комою[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);
буфер[ix + 0] = e.acceleration.x;
буфер[ix + 1] = e.acceleration.y;
буфер[ix + 2] = e.acceleration.z;
int32_t очікування = (int32_t)(next_tick – мікросекунд());
якщо (чекати > 0) затримкаМікросекунди(чекати);
}
сигнал_t;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
якщо (помилка != 0) повернути;

результат ei_impulse_result_t = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, &result,
debug_nn);
якщо (res != EI_IMPULSE_OK) повернути;

для (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”, результат.аномалія);
#endif
ei_printf(“\n”);
}

Вихід напрampле:

Arduino ABX00087 UNO R4 WiFi Development Board - Arduino Inference SketchПоради:
Синхронізуйте EI_CLASSIFIER_INTERVAL_MS з частотою вашого пересилача даних (наприклад, 100 Гц → 10 мс). Бібліотека Edge Impulse автоматично встановлює цю константу на основі вашого імпульсу.
Якщо вам потрібне безперервне виявлення (ковзне вікно), почніть з Безперервного виявленняampвходить до складу бібліотеки EI та обмінюється даними під час читання ADXL345.
We will be adding video tutorials soon; till then, stay tuned – https://www.youtube.com/@RobuInlabs
And If you still have some doubts, you can check out this video by Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Логотип Arduino

Документи / Ресурси

Arduino ABX00087 UNO R4 WiFi Development Board [pdfПосібник користувача
R4 WiFi, ADXL345, ABX00087 UNO R4 WiFi Development Board, ABX00087, UNO R4 WiFi Development Board, WiFi Development Board, Development Board, Board

Список літератури

Залиште коментар

Ваша електронна адреса не буде опублікована. Обов'язкові поля позначені *