The definitive MIDI controller | This is not rocket science

Blameless amp

So you think you need Bluetooth audio…

You know the feeling, there’s this little project itching in the back of your mind, and as you procrastinate upon it, you realize just one part is missing.

It needs Bluetooth. The audio kind. It should play music from your phone. But you really don’t want to delve into antenna design and protocols just now… And it should sound good. Like, really good. How to go about that?

For me, the answer was in my pocket! I had been using one of these TaoTronics audio dongles for a while and the sound quality is great. So maybe I could just figure out which chip it is using, get one, and embed one into my project?

It’s a very simple device though. You press the “play” button for a second or two, the power comes on. You long press the play button again and it powers off. There’s a volume control, a microphone, and the play button… USB charging, and a battery… No need to make it complicated.

I don’t want to do this the hard way. I don’t want to deal with another complex IC and crazy datasheets.

How about I just use the dongle itself, without any modifications? It does everything I need. I could just take the sound out of it with a cable, the way it’s supposed to be used. But I don’t want a separate dongle, really. And I don’t want to keep on charging the battery constantly. Maybe I could hide it, just put one of those directly into my project! The size is right…

But I don’t need a battery at all. I’m going to have a proper power supply. And I can do better than whatever headphone amp is in that thing. I don’t need the buttons either, if it’s always on.

Time to crack it open and see what’s inside! (After ordering a second one for continued personal use – these are lovely devices.)

Long story short, after a little bit of probing, I could figure out how the battery and power button are wired. When power comes on, the dongle starts blinking two leds. I could “press” the power button with a transistor, and probe those leds to detect when the chip is alive to let go of the “button”. It did not take much time at all to write a piece of code on an NXP KL02z to control the dongle. A simple state machine would do.

It turns out that the chip in there has a rather neat, high quality differential audio output. It was AC-coupled to the internal headphone amp, so I replaced that with my own preamp circuit+antialiasing filter (just in case.)

It’s a bit of a crude hack. I removed the battery and power it with a regulator with roughly the right voltage. The board is literally just soldered on. OK, the audio DC bypass caps are a bit exaggerated perhaps, but it adds to the sound.

But it does the trick, and it does it marvellously!