Automatic WS2812 Characterization

Now, over the course of more than a decade, I spent quite some time manually investigating WS2812 addressable RGB LEDs and their clones. Why not automate this?

The CH32V003 is ideally suited for this task, as it offers 5V compatibility and high resolution timers with DMA that can generate testing signals and evaluate the response. There are still some rough edges, but I will keep this as a quick hack for now.

Take a look at the full repository here and a high level summary of my findings here.

Candle Flame Oscillations as a Clock

Todays candles have been optimized for millenia not to flicker. But it turns out when we bundle three of them together, we can undo all of these optimizations and the resulting triplet will start to naturally oscillate. A fascinating fact is that the oscillation frequency is rather stable at ~9.9Hz as it mainly depends on gravity and diameter of the flame. 

We use a rather unusual approach based on a wire suspended in the flame, that can sense capacitance changes caused by the ionized gases in the flame, to detect this frequency and divide it down to 1Hz.

Continue reading “Candle Flame Oscillations as a Clock”

Implementing Neural Networks on the “10-cent” RISC-V MCU without Multiplier

I have been meaning for a while to establish a setup to implement neural network based algorithms on smaller microcontrollers. After reviewing existing solutions, I felt there is no solution that I really felt comfortable with. One obvious issue is that often flexibility is traded for overhead. As always, for a really optimized solution you have to roll your own. So I did. You can find the project here and a detailed writeup here.

It is always easier to work with a clear challenge: I picked the CH32V003 as my target platform. This is the smallest RISC-V microcontroller on the market right now, addressing a $0.10 price point. It sports 2kb of SRAM and 16kb of flash. It is somewhat unique in implementing the RV32EC instruction set architecture, which does not even support multiplications. In other words, for many purposes this controller is less capable than an Arduino UNO.

Continue reading “Implementing Neural Networks on the “10-cent” RISC-V MCU without Multiplier”