

Vývojová doska WiFi ABX00087 UNO R4
Rozpoznávanie úderov kriketu pomocou Arduino UNO R4 WiFi + ADXL345 + Edge
Impulz
Tento dokument poskytuje kompletný pracovný postup pre vytvorenie systému rozpoznávania úderov kriketu pomocou Arduino UNO R4 WiFi s akcelerometrom ADXL345 a Edge Impulse Studio. Projekt zahŕňa zber údajov z akcelerometra, trénovanie modelu strojového učenia a nasadenie trénovaného modelu späť do Arduina pre klasifikáciu úderov v reálnom čase.
Údery kriketu zohľadnené v tomto projekte:
– Kryt pohonu
– Priamy pohon
– Ťahová strela
Krok 1: Hardvérové požiadavky
– Arduino UNO R4 WiFi
– Akcelerometer ADXL345 (I2C)
– Štartovacie káble
– Doska na krájanie (voliteľné)
- Kábel USB Type-C
Krok 2: Požiadavky na softvér
– Arduino IDE (najnovšie)
– Účet Edge Impulse Studio (bezplatný)
– Nástroje rozhrania príkazového riadka Edge Impulse (vyžaduje sa Node.js)
– Knižnica Adafruit ADXL345
Krok 3: Zapojenie ADXL345
Pripojte senzor ADXL345 k Arduino UNO R4 WiFi nasledovne:
VCC → 3.3 V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3 V (voliteľné, pre režim I2C)
SDO → plávajúci alebo GND
Krok 4: Pripravte IDE senzor
Ako nainštalovať knižnice senzorov v Arduino IDE?
Otvorte vývojové prostredie Arduino
Otvorte Nástroje → Spravovať knižnice… a nainštalujte: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Ak máte namiesto toho LSM6DSO alebo MPU6050: nainštalujte si SparkFun LSM6DSO, Adafruit LSM6DS alebo MPU6050.)
Krok 5: Náčrt Arduina pre zber údajov
Nahrajte tento náčrt do vášho Arduina UNO R4 WiFi. Streamuje dáta z akcelerometra vo formáte CSV (x,y,z) pri ~18 Hz pre Edge Impulse.
#include
#zahrnúť
Adafruit_ADXL345_Unified akcelerácia =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
ak (!accel.begin()) {
Serial.println(„Nezistil sa žiadny ADXL345“);
zatiaľ čo (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
udalosť_senzorov;
accel.getEvent(&e);
Serial.print (e.acceleration.x);
Serial.print(",");
Serial.print(e.acceleration.y);
Serial.print(",");
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}
Nastavenie impulzu Edge

Krok 6: Pripojenie k Edge Impulse
- Zatvorte sériový monitor Arduina.
- Spustite príkaz: edge-impulse-data-forwarder –frequency 18
- Zadajte názvy osí: accX, accY, accZ
- Pomenujte svoje zariadenie: Arduino-Cricket-Board
- Potvrďte pripojenie v aplikácii Edge Impulse Studio v časti „Zariadenia“.


Krok 7: Zber údajov
V Edge Impulse Studio → Zber údajov:
– Zariadenie: Arduino-Cricket-Board
– Senzor: Akcelerometer (3 osi)
– Sampdĺžka súboru: 2000 ms (2 sekundy)
- Frekvencia: 18 Hz
Nahrajte aspoň 40 sekúndampmenej na triedu:
– Kryt pohonu
– Priamy pohon
– Ťahová strela
Zber údajov Examples
Kryt Drive
Zariadenie: Arduino-Cricket-Board
Štítok: Cover Drive
Senzor: Senzor s 3 osami (accX, accY, accZ)
Sampdĺžka súboru: 10000 ms
Frekvencia: 18 Hz
ExampNespracované dáta:
accX -0.32
účet 9.61
accZ -0.12
Priamy pohon
Zariadenie: Arduino-Cricket-Board
Štítok: Straight Drive
Senzor: Senzor s 3 osami (accX, accY, accZ)
Sampdĺžka súboru: 10000 ms
Frekvencia: 18 Hz
ExampNespracované dáta:
accX 1.24
účet 8.93
accZ -0.42
Ťahová strela
Zariadenie: Arduino-Cricket-Board
Štítok: Pull Shot
Senzor: Senzor s 3 osami (accX, accY, accZ)
Sampdĺžka súboru: 10000 ms
Frekvencia: 18 Hz
ExampNespracované dáta:
accX 2.01
účet 7.84
accZ -0.63 
Krok 8: Návrh impulzov
Otvorte Vytvorte impulz:
Vstupný blok: Časové rady (3 osi).
Veľkosť okna: 1000 ms Zväčšenie okna (krok): 200 ms Povoliť: Osi, magnitúda (voliteľné), frekvencia 18.
Blok spracovania: Spektrálna analýza (známa aj ako Spektrálne funkcie pre pohyb). Veľkosť okna: 1000 ms Zväčšenie okna (krok): 200 ms Povoliť: Osi, Veľkosť (voliteľné), ponechať všetky predvolené hodnoty ako prvé.
Učebný blok: Klasifikácia (Keras).
Kliknite na Uložiť impulz. 
Generovať funkcie:
Prejdite na Spektrálnu analýzu, kliknite na Uložiť parametre a potom na Generovať funkcie pre trénovaciu množinu.

Trénovanie malého modelu
Prejdite do Klasifikátora (Keras) a použite kompaktnú konfiguráciu, ako napríklad:
Neurónová sieť: 1–2 husté vrstvy (napr. 60 → 30), ReLU
Epochy: 40 – 60
Rýchlosť učenia: 0.001–0.005
Veľkosť dávky: 32
Rozdelenie údajov: 80/20 (trénovanie/testovanie)
Uloženie a trénovanie údajov
Vyhodnotenie a kontrola testovania modelu s nastavenou výdržou.
Skontrolujte maticu zmätku; ak sa kruh a hore prekrývajú, zhromaždte rozmanitejšie údaje alebo ich upravte.
Spektrálne parametre (veľkosť okna / šumová podlaha).
Krok 9: Nasadenie do Arduina
Prejsť na nasadenie:
Vyberte knižnicu Arduino (funguje aj knižnica C++).
Povoľte kompilátor EON (ak je k dispozícii) na zmenšenie veľkosti modelu.
Stiahnite si .zip súbor a potom v Arduino IDE: Sketch → Include Library → Add .ZIP Library… Toto pridá napr.ampsúbory ako statický buffer a kontinuálne pod File → Napramples →
Názov vášho projektu – Edge Impulse. Inferenčný náčrt pre Arduino UNO EK R4 WiFi + ADXL345.
Krok 10: Inferenčný náčrt pre Arduino
#include
#zahrnúť
#zahrnúť // Nahradiť hlavičkou Edge Impulse
Adafruit_ADXL345_Unified akcelerácia =
Adafruit_ADXL345_Unified(12345);
statická bool debug_nn = false;
void setup() {
Serial.begin(115200);
zatiaľ čo (!Sériové) {}
ak (!accel.begin()) {
Serial.println(„CHYBA: ADXL345 nebol detekovaný“);
zatiaľ čo (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
vyrovnávacia pamäť s pohyblivou pohyblivou hodnotou[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
pre (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t next_tick = micros() + (EI_CLASSIFIER_INTERVAL_MS *
1000);
udalosť_senzorov;
accel.getEvent(&e);
buffer[ix + 0] = napr.zrýchlenie.x;
buffer[ix + 1] = e.zrýchlenie.y;
buffer[ix + 2] = e.zrýchlenie.z;
int32_t čakať = (int32_t)(ďalší_tick – mikrosekundy());
ak (čakať > 0) delayMicroseconds(čakať);
}
signál_t signál;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signál);
ak (chyba != 0) vráti;
výsledok ei_impulse_result_t = {0};
EI_IMPULS_ERROR res = run_classifier(&signál, &výsledok,
debug_nn);
ak (res != EI_IMPULSE_OK) vrátiť;
pre (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(„%s: %.3f“, výsledok.klasifikácia[ix].label,
výsledok.klasifikácia[ix].hodnota);
}
#ak EI_CLASSIFIER_HAS_ANOMÁLIA == 1
ei_printf(„anomália: %.3f“, výsledok.anomália);
#endif
ei_printf("\n");
}
Výstup naprample:
Tipy:
Udržujte EI_CLASSIFIER_INTERVAL_MS synchronizovanú s frekvenciou vášho preposielača dát (napr. 100 Hz → 10 ms). Knižnica Edge Impulse nastavuje túto konštantu automaticky z vášho impulzu.
Ak chcete kontinuálnu detekciu (posuvné okno), začnite od kontinuálnej detekcieampje súčasťou knižnice EI a vymieňa sa pri čítaní z ADXL345.
Čoskoro pridáme video tutoriály; dovtedy zostaňte naladení – https://www.youtube.com/@RobuInlabs
A ak stále máte nejaké pochybnosti, môžete si pozrieť toto video od Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Dokumenty / zdroje
![]() |
Vývojová doska Arduino ABX00087 UNO R4 pre WiFi [pdf] Používateľská príručka R4 WiFi, ADXL345, ABX00087 Vývojová doska UNO R4 WiFi, ABX00087, Vývojová doska UNO R4 WiFi, Vývojová doska WiFi, Vývojová doska, Doska |
