System Integration
This week focused on the integration and planning of all the different parts of the project ranging from: User Flow, Functionality, Design, Production, Testing, Failures. I have tried to decide and list as many fixed processes and features as possible.

User Flow
The user interaction with Symphoni begins by determining whether the NFC "record" has already been written with a Spotify playlist or track link. If a record has already been written, the user can simply place it on the Symphoni player. The embedded system reads the NFC tag, retrieves the Spotify link, and initiates playback through a connected Bluetooth speaker. Playback controls such as play/pause, skip, and volume adjustment can be handled directly through capacitive buttons or sliders integrated into the player's interface, offering a tactile and intuitive experience.

If the record is blank or unwritten, the user must first open the Spotify app on their mobile device and locate the desired track, album, or playlist. They can then either copy the share link or use Spotify's “Share to App” feature to send it directly to the Symphoni companion Flutter app. Within the app interface, the user pastes or confirms the link and then writes it to the NFC record by bringing it close to the phone. Once the record is written, it is ready for use and can be placed on the player to function as described earlier.
This simple flow bridges the digital and physical worlds—turning Spotify playlists into tangible objects that trigger music playback through physical interaction. The system is designed to be modular and user-friendly, with potential expansion features like magnetic levitation for visual appeal and a multifunctional display unit that may also serve as a wireless charging dock for smartphones.
Functionality Diagram
The Symphoni system is architected around two main subsystems: the primary device and the Bluetooth speaker module, both coordinated via ESP32 WROOM microcontrollers. The central device integrates a rotary encoder that serves as a mode selector, an NFC tag reader/writer to read records, a DC motor for motion (potentially for rotation or levitation), and an SPI TFT display for visual feedback. These components are managed by an ESP32 WROOM, which acts as the main controller of the hardware unit. A Flutter mobile app interfaces with this system via HTTP requests, allowing users to write playlist data to NFC records and send control commands to the player.

The Bluetooth speaker module is designed to receive audio data from the mobile or any spotify connect device. It is equipped with a Bluetooth receiver and an audio amplifier, which are also controlled by an ESP32 WROOM. This module can be powered independently or through the main device, depending on the design choices made during the development phase.
On the speaker side, another ESP32 WROOM handles audio playback and user inputs. It receives control signals from physical buttons (for previous, play/pause, next, and input selection) and a volume control encoder. Audio output is handled via an I2S DAC that feeds into an amplifier and subsequently a speaker, delivering high-quality sound. The two ESP32 modules communicate wirelessly to synchronize playback and control operations, enabling a seamless and interactive user experience that bridges mobile app control, physical interaction, and digital music playback.
Schedule
The schedule for the project is divided into three main phases: Conceptual, Detailed, and Final. The first phase focuses on defining the core features and user experience, including NFC integration and basic audio playback. The second phase involves detailed design and prototyping, including the modular display and wireless charging capabilities. The final phase will focus on testing, refinement, and preparing for production.

Bill of Materials
Item | Quantity | Price | Link |
---|---|---|---|
PCM5102 I2S DAC - 3.5mm Stereo Out | 1 | 500 | hubtronics |
TPA3116D2 Audio Dual Channel Stereo Digital Amplifier Board | 1 | 417 | Robu |
8 Ohm Speakers | 2 | ||
Sliding Adjustable Potentiometer Module 10k | 3 | 120 | Robu |
Rotary Encoder Module | 1 | 50 | Robu |
ESP32-WROOM-32 | 1 | 500 | Robu |
Item | Quantity | Price | Link |
---|---|---|---|
ESP32-WROOM-32 | 1 | 500 | Robu |
RC522 Module with RFID Card and Tag | 1 | 285 | Amazon |
Rotary Encoder Module | 1 | 50 | Robu |
DC Motor | 1 | ||
2.2' SPI TFT Display | 1 | 800 | Robu |
Mechanical Switch Buttons | 4 | ||
WS2812B LEDs | 10 | ||
Power Management |