Get duckyPad | Official Discord | Getting Started | Table of Contents
This guide is for duckyPad V2, BOM is here. A video with build process is here.
A newer version with kailh hot-swap sockets and reverse-mount RGB LED is currently under prototype testing. It features a few different components and proper front and back acrylic plates. More information will be added once testings are done. Files for this new version is here, BOM is here.
Here are some things to keep in mind if you're making one yourself:
The board is a simple 2-layer board. Don't forget the cutout for the OLED screen in the milling layer!
Getting a stencil is highly recommended, because the RGB LED used here WILL melt if you try to hand-solder. It's best to use a stencil and then reflow it in an oven.
Speaking of which...
The RGB LED is the trusty WS2812 that's thrown into every single RGB project these days, except it isn't. What I used is SK6812, a compatible clone with allegedly better performance. It is also the smaller 3535 package, not the regular 5050 kind, so make sure to get the right part.
I haven't tested WS2812 with the design, it should work on paper, but I suggest just get some 3535 SK6812 and be done with it.
Careful with the orientation while placing them! Look at the PCB photo above for details.
In theory you can use any cherry MX style switches you like, however, because there are backlights underneath, it's best if you can find one that lets the light shine through.
I used Gateron RGB switches, they are perfectly designed for this kind of usage, translucent case with a large opening for LED. I used greens but there are other colors to choose from as well.
A switch plate is strongly recommended, to improve stability and even out the backlight. I used a laser-cut white 2mm acrylic plate.
I used a 1.3 inch OLED display from aliexpress. Make sure the connector is 30pin FPC with 0.5mm pin spacing
.
Note that the FPC connector used here is upper-contact variant. Here are some sample listings (illustration purpose only, you don't have to buy from them):
https://www.aliexpress.com/item/32950730252.html
https://www.aliexpress.com/item/4000350633981.html
Datasheet:
I bought some blank R4 keycaps, just make sure they don't block the backlight.
Search USB 16p
on aliexpress for the connector. Should look like this:
Datasheet:
Try searching 3X4X2.5MM White Tactile Button
on aliexpress.
Should look like this:
To prevent OLED ribbon cable snagging on things, tape it down to the back of the circuit board.
Remember to make sure the entire board is working before you solder the switches in place, otherwise it would be almost impossible to get them off again.
The microcontroller used here is a STM32F072C8T6. It costs less than a dollar, has more peripherals, pins, and is faster than any old Aduinos. ST provides a free Keil MDK license for all F0 parts, and there are also completely open source toolchains like arm-gcc.
One interesting design detail is the RGB LED. The WS2812(and its clones) requires a rather high data rate, and Arduino library achieve this by bitbanging in assembly. However the ARM processor in STM32 have some funky pipeline and caches, making asm timing somewhat unreliable. As a result I used SPI for LED control. By selecting the right speed and the right data on the MISO line, you can have the waveform look exactly like what WS2812 requires. In this case sending 0xf8 at 8MHz is bit 1, and sending 0xc0 results in a bit 0. Since SPI is also used by SD card, an AND gate is added to insulate the LED data line when SD card is active.
Common issues / Troubleshooting
Firmware Updates and Version History
Kickstarter Backer Acknowledgments
Please feel free to open an issue, ask in the official duckyPad discord, DM me on discord dekuNukem#6998
, or email dekuNukem
@gmail
.com
for inquires.