Push To Listen

One common thing to do is have music playing on the street for foot traffic to be able to listen in whilst watching the lights. Obviously they don’t have the comfort of sitting in their car and listening to a radio.

So we put speakers in the front garden, but the last thing the neighbours want is the same half an hour of music on repeat for 4 hours, every night for a month.

A push-to-listen function is the way to go – which is basically a button that people can press when walking past that gives them music for a certain amount of time. Many others will use a basic timer with a relay to switch the speakers on and off, but I am not others, and have to do it my own way.

This is my little design. A push to listen button has an inbuilt LED or lamp. This lamp is illuminated whenever the speaker is switched off , and the button is “able” to be pressed. Once the viewer presses the button, the light switches off, the amplifier turns on, and runs for 10 minutes (or any other pre-determined amount of time). There are then two trigger points, which I’ll call first and second warning. At the first warning, we enable the button again, to “reset” the timer back to 10 minutes. We also make the button blink slowly. At the second warning, we then make the button blink faster. And then finally once we hit the timer, we switch the amplifier off and turn the button lamp back on solid.

The majority of this work is all done in software using scripts designed to run with FPP. Two GPIOs are designated on an FPP instance, one for the input from the button to trigger the ‘button push’ script, and another which controls the blinking of the lamp. This is set up as a channel output, and uses an effect sequence for on, slow blink and fast blink, so it’s fully customisable using xLights.

Switching the amplifier on and off is integrated to my home automation. I use Clipsal CBus, with the amp plugged into a relay. In this use-case, I am sending MQTT commands to switch the amp on and off. With some minor changes, this could be done with a GPIO output and a relay. In my case, I am using network messages because of the distance between the two devices (and I didn’t need top build anything).

The schematic is really simple. Two parts to it – the first brings out power, ground and the GPIOs to a 5 pin XLR connector. Anything could be used here, I just had these spare. The second part connects the button to the GPIO, and has a FET triggered by the 3.3V GPIO to drive a higher voltage, higher current lamp. An IPP042N03L was chosen for this with it’s logic-level gate. A resistor ties the gate to ground to ensure no spurious triggering.

The final piece of the puzzle is the software. It’s up on GitHub – https://github.com/mjunek/pushToListenScript – with some instructions on how it works. Relatively basic shell scripting.

Hope someone finds it useful!

Leave a Reply

Your email address will not be published. Required fields are marked *