An open API service indexing awesome lists of open source software.

https://github.com/mkj/pru-mic

8 fast digital MEMS microphones input to a Beaglebone
https://github.com/mkj/pru-mic

Last synced: about 1 year ago
JSON representation

8 fast digital MEMS microphones input to a Beaglebone

Awesome Lists containing this project

README

          

This project is 8 MEMS microphones input directly to a Beaglebone Black.

They each provide a 4mhz 1-bit PDM input stream, across 4 wires multiplexed on rising/falling clock signal.
The PDM microphone is a Knowles SPH0641LU4H

The project consists of

- pru/ - the bit-banging GPIO driver for the PDM input, which runs on the realtime PRU units of the beaglebone. pru/bulksamp4.dtsi has instructions for the devicetree.
- driver/ - a Linux kernel driver which presents /dev/bulksamp. Inputs are multiplexed bitwise, the 8 microphones each contribute a bit to a byte of input. I've tested on Debian 8.5 with 4.1.15-ti-rt-r43, the driver may require the [TI Processor SDK](http://www.ti.com/tool/PROCESSOR-SDK-AM335X) kernel rather than latest Debian.
- pdm/ - a Python program to decode PDM bitstreams to audio data. This uses Numba to perform fast PDM decoding with a Cascaded integrator–comb (CIC) filter. It also has some waveform plotting code. Tested with Python 3.5.
- bitex/ - a program to extract a single bitstream from /dev/bulksamp. This can be used to pipe a single microphone into the pdm program.
- circuit/ - basic pinout

The code works as a prototype, though there are likely some specifics of my personal setup that I've neglected to mention.

The pdm/ kernel driver is GPL licensed, the rest is MIT. See LICENSE.

Matt Johnston 2017 matt@ucc.asn.au

There are a few similar looking projects I've come across:

- http://bela.io/
- https://github.com/LCAV/CompactSix
- https://www.seeedstudio.com/ReSpeaker-Mic-Array-Far-field-w%2F-7-PDM-Microphones-p-2719.html