

ABX00087 UNO R4 WiFi razvojna ploča
Prepoznavanje udaraca kriketa pomoću Arduino UNO R4 WiFi + ADXL345 + Edge
Impuls
Ovaj dokument pruža cjelovit tijek rada za izgradnju sustava za prepoznavanje udaraca u kriketu pomoću Arduino UNO R4 WiFi s akcelerometrom ADXL345 i Edge Impulse Studija. Projekt uključuje prikupljanje podataka s akcelerometra, treniranje modela strojnog učenja i ponovno pokretanje treniranog modela na Arduinu za klasifikaciju udaraca u stvarnom vremenu.
Udarci kriketa koji se razmatraju u ovom projektu:
– Poklopac pogona
– Ravni pogon
– Pucanje
Korak 1: Hardverski zahtjevi
– Arduino UNO R4 WiFi
– ADXL345 Akcelerometar (I2C)
– Žice za premosnik
– Ploča za izradu maketa (opcionalno)
– USB Type-C kabel
Korak 2: Softverski zahtjevi
– Arduino IDE (najnovija verzija)
– Edge Impulse Studio račun (besplatno)
– Alati za rad s Edge Impulse CLI-jem (potreban je Node.js)
– Adafruit ADXL345 biblioteka
Korak 3: Ožičenje ADXL345
Spojite ADXL345 senzor na Arduino UNO R4 WiFi na sljedeći način:
VCC → 3.3 V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3 V (opcionalno, za I2C način rada)
SDO → plutajući ili GND
Korak 4: Pripremite IDE senzor
Kako instalirati biblioteke senzora u Arduino IDE?
Otvorite Arduino IDE
Otvorite Alati → Upravljanje bibliotekama… i instalirajte: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Ako umjesto toga imate LSM6DSO ili MPU6050: instalirajte SparkFun LSM6DSO, Adafruit LSM6DS ili MPU6050.)
Korak 5: Arduino skica za prikupljanje podataka
Prenesite ovu skicu na svoj Arduino UNO R4 WiFi. Podaci akcelerometra se struje u CSV formatu (x,y,z) pri ~18 Hz za Edge Impulse.
#uključi
#uključi
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
ako (!ubrzava.početak()) {
Serial.println(“Nije otkriven ADXL345”);
dok (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
senzorski_događaj;
accel.getEvent(&e);
Serijski.ispis (e.acceleration.x);
Serijski.ispis(",");
Serijski.ispis(e.ubrzanje.y);
Serijski.ispis(",");
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}
Postavljanje rubnog impulsa

Korak 6: Povezivanje s Edge Impulseom
- Zatvori Arduino serijski monitor.
- Pokrenite naredbu: edge-impulse-data-forwarder –frequency 18
- Unesite nazive osi: accX, accY, accZ
- Nazovite svoj uređaj: Arduino-Cricket-Board
- Potvrdite vezu u Edge Impulse Studiju pod 'Uređaji'.


Korak 7: Prikupljanje podataka
U Edge Impulse Studiju → Prikupljanje podataka:
– Uređaj: Arduino-Ploča za kriket
– Senzor: Akcelerometar (3 osi)
– Sampduljina zapisa: 2000 ms (2 sekunde)
– Frekvencija: 18 Hz
Snimite barem 40 sekundiampmanje po razredu:
– Poklopac pogona
– Ravni pogon
– Pucanje
Prikupljanje podataka Examples
Cover Drive
Uređaj: Arduino-Ploča za kriket
Oznaka: Cover Drive
Senzor: Senzor s 3 osi (accX, accY, accZ)
Sampduljina le: 10000ms
Frekvencija: 18 Hz
Exampsirovi podaci:
accX -0.32
račun 9.61
accZ -0.12
Straight Drive
Uređaj: Arduino-Ploča za kriket
Oznaka: Straight Drive
Senzor: Senzor s 3 osi (accX, accY, accZ)
Sampduljina le: 10000ms
Frekvencija: 18 Hz
Exampsirovi podaci:
accX 1.24
račun 8.93
accZ -0.42
Povlačenje udarca
Uređaj: Arduino-Ploča za kriket
Oznaka: Pull Shot
Senzor: Senzor s 3 osi (accX, accY, accZ)
Sampduljina le: 10000 ms
Frekvencija: 18 Hz
Exampsirovi podaci:
accX 2.01
račun 7.84
accZ -0.63 
Korak 8: Dizajn impulsa
Otvori Stvori impuls:
Ulazni blok: Podaci vremenskih serija (3 osi).
Veličina prozora: 1000 ms Povećanje prozora (korak): 200 ms Omogući: Osi, Magnituda (opcionalno), frekvencija 18.
Blok obrade: Spektralna analiza (poznata i kao Spektralne značajke za kretanje). Veličina prozora: 1000 ms Povećanje prozora (korak): 200 ms Omogući: Osi, Magnituda (nije obavezno), prvo zadržite sve zadane postavke.
Blok učenja: Klasifikacija (Keras).
Kliknite Spremi impuls. 
Generiraj značajke:
Idite na Spektralnu analizu, kliknite Spremi parametre, a zatim Generiraj značajke za skup za obuku.

Trenirajte mali model
Idite na Klasifikator (Keras) i koristite kompaktnu konfiguraciju poput:
Neuronska mreža: 1–2 gusta sloja (npr. 60 → 30), ReLU
Epohe: 40.–60.
Brzina učenja: 0.001–0.005
Veličina serije: 32
Podjela podataka: 80/20 (vježbanje/testiranje)
Spremi i treniraj podatke
Procijenite i provjerite testiranje modela s postavljenim holdoutom.
Pregledajte matricu zbunjenosti; ako se krug i gore preklapaju, prikupite raznolikije podatke ili ih prilagodite
Spektralni parametri (veličina prozora / prag šuma).
Korak 9: Implementacija na Arduino
Idi na Raspoređivanje:
Odaberite Arduino biblioteku (C++ biblioteka također radi).
Omogućite EON kompajler (ako je dostupan) za smanjenje veličine modela.
Preuzmite .zip datoteku, zatim u Arduino IDE-u: Sketch → Include Library → Add .ZIP Library… Ovo dodaje exampkao što su Statički međuspremnik i Kontinuirano ispod File → Pramples →
Naziv vašeg projekta – Edge Impulse. Skica inferencije za Arduino UNO EK R4 WiFi + ADXL345.
Korak 10: Skica zaključivanja za Arduino
#uključi
#uključi
#uključi // Zamijenite zaglavljem Edge Impulse
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
statički bool debug_nn = false;
void setup() {
Serial.begin(115200);
dok (!Serijski) {}
ako (!ubrzava.početak()) {
Serial.println(“GREŠKA: ADXL345 nije otkriven”);
dok (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
međuspremnik s pomičnim decimalom[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
za (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t sljedeći_oznaka = mikros() + (EI_KLASIFIKATOR_INTERVAL_MS *
1000);
senzorski_događaj;
accel.getEvent(&e);
međuspremnik[ix + 0] = e.ubrzanje.x;
međuspremnik[ix + 1] = e.ubrzanje.y;
međuspremnik[ix + 2] = e.ubrzanje.z;
int32_t čekaj = (int32_t)(sljedeći_oznaka – mikrosekunde());
ako (čekanje > 0) delayMikrosekunde(čekanje);
}
signal_t signal;
int err = numpy::signal_from_buffer(međuspremnik,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
ako (greška != 0) vrati;
rezultat ei_impulse_result_t = {0};
EI_IMPULS_ERROR res = run_classifier(&signal, &result,
debug_nn);
ako (res != EI_IMPULSE_OK) vrati;
za (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(“%s: %.3f “, rezultat.klasifikacija[ix].oznaka,
rezultat.klasifikacija[ix].vrijednost);
}
#ako EI_KLASIFIKATOR_IMA_ANOMALIJU == 1
ei_printf(“anomalija: %.3f”, rezultat.anomalija);
#endif
ei_printf("\n");
}
Izlaz prampono:
Savjeti:
Sinkronizirajte EI_CLASSIFIER_INTERVAL_MS s frekvencijom vašeg prosljeđivača podataka (npr. 100 Hz → 10 ms). Biblioteka Edge Impulse automatski postavlja ovu konstantu iz vašeg impulsa.
Ako želite kontinuirano otkrivanje (klizni prozor), počnite od kontinuiranog otkrivanjaampuključen u EI biblioteku i zamjenjuje se u čitanjima ADXL345.
Uskoro ćemo dodati video tutorijale; do tada, ostanite s nama – https://www.youtube.com/@RobuInlabs
A ako i dalje imate nedoumica, možete pogledati ovaj video Edged Impulsea: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Dokumenti / Resursi
![]() |
Razvojna ploča za Arduino ABX00087 UNO R4 WiFi [pdf] Korisnički priručnik R4 WiFi, ADXL345, ABX00087 UNO R4 WiFi Razvojna Ploča, ABX00087, UNO R4 WiFi Razvojna Ploča, WiFi Razvojna Ploča, Razvojna Ploča, Ploča |
