Skip to main content

Introducción a Edge Impulse con XIAO nRF52840 Sense de Seeed Studio

¡Bienvenido a este wiki de inicio rápido sobre el uso de Edge Impulse con el Seeed Studio XIAO nRF52840 Sense! En esta guía, exploraremos cómo utilizar el sensor IMU integrado para detectar el movimiento humano y clasificar diferentes acciones. Ya seas un desarrollador experimentado o estés comenzando, este tutorial te proporcionará los conocimientos y habilidades necesarios para empezar a trabajar con Edge Impulse en la placa XIAO nRF52840 Sense. ¡Así que, vamos a comenzar!

Comenzando

En este wiki, te mostraremos cómo utilizar el acelerómetro del Seeed Studio XIAO nRF52840 Sense junto con Edge Impulse para habilitar el reconocimiento de movimiento. Los códigos que presentamos aquí son compatibles con la última versión de las placas Seeed nRF52.

En aplicaciones de IA embebida, recomendamos encarecidamente utilizar la "Biblioteca de Placas Seeed nrf52 habilitada para mbed".

Hardware

En este wiki, necesitamos preparar los siguientes materiales:

pir

Configuración del Hardware

  • Paso 1. Retira la base Grove de la Grove - Pantalla OLED 0.66" con un soldador.

  • Paso 2. Usa unas cortadoras de cables para procesar los cables DuPont a una longitud de aproximadamente 3 cm y expón los cables internos unos 2 mm en ambos extremos.

  • Paso 3. Pasa la fibra a través del pequeño agujero en la parte frontal y coloca el extremo en el LED.

  • Paso 4. Solda el Seeed Studio XIAO nRF52840 Sense con los demás elementos de acuerdo con el diagrama a continuación:

pir

pir

note
Será mejor si usas adhesivo termofusible para reforzar las soldaduras.
  • Paso 5. Ensambla todos los componentes:

    1. Pasa la fibra a través del pequeño agujero en la parte frontal de la carcasa.
    2. Monta la pantalla en la ubicación fija.
    3. Coloca la batería entre el Seeed Studio XIAO nRF52840 y la pantalla.
    4. Maneja los cables con cuidado.
    5. Coloca el extremo de la fibra plástica guía de luz en la luz RGB del Seeed Studio XIAO nRF52840 y corta el exceso.
    6. Ensambla la carcasa.

pir

Ensamblado:

pir

Software

Las bibliotecas requeridas se enumeran a continuación. Se recomienda encarecidamente usar los códigos aquí para verificar si el hardware está funcionando correctamente. Si tienes problemas para instalar la biblioteca, consulta aquí.

Para configurar el Seeed Studio XIAO nRF52840 Sense en Edge Impulse, necesitarás instalar el siguiente software:

  1. Node.js v12 o superior.
  2. Arduino CLI
  3. La CLI de Edge Impulse y un monitor serie. Instálalos abriendo el símbolo del sistema o la terminal y ejecutando:
npm install -g edge-impulse-cli 
note

¿Problemas con la instalación de CLI? Por favor consulta Instalación y Solución de Problemas para mayor referencia.

Conectando a Edge Impulse

Con todo el software listo, 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 Tipo-C.

pir

pir

  • Paso 3. Elige "Datos del acelerómetro" y haz clic en "¡Empecemos!".

pir

Adqusición de Datos y Entrenamiento

note

En este paso, estamos tratando de recopilar los "datos del acelerómetro" del sensor IMU integrado en el Seeed Studio XIAO nRF52840 Sense para construir un conjunto de datos y luego entrenar el modelo con la plataforma Edge Impulse.

  • Paso 4. Sube el sketch de "Datos en crudo del acelerómetro" al Seeed Studio XIAO nRF52840 Sense.

Descargar la biblioteca Seeed_Arduino_LSM6DS3 como archivo zip

pir

Abre el Arduino IDE, navega a Sketch > Include Library > Add .ZIP Library... y abre el archivo zip descargado.

pir

Sube los códigos a continuación 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 el giroscopio mostrados uno tras otro en el monitor serie como se muestra a continuación!

IMU Raw

  • Paso 5. Ejecuta el comando en tu terminal, cmd o powershell 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.

pir

Nombra el acelerómetro y el dispositivo.

pir

  • Paso 7. Conecta el XIAO nRF52840 Sense a Edge Impulse

Ve a la página de "Adquisición de datos" en Edge Impulse, el resultado debe ser similar a esto si la conexión es exitosa. Puedes ver el dispositivo "Seeed Studio XIAO nRF52840 Sense" mostrado a la derecha de la página.

  • Paso 8. Selecciona el sensor como "3 ejes". Nombra tus etiquetas como arriba y abajo, modifica la longitud de la muestra (ms.) a 20000 y haz clic en comenzar a muestrear.

pir

  • Paso 9. Balancea el Seeed Studio XIAO nRF52840 Sense hacia arriba y hacia abajo y mantiene el movimiento durante 20 segundos. Puedes ver que la adquisición aparece de esta manera:

pir

  • Paso 10. Divide los datos haciendo clic en los datos en crudo en la esquina superior derecha y elige "Dividir muestra". Haz clic en +Agregar segmento y luego haz clic en el gráfico. Repite esto más de 20 veces para agregar segmentos. Haz clic en "Dividir" y verás los datos de la muestra, cada uno de 1 segundo.

pir

  • Paso 11. Repite el Paso 8 y el Paso 9 y etiqueta los datos con un nombre diferente para hacer clic en diferentes datos de movimiento, como izquierda y derecha, horario, antihorario, y así sucesivamente. El ejemplo proporcionado está clasificando arriba y abajo, izquierda y derecha, y círculo. Puedes cambiarlo según lo que desees.

pir

note

En el Paso 9, el tiempo de división es de 1 segundo, lo que significa que debes realizar al menos un movimiento 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.

Construcción de un modelo de aprendizaje automático

  • Paso 12. Rebalancea el conjunto de datos. Haz clic en Dashboard y desplázate hacia abajo para encontrar Realizar división de entrenamiento/prueba.

Haz clic en "Realizar división de entrenamiento/prueba", selecciona Sí y confirma.

pir

  • Paso 13. Crear Impulse

Haz clic en Crear impulse -> Agregar un bloque de procesamiento -> Elige Análisis espectral -> Agregar un bloque de aprendizaje -> Elige Clasificación (Keras) -> Guardar Impulse.

pir

  • Paso 14. Características espectrales

Haz clic y configura.

pir

Haz clic en Características espectrales -> Desplázate hacia abajo para hacer clic en Guardar parámetros -> Haz clic en Generar características.

pir

La página de salida debería ser así:

pir

  • Paso 15. Entrenando tu modelo

Haz clic en Clasificador NN -> Haz clic en Iniciar entrenamiento -> Elige No optimizado (float32).

pir

note

La precisión del modelo de entrenamiento es muy importante para el resultado final. Si los resultados de salida de tu entrenamiento son tan bajos como menos del 65%, te recomendamos entrenar más veces.

Desplegar en Seeed Studio XIAO nRF52840 Sense

  • Paso 16. Prueba del modelo

Haz clic en Prueba del modelo -> Haz clic en Clasificar todo.

pir

note

Si tu precisión es baja, puedes revisar tu conjunto de datos aumentando el conjunto de entrenamiento y extendiendo el tiempo de muestra.

  • Paso 17. Construir la biblioteca de Arduino

Haz clic en Despliegue -> Haz clic en Biblioteca de Arduino -> Haz clic en Construir -> Descarga el archivo .ZIP.

pir

  • Paso 18. El nombre del archivo .ZIP es muy importante, se configura por defecto con el nombre de tu proyecto de Edge Impulse. Como en este caso, el nombre del proyecto es "XIAO-BLE-gestures_inferencing". Selecciona el archivo y agrega el archivo ".ZIP" a tus bibliotecas de Arduino.

pir

pir

  • Paso 19. Descarga el código aquí. Cambia el nombre de tu archivo de encabezado por el nombre del tuyo y súbelo.

pir

  • 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.

pir

Cuando mueves el Seeed Studio XIAO nRF52840 Sense en la dirección izquierda y derecha:

El monitor mostrará algo como:

pir

Y en el display algo como:

pir

Cuando mueves el Seeed Studio XIAO nRF52840 Sense en la dirección arriba y abajo:

El monitor mostrará algo como:

pir

Y en el display:

pir

Cuando sostienes el Seeed Studio XIAO nRF52840 Sense en el estado de reposo:

El monitor mostrará algo como:

pir

Y en el display:

pir

¡Felicidades! Has llegado al final del proyecto. Se te anima a probar más direcciones y verificar cuál ofrece el mejor resultado.

Recursos

Soporte técnico y discusión de productos

Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para adaptarnos a diferentes preferencias y necesidades.

Loading Comments...