Este repositório contém o código e os dados para execução de aprendizado federado (Federated Learning) em dispositivos embarcados. É projetado para funcionar em conjunto com o servidor do projeto Atlantico, realizando tarefas locais de inferência, treinamento e envio de pesos.
atlantico-device-main/
├── platformio.ini # Configuração para o PlatformIO (ESP32, etc.)
├── data/ # Dados para treino/teste
├── data_ready/ # Dados particionados por dispositivo
├── datasets/ # Conjuntos de dados adicionais
├── include/
│ └── ModelUtil # Utilitários para manipulação de modelos neurais
├── src/
│ └── main.cpp # Ponto de entrada principal da aplicação
├── .vscode/ # Configurações do VSCode
└── single_app_partition.csv # Configuração de partição para o ESP32
- Execução local de inferência e treinamento de modelo.
- Manipulação de conjuntos de dados locais (
train/test). - Comunicação com servidor FL para envio e recebimento de pesos.
- Compatível com microcontroladores via PlatformIO (ex. ESP32).
- PlatformIO instalado (recomendado com VSCode)
- Ambiente de desenvolvimento (ex: VSCode ou algum fork)
- Placa de desenvolvimento compatível (ex: ESP32)
- Bibliotecas (instaladas automaticamente pelo PlatformIO):
- NeuralNetworks (3.1.7)
- ArduinoJson (v7.3.0+)
- PicoMQTT (v1.3.0+)
- Instale o PlatformIO e abra o projeto no VSCode.
- Conecte sua placa (ex: ESP32).
- Compile e carregue o firmware:
- Configure suas credenciais Wi-Fi e servidor MQTT:
- Abra o arquivo ModelUtil.h
- Localize e modifique as seguintes constantes
#define WIFI_SSID "sua-rede-wifi" #define WIFI_PASSWORD "sua-senha-wifi" #define MQTT_BROKER "endereco-do-broker" #define CLIENT_NAME "esp32-seu-dispositivo" - Configure a partição do dispositivo:
- O arquivo single_app_partition.csv já está configurado para utilizar 4MB de flash
- Ajuste conforme necessário para seu modelo específico de ESP32
- Prepare seus arquivos CSV para treinamento:
- Formato dos arquivos: CSV
x_train_0.csv: dados de entrada para treinamentoy_train_0.csv: rótulos (saídas desejadas) para treinamentox_test_0.csv: dados de entrada para teste/validação (planejado)y_test_0.csv: rótulos para teste/validação (planejado)
- Carregue os arquivos para o ESP32:
- Escolha a opção
Build Filesystem Imagepara construir a imagem do bootloader com as partições especificadas - Rode o comando
Upload Filesystem Imagepara aplicar as modificações e carregar os arquivos dentro da pastadata.
- Escolha a opção
- Compile o projeto escolhendo
Buildno PlatformIO ou rode:
pio run
- Carregue a aplicação rodando
Uploadou rode:
pio run --target upload
- (opcional) Monitore a saída do terminal rodando
Upload and Monitor(pule o passo 2) ou execute apenasMonitorou então rode:
pio device monitor
data/: Arquivos CSV com dados de treino e teste.data_ready/: Dados divididos por dispositivo (ex: device 0, device 1...).metrics/: Diretório opcional para salvar métricas de avaliação.tasks/: Representações visuais das tarefas do dispositivo.