Logo ArduinoVývojová doska Arduino ABX00087 UNO R4 pre WiFi

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 GNDVývojová doska Arduino ABX00087 UNO R4 WiFi - viacview

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

Vývojová doska Arduino ABX00087 UNO R4 WiFi - Nastavenie

Krok 6: Pripojenie k Edge Impulse

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

Vývojová doska Arduino ABX00087 UNO R4 WiFi - Pripojenie k Edge ImpulseVývojová doska Arduino ABX00087 UNO R4 WiFi - Pripojenie k Edge Impulse 1

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á strelaVývojová doska Arduino ABX00087 UNO R4 WiFi - Zber dátZber ú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 Vývojová doska Arduino ABX00087 UNO R4 WiFi - Zber dát 1

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

Generovať funkcie:
Prejdite na Spektrálnu analýzu, kliknite na Uložiť parametre a potom na Generovať funkcie pre trénovaciu množinu.

Vývojová doska Arduino ABX00087 UNO R4 WiFi - tréningová sada

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 údajovVývojová doska Arduino ABX00087 UNO R4 WiFi - Uloženie a trénovanie dát

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. Vývojová doska Arduino ABX00087 UNO R4 WiFi - nasadenie do ArduinaStiahnite 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:

Vývojová doska Arduino ABX00087 UNO R4 WiFi - náčrt inferencie pre ArduinoTipy:
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

Logo Arduino

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

Referencie

Zanechajte komentár

Vaša emailová adresa nebude zverejnená. Povinné polia sú označené *