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
- Host: GitHub
- URL: https://github.com/mkj/pru-mic
- Owner: mkj
- License: other
- Created: 2017-06-02T14:02:14.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2021-10-12T03:15:07.000Z (over 4 years ago)
- Last Synced: 2025-05-06T12:38:07.881Z (about 1 year ago)
- Language: C
- Homepage:
- Size: 795 KB
- Stars: 13
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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