The initial prototype was built using a Raspberry Pi Zero an Adafruit PiTFT and Speaker Bonnet plus some circuitry on a prototyping PCB. This works but had a range of serious drawbacks. For instance the Speaker Bonnet does not have a GPIO connected to the shutdown pin of the codex which leads to a nasty popping noise when changing tracks. I also required some circuitry to adapt the voltage levels of the rotary encoder to 3.3V, I also wanted a real time clock.

But most important: I have been an electrical engineer since 2008 but I have never designed a PCB this was my chance to learn electronic design!

DigitalRooster-Mk3b extension board

fully assembled PCB of DigitalRooster mk3b

The hardware design started in 2019. I was ordering PCBs and imagined hand assembly for the prototypes. Not only was the design unnecessarily complicated, it also had a pretty bad layout and I had to admit my soldering skills do more damage than good. Pcbway’s turnkey assembly was the way to go. However I still needed two iterations to get what I wanted. Probably an experienced electronics hardware engineer would find many possibilities for improvement, especially for layout and component costs. But I am happy so far. With the Mk3b I finally got the board I wanted.
I also think it is ready for mass production and to share it with you on tindie.com!


  • Three Channel audio using a 3W MAX98357A I2S driver. Since this IC is a Class-D amp I equipped the channels with passive LC filter to improve audio quality. The left/right channels have a cut-off frequency of around 20kHz while the mid channel filter is a 16kHz low-pass

  • a hardware shutdown line for the audio codecs so ‘off’ is really ‘off’ and there is no popping noise when changing tracks

  • A BQ32000 Real Time Clock chip with trickle-charge circuit that charges a 200mF Super-Cap. Although the software synchronizes time using NTP I wanted a Real Time Clock in case the network is down. Also having a the correct time during boot makes logging a lot more insightful and avoids TLS error for certificates that are not yet valid on Jan 1st of 1970…

  • A TLC59208F PWM LED driver for back-light control and a possible RGBA light to wake up with a sunrise simulation. The PWM pins on both Raspberry Pi and Banana-Pi are scarce an used for other functions, e.g. I2S. Software PWM is not really a nice option so I was willing to spend some 2.5$ for a nice I2C chip that integrates nicely with the Linux LED driver framework

  • Integrated circuitry for the Grayhill rotary encoder that requires voltage dividers and a debounce for the push button

  • The possibility to connect an external I2C device. I have a APDS9660 gesture and light sensor in mind for dynamic back-light control or gesture snooze.

  • Last but not least: a separate header for UART console since when assembled it is hard to access the UART of the Raspberry Pi.

The Mk3b is also compatible with both Raspberry Pi and Banana Pi M2 Zero. So you have a wider choice of more powerful hardware! However Banana Pi M2 Zero performance is sub-par. It takes ages for the display to react to touch events. I don’t consider the Banana Pi version production ready yet. The Raspberry Pi configuration works really nicely.

Note: The Mk3b-extension board is a module without independent function and is exclusively intended for development purposes under laboratory conditions. For use or operation specialist knowledge is required. Please also read the safety and environmental notes

For details please refer to the schematic-mk3b.pdf and the product mk3b landing page mk3b

Where to buy

Currently I am selling a kit that requires some soldering on tindie.com!

Other Parts

To build your DigitalRooster you will need some more parts in addition to the extension board:

I added links to digikey.com, but they serve only as reference you can get them wherever you like. I do not have any deal with Adafruit or digikey, I just use it because it is convenient.

The total cost is about 120 US$(on digikey) while the rotary encoder alone accounts for 25 US$. You can use different components but these are the ones I have successfully used so far.

If you find a nicer rotary-encoder with push-button that turns even smoother please let me know! I would like one that turns ‘notch-less’


I created a photo-sequence with some hints on how to assemble the electronic parts see the page assembly


3D CAD view of the Casing

The housing is printed on a Prusa MK3. You can find the STL-files here.
Make sure you scale the housing with about 0.5% so the side panels fit in otherwise you will have problems mounting.