Qwiic Sound Trigger

The Qwiic Sound Trigger is based on the VM1010 from Vesper Technologies and the TI PCA9536 GPIO expander.

The VM1010 is a clever little device which can be placed into a very low power "Wake On Sound" mode. When it detects a sound, it wakes up and pulls its TRIG (DOUT) pin high. The VM1010 can then be placed into "Normal" mode by pulling the MODE pin low; it then functions as a regular microphone. The analog microphone signal is available on the AUDIO (VOUT) pin. All of this happens really quickly, within 50 microseconds (much faster than a capacitive MEMS microphone), so you don't miss the start of the audio signal.

The noise threshold required to wake the VM1010 can be programmed via the resistance between pins GA1 and GA2. By default, the 20K resistor on the breakout sets the noise threshold to close to the minimum (most sensitive) setting. You can increase the threshold to maximum (least sensitive) by cutting the THRESH jumper. You can set it mid-way by adding your own resistor between breakout pins GA1 and GA2.

If you are using the VM1010 purely as a sound trigger, you need to reset it after each event by: pushing the MODE button; pulling the MODE breakout pin low; or using the Qwiic bus to instruct the PCA9536 to pull the MODE signal low (the VM1010 MODE signal is connected to GPIO0).

You can use the TRIG (DOUT) breakout pin to generate an interrupt on your microcontroller. Or you can read (poll) its state via the PCA9536 (the TRIG (DOUT) signal is connected to GPIO1).

There are two LEDs: one to indicate if the breakout is powered; and a second to show when a sound trigger has taken place. You can disable either or both LEDs to save power by cutting the LED jumpers on the back of the breakout.

As usual, the breakout includes I2C pull-up resistors. You can disable those if you need to by cutting the I2C jumpers.

Our GitHub Repo contains two example sketches for the Arduino IDE:

  • Example1 is a very simple example showing how to read the sound trigger TRIG signal via the PCA9536 GPIO1 pin and reset it via the MODE signal and GPIO2
  • Example2 is a more complex example showing how you can capture and log the rising edge of the sound event with nanosecond resolution using a ZED-F9P GNSS receiver

The Repo also contains Python code, described in our tutorials, which you can use to calculate the location of a sound in 1D or 2D!

The SparkFun Qwiic Connect System is an ecosystem of I2C sensors, actuators, shields and cables that make prototyping faster and less prone to error. All Qwiic-enabled boards use a common 1mm pitch, 4-pin JST connector. This reduces the amount of required PCB space, and polarized connections mean you can’t hook it up wrong.

Experimental Product: SparkX products are rapidly produced to bring you the most cutting edge technology as it becomes available. These products are tested but come with no guarantees. Live technical support is not available for SparkX products. Head on over to our forum for support or to ask a question.
  • Vesper Technologies VM1010
    • Piezoelectric MEMS microphone
    • ZeroPower ListeningTM: 300Hz - 6kHz
    • Min Acoustic Threshold: 65 dB SPL
    • Max Acoustic Threshold: 89 dB SPL
    • Start-up time: 50 microseconds
    • Dust and water resistant to IP57
    • Operating Temperature Range: -40 to +85 °C
    • Supply Voltage: 1.6VMin, 1.8VTyp, 3.6VMax
  • PCA9536 GPIO expander
    • I2C address: 0x41
    • Supply Voltage: 2.3VMin, 5.5VMax
    • Note: Qwiic bus operates at 3.3VMax
  • Breakout pads for:
    • I2C
    • DOUT / Trigger
    • MODE / Reset
    • Gain adjustment
    • Analog audio output
    • VOUT bias is 0.8V
  • Power LED
  • Trigger LED


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • Member #113783 / about 2 years ago / 1

    In a future rev, I would suggest making the gain resistor a variable resistor. Or at least keep the fixed resistor but add the SMT footprint pad so that someone can replace it with a variable resistor. The supplied 20K gain resistor provides hair trigger sensitivity,, e.g, a person talking normal voice across a room. I fear having to solder/unsolder lots of resistors to get the sensitivity that I want; Also, different use cases may require different sensitivities, so it will be a pain to change them out all the time.

    • PaulZC / about 2 years ago / 1

      Hi! Apologies for the very slow reply. You can change the sensitivity by: opening the THRESH jumper; adding your own resistor or potentiometer between the GA1 and GA2 breakout pads. Once you find the resistance that works for you, you can replace R5 and re-close the THRESH jumper. Best wishes, Paul.

  • erff / about 3 years ago / 1

    What does WoS jumper do?

    • PaulZC / about 2 years ago / 1

      Hi! Apologies for the very slow reply. The WoS jumper allows you to disconnect the pull-up resistor on the VM1010's Mode pin, making it default to microphone mode instead of Wake-on-Sound mode. I've added a link to the schematic in the DOCUMENTS tab (see above). I've also just realized I never made the tutorials for this board public. Sorry about that. I've added those too. Please see the buttons above and the DOCUMENTS tab. Best wishes, Paul.

Customer Reviews

No reviews yet.