arduino-logoArduino ABX00087 UNO R4 WiFi-udviklingskort

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 GNDArduino ABX00087 UNO R4 WiFi-udviklingskort - overview

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

Arduino ABX00087 UNO R4 WiFi-udviklingskort - Opsætning

Trin 6: Forbindelse til Edge Impulse

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

Arduino ABX00087 UNO R4 WiFi-udviklingskort - Tilslutning til Edge ImpulseArduino ABX00087 UNO R4 WiFi-udviklingskort - Tilslutning til Edge Impulse 1

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ækskudArduino ABX00087 UNO R4 WiFi-udviklingskort - DataindsamlingIndsaml 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 Arduino ABX00087 UNO R4 WiFi-udviklingskort - Dataindsamling 1

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. Arduino ABX00087 UNO R4 WiFi-udviklingskort - Impulse Design

Generer funktioner:
Gå til Spektralanalyse, klik på Gem parametre, og generer derefter funktioner til træningssættet.

Arduino ABX00087 UNO R4 WiFi-udviklingskort - træningssæt

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 dataeneArduino ABX00087 UNO R4 WiFi-udviklingskort - 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. Arduino ABX00087 UNO R4 WiFi-udviklingskort - Implementering til ArduinoDownload .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:

Arduino ABX00087 UNO R4 WiFi-udviklingskort - Arduino Inference SketchTips:
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

arduino-logo

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

Referencer

Efterlad en kommentar

Din e-mailadresse vil ikke blive offentliggjort. Påkrævede felter er markeret *