Here is a comprehensive build guide for R2/R3 duckboard, written by doodboard
last update - July/6th/2021
- prerequisites
- components
- flashing
- LEDs
- diodes
- hotswap sockets
- ProMicro
- rotary encoder
- top plate
- OLED
- assembly
You may also want to read the FAQs.
There are some items you will need in order to build your duckboard.
- A soldering iron that can operate at or below 300° Celsius (572° Fahrenheit).
- Solder to join the components to the PCB. The type of solder depends on your preference.
- A small Phillips screwdriver. Size 1 works, as does size 0.
- A willingness to do some soldering and assemble a duckboard!
- Tweezers for gripping the small components.
- Some kind of desoldering tool, such as a solder wick (aka desoldering braid) or solder sucker (aka desoldering pump). This will be extremely helpful in case you make small mistakes along the way. Check out the tools in this Wikipedia article for more information.
- Flux for certain techniques and making your job easier.
- Wire cutters that are flush-cutting. Flush-cutting is preferred as this will make it easier to get the cuts you need.
- If you want to customize the firmware, you will likely need to learn more about QMK. Please check out the QMK documentation as that is out of scope of this tutorial.
- If you are newer to soldering, you may want to check out a guide like the Adafruit Guide To Excellent Soldering. This will help create good solder joints and identify and address common soldering problems.
Label | Part name | Part quantity | Possible replacement (if needed) |
---|---|---|---|
a | Diode | 22 | 1N4148 THT Diode |
b | M2 16mm bolts | 4 | |
b | M2 nuts | 4 | |
b | Short standoffs | 4 | h: 4mm |
b | Long standoffs | 4 | h: 6mm |
c | LEDs | 8 | SK6812 3535 Mini (search Aliexpress) |
d | Hotswap sockets | 21 | Kailh hotswap sockets |
e | Encoder knob | 1 | |
f | Rotary encoder | 1 | EC-11 Encoder |
g | Top plate | 1 | |
h | PCB | 1 | |
i | Bottom plate | 1 | |
j | Pro Micro | 1 | |
k | OLED | 1 | .91” 128px x 32px OLED (some may not work. BUY AT YOUR OWN RISK) |
Label | Part name | Part quantity |
---|---|---|
l | Acrylics top plate | 1 |
m | Acrylics plate | 1 |
n | Acrylics boundary (small holes) | 1 |
o | Acrylics boundary (big holes) | 1 |
p | Acrylics bottom plate | 1 |
Label | Part name | Part quantity |
---|---|---|
q | M3 16mm bolt | 4 |
r | M3 insert nuts | 4 |
You can download the hex file for R2/R3 duckboard here
If you wish to compile your own hex file, you can grab the source code here
You can grab QMK toolbox from here
If you wish to use VIA, download the hex file for R2 duckboard (R3 duckboard can use R2 firmware) here
- confirm you have downloaded and opened the right HEX file on qmk toolbox
- MCU should be set to "atmega32u4"
- check Auto-Flash
Plug in your pro micro, and if it doesn't flash automatically, short GND to RST on pro micro twice, fast.
Use a tweezer or pliers or anything else conductive.
You should see the following if everything went successfully.
The LEDs are SMD, meaning they are surface mounted as opposed to through hole mounted. Therefore, using flux is highly recommended as it helps solder to flow under the LEDs far more easily. I personally prefer flux paste, as opposed to flux pens, but it's up to personal preference.
LEDs provide underglow to the duckboard. If you find it too frustrating, it's alright to forego the LEDs.
It won't affect the core functionality of duckboard as a macropad
LEDs should be positioned as shown above, the small black square inside the LED should line up with the small circle on the PCB.
This is how I solder the LEDs.
- apply flux to both the PCB and the LED with a brush
- set the soldering iron to 300C to prevent burning out the LEDs
- place LED on the PCB. Make sure it's positioned** correctly** on the pads.
- apply a small amount of solder to the soldering iron
- make a short swiping motion perpendicular to the LED
- repeat for all 4 pads.
The finished solder joints should look like the photo above. You are aiming for the nice slope of solder, not a blob. Please make sure you only make contact with the iron for 2-3 seconds at a time. Longer exposure to heat can burn out the LED.
In the case that you burn through even the extra LEDs provided, model number is SK6812 3535 mini.
Nothing fancy here. Align the diodes as shown above, and solder them in. I recommend using flux, but it's not required. There are total of 22 diodes to install: 21 for the 21 switches, and 1 for the push function of rotary encoder.
If you plan to use stabilizers, pay extra attention to the diodes near stab housings. You should** clip the diode legs flush to the PCB** in order to prevent clearing issue.
Here is an up-close image of what a soldered diode looks like:
Again, nothing fancy here. Place the hotswap sockets into the PCB, following the guidelines.
If you prefer to solder your switches directly to the PCB, you can skip this process, and solder in the switches later after installing the top plate.
Depending on if you would like to use duckboard as full 1u macropad, or as standard numpad, you should solder your hotswap sockets accordingly.
Here is an up-close image of what a soldered hotswap socket looks like:
Again, I recommend using flux, but it's not required. Just makes your life a little easier.
a) Solder the legs to ProMicro. Note the longer side of the legs goes into the PCB
b) Solder the ProMicro to the PCB, and cut off the pins as much as you can, without damaging your solder joints.
After soldering and trimming the pins, your Pro Micro should be attached to your PCB similar to this:
Plug in your duckboard to your PC via MicroUSB cable. All 8 LEDs should light up by default. If only a few of them lights up, follow these steps:
Start working from LED_1. The signal line for LEDs are connected in serial to help you debugging. For example, if none of your LEDs light up, try reflowing LED_1. If LED_1, 2 and 3 light up, but not 4, try reflowing LED_3 and 4 until 4 lights up.
Default colour for LED is RED with default R2/R3 hex file. If some of your LEDs light up in different colour, it's due to corrupted signal caused by bad solder joints. If some of your LEDs work, but not in serial, so for instance LED_1, 2 and 8 light up, the same principle applies. Work on LED 2 and 3 until 3 lights up.
This is the schematic of the LED wiring for reference.
This is also the perfect time to test your keypresses. You can either plug in the switches to test the keystrokes, or manually short the hotswap sockets.
Default hex file for R2/R3 has OLED enabled. ProMicro awaits return signal from OLED. So until the display is installed, keypresses will be delayed, and you'll have to hold down each keypress a little bit longer for it to register.
To test without installing switches, short the blue circles if you have the hotswap sockets installed. Short the yello circles if you plan to solder the switches in directly.
If you have any issues, first make sure your LEDs and diodes are oriented right, then check your soldering joints to see if they all look OK. Here is a reference image in courtesy of adafruit.
No fancy tricks. Solder 7 spots circled above. Make sure the encoder is sitting flush to the PCB before you solder it. The two tabs in the middle are for structural purposes only. Apply solder generally. The thinner legs to the top and bottom are malleable. Bend them a little if they need to be in order to fit the PCB.
You can also install the encoder knob now. Align the small screw to the flat face of encoder shaft. Screw it in for stability.
Plug in the USB cable, and test rotation in both directions, and pressing the encoder shaft in. It should increase/decrease the volume, and mute/unmute your media player.
CLICK ME
Install stabilizers now before moving on if you wish to use them. For 2u switches, I personally prefer the tactility of not having stabs installed, but that's just my personal opinion.
Grab the acrylics plate labelled "l" and "m" above, and gauge where the OLED needs to be. Solder the OLED in place.
Then insert 4 x popnuts to the bottom 2 plates. Be gentle. If too tight, push it in with a hot soldering iron. Do not apply excessive force or the plate might crack.
Place the plate "m" on top of PCB. Slide the plate over the encoder. Note there is a small metal tab on the encoder. Manoeuvre around it.
If you just can't fit the plate over the metal tab, take a clean soldering iron to the area of acrylic plate in contact with the metal tab, and gently push it.
Your aim is to cleanly create a small gap for the metal tab to pass through.
Install your switches. The PCB is held in place by the hotswap sockets and the switches. The force of pressing the switches are transferred directly to the acrylic case.
Assemble with the rest of your acrylic plates and screw them in place. That's it, your are done. Install keycaps to your liking and type away!
Install stabilizers now before moving on if you wish to use them. For 2u switches, I personally prefer the tactility of not having stabs installed, but that's just my personal opinion. Place the 4 screws into the plate, and screw in the shorter standoffs. Then place the top plate onto the PCB, and screw in the longer standoffs. You may find it easier to hold the standoffs with pliers while screwing them in place.
Remove the black plastic from the OLED pins. Pull them out gently using your fingers or pliers if necessary.
Install the OLED in place. Make sure the OLED module is parallel to the top plate, and is positioned correctly before soldering into place.
Plug in the USB cable once again at this point and ensure everything checks out. If you chose to solder the switchs in directly, now is the time to do so.
Place the bottom plate in position and screw in the 4 x M2 nuts to finish off the build. Install switches and keycaps to your liking, and type away!
Here is the default keymap for reference.
Here is the pinout diagram for troubleshooting.
Thank you so much for coming along this journey! R4 is planned for JULY/AUGUST 2021, I hope to see you guys again, soon!
You can add your favourite stabilizers, switches, and keycaps! If you are interested in changing the default keymap or other functionality of the board, you may also want to learn about QMK and use the duckboard source code.