Primeiros Passos com Edge Impulse no Seeed Studio XIAO nRF52840 Sense

Bem-vindo a este wiki de início rápido sobre como usar o Edge Impulse com o Seeed Studio XIAO nRF52840 Sense! Neste guia, vamos explorar como usar o sensor IMU onboard para detectar movimento humano e classificar diferentes ações. Seja você um desenvolvedor experiente ou esteja apenas começando, este tutorial fornecerá o conhecimento e as habilidades de que você precisa para começar a usar o Edge Impulse na placa XIAO nRF52840 Sense. Então, vamos mergulhar e começar!
Primeiros Passos
Neste wiki, vamos mostrar como utilizar o acelerômetro no Seeed Studio XIAO nRF52840 Sense combinado com o Edge Impulse para habilitar o reconhecimento de movimento. Os códigos que apresentamos aqui são suportados pela versão mais recente das Seeed nRF52 Boards.
Quando se trata de aplicações de IA embarcada, recomendamos fortemente usar a "Seeed nrf52 mbed-enabled Boards Library".
Hardware
Neste wiki, precisamos preparar os seguintes materiais:
- Seeed Studio XIAO nRF52840 Sense
- Bateria Li-po (702025)
- Grove - OLED Display 0.66"
- Cabos Dupont ou cabos Grove
- Carcaça impressa em 3D
- Fibra plástica de guia de luz

Configuração de Hardware
-
Passo 1. Remova a base Grove do Grove - OLED Display 0.66" com um ferro de solda
-
Passo 2. Use alicates de corte para cortar os cabos DuPont em um comprimento de cerca de 3 cm e exponha cerca de 2 mm dos fios internos em ambas as extremidades
-
Passo 3. Passe a fibra pelo pequeno furo na frente e posicione a extremidade no LED
-
Passo 4. Solde o Seeed Studio XIAO nRF52840 Sense com os outros elementos de acordo com o diagrama abaixo:


Será melhor se você usar adesivo de cola quente para reforçar as soldas.
-
Passo 5. Monte todos os componentes:
- Passe a fibra pelo pequeno furo na parte frontal da carcaça
- Prenda a tela na posição fixa
- Posicione a bateria entre o Seeed Studio XIAO nRF52840 e a tela
- Manuseie os fios com cuidado
- Coloque a extremidade da fibra plástica guia de luz na luz RGB do Seeed Studio XIAO nRF52840 e corte o excesso
- Monte a caixa

A unidade montada:

Software
As bibliotecas necessárias estão listadas abaixo. É altamente recomendável usar os códigos daqui para verificar se o hardware está funcionando bem. Se você tiver problema ao instalar a biblioteca, consulte aqui.
Para configurar o Seeed Studio XIAO nRF52840 Sense no Edge Impulse, você precisará instalar o seguinte software:
- Node.js v12 ou superior.
- Arduino CLI
- O Edge Impulse CLI e um monitor serial. Instale abrindo o prompt de comando ou terminal e execute:
npm install -g edge-impulse-cli
Problemas ao instalar o CLI? Verifique Installation and troubleshooting para mais referência.
Conectando ao Edge Impulse
Com todo o software instalado, é hora de conectar a placa de desenvolvimento ao Edge Impulse.
- Passo 1. Conecte o Seeed Studio XIAO nRF52840 Sense ao seu computador via um cabo USB Tipo-C.

- Passo 2. Crie um novo projeto no Edge Impulse

- Passo 3. Escolha "Accelerometer data" e clique em "Let’s get started!"

Aquisição de Dados e Treinamento
Nesta etapa, estamos tentando coletar os "Accelerometer data" do IMU onboard do Seeed Studio XIAO nRF52840 Sense para construir um conjunto de dados e depois treinar o modelo com a plataforma EdgeImpulse.
- Passo 4. Faça o upload do sketch "Accelerometer Raw Data" para o Seeed Studio XIAO nRF52840 Sense.
Download Seeed_Arduino_LSM6DS3 Library como um arquivo zip

Abra o Arduino IDE, navegue até Sketch > Include Library > Add .ZIP Library... e abra o arquivo zip baixado.

Envie os códigos abaixo e abra o Serial Monitor
// 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);
}
}
Agora você verá os dados do acelerômetro e do giroscópio exibidos um após o outro no monitor serial como abaixo!

- Passo 5. Execute o comando no seu
terminaloucmdoupowershellpara iniciá-lo.
edge-impulse-data-forwarder
- Passo 6. Precisamos usar o CLI para conectar o Seeed Studio XIAO nRF52840 Sense ao Edge Impulse. Primeiro, faça login na sua conta e escolha o seu projeto

Dê um nome ao acelerômetro e ao dispositivo.

- Passo 7. Conecte o XIAO nRF52840 Sense ao Edge Inpulse
Vá para a página "Data acquisition" do Edge Impulse, o resultado deve ser como este se a conexão for bem-sucedida. Você pode encontrar o dispositivo "Seeed Studio XIAO nRF52840 Sense" mostrado à direita da página.
- Passo 8. Selecione o sensor como "3 axes". Nomeie seu rótulo como
upedown, modifique Sample length (ms.) para 20000 e clique em start sampling.

- Passo 9. Balance o Seeed Studio XIAO nRF52840 Sense para cima e para baixo e mantenha o movimento por 20 segundos. Você pode ver que a aquisição é mostrada assim:

- Passo 10. Divida os dados clicando nos dados brutos no canto superior direito e escolhendo "Split Sample". Clique em +Add Segment e depois clique no gráfico. Repita isso mais de 20 vezes para adicionar segmentos. Clique em Split e você verá os dados de amostra, cada um por 1 segundo.

- Passo 11. Repita o Passo 8. e o Passo 9. e rotule os dados com nomes diferentes para marcar diferentes dados de movimento, como
lefteright,clockwise,anticlockwisee assim por diante. O exemplo fornecido está classificando cima e baixo, esquerda e direita, e círculo. Você pode alterar isso conforme desejar aqui.

No Passo 9, o tempo de divisão é de 1 segundo, o que significa que você deve fazer pelo menos um movimento de cima para baixo em um segundo no Passo 8. Caso contrário, os resultados não serão precisos. Enquanto isso, você pode ajustar o tempo de divisão de acordo com a sua própria velocidade de movimento.
Construindo um modelo de machine learning
- Passo 12. Reequilibre o conjunto de dados. Clique em Dashboard e role a página para baixo para encontrar Perform train / test split
Clique em Perform train / test split, escolha Yes e confirme

- Passo 13. Criar Impulse
Clique em Create impulse -> Adicione um bloco de processamento -> Escolha Spectral Analysis -> Adicione um bloco de aprendizado -> Escolha Classification (Keras) -> Salve o Impulse

- Passo 14. Spectral features
Clique e configure

Clique em Spectral features -> Role a página para baixo e clique em Save parameters -> Clique em Generate features

A página de saída deve ser assim:

- Passo 15. Treinando seu modelo
Clique em NN Classifier -> Clique em Start training -> Escolha Unoptimized (float32)

A precisão do modelo de treinamento é muito importante para o resultado final. Se os resultados de treinamento de saída forem tão baixos quanto menos de 65%, recomendamos fortemente que você treine mais vezes.
Implantando no Seeed Studio XIAO nRF52840 Sense
- Passo 16. Teste do modelo
Clique em Model testing -> Clique em Classify all

Se a sua precisão estiver baixa, você pode verificar o conjunto de dados aumentando o conjunto de treinamento e estendendo o tempo de amostragem
- Passo 17. Construir biblioteca Arduino
Clique em Deployment -> Clique em Arduino Library -> Clique em Build -> Baixe o arquivo .ZIP

- Passo 18. O nome do arquivo .ZIP é muito importante, ele é definido como o nome do seu projeto do Edge Impulse por padrão. Como aqui, o nome do projeto é "XIAO-BLE-gestures_inferencing". Selecione o arquivo como ""Add the ".ZIP file" to your Arduino libraries


- Passo 19. Baixe o código aqui. Altere o nome do seu arquivo de cabeçalho para o nome do seu próprio e faça o upload.

- Passo 20. Mova ou segure o Seeed Studio XIAO nRF52840 Sense e verifique os resultados:
Clique no monitor no canto superior direito do Arduino.

Quando você move o Seeed Studio XIAO nRF52840 Sense na direção esquerda e direita:
O monitor exibirá algo como:

E a tela de saída é assim:

Quando você move o Seeed Studio XIAO nRF52840 Sense na direção cima e baixo:
O monitor exibirá algo como:

E a tela de saída é assim:

Quando você segura o Seeed Studio XIAO nRF52840 Sense em estado ocioso:
O monitor exibirá algo como:

E a tela de saída é assim:

Parabéns! Você chegou ao fim do projeto. É encorajado que você tente mais direções e verifique qual delas terá a melhor saída.
Recursos
Suporte Técnico & Discussão sobre o Produto
Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja o mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.