

ABX00087 UNO R4 WiFi Development Board
Cricket Shot Recognition gamit ang Arduino UNO R4 WiFi + ADXL345 + Edge
Impulse
Kini nga dokumento naghatag ug kompletong workflow para sa pagtukod ug cricket shot recognition system gamit ang Arduino UNO R4 WiFi nga adunay ADXL345 accelerometer ug Edge Impulse Studio. Ang proyekto naglakip sa pagkolekta sa datos sa accelerometer, pagbansay sa usa ka modelo sa pagkat-on sa makina, ug pag-deploy sa nabansay nga modelo balik sa Arduino alang sa real-time nga klasipikasyon sa shot.
Cricket shots gikonsiderar niini nga proyekto:
– Cover Drive
- Tul-id nga Pagmaneho
– Pull Shot
Lakang 1: Mga Kinahanglanon sa Hardware
– Arduino UNO R4 WiFi
- ADXL345 Accelerometer (I2C)
- Mga wire sa jumper
- Breadboard (opsyonal)
- USB Type-C nga kable
Lakang 2: Mga Kinahanglanon sa Software
– Arduino IDE (labing bag-o)
- Edge Impulse Studio account (libre)
- Mga gamit sa Edge Impulse CLI (gikinahanglan ang Node.js)
– librarya sa Adafruit ADXL345
Lakang 3: Pag-wire sa ADXL345
Ikonektar ang ADXL345 sensor sa Arduino UNO R4 WiFi sama sa mosunod:
VCC → 3.3V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (opsyonal, para sa I2C mode)
SDO → naglutaw o GND
Lakang 4: Himoa nga Andam ang IDE Sensor
Giunsa ang Pag-instalar sa mga Sensor Libraries sa Arduino IDE?
Ablihi ang Arduino IDE
Ablihi ang Mga Himan → Pagdumala sa Mga Libro… ug i-install: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Kon duna kay LSM6DSO o MPU6050 sa baylo: i-install ang SparkFun LSM6DSO , Adafruit LSM6DS o MPU6050 sumala niana.)
Lakang 5: Arduino Sketch alang sa Pagkolekta sa Data
I-upload kini nga sketch sa imong Arduino UNO R4 WiFi. Nag-stream kini sa datos sa accelerometer sa CSV format (x,y,z) sa ~18 Hz para sa Edge Impulse.
#apil
#apil
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
kon (!accel.begin()) {
Serial.println("Walay ADXL345 nga nakit-an");
samtang (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
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);langan(55); // ~18 Hz
}
Ibutang ang Edge Impulse

Lakang 6: Pagkonektar sa Edge Impulse
- Isira ang Arduino Serial Monitor.
- Pagdalagan ang sugo: edge-impulse-data-forwarder –frequency 18
- Pagsulod sa mga ngalan sa axis: accX, accY, accZ
- Ngalan ang imong device: Arduino-Cricket-Board
- Kumpirma ang koneksyon sa Edge Impulse Studio ubos sa 'Mga Device'.


Lakang 7: Pagkolekta sa Data
Sa Edge Impulse Studio → Pagkuha sa datos:
- Device: Arduino-Cricket-Board
- Sensor: Accelerometer (3 axes)
– Sampgitas-on: 2000 ms (2 segundos)
- Kadaghanon: 18 Hz
Pagrekord labing menos 40 samples kada klase:
– Cover Drive
- Tul-id nga Pagmaneho
– Pull Shot
Pagkolekta sa Data Examples
Cover Drive
Device: Arduino-Cricket-Board
Label: Cover Drive
Sensor: Sensor nga adunay 3 ka axes (accX, accY, accZ)
Sampgitas-on: 10000ms
Kadaghanon: 18 Hz
Exampang Hilaw nga Data:
accX -0.32
accY 9.61
accZ -0.12
Tul-id nga Pagmaneho
Device: Arduino-Cricket-Board
Label: Tul-id nga Pagmaneho
Sensor: Sensor nga adunay 3 ka axes (accX, accY, accZ)
Sampgitas-on: 10000ms
Kadaghanon: 18 Hz
Exampang Hilaw nga Data:
accX 1.24
accY 8.93
accZ -0.42
Pull Shot
Device: Arduino-Cricket-Board
Label: Pull Shot
Sensor: Sensor nga adunay 3 ka axes (accX, accY, accZ)
Sampgitas-on: 10000 ms
Kadaghanon: 18 Hz
Exampang Hilaw nga Data:
accX 2.01
accY 7.84
accZ -0.63 
Lakang 8: Impulse Design
Bukas Paghimo impulse:
Input block: Time series data (3 axes).
Gidak-on sa bintana: 1000 ms Pagtaas sa bintana (stride): 200 ms Enable: Axes, Magnitude (opsyonal), frequency 18.
Pagproseso block: Spectral analysis (aka Spectral Features for motion). Gidak-on sa bintana: 1000 ms Pagtaas sa bintana (stride): 200 ms I-enable: Axes, Magnitude (opsyonal), itago una ang tanang default.
Block sa pagkat-on: Klasipikasyon (Keras).
I-klik ang Save impulse. 
Paghimo mga bahin:
Adto sa Spectral analysis, i-klik ang Save parameters, unya Generate features para sa training set.

Pagbansay sa usa ka gamay nga modelo
Adto sa Classifier (Keras) ug gamita ang usa ka compact config sama sa:
Neural network: 1–2 dasok nga mga lut-od (pananglitan, 60 → 30), ReLU
Mga Panahon: 40–60
Rate sa pagkat-on: 0.001–0.005
Gidak-on sa batch: 32
Pagbahin sa datos: 80/20 (tren/pagsulay)
I-save ug bansayon ang datos
Timbang-timbanga ug Susihon ang pagsulay sa Model gamit ang set sa holdout.
Susiha ang kalibog matrix; kung magsapaw ang lingin ug pataas, pagkolekta ug daghang lainlain nga datos o pag-tweak
Spectral nga mga parameter (gidak-on sa bintana / salog sa kasaba).
Lakang 9: Pag-deploy sa Arduino
Adto sa Deployment:
Pilia ang Arduino library (C++ library nagtrabaho usab).
I-enable ang EON Compiler (kung naa) para mukunhod ang gidak-on sa modelo.
I-download ang .zip, dayon sa Arduino IDE: Sketch → Ilakip ang Library → Idugang ang .ZIP Library… Gidugang niini ang examples sama sa Static buffer ug Padayon sa ilalum File → Examples →
Ang imong Ngalan sa Proyekto - Edge Impulse. Inference sketch alang sa Arduino UNO EK R4 WiFi + ADXL345.
Lakang 10: Arduino Inference Sketch
#apil
#apil
#apil // Ilisan ug Edge Impulse header
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
static bool debug_nn = bakak;
void setup() {
Serial.begin(115200);
samtang (!Serial) {}
kon (!accel.begin()) {
Serial.println("ERROR: ADXL345 not detected");
samtang (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
float buffer[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
para sa (gidak-on_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.pagpaspas.x;
buffer[ix + 1] = e.pagpaspas.y;
buffer[ix + 2] = e.pagpaspas.z;
int32_t paghulat = (int32_t)(next_tick – micros());
kung (paghulat> 0) paglanganMicroseconds(paghulat);
}
signal_t signal;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
kung (sayup!= 0) mobalik;
ei_impulse_result_t resulta = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, &resulta,
debug_nn);
kung (res!= EI_IMPULSE_OK) mobalik;
para sa (gidak-on_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(“%s: %.3f “, resulta.klasipikasyon[ix].label,
resulta.klasipikasyon[ix].bili);
}
#kung EI_CLASSIFIER_ADUNAY_ANOMALY == 1
ei_printf("anomaliya: %.3f", resulta.anomaly);
#endif
ei_printf(“\n”);
}
Output example:
Mga tip:
Ipadayon ang EI_CLASSIFIER_INTERVAL_MS nga dungan sa imong frequency forwarder sa data (pananglitan, 100 Hz → 10 ms). Ang Edge Impulse library nagtakda niini nga kanunay nga awtomatiko gikan sa imong impulse.
Kung gusto nimo padayon nga detection (sliding window), sugdi gikan sa Continuous example gilakip sa EI library ug swap sa ADXL345 reads.
Magdugang kami og mga video tutorial sa dili madugay; hangtod niana, padayon nga tutok - https://www.youtube.com/@RobuInlabs
Ug Kung naa ka pay mga pagduhaduha, mahimo nimong susihon kini nga video ni Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Mga Dokumento / Mga Kapanguhaan
![]() |
Arduino ABX00087 UNO R4 WiFi Development Board [pdf] Giya sa Gumagamit R4 WiFi, ADXL345, ABX00087 UNO R4 WiFi Development Board, ABX00087, UNO R4 WiFi Development Board, WiFi Development Board, Development Board, Board |
