

Vývojová deska ABX00087 UNO R4 pro WiFi
Rozpoznávání úderů kriketu pomocí Arduino UNO R4 WiFi + ADXL345 + Edge
Impuls
Tento dokument poskytuje kompletní pracovní postup pro vytvoření systému rozpoznávání střel kriketu s využitím Arduina UNO R4 WiFi s akcelerometrem ADXL345 a Edge Impulse Studio. Projekt zahrnuje sběr dat z akcelerometru, trénování modelu strojového učení a nasazení trénovaného modelu zpět do Arduina pro klasifikaci střel v reálném čase.
Kriketové údery zvažované v tomto projektu:
– Kryt pohonu
– Přímý pohon
– Výstřel
Krok 1: Hardwarové požadavky
– Arduino UNO R4 Wi-Fi
– Akcelerometr ADXL345 (I2C)
– Startovací kabely
– Prkénko na pájení (volitelné)
– Kabel USB Type-C
Krok 2: Softwarové požadavky
– Arduino IDE (nejnovější)
– Účet Edge Impulse Studio (zdarma)
– Nástroje rozhraní CLI Edge Impulse (vyžaduje Node.js)
– Knihovna Adafruit ADXL345
Krok 3: Zapojení ADXL345
Připojte senzor ADXL345 k Arduinu UNO R4 WiFi takto:
VCC → 3.3 V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3 V (volitelné, pro režim I2C)
SDO → plovoucí nebo GND
Krok 4: Příprava IDE senzoru
Jak nainstalovat knihovny senzorů do Arduino IDE?
Otevřete vývojové prostředí Arduina
Otevřete Nástroje → Správa knihoven… a nainstalujte: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Pokud máte místo toho LSM6DSO nebo MPU6050: nainstalujte si SparkFun LSM6DSO, Adafruit LSM6DS nebo MPU6050.)
Krok 5: Náčrt Arduina pro sběr dat
Nahrajte tento náčrt do svého Arduina UNO R4 WiFi. Streamuje data z akcelerometru ve formátu CSV (x,y,z) rychlostí ~18 Hz pro Edge Impulse.
#zahrnout
#zahrnout
Adafruit_ADXL345_Unified akcelerace =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
pokud (!accel.begin()) {
Serial.println(“Nebyl detekován ADXL345”);
zatímco (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
sensors_event_t e;
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
}
Nastavení impulzu Edge

Krok 6: Připojení k Edge Impulse
- Zavřete monitor sériového portu Arduina.
- Spusťte příkaz: edge-impulse-data-forwarder –frequency 18
- Zadejte názvy os: accX, accY, accZ
- Pojmenujte své zařízení: Arduino-Cricket-Board
- Potvrďte připojení v aplikaci Edge Impulse Studio v sekci „Zařízení“.


Krok 7: Sběr dat
V Edge Impulse Studiu → Sběr dat:
– Zařízení: Arduino-Cricket-Board
– Senzor: Akcelerometr (3 osy)
– Sampdélka souboru: 2000 ms (2 sekundy)
– Frekvence: 18 Hz
Nahrávejte alespoň 40 sampméně na třídu:
– Kryt pohonu
– Přímý pohon
– Výstřel
Sběr dat Examples
Krycí jednotka
Zařízení: Arduino-Cricket-Board
Štítek: Cover Drive
Senzor: Senzor se 3 osami (accX, accY, accZ)
Sampdélka souboru: 10000 ms
Frekvence: 18 Hz
ExampNezpracovaná data:
accX -0.32
účet 9.61
accZ -0.12
Přímý pohon
Zařízení: Arduino-Cricket-Board
Štítek: Straight Drive
Senzor: Senzor se 3 osami (accX, accY, accZ)
Sampdélka souboru: 10000 ms
Frekvence: 18 Hz
ExampNezpracovaná data:
accX 1.24
účet 8.93
accZ -0.42
Tahový výstřel
Zařízení: Arduino-Cricket-Board
Štítek: Pull Shot
Senzor: Senzor se 3 osami (accX, accY, accZ)
Sampdélka souboru: 10000 ms
Frekvence: 18 Hz
ExampNezpracovaná data:
accX 2.01
účet 7.84
accZ -0.63 
Krok 8: Návrh impulsů
Otevřít Vytvořit impuls:
Vstupní blok: Časová řada (3 osy).
Velikost okna: 1000 ms Zvětšení okna (krok): 200 ms Povolení: Osy, Velikost (volitelné), Frekvence 18.
Blok zpracování: Spektrální analýza (neboli Spektrální prvky pro pohyb). Velikost okna: 1000 ms Zvětšení okna (krok): 200 ms Povolení: Osy, Velikost (volitelné), ponechat všechny výchozí hodnoty jako první.
Učební blok: Klasifikace (Keras).
Klikněte na Uložit impuls. 
Generování prvků:
Přejděte do sekce Spektrální analýza, klikněte na Uložit parametry a poté na Generovat funkce pro trénovací sadu.

Trénování malého modelu
Přejděte do Klasifikátoru (Keras) a použijte kompaktní konfiguraci, jako je tato:
Neuronová síť: 1–2 husté vrstvy (např. 60 → 30), ReLU
Epochy: 40–60
Rychlost učení: 0.001–0.005
Velikost dávky: 32
Rozdělení dat: 80/20 (trénování/testování)
Uložení a trénování dat
Vyhodnoťte a zkontrolujte testování modelu s nastavenou výdrží.
Prozkoumejte matici zmatků; pokud se kruh a nahoru překrývají, shromážděte rozmanitější data nebo je upravte.
Spektrální parametry (velikost okna / šumová podlaha).
Krok 9: Nasazení na Arduino
Přejít k nasazení:
Vyberte knihovnu pro Arduino (funguje i knihovna pro C++).
Povolte kompilátor EON (pokud je k dispozici) pro zmenšení velikosti modelu.
Stáhněte si .zip soubor a poté v Arduino IDE: Sketch → Include Library → Add .ZIP Library… Tím se přidají např.ampsoubory jako statický buffer a kontinuální pod File → Přamples →
Název vašeho projektu – Edge Impulse. Inferenční náčrt pro Arduino UNO EK R4 WiFi + ADXL345.
Krok 10: Inferenční náčrt pro Arduino
#zahrnout
#zahrnout
#zahrnout // Nahraďte hlavičkou Edge Impulse
Adafruit_ADXL345_Unified akcelerace =
Adafruit_ADXL345_Unified(12345);
statická bool debug_nn = false;
void setup() {
Serial.begin(115200);
zatímco (!Sériové) {}
pokud (!accel.begin()) {
Serial.println(„CHYBA: ADXL345 nebyl detekován“);
zatímco (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
vyrovnávací paměť s plovoucí křivkou[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
pro (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t next_tick = micros() + (EI_CLASSIFIER_INTERVAL_MS *
1000);
sensors_event_t e;
accel.getEvent(&e);
buffer[ix + 0] = např.zrychlení.x;
buffer[ix + 1] = e.zrychlení.y;
buffer[ix + 2] = e.zrychlení.z;
int32_t wait = (int32_t)(next_tick – mikrosekundy());
pokud (čekání > 0) delayMicroseconds(čekání);
}
signal_t signál;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signál);
pokud (chyba != 0) vrátí;
výsledek ei_impulse_result_t = {0};
EI_IMPULSNÍ_CHYBA res = run_classifier(&signál, &výsledek,
debug_nn);
pokud (res != EI_IMPULSE_OK) vrátí;
pro (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(“%s: %.3f “, výsledek.klasifikace[ix].label,
výsledek.klasifikace[ix].hodnota);
}
#pokud EI_CLASSIFIER_HAS_ANOMÁLIE == 1
ei_printf(„anomálie: %.3f“, výsledek.anomálie);
#endif
ei_printf("\n");
}
Výstup exampten:
Tipy:
Udržujte EI_CLASSIFIER_INTERVAL_MS synchronizovanou s frekvencí vašeho datového přeposíláče (např. 100 Hz → 10 ms). Knihovna Edge Impulse nastavuje tuto konstantu automaticky z vašeho impulsu.
Pokud chcete kontinuální detekci (posuvné okno), začněte od možnosti Kontinuální detekce.ampsoučástí knihovny EI a prohodí čtení z ADXL345.
Brzy přidáme video tutoriály; do té doby zůstaňte naladěni – https://www.youtube.com/@RobuInlabs
A pokud stále máte nějaké pochybnosti, můžete se podívat na toto video od Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Dokumenty / zdroje
![]() |
Vývojová deska pro Arduino ABX00087 UNO R4 s WiFi [pdfUživatelská příručka R4 WiFi, ADXL345, ABX00087 Vývojová deska UNO R4 WiFi, ABX00087, Vývojová deska UNO R4 WiFi, Vývojová deska WiFi, Vývojová deska, Deska |
