🌟 Project Story

✨ What Inspired Me

This project was inspired by the idea that came from Thato Popotwane, who wanted a simple way to play music from one device across multiple Bluetooth speakers at the same time. I found the idea exciting because most devices only support connecting to one speaker, and I wanted to challenge myself to create a better solution.

📚 What I Learned

During this project, I learned how Bluetooth communication works at a deeper level, including device discovery, pairing, and handling unstable connections. I also improved my skills in HTML, CSS, JavaScript, and Python, especially in building a system where the frontend and backend work together smoothly. I also learned about audio latency and how to keep timing aligned, which introduced me to concepts like [ \text{latency_drift} = t_{\text{speaker}} - t_{\text{source}} ] and how to reduce or correct it.

🛠️ How I Built the Project

I built the entire project by myself. I used HTML, CSS, and JavaScript to design and build the user interface, making it simple to scan, connect, and control multiple speakers. I used Python to create the backend that handles Bluetooth connections and sends synchronized audio. The frontend sends commands to the backend, and the backend manages everything from pairing speakers to keeping the audio in sync. I tested the system on different devices to make sure everything worked properly.

⚠️ Challenges I Faced

One of the biggest challenges was Bluetooth instability—some speakers connect easily while others disconnect randomly. Keeping audio synchronized across multiple speakers was also difficult because each speaker has its own delay. I had to measure delays and adjust playback timing, sometimes calculating corrections like [ \Delta t = t_{\text{max}} - t_i ] to make all speakers play together. Another challenge was making the UI simple enough for anyone to use, even while the backend was doing complex work.

Share this project:

Updates