MH Embedded Systems Engineer

Arduino Signal Processing

Summary

Many signal-processing libraries focus on FFT and frequency-domain manipulations. Although this is very powerful, it is also computationally intensive and is difficult to do real-time. This computation is doubled if you want to get the signal back to the time-domain. On the other hand, realtime filtering libraries don't seem to go far enough. Most of them only do first and second-order filters.

This library was created for 32-bit Arduinos because the 8-bit AVR cores do not handle floating-point well. If you need filtering on AVR I have a FIR filter kernel using fixed-point arithmetic, written in assembly but callable from C.

Features

This project has two pieces: a filter design script (written in Python), and several filter kernels (written in C++). The idea is to design the filter from the comfort of your PC before deploying to Arduino. Because of the limited processing of most Arduino platforms, this approach was taken to maximize performance.

You can find the source code on GitHub at https://github.com/kamocat/DSPlite