Expert - DSP - Inteligência Artificial
Neste laboratório você utilizará a Raspberry Pi Pico W junto com o sensor MPU6050 IMU para classificar movimentos de um acelerômetro no espaço utilizando a plataforma Edge Impulse. Iremos treinar um modelo capaz de identificar os seguintes padrões de movimento:
- idle (parado)
- updown (cima-baixo)
- wave (acenando)
Ao final, seu dispositivo embarcado será capaz de fazer inferência local desses movimentos, sem necessidade de conexão com a internet.
TIP
Vocês devem utilizar os repositórios a seguir, utilize o lab-exp-dsp-ia-mpu-forwarder para fazer a captura dos dados da imu para o edge-impulse, e quando finalizar o laboratório e tiver gerado o modelo utilize o lab-exp-dsp-ia para deploy do seu modelo e teste, mais informações sobre como fazer isso a seguir.
Conceitos Importantes
Edge Computing
Edge Computing é uma arquitetura de TI onde os dados são processados o mais próximo possível da sua origem ("na borda"). Isso resulta em:
- Latência reduzida
- Menor tráfego de dados para a nuvem
- Maior confiabilidade e velocidade em aplicações críticas
"Uma fábrica moderna com 2.000 equipamentos pode gerar 2.200 terabytes de dados por mês. Processar esses dados localmente é mais rápido e econômico."
Fonte: RedHat - O que é Edge Computing?
Edge Impulse
O Edge Impulse é uma plataforma que ajuda desenvolvedores a criar modelos de machine learning para dispositivos embarcados de forma acessível e escalável.
Edge Impulse CLI
Ferramenta de linha de comando usada para configurar e conectar dispositivos ao Edge Impulse. Veja a documentação oficial.
Instalação
IMPORTANTE: Para instalar corretamente siga os passos descritos na documentação oficial. https://docs.edgeimpulse.com/docs/tools/edge-impulse-cli/cli-installation
Basicamente as etapas são:
- Criar uma conta no Edge Impulse.
- Python 3 instalado no computador.
- Instale Node.js v20 ou superior no computador.
Prática do Laboratório
Neste laboratório, você conectará o sensor MPU6050 à Raspberry Pi Pico W utilizando a interface I2C para capturar dados de movimento (aceleração e giroscópio). Esses dados serão enviados em tempo real ao Edge Impulse utilizando a ferramenta edge-impulse-data-forwarder. Com isso, será possível criar um conjunto de dados rotulado para treinar um modelo de classificação de movimentos diretamente na nuvem.
O modelo resultante será exportado como biblioteca C++ e incluído no firmware que será executado localmente na Pico W, permitindo inferência offline dos movimentos idle, updown e wave com indicação visual através de um LED RGB.
Projeto base recomendado:
Fluxo de trabalho:

Demonstração:
Detalhes Técnicos
- Clone os repositórios: https://github.com/insper-embarcados/lab-exp-dsp-ia-mpu-forwarder e o https://github.com/insper-embarcados/lab-exp-dsp-ia

- Carregue na placa o código base mpu-forwarder na Raspberry Pico. disponível no repositório com mesmo nome, deve ser utilizado para ler os dados da Pico W e encaminhá-los via serial.
- Vamos usar o edge-impulse-cli para enviar os dados da Pico W para o Edge Impulse, em um terminal, use o comando edge-impulse-data-forwarder.
- Leia a documentação do data forwarder
- Durante a coleta de dados, garanta que está em execução o código mpu-data-forwarder do repositório base
- No deploy, configure para exportar como biblioteca C++.
Entrega
O que deve ser entregue
- Modelo treinado com 3 classes: idle, wave, updown
- Projeto embarcado funcional com classificação local
- LED RGB indicando o estado classificado (pinos GP15, GP16, GP17)
- Frequência de amostragem: 62.5 Hz
- Os arquivos gerados no Edge Impulse que deverão ser incluídos no teu repositório clonado
lab-exp-dsp-iasão tflite-model, model-parameters e o edge-impulse-sdk, não inclua o restante para não desconfigurar o projeto. - Verifique no código onde está conectado os pinos SDA e SCL do módulo I2C.
Substituir bibliotecas no projeto lab-exp-dsp-ia:
- Inclua apenas: tflite-model, model-parameters, edge-impulse-sdk
- Substitua os arquivos do projeto base pelos do deploy no Edge Impulse

É necessário substituir esses arquivos do teu projeto que vieram por padrão pelo gerado na etapa de Deploy no site do Edge Impulse, esses arquivos juntos compõem o Output do seu modelo treinado, sendo eles essenciais para que sua aplicação funcione.
Referências:
https://www.redhat.com/pt-br/topics/edge-computing/what-is-edge-computing