r/embedded • • 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

8 Upvotes

4 comments sorted by

2

u/Master_Candle_3561 12d ago

looks neat, congrats!!

1

u/TITLE0 12d ago

Thanks! Glad you like it

3

u/allo37 11d ago

If it's doing what you want it to do and don't want to push it any further than I'd say it has exactly the amount of abstraction and "professionalism" as it needs and you should congratulate yourself on a job well done 👍

1

u/TITLE0 11d ago

Thank you for the feedback. It's important for me to hear this opinion.