here's a noob question, I am trying to build a controller for the Olympic double trap shooting sport. This means activing 2 of 3 target throwing machines whenever a shooter calls PULL in the microphone placed in front of him. There are 5 stations, each has its own microphone, my Python code knows which station the shooter is standing on, how would I connect 5 microphones to the GPIO so that my Python program only activates the microphone where the shooter is standing and leaves the other 4 microphones off. Also what would I need between the microphone and the GPIO to change the PULL audio command to an activate signal that emulates a button press.

Kind regards


I've made the presumption that there is only ever one active shooter at a time. Introducing multiple shooters would substantially increase the difficulty.

The mics that you've referenced (goodness me those are expensive things!*) have, as far as I can tell from the manufacturer's deeply unhelpful website, a simple 2 pin connection. That being the case you should be able to use something similar to the 'Keyes Microphone Sound Detection Sensor' board. This comes with a 2 pin microphone soldered to the board. Desolder this and replace it with the lead to your microphone, or a suitable socket that you can plug the mic into. Repeat with all 5 mics.

The digital output level for the sensor is 5V. This is too high for the Pi's 3.3V GPIO pins, and may cause a magic smoke release. You can use something like the Adafruit 8-channel Bi-directional Logic Level Converter to convert the 5V output down to a safe 3.3V.

Connect each D0 output pin on the sensor board to a 5V pin on the logic level converter. Connect each corresponding 3.3V pin to a Pi GPIO pin.

You adjust the sensitivity threshold of the audio sensor boards using a small screw on the top. When the audio level at a microphone crosses this threshold, the output from the corresponding sensor board is driven high (5V). The logic level converter converts this to 3.3V and outputs it to a GPIO pin. Use Python to create some kind of association between stands and pins. If stand [x] is in use, listen to GPIO pin [x]. When it goes high you stop listening to the pin, fire your clay, wait for a second or two till the racket dies away, then start listening to the pin again for the next 'PULL'.

*Gadzooks those are expensive microphones. If it were me, I'd experiment with something like these EKULIT EMY-6027P/N-R-42 IP67 rated cheap things, possibly in a plastic cone to reduce off-axis audio from leaking in.

  • Your assumption is correct, as in, a squad consists of six shooters and everyone takes their turn to shoot, one shooter at a time. My Python code knows what station's turn it is to shoot. Many thanks for the help, exactly the info I was looking for.
    – Shalimar
    Feb 16 '16 at 4:06
  • Instead of connecting the mics directly to the sound detection circuit I intend to connect female guitar jacks to the circuit board, so I can attach them to the controller box, and connect the mics to male guitar pickup jacks, which I can then attach to the outside of the controller box.
    – Shalimar
    Feb 16 '16 at 4:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.