Logo ArduinoVývojová deska pro Arduino ABX00087 UNO R4 s WiFi

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 GNDVývojová deska Arduino ABX00087 UNO R4 WiFi - víceview

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

Vývojová deska Arduino ABX00087 UNO R4 WiFi - Nastavení

Krok 6: Připojení k Edge Impulse

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

Vývojová deska Arduino ABX00087 UNO R4 WiFi - Připojení k Edge ImpulseVývojová deska Arduino ABX00087 UNO R4 WiFi - Připojení k Edge Impulse 1

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řelVývojová deska Arduino ABX00087 UNO R4 WiFi - sběr datSbě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 Vývojová deska Arduino ABX00087 UNO R4 WiFi - Sběr dat 1

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. Vývojová deska Arduino ABX00087 UNO R4 WiFi - Impulse Design

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.

Vývojová deska Arduino ABX00087 UNO R4 WiFi - tréninková sada

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í datVývojová deska Arduino ABX00087 UNO R4 WiFi - 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. Vývojová deska Arduino ABX00087 UNO R4 WiFi - nasazení na ArduinoStá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:

Vývojová deska pro Arduino ABX00087 UNO R4 WiFi - inferenční náčrt pro ArduinoTipy:
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

Logo Arduino

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

Reference

Zanechte komentář

Vaše emailová adresa nebude zveřejněna. Povinná pole jsou označena *