

ABX00087 UNO R4 WiFi Development Board
Cricket Shot Recognition gamit ang Arduino UNO R4 WiFi + ADXL345 + Edge
Simbuyo ng damdamin
Nagbibigay ang dokumentong ito ng kumpletong workflow para sa pagbuo ng cricket shot recognition system gamit ang Arduino UNO R4 WiFi na may ADXL345 accelerometer at Edge Impulse Studio. Ang proyekto ay nagsasangkot ng pagkolekta ng data ng accelerometer, pagsasanay ng isang machine learning model, at pag-deploy ng sinanay na modelo pabalik sa Arduino para sa real-time na pag-uuri ng shot.
Ang mga cricket shot ay isinasaalang-alang sa proyektong ito:
– Cover Drive
- Tuwid na Pagmaneho
– Pull Shot
Hakbang 1: Mga Kinakailangan sa Hardware
– Arduino UNO R4 WiFi
– ADXL345 Accelerometer (I2C)
- Mga wire ng jumper
– Breadboard (opsyonal)
– USB Type-C cable
Hakbang 2: Mga Kinakailangan sa Software
– Arduino IDE (pinakabago)
– Edge Impulse Studio account (libre)
– Mga tool sa Edge Impulse CLI (kinakailangan ang Node.js)
– Adafruit ADXL345 library
Hakbang 3: Pag-wire sa ADXL345
Ikonekta ang ADXL345 sensor sa Arduino UNO R4 WiFi tulad ng sumusunod:
VCC → 3.3V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (opsyonal, para sa I2C mode)
SDO → lumulutang o GND
Hakbang 4: Ihanda ang IDE Sensor
Paano Mag-install ng Mga Sensor Libraries sa Arduino IDE?
Buksan ang Arduino IDE
Buksan ang Mga Tool → Pamahalaan ang Mga Aklatan… at i-install: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Kung mayroon kang LSM6DSO o MPU6050 sa halip: i-install ang SparkFun LSM6DSO , Adafruit LSM6DS o MPU6050 nang naaayon.)
Hakbang 5: Arduino Sketch para sa Pagkolekta ng Data
I-upload ang sketch na ito sa iyong Arduino UNO R4 WiFi. Nag-stream ito ng data ng accelerometer sa CSV format (x,y,z) sa ~18 Hz para sa Edge Impulse.
#isama
#isama
Adafruit_ADXL345_Pinag-isang accel =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
kung (!accel.begin()) {
Serial.println("Walang ADXL345 na nakita");
habang (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);delay(55); // ~18 Hz
}
I-set Up ang Edge Impulse

Hakbang 6: Pagkonekta sa Edge Impulse
- Isara ang Arduino Serial Monitor.
- Patakbuhin ang command: edge-impulse-data-forwarder –frequency 18
- Ilagay ang mga pangalan ng axis: accX, accY, accZ
- Pangalanan ang iyong device: Arduino-Cricket-Board
- Kumpirmahin ang koneksyon sa Edge Impulse Studio sa ilalim ng 'Mga Device'.


Hakbang 7: Pangongolekta ng Data
Sa Edge Impulse Studio → Data acquisition:
– Device: Arduino-Cricket-Board
– Sensor: Accelerometer (3 axes)
– Samphaba: 2000 ms (2 segundo)
– Dalas: 18 Hz
Magtala ng hindi bababa sa 40 samples bawat klase:
– Cover Drive
- Tuwid na Pagmaneho
– Pull Shot
Mangolekta ng Data Halamples
Cover Drive
Device: Arduino-Cricket-Board
Label: Cover Drive
Sensor: Sensor na may 3 axes (accX, accY, accZ)
Samphaba: 10000ms
Dalas: 18 Hz
Exampang Raw Data:
accX -0.32
accY 9.61
accZ -0.12
Straight Drive
Device: Arduino-Cricket-Board
Label: Straight Drive
Sensor: Sensor na may 3 axes (accX, accY, accZ)
Samphaba: 10000ms
Dalas: 18 Hz
Exampang Raw Data:
accX 1.24
accY 8.93
accZ -0.42
Pull Shot
Device: Arduino-Cricket-Board
Label: Pull Shot
Sensor: Sensor na may 3 axes (accX, accY, accZ)
Samphaba: 10000 ms
Dalas: 18 Hz
Exampang Raw Data:
accX 2.01
accY 7.84
accZ -0.63 
Hakbang 8: Impulse Design
Buksan ang Lumikha ng impulse:
Input block: Data ng serye ng oras (3 axes).
Laki ng window: 1000 ms Pagtaas ng bintana (stride): 200 ms Paganahin: Axes, Magnitude (opsyonal), frequency 18.
Processing block: Spectral analysis (aka Spectral Features for motion). Laki ng window: 1000 ms Window increase (stride): 200 ms Enable: Axes, Magnitude (opsyonal), panatilihin muna ang lahat ng default.
Learning block: Classification (Keras).
I-click ang I-save ang impulse. 
Bumuo ng mga tampok:
Pumunta sa Spectral analysis, i-click ang I-save ang mga parameter, pagkatapos ay Bumuo ng mga feature para sa training set.

Sanayin ang isang maliit na modelo
Pumunta sa Classifier (Keras) at gumamit ng compact config tulad ng:
Neural network: 1–2 siksik na layer (hal., 60 → 30), ReLU
Mga Panahon: 40–60
Rate ng pagkatuto: 0.001–0.005
Laki ng batch: 32
Hati ng data: 80/20 (tren/pagsusulit)
I-save at sanayin ang data
Suriin at Suriin ang pagsubok ng Modelo gamit ang hanay ng holdout.
Suriin ang confusion matrix; kung magkakapatong ang bilog at pataas, mangolekta ng mas magkakaibang data o mag-tweak
Mga spectral na parameter (laki ng bintana / ingay sa sahig).
Hakbang 9: Pag-deploy sa Arduino
Pumunta sa Deployment:
Piliin ang Arduino library (gumagana rin ang C++ library).
I-enable ang EON Compiler (kung available) para paliitin ang laki ng modelo.
I-download ang .zip, pagkatapos ay sa Arduino IDE: Sketch → Isama ang Library → Magdagdag ng .ZIP Library… Nagdaragdag ito ng examptulad ng Static buffer at Continuous under File → Halamples →
Pangalan ng Iyong Proyekto – Edge Impulse. Inference sketch para sa Arduino UNO EK R4 WiFi + ADXL345.
Hakbang 10: Arduino Inference Sketch
#isama
#isama
#isama // Palitan ng Edge Impulse header
Adafruit_ADXL345_Pinag-isang accel =
Adafruit_ADXL345_Unified(12345);
static bool debug_nn = false;
void setup() {
Serial.begin(115200);
habang (!Serial) {}
kung (!accel.begin()) {
Serial.println(“ERROR: ADXL345 not detected”);
habang (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
float buffer[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
para sa (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());
kung (wait > 0) delayMicroseconds(wait);
}
signal_t signal;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
kung (err!= 0) bumalik;
ei_impulse_result_t resulta = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, &result,
debug_nn);
kung (res!= EI_IMPULSE_OK) bumalik;
para sa (laki_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(“%s: %.3f “, result.classification[ix].label,
resulta.klasipikasyon[ix].halaga);
}
#if EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf("anomalya: %.3f", resulta.anomalya);
#endif
ei_printf(“\n”);
}
Output example:
Mga tip:
Panatilihing naka-sync ang EI_CLASSIFIER_INTERVAL_MS sa dalas ng iyong data forwarder (hal., 100 Hz → 10 ms). Ang Edge Impulse library ay awtomatikong nagtatakda ng pare-parehong ito mula sa iyong impulse.
Kung gusto mo ng tuloy-tuloy na pagtuklas (sliding window), magsimula sa Continuous example kasama sa EI library at swap sa ADXL345 reads.
Magdaragdag kami ng mga video tutorial sa lalong madaling panahon; hanggang noon, manatiling nakatutok - https://www.youtube.com/@RobuInlabs
At Kung mayroon ka pa ring ilang mga pagdududa, maaari mong tingnan ang video na ito ni Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

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