EEL510265 – Programação de Sistemas Embarcados
EEL7323 – Programação C++ para Sistemas Embarcados

Projeto Final —2025/2

Professores Eduardo Augusto Bezerra e Anderson Spengler

Grupos: até 2 alunos
Liberdade: tema e kit à escolha (ESP32/ESP-IDF, STM32/HAL, SoC/FPGA com soft-core etc.)

Objetivo

Projetar e desenvolver um sistema embarcado funcional escrito em C++, demonstrando: orientação a objetos (classes, encapsulamento, herança/polimorfismo), estruturas de dados, tratamento de exceções (onde fizer sentido), templates, I/O e interação com SO/RTOS ou bare-metal, além de teste e verificação do software.


Requisitos mínimos

O projeto deve incluir:

  1. Arquitetura e OO
  • UML diagrama de classes do núcleo do sistema (≥ 5 classes).
  • Uso explícito de encapsulamento; pelo menos um exemplo de herança e polimorfismo.
  1. C++
  • Templates
  • Classes abstratas
  • Exceções
  • Arquivos
  1. Interação com hardware / SO
  • Pelo menos dois periféricos (ex.: I2C/SPI/UART/GPIO/ADC/PWM) ou um periférico + rede (Wi-Fi/Ethernet/LoRa/BT).
  • Agendamento: usar RTOS (ex.: FreeRTOS) ou justificar um loop cooperativo com temporização estável.
  • Drivers em C++ (camada de abstração do hardware) e separação entre camada de aplicação e HAL.
  1. Teste e verificação
  • Testes unitários
  • Testes de integração no hardware.
  1. Qualidade e documentação
  • README com instruções de build/flash, diagrama de blocos e requisitos.
  • Relatório curto (4–6 páginas): arquitetura, decisões de projeto, cobertura dos requisitos, resultados de testes/medições.
  • Vídeo demo (3–5 min): mostrar o sistema em execução.

Entregáveis e prazos

  • 05/11 – Proposta (1–2 páginas): objetivo, aplicação proposta, kit, periféricos, riscos.
  • 12/11 – Arquitetura: UML, diagrama de blocos, interfaces de classes, plano de testes.
  • 19/11 – drivers + comunicação funcionando; demo parcial.
  • 26/11 - Cada grupo terá 10 minutos para realizar a demonstração da implementação final em funcionamento. Execução de testes. Apresentação do relatório.
  • 03/12 – Entrega final no Moodle – código, relatório, e vídeo.

Avaliação

Critério Peso
Cobertura dos tópicos C++/OO (OO, templates, exceções, estruturas) 25%
Interação HW/SO (periféricos, RTOS ou agendador, drivers) 25%
Teste & verificação (unitário/integr., métricas e análise) 20%
Arquitetura & documentação (UML, organização, README/relatório) 20%
Demonstração (estabilidade, clareza, complexidade apropriada) 10%

Bônus (até +5 pts no total da dupla):

  • Portabilidade (rodar em 2 placas/ambientes), SoC/FPGA com soft-core, medição energética.

Exemplos de temas

  • Gateway sensor/atuador: coleta por I2C/SPI (ex.: IMU, temp), filtro simples, envio por MQTT/TCP/Serial; watchdog e logs.
  • Controle em malha fechada: PWM + leitura ADC, controlador PID em C++ (template), RTOS com prioridades e telemetria.
  • Datacom embarcado: framing/CRC, interleaving opcional, UART/LoRa, buffer circular.
  • SDR leve (se usarem PlutoSDR/RTL-SDR): pipeline de modulação/demod básica com perfil em C++.
  • SoC/FPGA + soft-core: IP de periférico simples + driver C++ no soft-CPU; foco em teste e verificação.

Regras de liberdade de kit

  • Livre escolha de placa/SDK (ESP-IDF, STM32Cube/HAL, Zephyr).
  • Justificar a escolha (periféricos disponíveis vs. requisitos).
  • Entrega deve compilar/reproduzir com instruções claras; se precisar de licença paga, oferecer alternativa gratuita para avaliação.

Política de integração e ética

  • Código majoritariamente autorais; pode-se usar libs open-source citando fonte/licença.
  • IA como apoio é permitida para ideias, não para substituir autoria; relatar uso.
  • Cada aluno deve conseguir explicar qualquer parte do projeto.