

ABX00087 UNO R4 WiFi izstrādes plate
Kriketa sitiena atpazīšana, izmantojot Arduino UNO R4 WiFi + ADXL345 + Edge
Impulss
Šajā dokumentā ir sniegta pilnīga darbplūsma kriketa sitienu atpazīšanas sistēmas izveidei, izmantojot Arduino UNO R4 WiFi ar ADXL345 akselerometru un Edge Impulse Studio. Projekts ietver akselerometra datu vākšanu, mašīnmācīšanās modeļa apmācību un apmācītā modeļa izvietošanu atpakaļ Arduino, lai veiktu sitienu klasifikāciju reāllaikā.
Šajā projektā ņemti vērā kriketa sitieni:
– Vāka piedziņa
– Taisnpiedziņa
– Vilkšanas šāviens
1. darbība. Aparatūras prasības
– Arduino UNO R4 WiFi
– ADXL345 akselerometrs (I2C)
– Pārejas vadi
– Maizes dēlis (pēc izvēles)
– C tipa USB kabelis
2. darbība: programmatūras prasības
– Arduino IDE (jaunākā versija)
– Edge Impulse Studio konts (bezmaksas)
– Edge Impulse CLI rīki (nepieciešams Node.js)
– Adafruit ADXL345 bibliotēka
3. solis: ADXL345 pieslēgšana
Pievienojiet ADXL345 sensoru Arduino UNO R4 WiFi šādi:
VCC → 3.3 V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3 V (pēc izvēles, I2C režīmam)
SDO → peldošs vai GND
4. solis: sagatavojiet IDE sensoru
Kā instalēt sensoru bibliotēkas Arduino IDE?
Atvērt Arduino IDE
Atveriet Rīki → Pārvaldīt bibliotēkas… un instalējiet: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Ja jums ir LSM6DSO vai MPU6050: instalējiet attiecīgi SparkFun LSM6DSO, Adafruit LSM6DS vai MPU6050.)
5. solis: Arduino skice datu vākšanai
Augšupielādējiet šo skici savā Arduino UNO R4 WiFi ierīcē. Tā straumē akselerometra datus CSV formātā (x, y, z) ar frekvenci ~18 Hz Edge Impulse režīmā.
#iekļauts
#iekļaut
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
ja (!accel.begin()) {
Serial.println(“ADXL345 nav atrasts”);
kamēr (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
sensoru_notikumu_t e;
accel.getEvent(&e);
Serial.print (e.acceleration.x);
Sērijas.drukāt(“,”);
Serial.print(e.acceleration.y);
Sērijas.drukāt(“,”);
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}
Iestatiet Edge Impulse

6. darbība. Savienojuma izveide ar Edge Impulse
- Aizveriet Arduino seriālo monitoru.
- Palaidiet komandu: edge-impulse-data-forwarder –frequency 18
- Ievadiet asu nosaukumus: accX, accY, accZ
- Nosauciet savu ierīci: Arduino-Cricket-Board
- Apstipriniet savienojumu programmā Edge Impulse Studio sadaļā “Ierīces”.


7. solis: datu vākšana
Edge Impulse Studio lietotnē → Datu iegūšana:
– Ierīce: Arduino kriketa dēlis
– Sensors: Akselerometrs (3 asis)
– Sampfaila garums: 2000 ms (2 sekundes)
– Frekvence: 18 Hz
Ierakstiet vismaz 40 sekundesamples katrā klasē:
– Vāka piedziņa
– Taisnpiedziņa
– Vilkšanas šāviens
Apkopot datusamples
Cover Drive
Ierīce: Arduino kriketa dēlis
Label: Cover Drive
Sensors: Sensors ar 3 asīm (accX, accY, accZ)
Sampfaila garums: 10000 ms
Frekvence: 18 Hz
ExampNeapstrādātie dati:
accX -0.32
konts 9.61
accZ -0.12
Taisnpiedziņa
Ierīce: Arduino kriketa dēlis
Etiķete: Straight Drive
Sensors: Sensors ar 3 asīm (accX, accY, accZ)
Sampfaila garums: 10000 ms
Frekvence: 18 Hz
ExampNeapstrādātie dati:
accX 1.24
konts 8.93
accZ -0.42
Vilkšanas šāviens
Ierīce: Arduino kriketa dēlis
Etiķete: Pull Shot
Sensors: Sensors ar 3 asīm (accX, accY, accZ)
Sampfaila garums: 10000 ms
Frekvence: 18 Hz
ExampNeapstrādātie dati:
accX 2.01
konts 7.84
accZ -0.63 
8. solis: Impulsa dizains
Atvērt Izveidot impulsu:
Ievades bloks: Laikrindu dati (3 asis).
Loga izmērs: 1000 ms Loga pieaugums (solis): 200 ms Iespējot: Asis, Lielums (pēc izvēles), Frekvence 18.
Apstrādes bloks: Spektrālā analīze (t. i., kustības spektrālās funkcijas). Loga izmērs: 1000 ms Loga palielināšana (solis): 200 ms Iespējot: Asis, Lielums (pēc izvēles), vispirms saglabāt visus noklusējuma iestatījumus.
Mācību bloks: Klasifikācija (Keras).
Noklikšķiniet uz Saglabāt impulsu. 
Funkciju ģenerēšana:
Dodieties uz Spektrālā analīze, noklikšķiniet uz Saglabāt parametrus un pēc tam Ģenerēt apmācības kopas funkcijas.

Apmāciet nelielu modeli
Dodieties uz klasifikatoru (Keras) un izmantojiet kompaktu konfigurāciju, piemēram:
Neironu tīkls: 1–2 blīvi slāņi (piemēram, 60 → 30), ReLU
Laikmets: 40.–60. gads
Mācīšanās ātrums: 0.001–0.005
Partijas lielums: 32
Datu sadalījums: 80/20 (vilciens/tests)
Saglabājiet un apmāciet datus
Novērtējiet un pārbaudiet modeļa testēšanu ar turētāja komplektu.
Pārbaudiet apjukuma matricu; ja apļa un augšupvērstais elements pārklājas, apkopojiet daudzveidīgākus datus vai pielāgojiet to.
Spektrālie parametri (loga izmērs / trokšņa līmenis).
9. darbība: izvietošana Arduino platformā
Dodieties uz sadaļu Izvietošana:
Izvēlieties Arduino bibliotēku (darbojas arī C++ bibliotēka).
Iespējojiet EON kompilatoru (ja pieejams), lai samazinātu modeļa izmēru.
Lejupielādējiet .zip failu un pēc tam Arduino IDE: Sketch → Include Library → Add .ZIP Library… Tas pievieno examppiemēram, statiskā bufera un nepārtrauktā režīma File → Piemamples →
Jūsu projekta nosaukums – Edge Impulse. Secinājumu skice Arduino UNO EK R4 WiFi + ADXL345.
10. solis: Arduino secinājumu skice
#iekļauts
#iekļaut
#iekļaut // Aizstāt ar Edge Impulse galveni
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
statiskā vērtība debug_nn = false;
void setup() {
Serial.begin(115200);
kamēr (!Sērijas) {}
ja (!accel.begin()) {
Serial.println(“KĻŪDA: ADXL345 nav atrasts”);
kamēr (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
peldošā bufera vērtība [EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
priekš (izmērs_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=)
3) {
uint64_t next_tick = mikros() + (EI_KLASIFIERA_INTERVĀLS_MS *
1000);
sensoru_notikumu_t e;
accel.getEvent(&e);
buferis[ix + 0] = e.paātrinājums.x;
buferis[ix + 1] = e.paātrinājums.y;
buferis[ix + 2] = e.paātrinājums.z;
int32_t gaidīt = (int32_t)(nākamais_tick – mikros());
ja (gaidīt > 0) aizkaveMikrosekundes(gaidīt);
}
signāls_t signāls;
int kļūda = numpy::signal_from_buffer(buferis,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, (&signāls);
ja (kļūda != 0) atgriežas;
ei_impulse_result_t rezultāts = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, &result,)
atkļūdošanas_nn);
ja (res != EI_IMPULSE_OK) atgriešanās;
priekš (izmērs_t ix = 0; ix < EI_KLASIFIERA_LABES_SKAITS; ix++) {
ei_printf(“%s: %.3f “, rezultāts.klasifikācija[ix].label,
rezultāts.klasifikācija[ix].vērtība);
}
#ja EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf(“anomalija: %.3f”, rezultāts.anomalija);
#endif
ei_printf(“\n”);
}
Izvade, piemample:
Padomi:
Saglabājiet EI_CLASSIFIER_INTERVAL_MS sinhronizācijā ar datu pārsūtīšanas ierīces frekvenci (piemēram, 100 Hz → 10 ms). Edge Impulse bibliotēka automātiski iestata šo konstanti no jūsu impulsa.
Ja vēlaties nepārtrauktu noteikšanu (slīdošais logs), sāciet ar nepārtrauktās noteikšanas režīmu.ampfails ir iekļauts EI bibliotēkā un tiek mainīts ADXL345 lasījumos.
Drīzumā pievienosim video pamācības; līdz tam laikam sekojiet līdzi jaunumiem – https://www.youtube.com/@RobuInlabs
Un, ja jums joprojām ir kādas šaubas, varat noskatīties šo Edged Impulse videoklipu: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Dokumenti / Resursi
![]() |
Arduino ABX00087 UNO R4 WiFi izstrādes plate [pdfLietotāja rokasgrāmata R4 WiFi, ADXL345, ABX00087 UNO R4 WiFi izstrādes plate, ABX00087, UNO R4 WiFi izstrādes plate, WiFi izstrādes plate, Izstrādes plate, Plate |
