I've just released an initial version of blink0, a PIC16F1454-based implementation of the Blink(1) device, on GitHub. It leverages my existing open-source PIC16F1454 bootloader.

The Blink(1) is a $30-$35 (US) device that plugs into a USB port and allows the host PC to change the color of its LED. I was inclined to laugh, but it raised over $130k (US) on Kickstarter for the first version and $108k (US) for the second.

The "mk2" version uses the PIC16F145x, the $1 (US) PIC that I've used in many projects. The total BOM cost can't be more than $2 (US)... cha-ching! ... but it does come in a fancy box. It uses the WS2812 Chinese-market addressable RGB LED.

The device is ostensibly open-source, but as it is based on the Microchip USB Framework, it is not genuinely so. The M-Stack USB stack from Signal 11 is open-source and a better choice.

Also, seeing as the device lacks a bootloader, it is decidedly unfriendly to the maker/hobbyist community as there is no direct way to modify/improve the firmware.

I cannot pretend to say anything nice about the source code for the Blink(1). It really rubs me the wrong way.

I come from the perspective that one should take pride in one's work, and I don't think that viewpoint is shared by the author of the Blink(1) firmware.

So, as an exercise I wrote alternate firmware from scratch and tried to do it properly. I kept it as simple as possible so that it could benefit other makers/hobbyists.

The Blink(1) firmware source code is a seemingly endless well of things to NOT do in firmware. In no particular order, here are a few:

.

back to main page contact