I Over-Engineered a Fast Fourier Transform for Arduino

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Build time-series-based applications quickly and at scale.
  • SonarLint - Clean code begins in your IDE with SonarLint
  • SaaSHub - Software Alternatives and Reviews
  • esp-who

    Face detection and recognition framework

    I guess, but it’s also pretty open code these days now that the S3’s LX7 has some nice vector extensions and other additions for ML applications :)


    It’s not out of reach for hobbyists, I think, though getting it to run very well might be. And I would certainly tell anyone interested to start with something more powerful first!

  • PlatformIO

    A professional collaborative platform for embedded development :alien:

    Probably not, unless you're willing to stretch the definition of 'real time' or 'image'. The classic Arduino Uno processor aka the ATMega328 does about 1 million 8-bit instructions per second per MHz of clock[0]; the Uno iirc has a 8mhz crystal. Even for the contrived example of a 1MP webcam that outputs uint8 grayscale values, you'd only be able to read it at about 8 frames per second, max, much less do anything with it. If you limited yourself to 64x64 boolean images, maybe; you could probably run a simple NN to categorize MNIST examples or do blob detection.

    If you want to mess around with image processing within the realm of the Arduino framework, you could pick up a super cheap ESP32-CAM dev board [1], which has a small camera and a dual core microprocessor with much less anemic specs. You can of course program it using the Arduino IDE or, as I prefer doing it, using PlatformIO [2] which is a CLI tool and VSCode extension that allows you to use the [Arduino, ZephyrRTOS, mbed] framework with a zillion different dev boards and architectures.

    [0]: https://en.m.wikipedia.org/wiki/ATmega328

    [1]: https://www.amazon.com/HiLetgo-ESP32-CAM-Development-Bluetoo...

    [2]: https://platformio.org/

  • InfluxDB

    Build time-series-based applications quickly and at scale.. InfluxDB is the Time Series Platform where developers build real-time applications for analytics, IoT and cloud-native services. Easy to start, it is available in the cloud or on-premises.

  • TeensyEyes

    Based on adafruit/Uncanny_Eyes, M4_Eyes, and mjs513/GC9A01A_t3n

  • pico

    A minimalistic framework for real-time object detection (with a pre-trained face detector) (by nenadmarkus)

  • slttblep

    Stupid Lookup Table Tricks, implementing a PolyBLEP oscillator

    The oscillator bit is, but I don't appear to have uploaded the one with the filter which I will need to find.


    The filter is just an SVF with, with a precomputed expo scale "bent over" at the top to correct for quantisation. From that the two SVF coefficients ω/Q and ω*Q are calculated every time there's a control update and of course because you can't divide on an Arduino it uses a lookup table of reciprocals. I could probably use a "wider" table of 16-bit values for better precision.

  • SonarLint

    Clean code begins in your IDE with SonarLint. Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts