Home

Awesome

PouetPouet

The firmware is Keyberon, a pure rust firmware.

The goal was:

PouetPouet Nyan PouetPouet PouetPouet closeup

Features

Inspiration

Usefull resources

Build log

Disclaimer: I'm a software developper, this is my first real PCB design and my first try at SMD soldering: do not take anything here for granted :)

The project started as a quick-hack of Keyseebee to make it simpler but ended up as a near full redesign. As every DIY project, the goal was to be quick and simple (spoiler: it was neither).

Half of the parts have been soldered with a soldering iron (TS80P), the other half with hot air station. Clearly, with my [un]existing soldering skills, the hot air is a huge win. But I think I would have simply spent more time by only using the iron. Even the small sod-323 diodes without the _handsoldering pads (mistake) were not a real problem (tricky, but even I could do it). For reference, I have soldered all SMD components for the second board under 2 hours with hot air.

Diodes soldering

The trickiest part is the USB connector if you don't have a hot air station: the plastic casing melts with the solder.

STm32 and Connector closeup

Layout

As a typematrix user, I really like the middle column with backspace/enter/del so naturaly I've tried to do something similar. The initial layout has only the % and w key at different locations: Typematrix-like layout

Typematrix comparison

You can also see how the LEDs are currently used. It's mostly useless/for fun. They may be used someday to measure typing speed or do something else, but in the meantime, they blink like this: <img src="images/useless-leds.gif"/>

Bill Of Materials

ItemPackageQtyRemarksPrice
PCB1aisler (by 3 mini)28.80€
100 nF08055aisler*0€
PRTR5V0U2X,215sot-1431aisler*0.43€
4.7 uF08052aisler*0€
470 Ohm08051aisler*0€
TLV70233DBVRsot-231aisler*0.37€
74LVC1G34GW,1251aisler*0.28€
0805L050WR (500mA Polyfuse)08051aisler*1.91€
RS282G05A3SMRT (micro switch)2aisler*1.26€
100nF08052aisler*0€
5.1 kOhm08053aisler*0€
0805L050WR (500mA Polyfuse)08051aisler*0€
1N4148WS-7-Fsod-32360rs-online (by 200)3.24€
WS2812B101€
USB TypeC HRO Receptacle1by 10 mini0.25€
Gateron Switch 5-pin60by 6515.24€
Blank DSA Keycaps60by 20015.6€
STM32F072CBT6LQFP4812.87€
-----------------------------------------------------------------------------------:------------------------------------------------
TPS2553DBVR-1PKG?1FIND??€
SK6812-MiniPGK?60+4FIND??€
100nF08052aisler*0€
9.1 kOhm08054aisler*0€
68 kOhm08056aisler*0€
2N7002SOT23-32FIND?€
100uF60321FIND??€

The total for 3 keyboard is 71.25€. Beware that some parts can't be ordered for the exact amount and you need to buy more (in particular, aisler won't do anything under 3 units, so you need to spend at least ~90€ for 3 PCBs).

*: Bought using magic match from Aisler. Some components are then «free» (resistor, capacitor) and some are not.

Compiling and flashing

Install the complete toolchain and utils:

curl https://sh.rustup.rs -sSf | sh
rustup target add thumbv6m-none-eabi
rustup component add llvm-tools-preview
cargo install cargo-binutils
sudo apt-get install dfu-util

Compile:

Do not omit the --release as the debug code will not fit in the memory (the linker will raise an error).

cd firmware
cargo objcopy --bin pouetpouet --release -- -O binary pouetpouet.bin

To flash using dfu-util, first put the board in dfu mode by pressing BOOT, pressing and releasing RESET and releasing BOOT. Then:

dfu-util -d 0483:df11 -a 0 -s 0x08000000:leave -D pouetpouet.bin

The fist time, if the write fail, your flash might be protected. To unprotect:

dfu-util -d 0483:df11 -a 0 -s 0x08000000:force:unprotect -D pouetpouet.bin