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:
- 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.
- C++
- Templates
- Classes abstratas
- Exceções
- Arquivos
- 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.
- Teste e verificação
- Testes unitários
- Testes de integração no hardware.
- 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.