Seeed Studio XIAO nRF52840 Sense Edge Impulse Guía de Inicio

¡Bienvenido a esta guía de inicio rápido sobre el uso de Edge Impulse con Seeed Studio XIAO nRF52840 Sense! En esta guía, exploraremos cómo usar el sensor IMU integrado para detectar movimiento humano y clasificar diferentes acciones. Ya seas un desarrollador experimentado o recién estés comenzando, este tutorial te proporcionará el conocimiento y las habilidades que necesitas para empezar con Edge Impulse en la placa XIAO nRF52840 Sense. ¡Así que vamos a sumergirnos y comenzar!
Comenzando
En esta wiki, te mostraremos cómo utilizar el acelerómetro en Seeed Studio XIAO nRF52840 Sense combinado con Edge Impulse para habilitar el reconocimiento de movimiento. Los códigos que presentamos aquí son compatibles con la última versión de Seeed nRF52 Boards.
Cuando se trata de aplicaciones de IA embebida, recomendamos encarecidamente usar la "Librería Seeed nrf52 mbed-enabled Boards".
Hardware
En esta wiki, necesitamos preparar los siguientes materiales:
- Seeed Studio XIAO nRF52840 Sense
- Batería Li-po (702025)
- Grove - OLED Display 0.66"
- Cables Dupont o cables Grove
- Carcasa impresa en 3D
- Fibra plástica guía de luz
Configuración del Hardware
-
Paso 1. Remueve la base Grove en Grove - OLED Display 0.66" con un soldador
-
Paso 2. Usa cortadores de alambre para procesar los cables DuPont a una longitud de aproximadamente 3 cm y expone los cables internos de aproximadamente 2 mm en ambos extremos
-
Paso 3. Pasa la fibra a través del pequeño agujero en el frente y coloca el extremo en el LED
-
Paso 4. Solda Seeed Studio XIAO nRF52840 Sense con otros elementos según el diagrama a continuación:
Será mejor si usas adhesivo termofusible para reforzar las soldaduras.
-
Paso 5. Ensambla todos los componentes:
- Pasa la fibra a través del pequeño agujero en el frente de la carcasa
- Monta la pantalla en la ubicación fija
- Coloca la batería entre Seeed Studio XIAO nRF52840 y la pantalla
- Maneja los cables cuidadosamente
- Coloca el extremo de la fibra plástica guía de luz en la luz RGB de Seeed Studio XIAO nRF52840 y corta el exceso
- Ensambla la carcasa
El ensamblado:
Software
Las librerías requeridas se listan a continuación. Es altamente recomendado que uses los códigos aquí para verificar si el hardware está funcionando bien. Si tienes problemas instalando la librería, por favor consulta aquí.
Para configurar Seeed Studio XIAO nRF52840 Sense en Edge Impulse, necesitarás instalar el siguiente software:
- Node.js v12 o superior.
- Arduino CLI
- El CLI de Edge Impulse y un monitor serial. Instala abriendo el símbolo del sistema o terminal y ejecuta:
npm install -g edge-impulse-cli
¿Problemas con la instalación del CLI? Por favor consulta Instalación y solución de problemas para más referencia.
Conectando a Edge Impulse
Con todo el software en su lugar es hora de conectar la placa de desarrollo a Edge Impulse.
- Paso 1. Conecta el Seeed Studio XIAO nRF52840 Sense a tu computadora mediante un cable USB Type-C.
- Paso 2. Crea un nuevo proyecto en Edge Impulse
- Paso 3. Elige "Accelerometer data" y haz clic en "Let's get started!"
Adquisición de Datos y Entrenamiento
En este paso estamos tratando de recopilar los "datos del acelerómetro" del IMU integrado del Seeed Studio XIAO nRF52840 Sense para construir un conjunto de datos y luego entrenar el modelo con la plataforma EdgeImpulse.
- Paso 4. Sube el sketch "Accelerometer Raw Data" al Seeed Studio XIAO nRF52840 Sense.
Descargar la Librería Seeed_Arduino_LSM6DS3 como un archivo zip
Abre Arduino IDE, navega a Sketch > Include Library > Add .ZIP Library...
y abre el archivo zip descargado.
Sube el código de abajo y abre el Monitor Serie
// XIAO BLE Sense LSM6DS3 Accelerometer Raw Data
#include "LSM6DS3.h"
#include "Wire.h"
//Create a instance of class LSM6DS3
LSM6DS3 myIMU(I2C_MODE, 0x6A); //I2C device address 0x6A
#define CONVERT_G_TO_MS2 9.80665f
#define FREQUENCY_HZ 50
#define INTERVAL_MS (1000 / (FREQUENCY_HZ + 1))
static unsigned long last_interval_ms = 0;
void setup() {
Serial.begin(115200);
while (!Serial)
;
if (myIMU.begin() != 0) {
Serial.println("Device error");
} else {
Serial.println("Device OK!");
}
}
void loop() {
if (millis() > last_interval_ms + INTERVAL_MS) {
last_interval_ms = millis();
Serial.print(myIMU.readFloatAccelX() * CONVERT_G_TO_MS2, 4);
Serial.print('\t');
Serial.print(myIMU.readFloatAccelY() * CONVERT_G_TO_MS2, 4);
Serial.print('\t');
Serial.println(myIMU.readFloatAccelZ() * CONVERT_G_TO_MS2, 4);
}
}
¡Ahora verás los datos del acelerómetro y giroscopio mostrados uno tras otro en el monitor serie como se muestra a continuación!
- Paso 5. Ejecuta el comando en tu
terminal
ocmd
opowershell
para iniciarlo.
edge-impulse-data-forwarder
- Paso 6. Necesitamos usar la CLI para conectar el Seeed Studio XIAO nRF52840 Sense con Edge Impulse. Primero, inicia sesión en tu cuenta y elige tu proyecto
Nombra el acelerómetro y el dispositivo.
- Paso 7. Conecta el XIAO nRF52840 Sense a Edge Impulse
Ve a la página "Data acquisition" de Edge Impulse, el resultado debería verse así si la conexión es exitosa. Puedes encontrar el dispositivo "Seeed Studio XIAO nRF52840 Sense" mostrado en el lado derecho de la página.
- Paso 8. Selecciona el sensor como "3 axes". Nombra tu etiqueta como
up
ydown
, modifica Sample length (ms.) a 20000 y haz clic en start sampling.
- Paso 9. Balancea el Seeed Studio XIAO nRF52840 Sense hacia arriba y hacia abajo y mantén el movimiento durante 20 segundos. Puedes encontrar que la adquisición se muestra así:
- Paso 10. Divide los datos haciendo clic en la parte superior derecha de los datos sin procesar y elige "Split Sample". Haz clic en +Add Segment y luego haz clic en el gráfico. Repítelo más de 20 veces para agregar segmentos. Haz clic en Split y verás los datos de muestra cada uno por 1 segundo.
- Paso 11. Repite el Paso 8. y el Paso 9. y etiqueta los datos con diferentes nombres para hacer clic en diferentes datos de movimiento, como
left
yright
,clockwise
,anticlockwise
y así sucesivamente. El ejemplo proporcionado está clasificando arriba y abajo, izquierda y derecha, y círculo. Puedes cambiarlo como quieras cambiarlo aquí.
En el Paso 9. el tiempo de división es 1 segundo, lo que significa que al menos debes hacer un balanceo de arriba y abajo en un segundo en el Paso 8. De lo contrario, los resultados no serán precisos. Mientras tanto, puedes ajustar el tiempo de división según tu propia velocidad de movimiento.
Construyendo un modelo de aprendizaje automático
- Paso 12. Reequilibra el conjunto de datos, Haz clic en Dashboard y desplázate hacia abajo en la página para encontrar Perform train / test split
Haz clic en Perform train / test split y elige Yes y confírmalo
- Paso 13. Crear Impulse
Haz clic en Create impulse -> Add a processing block -> Elige Spectral Analysis -> Add a learning block -> Elige Classification (Keras) -> Save Impulse
- Paso 14. Características espectrales
Haz clic y Set up
Haz clic en Spectral features -> Desplázate hacia abajo en la página para hacer clic en Save parameters -> Haz clic en Generate features
La página de salida debería verse así:
- Paso 15. Entrenando tu modelo
Haz clic en NN Classifier -> Haz clic en Start training -> Elige Unoptimized (float32)
La precisión del modelo de entrenamiento es muy importante para el resultado final. Si tus resultados de entrenamiento de salida son tan bajos como menos del 65%, te recomendamos encarecidamente que entrenes más veces.
Desplegando en Seeed Studio XIAO nRF52840 Sense
- Paso 16. Prueba del modelo
Haz clic en Model testing -> Haz clic en Classify all
Si tu precisión es baja, puedes verificar tu conjunto de datos aumentando el conjunto de entrenamiento y extendiendo el tiempo de muestra
- Paso 17. Construir biblioteca de Arduino
Haz clic en Deployment -> Haz clic en Arduino Library -> Haz clic en Build -> Descarga el archivo .ZIP
- Paso 18. El nombre del archivo .ZIP es muy importante, se configura como el nombre de tu proyecto de Edge Impulse por defecto. Como aquí el nombre del proyecto es "XIAO-BLE-gestures_inferencing". Selecciona el archivo como "Añade el archivo .ZIP" a tus bibliotecas de Arduino
- Paso 19. Descarga el código aquí. Cambia el nombre de tu archivo de cabecera por el nombre del tuyo propio y súbelo.
- Paso 20. Mueve o sostén el Seeed Studio XIAO nRF52840 Sense y verifica los resultados:
Haz clic en el monitor en la esquina superior derecha de Arduino.
Cuando muevas el Seeed Studio XIAO nRF52840 Sense en la dirección izquierda y derecha:
El monitor mostrará algo como:
Y la pantalla de salida es como:
Cuando muevas el Seeed Studio XIAO nRF52840 Sense en la dirección arriba y abajo:
El monitor mostrará algo como:
Y la pantalla de salida es como:
Cuando sostengas el Seeed Studio XIAO nRF52840 Sense en estado inactivo:
El monitor mostrará algo como:
Y la pantalla de salida es como:
¡Felicitaciones! Has llegado al final del proyecto. Se te anima a que pruebes más direcciones y verifiques cuál tendrá el mejor rendimiento de salida.
Recursos
Soporte Técnico y Discusión de Productos
.
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.