arduino-logoArduino ABX00087 UNO R4 WiFi Untwikkelingsboerd

ABX00087 UNO R4 WiFi-ûntwikkelingsboerd

Cricket Shot Recognition mei Arduino UNO R4 WiFi + ADXL345 + Edge
Impuls
Dit dokumint jout in folsleine workflow foar it bouwen fan in systeem foar it werkennen fan skotten yn cricket mei Arduino UNO R4 WiFi mei in ADXL345 fersnellingsmeter en Edge Impulse Studio. It projekt omfettet it sammeljen fan fersnellingsmetergegevens, it trainen fan in masinelearmodel, en it weromsetten fan it trainearre model nei de Arduino foar realtime skottklassifikaasje.
Cricket shots dy't yn dit projekt beskôge wurde:
– Dekseldrive
– Rjochte oandriuwing
– Lûkskot

Stap 1: Hardware easken

– Arduino UNO R4 WiFi
– ADXL345 Fersnellingsmeter (I2C)
– Jumper triedden
– Breadboard (opsjoneel)
- USB Type-C kabel

Stap 2: Software easken

– Arduino IDE (nijste)
– Edge Impulse Studio akkount (fergees)
– Edge Impulse CLI-ark (Node.js fereaske)
– Adafruit ADXL345 bibleteek

Stap 3: De ADXL345 oanslute

Ferbine de ADXL345-sensor mei de Arduino UNO R4 WiFi as folget:
VCC → 3.3V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (opsjoneel, foar I2C-modus)
SDO → driuwend of GNDArduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - mear asview

Stap 4: Meitsje de IDE-sensor klear

Hoe kinne jo sensorbiblioteken ynstallearje yn Arduino IDE?
Iepenje Arduino IDE
Iepenje Tools → Biblioteken beheare… en ynstallearje: Adafruit ADXL345 Unified Adafruit Unified Sensor
(As jo ​​ynstee LSM6DSO of MPU6050 hawwe: ynstallearje dan SparkFun LSM6DSO, Adafruit LSM6DS of MPU6050 neffens.)

Stap 5: Arduino Sketch foar gegevensferzameling

Upload dizze skets nei jo Arduino UNO R4 WiFi. It streamt fersnellingsmetergegevens yn CSV-formaat (x, y, z) by ~18 Hz foar Edge Impulse.
#ynklusyf
#ynklusyf
Adafruit_ADXL345_Unified aks =
Adafruit_ADXL345_Unified(12345);
void opset() {
Serial.begin(115200);
as (!accel.begin()) {
Serial.println("Gjin ADXL345 ûntdutsen");
wylst (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
sensors_evenemint_t e;
accel.getEvent(&e);
Serial.print (e.acceleration.x);
Serial.print(",");
Serial.print(e.fersnelling.y);
Serial.print(",");
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}

Râne-impuls ynstelle

Arduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - Ynstelle

Stap 6: Ferbine mei Edge Impulse

  1. Slút Arduino Seriële Monitor.
  2. Fier it kommando út: edge-impulse-data-forwarder –frekwinsje 18
  3. Fier de assenammen yn: accX, accY, accZ
  4. Jou dyn apparaat in namme: Arduino-Cricket-Board
  5. Befêstigje de ferbining yn Edge Impulse Studio ûnder 'Apparaten'.

Arduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - Ferbine mei Edge ImpulseArduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - Ferbine mei Edge Impulse 1

Stap 7: Gegevensferzameling

Yn Edge Impulse Studio → Data-akwisysje:
– Apparaat: Arduino-Cricket-Board
– Sensor: Accelerometer (3 assen)
-Sample lingte: 2000 ms (2 sekonden)
– Frekwinsje: 18 Hz
Nim op syn minst 40 sekonden opamplessen per klasse:
– Dekseldrive
– Rjochte oandriuwing
– LûkskotArduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - DataferzamelingGegevens sammelje Examples
Cover Drive
Apparaat: Arduino-Cricket-Board
Label: Cover Drive
Sensor: Sensor mei 3 assen (accX, accY, accZ)
Samplingte: 10000ms
Frekwinsje: 18 Hz
Exampde Rauwe gegevens:
accX -0.32
akkY 9.61
akkZ -0.12
Rjochte oandriuwing
Apparaat: Arduino-Cricket-Board
Label: Rjochte oandriuwing
Sensor: Sensor mei 3 assen (accX, accY, accZ)
Samplingte: 10000ms
Frekwinsje: 18 Hz
Exampde Rauwe gegevens:
accX 1.24
akkY 8.93
akkZ -0.42
Lûkskot
Apparaat: Arduino-Cricket-Board
Label: Lûkskot
Sensor: Sensor mei 3 assen (accX, accY, accZ)
Samplingte: 10000 ms
Frekwinsje: 18 Hz
Exampde Rauwe gegevens:
accX 2.01
akkY 7.84
akkZ -0.63 Arduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - Dataferzameling 1

Stap 8: Ympulsûntwerp

Iepenje Meitsje ympuls:
Ynfierblok: Tiidsearjegegevens (3 assen).
Finstergrutte: 1000 ms Finsterferheging (stap): 200 ms Ynskeakelje: Assen, Grutte (opsjoneel), frekwinsje 18.
Ferwurkingsblok: Spektrale analyze (ek wol bekend as Spektrale funksjes foar beweging). Finstergrutte: 1000 ms Finsterfergrutting (stap): 200 ms Ynskeakelje: Assen, Grutte (opsjoneel), hâld alle standertynstellingen earst.
Learblok: Klassifikaasje (Keras).
Klik op Ympuls bewarje. Arduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - Impulse Design

Funksjes generearje:
Gean nei Spektrale analyse, klik op Parameters bewarje, en generearje dan funksjes foar de trainingsset.

Arduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - trainingsset

Traine in lyts model
Gean nei Classifier (Keras) en brûk in kompakte konfiguraasje lykas:
Neuraal netwurk: 1–2 tichte lagen (bygelyks, 60 → 30), ReLU
Epochen: 40–60
Learsnelheid: 0.001–0.005
Batchgrutte: 32
Datasplitsing: 80/20 (trein/test)
Bewarje en train de gegevensArduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - Bewarje en train de gegevens

Evaluearje en kontrolearje modeltests mei de holdout-set.
Ynspektearje de betizingsmatrix; as sirkel en boppe oerlaapje, sammelje dan mear ferskaat gegevens of oanpasse
Spektrale parameters (finstergrutte / lûdsflier).

Stap 9: Ynset nei Arduino

Gean nei Ynset:
Kies de Arduino-bibleteek (C++-bibleteek wurket ek).
Skeakelje EON Compiler (as beskikber) yn om de modelgrutte te krimpen. Arduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - Ynset op ArduinoDownload it .zip-bestân, en dan yn Arduino IDE: Sketch → Include Library → Add .ZIP Library… Dit foeget eks taamples lykas Statyske buffer en Kontinu ûnder File → Eksamples →
Dyn Projektnamme – Edge Impulse. Ynferinsjeskets foar Arduino UNO EK R4 WiFi + ADXL345.

Stap 10: Arduino-ynferinsjeskets

#ynklusyf
#ynklusyf
#ynklusyf // Ferfange mei Edge Impulse-koptekst
Adafruit_ADXL345_Unified aks =
Adafruit_ADXL345_Unified(12345);
statyske bool debug_nn = falsk;
void opset() {
Serial.begin(115200);
wylst (!Serial) {}
as (!accel.begin()) {
Serial.println("FOUT: ADXL345 net ûntdutsen");
wylst (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
driuwbuffer[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
foar (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t next_tick = micros() + (EI_CLASSIFIER_INTERVAL_MS *
1000);
sensors_evenemint_t e;
accel.getEvent(&e);
buffer[ix + 0] = e.fersnelling.x;
buffer[ix + 1] = e.fersnelling.y;
buffer[ix + 2] = e.fersnelling.z;
int32_t wachtsje = (int32_t)(folgjende_tik – mikros());
as (wachtsje > 0) fertragingMikrosekonden(wachtsje);
}
sinjaal_t sinjaal;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &sinjaal);
as (err != 0) weromkomt;

ei_impulse_result_t resultaat = {0};
EI_IMPULSE_ERROR res = run_classifier(&sinjaal, &resultaat,
debug_nn);
as (res != EI_IMPULSE_OK) weromkomt;

foar (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf("%s: %.3f ", resultaat.klassifikaasje[ix].label,
resultaat.klassifikaasje[ix].wearde);
}
#as EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf("anomaly: %.3f", resultaat.anomaly);
#endif
ei_printf(“\n”);
}

Utfier bvample:

Arduino ABX00087 UNO R4 WiFi Untwikkelingsboerd - Arduino Ynferinsje SketsTips:
Hâld EI_CLASSIFIER_INTERVAL_MS syngronisearre mei jo gegevensferstjoeringsfrekwinsje (bygelyks, 100 Hz → 10 ms). De Edge Impulse-bibleteek stelt dizze konstante automatysk yn fan jo ympuls.
As jo ​​trochgeande deteksje (skuiffinster) wolle, begjin dan fan 'e Kontinue eks.ample opnommen yn 'e EI-bibleteek en wikselje yn 'e ADXL345-lêzingen.
Wy sille gau fideo-tutorials tafoegje; oant dy tiid, bliuw op 'e hichte - https://www.youtube.com/@RobuInlabs
En as jo noch twifels hawwe, kinne jo dizze fideo fan Edged Impulse besjen: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

arduino-logo

Dokuminten / Resources

Arduino ABX00087 UNO R4 WiFi Untwikkelingsboerd [pdf] Brûkersgids
R4 WiFi, ADXL345, ABX00087 UNO R4 WiFi Untwikkelingsboerd, ABX00087, UNO R4 WiFi Untwikkelingsboerd, WiFi Untwikkelingsboerd, Untwikkelingsboerd, Boerd

Referinsjes

Lit in reaksje efter

Jo e-mailadres sil net publisearre wurde. Ferplichte fjilden binne markearre *