Arduino logotipRazvojna ploča za Arduino ABX00087 UNO R4 WiFi

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 GNDArduino ABX00087 UNO R4 WiFi razvojna ploča - prekoview

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

Razvojna ploča za Arduino ABX00087 UNO R4 WiFi - Postavljanje

Korak 6: Povezivanje s Edge Impulseom

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

Arduino ABX00087 UNO R4 WiFi razvojna ploča - Spajanje na Edge ImpulseArduino ABX00087 UNO R4 WiFi razvojna ploča - Spajanje na Edge Impulse 1

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
– PucanjeArduino ABX00087 UNO R4 WiFi razvojna ploča - prikupljanje podatakaPrikupljanje 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 Arduino ABX00087 UNO R4 WiFi razvojna ploča - Prikupljanje podataka 1

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. Razvojna ploča za Arduino ABX00087 UNO R4 WiFi - Impulse Design

Generiraj značajke:
Idite na Spektralnu analizu, kliknite Spremi parametre, a zatim Generiraj značajke za skup za obuku.

Arduino ABX00087 UNO R4 WiFi razvojna ploča - set 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 podatkeArduino ABX00087 UNO R4 WiFi razvojna ploča - Spremite i trenirajte 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. Razvojna ploča za Arduino ABX00087 UNO R4 WiFi - Implementacija na ArduinoPreuzmite .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:

Razvojna ploča za Arduino ABX00087 UNO R4 WiFi - Skica zaključivanja za ArduinoSavjeti:
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

Arduino logotip

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

Reference

Ostavite komentar

Vaša email adresa neće biti objavljena. Obavezna polja su označena *