

ABX00087 UNO R4 WiFi-udviklingskort
Cricket-skudgenkendelse ved hjælp af Arduino UNO R4 WiFi + ADXL345 + Edge
Impuls
Dette dokument indeholder en komplet arbejdsgang til opbygning af et system til genkendelse af cricketskud ved hjælp af Arduino UNO R4 WiFi med et ADXL345 accelerometer og Edge Impulse Studio. Projektet involverer indsamling af accelerometerdata, træning af en maskinlæringsmodel og implementering af den trænede model tilbage til Arduinoen til klassificering af skud i realtid.
Cricketskud, der tages i betragtning i dette projekt:
– Dækdrev
– Lige drev
– Trækskud
Trin 1: Hardwarekrav
– Arduino UNO R4 WiFi
– ADXL345 Accelerometer (I2C)
– Jumperledninger
– Brødbræt (valgfrit)
– USB Type-C kabel
Trin 2: Softwarekrav
– Arduino IDE (nyeste)
– Edge Impulse Studio-konto (gratis)
– Edge Impulse CLI-værktøjer (Node.js kræves)
– Adafruit ADXL345-bibliotek
Trin 3: Tilslutning af ADXL345
Tilslut ADXL345-sensoren til Arduino UNO R4 WiFi på følgende måde:
VCC → 3.3V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (valgfrit, til I2C-tilstand)
SDO → flydende eller GND
Trin 4: Gør IDE-sensoren klar
Hvordan installerer man sensorbiblioteker i Arduino IDE?
Åbn Arduino IDE
Åbn Værktøjer → Administrer biblioteker… og installer: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Hvis du i stedet har LSM6DSO eller MPU6050: installer SparkFun LSM6DSO, Adafruit LSM6DS eller MPU6050 i overensstemmelse hermed.)
Trin 5: Arduino Sketch til dataindsamling
Upload denne skitse til din Arduino UNO R4 WiFi. Den streamer accelerometerdata i CSV-format (x, y, z) ved ~18 Hz for Edge Impulse.
#omfatte
#omfatte
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
hvis (!accel.begin()) {
Serial.println(“Ingen ADXL345 fundet”);
mens (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
sensorer_begivenhed_t e;
accel.getEvent(&e);
Seriel.print (e.acceleration.x);
Seriel.print(",");
Seriel.print(e.acceleration.y);
Seriel.print(",");
Seriel.println(e.acceleration.z);forsinkelse(55); // ~18 Hz
}
Opsæt kantimpuls

Trin 6: Forbindelse til Edge Impulse
- Luk Arduino seriel skærm.
- Kør kommandoen: edge-impulse-data-forwarder –frequency 18
- Indtast aksenavne: accX, accY, accZ
- Navngiv din enhed: Arduino-Cricket-Board
- Bekræft forbindelsen i Edge Impulse Studio under 'Enheder'.


Trin 7: Dataindsamling
I Edge Impulse Studio → Dataindsamling:
– Enhed: Arduino-Cricketboard
– Sensor: Accelerometer (3 akser)
– Sampfillængde: 2000 ms (2 sekunder)
– Frekvens: 18 Hz
Optag mindst 40 sekunderamples pr. klasse:
– Dækdrev
– Lige drev
– Trækskud
Indsaml data f.eks.amples
Cover Drive
Enhed: Arduino-Cricketboard
Etiket: Cover Drive
Sensor: Sensor med 3 akser (accX, accY, accZ)
Sampfillængde: 10000ms
Frekvens: 18 Hz
ExampRådata:
accX -0.32
accY 9.61
accZ -0.12
Lige drev
Enhed: Arduino-Cricketboard
Etiket: Lige drev
Sensor: Sensor med 3 akser (accX, accY, accZ)
Sampfillængde: 10000ms
Frekvens: 18 Hz
ExampRådata:
accX 1.24
accY 8.93
accZ -0.42
Trækskud
Enhed: Arduino-Cricketboard
Etiket: Trækskud
Sensor: Sensor med 3 akser (accX, accY, accZ)
Sampfillængde: 10000 ms
Frekvens: 18 Hz
ExampRådata:
accX 2.01
accY 7.84
accZ -0.63 
Trin 8: Impulsdesign
Åbn Opret impuls:
Inputblok: Tidsseriedata (3 akser).
Vinduestørrelse: 1000 ms Vinduesforøgelse (skridt): 200 ms Aktivering: Akser, størrelse (valgfrit), frekvens 18.
Behandlingsblok: Spektralanalyse (også kendt som spektrale funktioner for bevægelse). Vinduestørrelse: 1000 ms Vinduesforøgelse (skridt): 200 ms Aktiver: Akser, størrelse (valgfrit), behold alle standardindstillinger først.
Læringsblok: Klassifikation (Keras).
Klik på Gem impuls. 
Generer funktioner:
Gå til Spektralanalyse, klik på Gem parametre, og generer derefter funktioner til træningssættet.

Træn en lille model
Gå til Classifier (Keras) og brug en kompakt konfiguration som:
Neuralt netværk: 1-2 tætte lag (f.eks. 60 → 30), ReLU
Epoker: 40–60
Læringsrate: 0.001–0.005
Batchstørrelse: 32
Datafordeling: 80/20 (træning/test)
Gem og træn dataene
Evaluer og tjek modeltestning med holdout-sættet.
Undersøg forvirringsmatricen; hvis cirklen og op overlapper hinanden, indsaml mere forskelligartede data eller juster
Spektrale parametre (vinduesstørrelse / støjgulv).
Trin 9: Implementering til Arduino
Gå til Implementering:
Vælg Arduino-biblioteket (C++-biblioteket fungerer også).
Aktiver EON Compiler (hvis tilgængelig) for at formindske modelstørrelsen.
Download .zip-filen, og gå derefter ind i Arduino IDE: Sketch → Include Library → Add .ZIP Library… Dette tilføjer f.eks.amples som statisk buffer og kontinuerlig under File → Eksamples →
Dit projektnavn – Edge Impulse. Inferensskitse til Arduino UNO EK R4 WiFi + ADXL345.
Trin 10: Arduino-inferensskitse
#omfatte
#omfatte
#omfatte // Erstat med Edge Impulse-headeren
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
statisk bool debug_nn = falsk;
void setup() {
Serial.begin(115200);
mens (!Seriel) {}
hvis (!accel.begin()) {
Serial.println(“FEJL: ADXL345 ikke fundet”);
mens (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
flydende 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);
sensorer_begivenhed_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 vent = (int32_t)(næste_tick – micros());
hvis (vent > 0) delayMicroseconds(vent);
}
signal_t signal;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
hvis (err != 0) returnerer;
ei_impulse_result_t resultat = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, &resultat,
debug_nn);
hvis (res != EI_IMPULSE_OK) returneres;
for (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) { Titel: } Note ... Note: } Note: } Note: } Note: } Note: } Note: } No
ei_printf("%s: %.3f ", resultat.klassificering[ix].label,
resultat.klassificering[ix].værdi);
}
#hvis EI_KLASSIFIKATØR_HAR_ANOMALI == 1
ei_printf(“anomali: %.3f”, resultat.anomali);
#endif
ei_printf("\n");
}
Output exampdet:
Tips:
Hold EI_CLASSIFIER_INTERVAL_MS synkroniseret med din dataforwarderfrekvens (f.eks. 100 Hz → 10 ms). Edge Impulse-biblioteket indstiller denne konstant automatisk ud fra din impuls.
Hvis du ønsker kontinuerlig detektion (glidende vindue), skal du starte fra Kontinuerlig eksempel.ample inkluderet i EI-biblioteket og swap i ADXL345-læsningerne.
Vi tilføjer snart videovejledninger; indtil da, følg med – https://www.youtube.com/@RobuInlabs
Og hvis du stadig er i tvivl, kan du tjekke denne video af Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Dokumenter/ressourcer
![]() |
Arduino ABX00087 UNO R4 WiFi-udviklingskort [pdfBrugervejledning R4 WiFi, ADXL345, ABX00087 UNO R4 WiFi-udviklingskort, ABX00087, UNO R4 WiFi-udviklingskort, WiFi-udviklingskort, Udviklingskort, Kort |
