

Placa de desenvolupament WiFi ABX00087 UNO R4
Reconeixement de cops de criquet amb Arduino UNO R4 WiFi + ADXL345 + Edge
Impuls
Aquest document proporciona un flux de treball complet per construir un sistema de reconeixement de cops de criquet utilitzant Arduino UNO R4 WiFi amb un acceleròmetre ADXL345 i Edge Impulse Studio. El projecte implica la recopilació de dades de l'acceleròmetre, l'entrenament d'un model d'aprenentatge automàtic i la implementació del model entrenat de nou a l'Arduino per a la classificació de cops en temps real.
Cops de criquet considerats en aquest projecte:
– Coberta de conducció
– Accionament recte
– Tir de tret
Pas 1: Requisits de maquinari
– Arduino UNO R4 WiFi
– Acceleròmetre ADXL345 (I2C)
– Cables de connexió
– Placa de proves (opcional)
- Cable USB tipus C
Pas 2: Requisits de programari
– IDE d'Arduino (última versió)
– Compte Edge Impulse Studio (gratuït)
– Eines CLI d'Edge Impulse (cal Node.js)
– Biblioteca Adafruit ADXL345
Pas 3: Cablejat de l'ADXL345
Connecteu el sensor ADXL345 a l'Arduino UNO R4 WiFi de la següent manera:
VCC → 3.3 V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (opcional, per al mode I2C)
SDO → flotant o GND
Pas 4: Preparar el sensor IDE
Com instal·lar biblioteques de sensors a l'IDE d'Arduino?
Obre l'IDE d'Arduino
Obriu Eines → Gestiona biblioteques… i instal·leu: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Si teniu LSM6DSO o MPU6050: instal·leu SparkFun LSM6DSO, Adafruit LSM6DS o MPU6050 segons correspongui.)
Pas 5: Esbós d'Arduino per a la recollida de dades
Puja aquest sketch al teu Arduino UNO R4 WiFi. Transmet dades d'acceleròmetre en format CSV (x, y, z) a ~18 Hz per a Edge Impulse.
#inclou
#incloure
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
si (!accel.començar()) {
Serial.println("No s'ha detectat cap ADXL345");
mentre que (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
bucle buit() {
sensors_event_t e;
accel.getEsdeveniment(&e);
Serial.print (e.acceleration.x);
Serial.print(",");
Serial.print(e.acceleració.y);
Serial.print(",");
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}
Configura l'impuls de vora

Pas 6: Connexió a Edge Impulse
- Tanca el monitor sèrie Arduino.
- Executeu l'ordre: edge-impulse-data-forwarder –frequency 18
- Introduïu els noms dels eixos: accX, accY, accZ
- Anomena el teu dispositiu: Arduino-Cricket-Board
- Confirma la connexió a Edge Impulse Studio, a "Dispositius".


Pas 7: Recopilació de dades
A Edge Impulse Studio → Adquisició de dades:
– Dispositiu: Placa de criquet Arduino
– Sensor: Acceleròmetre (3 eixos)
– SampDurada: 2000 ms (2 segons)
– Freqüència: 18 Hz
Grava almenys 40 segonsamples per classe:
– Coberta de conducció
– Accionament recte
– Tir de tret
Recopilar dades Examples
Cover Drive
Dispositiu: Arduino-Cricket-Board
Segell: Cover Drive
Sensor: Sensor amb 3 eixos (accX, accY, accZ)
Samplongitud: 10000 ms
Freqüència: 18 Hz
ExampDades en brut:
accX -0.32
accY 9.61
accZ -0.12
Tracció recta
Dispositiu: Arduino-Cricket-Board
Etiqueta: Straight Drive
Sensor: Sensor amb 3 eixos (accX, accY, accZ)
Samplongitud: 10000 ms
Freqüència: 18 Hz
ExampDades en brut:
accX 1.24
accY 8.93
accZ -0.42
Tir de tret
Dispositiu: Arduino-Cricket-Board
Etiqueta: Pull Shot
Sensor: Sensor amb 3 eixos (accX, accY, accZ)
Samplongitud de la lectura: 10000 ms
Freqüència: 18 Hz
ExampDades en brut:
accX 2.01
accY 7.84
accZ -0.63 
Pas 8: Disseny d'impulsos
Obre Crea impuls:
Bloc d'entrada: Dades de sèries temporals (3 eixos).
Mida de la finestra: 1000 ms Increment de la finestra (gambada): 200 ms Habilita: Eixos, Magnitud (opcional), freqüència 18.
Bloc de processament: Anàlisi espectral (també coneguda com a Característiques espectrals per al moviment). Mida de la finestra: 1000 ms Increment de la finestra (gambada): 200 ms Activa: Eixos, Magnitud (opcional), mantén primer tots els valors per defecte.
Bloc d'aprenentatge: Classificació (Keras).
Feu clic a Desa l'impuls. 
Generar característiques:
Aneu a Anàlisi espectral, feu clic a Desa paràmetres i, a continuació, Genera característiques per al conjunt d'entrenament.

Entrena un model petit
Aneu al Classifier (Keras) i utilitzeu una configuració compacta com ara:
Xarxa neuronal: 1–2 capes denses (per exemple, 60 → 30), ReLU
Èpoques: 40–60
Taxa d'aprenentatge: 0.001–0.005
Mida del lot: 32
Divisió de dades: 80/20 (entrenament/prova)
Desa i entrena les dades
Avaluar i comprovar les proves del model amb el conjunt de reserves.
Inspeccioneu la matriu de confusió; si el cercle i la part superior se superposen, recopileu dades més diverses o ajusteu-les.
Paràmetres espectrals (mida de la finestra / soroll de fons).
Pas 9: Implementació a Arduino
Anar a Desplegament:
Trieu la biblioteca d'Arduino (la biblioteca de C++ també funciona).
Habilita el compilador EON (si està disponible) per reduir la mida del model.
Baixeu el fitxer .zip i, a continuació, a l'IDE d'Arduino: Sketch → Include Library → Add .ZIP Library… Això afegeix exampfitxers com ara el buffer estàtic i el continu sota File → Examples →
Nom del vostre projecte: Edge Impulse. Esbós d'inferència per a Arduino UNO EK R4 WiFi + ADXL345.
Pas 10: Esbós d'inferència d'Arduino
#inclou
#incloure
#incloure // Substitueix per la capçalera Edge Impulse
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
estàtic bool debug_nn = fals;
void setup() {
Serial.begin(115200);
mentre (!Serial) {}
si (!accel.començar()) {
Serial.println("ERROR: ADXL345 no detectat");
mentre que (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
bucle buit() {
memòria intermèdia flotant[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
per a (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.getEsdeveniment(&e);
buffer[ix + 0] = e.acceleration.x;
buffer[ix + 1] = e.acceleration.y;
buffer[ix + 2] = e.acceleration.z;
int32_t espera = (int32_t)(següent_marcador – micros());
si (espera > 0) delayMicrosegons(espera);
}
senyal_t senyal;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
si (err != 0) retorna;
resultat de ei_impulse_result_t = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, &result,
debug_nn);
si (res != EI_IMPULSE_OK) retorna;
per a (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf("%s: %.3f", resultat.classificació[ix].etiqueta,
resultat.classificació[ix].valor);
}
#si EI_CLASSIFICADOR_TÉ_ANOMALIA == 1
ei_printf("anomalia: %.3f", resultat.anomalia);
#endif
ei_printf("\n");
}
Sortida exampLI:
Consells:
Mantingueu EI_CLASSIFIER_INTERVAL_MS sincronitzat amb la freqüència del vostre reenviador de dades (per exemple, 100 Hz → 10 ms). La biblioteca Edge Impulse estableix aquesta constant automàticament a partir del vostre impuls.
Si voleu una detecció contínua (finestra lliscant), comenceu des de la finestra Contínua.ample inclòs amb la biblioteca EI i intercanvia les lectures ADXL345.
Aviat afegirem tutorials en vídeo; fins aleshores, estigueu atents – https://www.youtube.com/@RobuInlabs
I si encara teniu dubtes, podeu veure aquest vídeo d'Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Documents/Recursos
![]() |
Placa de desenvolupament WiFi Arduino ABX00087 UNO R4 [pdfGuia de l'usuari R4 WiFi, ADXL345, ABX00087 UNO R4 Placa de desenvolupament WiFi, ABX00087, UNO R4 Placa de desenvolupament WiFi, Placa de desenvolupament, Placa |
