Doppler Speed Sensor Puts FFT And AGC To Work

Some people hate to revisit projects that are done and dusted. We get that; it’s a little like reading a book you’ve already read when there are so many others to choose from. But rereading a book sometimes reveals subtle nuances you missed the first time around, and revisiting projects can be much the same, as with this new and improved Doppler radar speed sensor.

We seem to have been remiss in writing up [Limpkin]’s last go-around with the CDM324 microwave module, a 24-GHz transceiver that you can pick up on the cheap from the usual sources, but we’ve featured this handy little module in plenty of other projects. [Limpkin]’s current project uses the same module to create a Doppler speed sensor, but with a little more sophistication all around. Whereas the original used a simple comparator to output a square wave that’s proportional to the Doppler shift and displayed the speed on a simple terminal session, version two takes a different tack.

First, [Limpkin] opted to implement the whole sensor in hardware. The front end is quite different — an op-amp with 84 dB of gain followed by an automatic gain control (AGC) stage built from a MAX9814 microphone preamp. Extraction of the speed from the module output is left to an STM32F301 running an FFT algorithm on the signal coming out of the analog circuit, which essentially picks out the biggest peak in the spectrum and calculates the Doppler shift from that, displaying the results on an LCD display.

Of course, as a [Limpkin] project, there’s a lot more to it than just that. The write-up is very detailed, going down a few enjoyable rabbit holes like characterizing the amplification chain and diving into the details of Johnson-Nyquist noise to chase down stray oscillations. There’s some great stuff here, and it’s well worth a deep read; there’s also the video below that lets you see (and hear) what’s going on.

Continue reading “Doppler Speed Sensor Puts FFT And AGC To Work”

A view of the inside of a car, with drivers wheel on the left and control panel in the middle, with red LED light displayed in the floor area under the drivers wheel and passenger side.

Bass Reactive LEDs For Your Car

[Stephen Carey] wanted to spruce up his car with sound reactive LEDs but couldn’t quite find the right project online. Instead, he wound up assembling a custom bass reactive LED display using an ESP32.

A schematic of the Bass LED reactive circuit, with an ESP32 on a breadboard connected to a KY-040 encoder module, a GY-MAX4466 microphone module and LED strips below.

The entirety of the build is minimal, consisting of a GY-MAX4466 electret microphone module, a KY-040 encoder for some user control and an ESP32 attached to a Neopixel strip. The only additional electronic parts are some passive resistors to limit current on the data lines and a capacitor for power line noise suppression. [Stephen] uses various enclosures from Thingiverse for the microphone, rotary encoder and ESP32 box to make sure all the modules are protected and accessible.

The magic, of course, is in the software, with the CircuitPythyon ulab library used to do the heavy lifting of creating the spectrogram and frequency filtering. [Stephen] has made the code is available on GitHub for those wanting to take a closer look.

It wasn’t very long ago that sound reactive LEDs used to be a heavy lift, requiring optimized FFT libraries or specialized components to do the spectrogram. With faster and cheaper microcontroller boards, we’re seeing many great projects, like the sensory bridge or Raspberry Pi driven LED spectrogram, that can now take spectrograms and Fourier transform calculations as basic infrastructure to build on top of them. We’re happy to see [Stephen] leverage the ESP32’s speed and various circuit Python libraries to create a very cool LED car hack.

Video after the break!

Continue reading “Bass Reactive LEDs For Your Car”

The Fastest Fourier Transform In The West

An interesting aspect of time-varying waveforms is that by using a trick called a Fourier Transform (FT), they can be represented as the sum of their underlying frequencies. This mathematical insight is extremely helpful when processing signals digitally, and allows a simpler way to implement frequency-dependent filtration in a digital system. [klafyvel] needed this capability for a project, so started researching the best method that would fit into an Arduino Uno. In an effort to understand exactly what was going on they have significantly improved on the code size, execution time and accuracy of the previous crown-wearer.

A complete real-time Fourier Transform is a resource-heavy operation that needs more than an Arduino Uno can offer, so faster approximations have been developed over the years that exchange absolute precision for speed and size. These are known as Fast Fourier Transforms (FFTs). [klafyvel] set upon diving deep into the mathematics involved, as well as some low-level programming techniques to figure out if the trade-offs offered in the existing solutions had been optimized. The results are impressive.

Fastest FFT code benchmarking results in ms
Benchmarking results showing speed of implementation versus the competition (ApproxFFT)

Not content with producing one new award-winning algorithm, what is documented on the blog is a masterclass in really understanding a problem and there are no less than four algorithms to choose from depending on how you rank the importance of execution speed, accuracy, code size or array size.

Along the way, we are treated to some great diversions into how to approximate floats by their exponents (French text), how to control, program and gather data from an Arduino using Julia, how to massively improve the speed of the code by using trigonometric identities and how to deal with overflows when the variables get too large. There is a lot to digest in here, but the explanations are very clear and peppered with code snippets to make it easier and if you have the time to read through, you’re sure to learn a lot!  The code is on GitHub here.

If you’re interested in FFTs, we’ve seen them before around these parts. Fill your boots with this link of tagged projects.

three sensory bridge audio spectrum analyzers, one in use with a lit LED array plugged in, the other facing the camera and leaning against the third, all on a table

The Sensory Bridge Is Your Path To A Desktop Rave

[Lixie Labs] are no strangers to creating many projects with LEDs or other displays. Now they’ve created a low latency music visualizer, called the Sensory Bridge, that creates gorgeous light shows from music.

The Sensory Bridge has the ability to update up to 128 RGB LEDs at 60 fps. The unit has an on-board MEMS microphone that picks up ambient music to produce the light show. The chip is an ESP32-S2 that does Fast Fourier Transform trickery to allow for real-time updates to the RGB array. The LED terminal supports the common WS2812B LED pinouts (5 V, GND, DATA). The Sensory Bridge also has an “accessory port” that can be used for hardware extensions, such as a base for their LED “Mini Mast”, a long RGB array PCB strip.

The unit is powered by a 5 V 2 A USB-C connector. Different knobs on the device adjust the brightness, microphone sensitivity and reactivity of the LED strip. One of the nicer features is its “noise calibration” that can record ambient sound and subtract off the background noise frequency components to give a cleaner music signal. The Sensory Bridge is still new and it looks like some of the features are yet to come, like WiFi communication, accessory port upgrades and 3.5 mm audio input to bypass the on-board microphone.

The stated goals of the Sensory Bridge are to provide an open, powerful and flexible platform. This can be seen with their commitment to releasing the project as open source hardware, providing firmware, PCB design files and even the case STLs under a libre/free license. Audio spectrum analyzers are a favorite of ours and we’ve seen many different iterations ranging from ones using Raspberry Pis to others use ESP32s.

Video after the break!

Continue reading “The Sensory Bridge Is Your Path To A Desktop Rave”

Teensy Spectrum Analyzer Has 170 Channels

While high-fidelity audio has come a long way in the past several decades, a lot of modern stereo equipment is still missing out on some of the old analog meters that were common on amplifiers and receivers of the 60s through the 80s. Things like VU meters don’t tend to be common anymore, but it is possible to build them back in to your sound system with the help of some microcontrollers. [Mark] shows us exactly how to reclaim some of the old-school functionality with this twin audio visualizer display.

Not only does this build include two displays, but the microcontroller is keeping up with 170 channels in real-time in order to drive the display. What’s more impressive is that it’s being done all on a Teensy 4.1. To help manage all of the data and keep the speed as fast as possible it uses external RAM soldered to the board, and a second Teensy audio board is used to do the real time FFT analysis. Most of the channels are sent to the display hosting the spectrum analyzer but two are reserved for left and right stereo VU meters on the second display.

The project from [Mark] is originally based on this software from [DIYLAB] so everything is open-source. While it was originally built for a specific piece of hardware, [Mark] has it set up with a line in and line out plus a microphone input so it can be used for virtually any audio hardware now. For another take on the classic VU meter, take a look at this design based on an Arudino instead.

Continue reading “Teensy Spectrum Analyzer Has 170 Channels”

Balancing A Motor With An Oscilloscope

With all things in life, one must seek to achieve balance. That may sound a little like New Age woo-woo, but if you think it’s not literally true, just try tolerating a washing machine with a single comforter on spin cycle, or driving a few miles on unbalanced tires.

Anything that rotates can quickly spin itself into shrapnel if it’s not properly balanced, and the DIY power tools in [Matthias Wandel]’s shop are no exception. Recent upgrades to his jointer have left the tool a bit noisy, so he’s exploring machine vibrations with this simple but clever setup. Using nothing but a cheap loudspeaker and an oscilloscope, [Matthias] was able to characterize vibrations in a small squirrel-cage blower — he wisely chose to start small to validate his method before diving into the potentially dangerous jointer. There was quite a lot to be learned from the complex waveforms coming back from the transducer, analysis of which was greatly helped by the scope’s spectrum analyzer function. The video below shows the process of probing various parts of the blower, differentiating spectral peaks due to electrical noise rather than vibration, and actually using the setup to dynamically balance the fan.

We’d rate this as yet another handy shop tip from [Matthias], and we’ll be looking out for the analysis of his jointer. Want to do the same but you don’t have an oscilloscope? No problem — an earbud and Audacity might be all you need.

Continue reading “Balancing A Motor With An Oscilloscope”

Stanislaw playing notes on his MIDI keyboard, with the LEDs on the LED strip lighting up right above the note he's playing, driven by the Raspberry Pi that runs a script based on the Pianolizer toolkit

Pianolizer Helps Your Musical Projects Distinguish Notes

[Stanislaw Pusep] has gifted us with the Pianolizer project – an easy-to-use toolkit for music exploration and visualization, an audio spectrum analyzer helping you turn sounds into piano notes. You can run his toolkit on a variety of different devices, from Raspberry Pi and PCs, to any browser-equipped device including smartphones, and use its note output however your heart desires. To show off his toolkit in action, he set it up on a Raspberry Pi, with Python code taking the note data and sending color information to the LED strip, displaying the notes in real time as he plays them on a MIDI keyboard! He also created a browser version that you can use with a microphone input or an audio file of your choosing, so you only need to open a webpage to play with this toolkit’s capabilities.

He took time to make sure you can build your projects with this toolkit’s help, providing usage instructions with command-line and Python examples, and even shared all the code used in the making of the demonstration video. Thanks to everything that he’s shared, now you can add piano note recognition to any project of yours! Pianolizer is a self-contained library implemented in JavaScript and C++ (which in turn compiles into WebAssembly), and the examples show how it can be used from Python or some other language.

[Stanislaw] also documented the principles behind the code, explaining how the note recognition does its magic in simple terms, yet giving many insights. We are used to Fast Fourier Transform (FFT) being our go-to approach for spectral analysis, aka, recognizing different frequencies in a stream of data. However, a general-purpose FFT algorithm is not as good for musical notes, since intervals between note frequencies become wider as frequency increases, and you need to do more work to distinguish the notes. In this toolkit, he used a Sliding Discrete Fourier Transform (SDFT) algorithm, and explains to us how he derived the parameters for it from musical note frequencies. In the end of the documentation, he also gives you a lot of useful references if you would like to explore this topic further!

What are you going to build with this? Maybe, a box that records you playing the flute and instantly turns it into sheet music? Or, perhaps, an AI that continues the song for you when you stop?

Continue reading “Pianolizer Helps Your Musical Projects Distinguish Notes”