Close

First iteration: testing the hardware

A project log for Aloidia: wireless split solar powered keyboard

Aloidia is a staggered, split, fully wireless solar-powered mechanical keyboard with extremely long battery life.

nguyen-vincentNguyen Vincent 02/20/2023 at 21:170 Comments

After verifying that there were no shorts on the PCB (there weren't any, fortunately), I needed to tackle one of the hardest part of the project: the firmware. 

The keyboard uses the ZMK firmware, a wireless-first firmware based of the open-source RTOS Zephyr. It's a fairly new firmware, with very talented developers and a blooming community. 

As the microcontroller doesn't come with any bootloader, I had to compile and flash one myself to the MCU. For this, I used the Adafruit nRF52 UF2 bootloader. After creating my own board definition and compiling the bootloader .hex file in linux, the bootloader can simply be flashed to the board via its SWD header with a J-link.

Configuring the firmware is then pretty straightforward. Definining switch matrix, row-column transform, enabling DC-DC buck converter, crystals, merging PRs, setting up github actions, ... I won't get into too much detail here as it will get boring, but the takeaway is that most of the functions were working as intended.

However, after testing the firmware and assembling the board, I could detect a few mistakes on the board:

- I forgot to connect some traces to the dual-channel MOSFET for the user LEDs. Not critical but this means that I couldn't have any visual indicator when the board was in bootloader mode.

- Clearance for some of the cables was too narrow.

- Some components were too power-hungry, such as the LDO.

- The e-paper display presented a very noisy image when exposed to direct light.

- I forgot to place the 5.1k pulldown on the inner-side USB connector, which made it impossible to charge the battery when connected to a power bank (charging through the outer-side USB worked though).

- Forgot to enable via tenting.

Discussions