The MonkeyListen project uses the NXP (Freescale) FRDM-K20D50 development board (which has a Cortex M4 core with DSP instructions) with the FRDM-OLED shield so you can make your very own spectrum analyzer display . The end result will be a functional DSP system that will analyze incoming audio content via an electret microphone on FRDM-OLED board and display the spectral content. The example code will also show you how to plot time-domain data (a simple audio scope!), Frequency domain data (via an FFT), and a time-frequency plot (spectrogram). Some of the skills you can develop with this project include:
- Spectral analysis via the Fast Fourier Transform
- OLED display interfacing
- Electret microphone Interfacing
- Soldering SOIC8 and 1206 surface mount devices
- ARM Cortex CMSIS DSP Library
The project comes with several hours of video lectures and demonstrations. The videos contains the "behind the scenes" info delivered in an easy to swallow form to get you started. All of the videos are organized on a Youtube playlist: H.I.T. #2: MonkeyListen - YouTube
- MonkeyListen WatchMe1st
- MonkeyListen Demo: Time Domain + FFT Mode
- MonkeyListen Demo: Spectrogram Mode
- Spectral Analysis for Embedded Systems Part 1 & Part 2
- Getting Started with the ARM CMSIS DSP FFT library
- Introduction to Fixed Point Math for Embedded Systems Part 1, 2 and 3
- The q31_t (Q.31) number format for the CMSIS DSP libraries
Here are some quick demonstrations:
FFT + Time Domain Mode
The project uses a FRDM-OLED shield (which is what you get in the CircuitMaker project!) and was designed for the FRDM-K20D50. With a little bit of porting, it can be easily used with other FRDM boards that use the M4 core such as the FRDM-K64F or K22F.
Main features of the FRDM-OLED:
- Newhaven NHD-2.7-12864UCY3 128x64 pixel graphic OLED Display
- Electret microphone interface with gain control
- RS-485 Interface for doing cool things like driving a DMX lighting system.
- General purpose I/O (I/O is shared with A/D pins so you could make your own scope!)
- 4 push buttons
You can order raw PCBs yourself from OSHPark or your favorite PCB vendor. Everything you need to build the board is in the CircuitMaker project. Don't be afraid to do some surface mount soldering. There is plenty of good stuff on the web on how to do SMT soldering. All of the parts on the board are fairly simply once you get the hang of it and everything can be hand soldered The key is having some decent tools.
Materials / Build Tools
The example firmware is on Github:
This project was built with Codewarrior for microcontrollers (Special Edition)
You want this verion
Special Edition: CodeWarrior for Microcontrollers 10.6 (Eclipse, Offline)
If you fork the project and do something cool, make sure to document and share your results.