Logotipo de ArduinoPlaca de desenvolvemento WiFi Arduino ABX00087 UNO R4

Placa de desenvolvemento WiFi ABX00087 UNO R4

Recoñecemento de tiros de críquet usando Arduino UNO R4 WiFi + ADXL345 + Edge
Impulso
Este documento proporciona un fluxo de traballo completo para construír un sistema de recoñecemento de golpes de críquet usando Arduino UNO R4 WiFi cun acelerómetro ADXL345 e Edge Impulse Studio. O proxecto implica a recollida de datos do acelerómetro, o adestramento dun modelo de aprendizaxe automática e a implementación do modelo adestrado de volta no Arduino para a clasificación de golpes en tempo real.
Golpes de críquet considerados neste proxecto:
– Cobertura de condución
– Accionamento en liña recta
– Tiro de tracción

Paso 1: Requisitos de hardware

Arduino UNO R4 WiFi
– Acelerómetro ADXL345 (I2C)
– Cables de puente
– Placa de probas (opcional)
- Cable USB tipo C

Paso 2: Requisitos de software

– IDE de Arduino (última versión)
– Conta de Edge Impulse Studio (gratuíta)
– Ferramentas CLI de Edge Impulse (requírese Node.js)
– Biblioteca Adafruit ADXL345

Paso 3: Cableado do ADXL345

Conecta o sensor ADXL345 ao Arduino UNO R4 WiFi do seguinte xeito:
VCC → 3.3 V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3 V (opcional, para o modo I2C)
SDO → flotante ou GNDPlaca de desenvolvemento WiFi Arduino ABX00087 UNO R4 - máis aláview

Paso 4: Preparar o sensor IDE

Como instalar bibliotecas de sensores no IDE de Arduino?
Abrir o IDE de Arduino
Abre Ferramentas → Xestionar bibliotecas… e instala: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Se tes LSM6DSO ou MPU6050 no seu lugar: instala SparkFun LSM6DSO, Adafruit LSM6DS ou MPU6050 segundo corresponda.)

Paso 5: Esbozo de Arduino para a recollida de datos

Sube este bosquexo ao teu Arduino UNO R4 WiFi. Transmite datos do acelerómetro en formato CSV (x, y, z) a ~18 Hz para Edge Impulse.
#incluír
#incluír
Adafruit_ADXL345_Aceleración unificada =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
se (!accel.començar()) {
Serial.println("Non se detectou ADXL345");
mentres (1);
}
acelerar.configurarRango(ADXL345_RANGO_4_G);
}
void loop() {
evento_de_sensores_t e;
acelerar.obterEvento(&e);
Impresión en serie (e.aceleración.x);
Serie.imprimir(",");
Serial.print(e.acceleration.y);
Serie.imprimir(",");
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}

Configurar o impulso de bordo

Placa de desenvolvemento WiFi Arduino ABX00087 UNO R4: configuración

Paso 6: Conexión a Edge Impulse

  1. Pechar o monitor serie de Arduino.
  2. Executa o comando: edge-impulse-data-forwarder –frequency 18
  3. Introduza os nomes dos eixes: accX, accY, accZ
  4. Nomea o teu dispositivo: Arduino-Cricket-Board
  5. Confirma a conexión en Edge Impulse Studio, en "Dispositivos".

Placa de desenvolvemento WiFi Arduino ABX00087 UNO R4: conexión a Edge ImpulsePlaca de desenvolvemento WiFi Arduino ABX00087 UNO R4: conexión a Edge Impulse 1

Paso 7: Recollida de datos

En Edge Impulse Studio → Adquisición de datos:
– Dispositivo: Placa de críquet Arduino
– Sensor: Acelerómetro (3 eixes)
– SampDuración: 2000 ms (2 segundos)
– Frecuencia: 18 Hz
Gravar polo menos 40 segundosamppor clase:
– Cobertura de condución
– Accionamento en liña recta
– Tiro de tracciónPlaca de desenvolvemento WiFi Arduino ABX00087 UNO R4: recollida de datosRecoller datos Examples
Cover Drive
Dispositivo: Placa de críquet Arduino
Sello: Cover Drive
Sensor: Sensor con 3 eixes (accX, accY, accZ)
SampLonxitude: 10000 ms
Frecuencia: 18 Hz
Exampdatos brutos:
accX -0.32
accY 9.61
accZ -0.12
Tracción recta
Dispositivo: Placa de críquet Arduino
Etiqueta: Straight Drive
Sensor: Sensor con 3 eixes (accX, accY, accZ)
SampLonxitude: 10000 ms
Frecuencia: 18 Hz
Exampdatos brutos:
accX 1.24
accY 8.93
accZ -0.42
Tiro de tracción
Dispositivo: Placa de críquet Arduino
Etiqueta: Pull Shot
Sensor: Sensor con 3 eixes (accX, accY, accZ)
Samplonxitude: 10000 ms
Frecuencia: 18 Hz
Exampdatos brutos:
accX 2.01
accY 7.84
accZ -0.63 Placa de desenvolvemento WiFi Arduino ABX00087 UNO R4 - Recollida de datos 1

Paso 8: Deseño de impulsos

Abrir Crear impulso:
Bloque de entrada: Datos de series temporais (3 eixes).
Tamaño da xanela: 1000 ms Aumento da xanela (paso): 200 ms Activar: Eixes, Magnitude (opcional), frecuencia 18.
Bloque de procesamento: Análise espectral (tamén coñecida como Características espectrais para movemento). Tamaño da xanela: 1000 ms Aumento da xanela (zancada): 200 ms Activar: Eixes, Magnitude (opcional), manter primeiro todos os valores predeterminados.
Bloque de aprendizaxe: Clasificación (Keras).
Fai clic en Gardar impulso. Placa de desenvolvemento WiFi Arduino ABX00087 UNO R4 - Impulse Design

Xerar características:
Vaia a Análise espectral, prema en Gardar parámetros e, a seguir, en Xerar características para o conxunto de adestramento.

Placa de desenvolvemento WiFi Arduino ABX00087 UNO R4 - conxunto de adestramento

Adestra un modelo pequeno
Vai a Clasificador (Keras) e usa unha configuración compacta como:
Rede neuronal: 1–2 capas densas (por exemplo, 60 → 30), ReLU
Épocas: 40–60
Taxa de aprendizaxe: 0.001–0.005
Tamaño do lote: 32
División de datos: 80/20 (adestramento/proba)
Gardar e adestrar os datosPlaca de desenvolvemento WiFi Arduino ABX00087 UNO R4: garda e adestra os datos

Avaliar e comprobar as probas do modelo co conxunto de excepcións.
Inspecciona a matriz de confusión; se o círculo e a parte superior se solapan, recompila datos máis diversos ou axústaos.
Parámetros espectrais (tamaño da xanela / ruído de fondo).

Paso 9: Implementación en Arduino

Ir a Implementación:
Escolle a biblioteca de Arduino (a biblioteca de C++ tamén funciona).
Activa o compilador EON (se está dispoñible) para reducir o tamaño do modelo. Placa de desenvolvemento WiFi Arduino ABX00087 UNO R4: implementación en ArduinoDescarga o ficheiro .zip e despois no IDE de Arduino: Sketch → Include Library → Add .ZIP Library… Isto engade exampficheiros como o búfer estático e o continuo en File → Examples →
Nome do teu proxecto: Edge Impulse. Esquema de inferencia para Arduino UNO EK R4 WiFi + ADXL345.

Paso 10: Esbozo de inferencia de Arduino

#incluír
#incluír
#incluír // Substituír pola cabeceira Edge Impulse
Adafruit_ADXL345_Aceleración unificada =
Adafruit_ADXL345_Unified(12345);
estático bool debug_nn = falso;
void setup() {
Serial.begin(115200);
mentres (!Serial) {}
se (!accel.començar()) {
Serial.println("ERRO: ADXL345 non detectado");
mentres (1);
}
acelerar.configurarRango(ADXL345_RANGO_4_G);
}
void loop() {
búfer flotante[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
para (tamaño_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t seguinte_marca = micros() + (EI_CLASIFICADOR_INTERVALO_MS *
1000);
evento_de_sensores_t e;
acelerar.obterEvento(&e);
buffer[ix + 0] = e.aceleración.x;
buffer[ix + 1] = e.aceleración.y;
buffer[ix + 2] = e.aceleración.z;
int32_t agardar = (int32_t)(seguinte_marca – micros());
se (espera > 0) demoraMicrosegundos(espera);
}
sinal_t ​​sinal;
int err = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &signal);
se (erro != 0) devolve;

resultado de ei_impulse_result_t = {0};
EI_IMPULSE_ERROR res = executar_clasificador(&sinal, &resultado,
depuración_nn);
se (res != EI_IMPULSE_OK) devolve;

para (tamaño_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf("%s: %.3f", resultado.clasificación[ix].etiqueta,
resultado.clasificación[ix].valor);
}
#se EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf("anomalía: %.3f", resultado.anomalía);
#endif
ei_printf("\n");
}

Saída exampLe:

Placa de desenvolvemento WiFi Arduino ABX00087 UNO R4 - Esquema de inferencia de ArduinoConsellos:
Manteña EI_CLASSIFIER_INTERVAL_MS sincronizado coa frecuencia do reenviador de datos (por exemplo, 100 Hz → 10 ms). A biblioteca Edge Impulse define esta constante automaticamente a partir do seu impulso.
Se queres unha detección continua (xanela deslizante), comeza desde a opción de detección continua.ample incluído coa biblioteca EI e intercambia as lecturas ADXL345.
En breve engadiremos tutoriais en vídeo; ata entón, estade atentos... https://www.youtube.com/@RobuInlabs
E se aínda tes algunha dúbida, podes ver este vídeo de Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Logotipo de Arduino

Documentos/Recursos

Placa de desenvolvemento WiFi Arduino ABX00087 UNO R4 [pdfGuía do usuario
R4 WiFi, ADXL345, ABX00087 UNO R4 Placa de desenvolvemento WiFi, ABX00087, UNO R4 Placa de desenvolvemento WiFi, Placa de desenvolvemento, Placa

Referencias

Deixa un comentario

O teu enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *