Arduí logoPlaca de desenvolupament WiFi Arduino ABX00087 UNO R4

Placa de desenvolupament WiFi ABX00087 UNO R4

Reconeixement de cops de criquet amb Arduino UNO R4 WiFi + ADXL345 + Edge
Impuls
Aquest document proporciona un flux de treball complet per construir un sistema de reconeixement de cops de criquet utilitzant Arduino UNO R4 WiFi amb un acceleròmetre ADXL345 i Edge Impulse Studio. El projecte implica la recopilació de dades de l'acceleròmetre, l'entrenament d'un model d'aprenentatge automàtic i la implementació del model entrenat de nou a l'Arduino per a la classificació de cops en temps real.
Cops de criquet considerats en aquest projecte:
– Coberta de conducció
– Accionament recte
– Tir de tret

Pas 1: Requisits de maquinari

– Arduino UNO R4 WiFi
– Acceleròmetre ADXL345 (I2C)
– Cables de connexió
– Placa de proves (opcional)
- Cable USB tipus C

Pas 2: Requisits de programari

– IDE d'Arduino (última versió)
– Compte Edge Impulse Studio (gratuït)
– Eines CLI d'Edge Impulse (cal Node.js)
– Biblioteca Adafruit ADXL345

Pas 3: Cablejat de l'ADXL345

Connecteu el sensor ADXL345 a l'Arduino UNO R4 WiFi de la següent manera:
VCC → 3.3 V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (opcional, per al mode I2C)
SDO → flotant o GNDPlaca de desenvolupament WiFi Arduino ABX00087 UNO R4 - més enllàview

Pas 4: Preparar el sensor IDE

Com instal·lar biblioteques de sensors a l'IDE d'Arduino?
Obre l'IDE d'Arduino
Obriu Eines → Gestiona biblioteques… i instal·leu: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Si teniu LSM6DSO o MPU6050: instal·leu SparkFun LSM6DSO, Adafruit LSM6DS o MPU6050 segons correspongui.)

Pas 5: Esbós d'Arduino per a la recollida de dades

Puja aquest sketch al teu Arduino UNO R4 WiFi. Transmet dades d'acceleròmetre en format CSV (x, y, z) a ~18 Hz per a Edge Impulse.
#inclou
#incloure
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
si (!accel.començar()) {
Serial.println("No s'ha detectat cap ADXL345");
mentre que (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
bucle buit() {
sensors_event_t e;
accel.getEsdeveniment(&e);
Serial.print (e.acceleration.x);
Serial.print(",");
Serial.print(e.acceleració.y);
Serial.print(",");
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}

Configura l'impuls de vora

Placa de desenvolupament WiFi Arduino ABX00087 UNO R4: configuració

Pas 6: Connexió a Edge Impulse

  1. Tanca el monitor sèrie Arduino.
  2. Executeu l'ordre: edge-impulse-data-forwarder –frequency 18
  3. Introduïu els noms dels eixos: accX, accY, accZ
  4. Anomena el teu dispositiu: Arduino-Cricket-Board
  5. Confirma la connexió a Edge Impulse Studio, a "Dispositius".

Placa de desenvolupament WiFi Arduino ABX00087 UNO R4: connexió a Edge ImpulsePlaca de desenvolupament WiFi Arduino ABX00087 UNO R4: connexió a Edge Impulse 1

Pas 7: Recopilació de dades

A Edge Impulse Studio → Adquisició de dades:
– Dispositiu: Placa de criquet Arduino
– Sensor: Acceleròmetre (3 eixos)
– SampDurada: 2000 ms (2 segons)
– Freqüència: 18 Hz
Grava almenys 40 segonsamples per classe:
– Coberta de conducció
– Accionament recte
– Tir de tretPlaca de desenvolupament WiFi Arduino ABX00087 UNO R4: recollida de dadesRecopilar dades Examples
Cover Drive
Dispositiu: Arduino-Cricket-Board
Segell: Cover Drive
Sensor: Sensor amb 3 eixos (accX, accY, accZ)
Samplongitud: 10000 ms
Freqüència: 18 Hz
ExampDades en brut:
accX -0.32
accY 9.61
accZ -0.12
Tracció recta
Dispositiu: Arduino-Cricket-Board
Etiqueta: Straight Drive
Sensor: Sensor amb 3 eixos (accX, accY, accZ)
Samplongitud: 10000 ms
Freqüència: 18 Hz
ExampDades en brut:
accX 1.24
accY 8.93
accZ -0.42
Tir de tret
Dispositiu: Arduino-Cricket-Board
Etiqueta: Pull Shot
Sensor: Sensor amb 3 eixos (accX, accY, accZ)
Samplongitud de la lectura: 10000 ms
Freqüència: 18 Hz
ExampDades en brut:
accX 2.01
accY 7.84
accZ -0.63 Placa de desenvolupament WiFi Arduino ABX00087 UNO R4 - Recollida de dades 1

Pas 8: Disseny d'impulsos

Obre Crea impuls:
Bloc d'entrada: Dades de sèries temporals (3 eixos).
Mida de la finestra: 1000 ms Increment de la finestra (gambada): 200 ms Habilita: Eixos, Magnitud (opcional), freqüència 18.
Bloc de processament: Anàlisi espectral (també coneguda com a Característiques espectrals per al moviment). Mida de la finestra: 1000 ms Increment de la finestra (gambada): 200 ms Activa: Eixos, Magnitud (opcional), mantén primer tots els valors per defecte.
Bloc d'aprenentatge: Classificació (Keras).
Feu clic a Desa l'impuls. Placa de desenvolupament WiFi Arduino ABX00087 UNO R4 - Impulse Design

Generar característiques:
Aneu a Anàlisi espectral, feu clic a Desa paràmetres i, a continuació, Genera característiques per al conjunt d'entrenament.

Placa de desenvolupament WiFi Arduino ABX00087 UNO R4 - conjunt d'entrenament

Entrena un model petit
Aneu al Classifier (Keras) i utilitzeu una configuració compacta com ara:
Xarxa neuronal: 1–2 capes denses (per exemple, 60 → 30), ReLU
Èpoques: 40–60
Taxa d'aprenentatge: 0.001–0.005
Mida del lot: 32
Divisió de dades: 80/20 (entrenament/prova)
Desa i entrena les dadesPlaca de desenvolupament WiFi Arduino ABX00087 UNO R4: desa i entrena les dades

Avaluar i comprovar les proves del model amb el conjunt de reserves.
Inspeccioneu la matriu de confusió; si el cercle i la part superior se superposen, recopileu dades més diverses o ajusteu-les.
Paràmetres espectrals (mida de la finestra / soroll de fons).

Pas 9: Implementació a Arduino

Anar a Desplegament:
Trieu la biblioteca d'Arduino (la biblioteca de C++ també funciona).
Habilita el compilador EON (si està disponible) per reduir la mida del model. Placa de desenvolupament WiFi Arduino ABX00087 UNO R4: desplegament a ArduinoBaixeu el fitxer .zip i, a continuació, a l'IDE d'Arduino: Sketch → Include Library → Add .ZIP Library… Això afegeix exampfitxers com ara el buffer estàtic i el continu sota File → Examples →
Nom del vostre projecte: Edge Impulse. Esbós d'inferència per a Arduino UNO EK R4 WiFi + ADXL345.

Pas 10: Esbós d'inferència d'Arduino

#inclou
#incloure
#incloure // Substitueix per la capçalera Edge Impulse
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
estàtic bool debug_nn = fals;
void setup() {
Serial.begin(115200);
mentre (!Serial) {}
si (!accel.començar()) {
Serial.println("ERROR: ADXL345 no detectat");
mentre que (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
bucle buit() {
memòria intermèdia flotant[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
per a (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.getEsdeveniment(&e);
buffer[ix + 0] = e.acceleration.x;
buffer[ix + 1] = e.acceleration.y;
buffer[ix + 2] = e.acceleration.z;
int32_t espera = (int32_t)(següent_marcador – micros());
si (espera > 0) delayMicrosegons(espera);
}
senyal_t senyal;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
si (err != 0) retorna;

resultat de ei_impulse_result_t = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, &result,
debug_nn);
si (res != EI_IMPULSE_OK) retorna;

per a (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf("%s: %.3f", resultat.classificació[ix].etiqueta,
resultat.classificació[ix].valor);
}
#si EI_CLASSIFICADOR_TÉ_ANOMALIA == 1
ei_printf("anomalia: %.3f", resultat.anomalia);
#endif
ei_printf("\n");
}

Sortida exampLI:

Placa de desenvolupament WiFi Arduino ABX00087 UNO R4 - Esbós d'inferència d'ArduinoConsells:
Mantingueu EI_CLASSIFIER_INTERVAL_MS sincronitzat amb la freqüència del vostre reenviador de dades (per exemple, 100 Hz → 10 ms). La biblioteca Edge Impulse estableix aquesta constant automàticament a partir del vostre impuls.
Si voleu una detecció contínua (finestra lliscant), comenceu des de la finestra Contínua.ample inclòs amb la biblioteca EI i intercanvia les lectures ADXL345.
Aviat afegirem tutorials en vídeo; fins aleshores, estigueu atents – https://www.youtube.com/@RobuInlabs
I si encara teniu dubtes, podeu veure aquest vídeo d'Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Arduí logo

Documents/Recursos

Placa de desenvolupament WiFi Arduino ABX00087 UNO R4 [pdfGuia de l'usuari
R4 WiFi, ADXL345, ABX00087 UNO R4 Placa de desenvolupament WiFi, ABX00087, UNO R4 Placa de desenvolupament WiFi, Placa de desenvolupament, Placa

Referències

Deixa un comentari

La teva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats *