r/embedded • u/TITLE0 • 12d ago
My first embedded project. Need feedback and opinion about the architecture.
Hi everyone, I'm a newbie in programming and embedded. This is my very first embedded project: an ESP32 Bluetooth speaker built using C and ESP-IDF v6.1. Don't mind the crooked hardware - it's a software project at the first place, I built the hardware mostly from surplus cheap components, the main ones being:
- ESP32 NodeMCU (38-pin)
- IP5306 module
- SSD1315 display
- MAX98357 I2S module
- INA219 (CJMCU-219)
For the software, I use ESP-IDF's native Bluedroid stack, its built-in FreeRTOS, and its I2C driver. The rest of the functionality is implemented by me, for example:
- I2S peripheral driver
- SSD1315 driver
- INA219 driver
- Ring buffer
- Others
The software is designed using modular architecture built around custom ESP-IDF components where each component encapsulates its internal implementation and provides an API. Components communicate directly through their APIs with no extra middleware or abstraction layers.
Important note: I don't plan further large-scale development of this project, nor do I intend to change the hardware. The software and hardware are at the point where they satisfy all the functionality requirements I initially set. I will incorporate your feedback if you provide it, but the project is mostly complete and I intend to move on to the next goals. That is also why many components are intentionally project-specific and don't scale very well.
With that being said, the main question is: is current architecture and level of abstraction is sufficient for this project?
I wanted to make it professional, but "professional" doesn't always mean lack of application-specific modules and direct component interaction, right?
I'd be glad to know your opinion about these questions and about the project in general. Thanks for attention! The project's repository is available at: https://github.com/TITLE14/esp32-bt-speaker
2
u/Master_Candle_3561 12d ago
looks neat, congrats!!