Category Archives: Projects


Saru48W+ Mechanical Keyboard

Saru48W+ Mechanical Keyboard

License: GPLv3

tags: ZMK

Status: Currently under development.

An ortholinear 13x4 hand-wired custom Mechanical Keyboard based on the nice!nano.

My third keyboard designed from scratch, this time with Bluetooth connectivity.

Components

  • 1x nice!nano (ZMK), USB-C and Bluetooth
  • 1x 3.7V 503040 600mAh LiPo battery
  • 48x switches
  • 1x EC11 encoder
  • 30x M2 5~6mm screws
  • 6x M2 nuts
  • 12x M2 10mm stand-offs
  • 2x M4 Low profile brass heat inserts
  • 2x M4 6~8mm Socket cap head screws
  • 1x micro switch (power)
  • 1x micro push button (bootsel, reset)
  • 3D printed case, plate, feet

Story

I wanted a more compact portable keyboard with Bluetooth connectivity and an encoder.
Different MCU, different firmware.

Keymap (dev)

Keymap

Repository

https://github.com/slabua/keyboards/tree/main/saru48wplus

3D Model

3D model of Saru48W+ rev1 also available on:
Onshape: [Link] (Coming Soon)
Thingiverse: https://www.thingiverse.com/thing:6428317
Printables: https://www.printables.com/model/717305-saru48w-rev1

Some photographs [More]

image

Build process [More]

image

CAD renders [More]

image


JeegVa44 ErgoZero Split Mechanical Keyboard

JeegVa44 ErgoZero Split Mechanical Keyboard

License: GPLv3

tags: Raspberry Pi RaspberryPi Raspberry Pi Pico RaspberryPiPico MicroPython

Status: COMPLETED.

A split hand-wired custom Mechanical Keyboard based on the Waveshare RP2040-Zero.

My second keyboard designed from scratch, this time split.

Components

  • 2x RP2040 (KMK on Waveshare RP2040-Zero), USB-C port
  • 44x switches
  • 2x TRRS breakout boards
  • 1x TRRS cable
  • 28x M2 5mm screws
  • 14x M2 10mm stand-offs
  • 4x M4 Low profile brass heat inserts
  • 4x M4 6~8mm Socket cap head screws
  • 8x 10mm Rubber feet
  • 46u Round hole female pin header
  • 3D printed case, plate, feet

Story

I wanted a portable split keyboard with a gentle vertical stagger, sixth column available and four thumb keys.
I also wanted to learn more about proper CAD design, so this time I ditched Blender and I designed everything from scratch in Onshape.

Keymap (dev)

Keymap

Repository

https://github.com/slabua/keyboards/tree/main/jeegva44ergozero

3D Model

3D model of JeegVa44 ErgoZero rev1 also available on:
Onshape: [Link]
Thingiverse: https://www.thingiverse.com/thing:5866262
Printables: https://www.printables.com/model/404303-jeegva44-ergozero-rev1

Some photographs and renders


AtreuSLB50+ Mechanical Keyboard

AtreuSLB50+ Mechanical Keyboard

License: GPLv3

tags: Raspberry Pi RaspberryPi Raspberry Pi Pico RaspberryPiPico MicroPython

Status: COMPLETED.

A hand-wired custom Mechanical Keyboard based on the Raspberry Pi Pico.

Finally I had the time to wrap up my little side project started about three months ago, and I thought to share it here. Although inspired by the Atreus, I couldn't quite find the right compromise among the non-split ergo keyboards, so I decided to make my own.

Components

  • 1x RP2040 (KMK on Raspberry Pi Pico), USB-C port
  • 50x switches
  • 1x SSD1306 128x64px 0.96in IIC OLED display
  • 2x EC11 rotary encoders
  • 1x EVQWGD001 rotary encoder
  • 1x Pimoroni IIC trackball breakout
  • 1x Active buzzer
  • 2x micro switches (bootsel, reset)
  • 3D printed case (5-10° tilt), plate, pcb

Story

The design started from a semi-automated customised process by forking an OpenSCAD hotswap pcb generator repository, subsequently heavily worked on Blender. I had also added cutouts for per-key rgb, but in the end I gave up the idea of hand wiring the LEDs. At least in this version which, for me, has been an insightful experience.
I am slowly finalising the firmware configuration and I will eventually put it on github as usual. Wiring diagram and key layout will come along later.

Keymap

[Coming Soon]

Repository

https://github.com/slabua/keyboards/tree/main/atreuslb50+

3D Model

3D model of AtreuSLB50+ rev1 also available on:
Thingiverse: https://www.thingiverse.com/thing:5458679
Printables: https://www.printables.com/model/262446-atreuslb50-rev1

Some photographs


Pico Motorcycle Dashboard

Pico Motorcycle Dashboard

tags: Raspberry Pi RaspberryPi Raspberry Pi Pico RaspberryPiPico MicroPython

Status: Currently under development.
https://github.com/slabua/PicoMotorcycleDashboard

A Motorcycle Dashboard based on the Raspberry Pi Pico and the Pimoroni Pico Display Pack.

Components

  • Raspberry Pi Pico
    • Main control board
  • Pico Display Pack
    • Input:
    • Button A
    • Button B
    • Button X
    • Button Y
    • Output:
    • 240x135 px IPS display
    • RGB LED
  • Sensors
    • Built-in temperature sensor
    • (internal ADC on pin 4)
    • DS18B20 Temperature sensor
    • (currently up to 3 in parallel)
  • Work in progress
    • Connection for Battery/Fuel/Rpm readings

Wiring Diagram

Breadboard - Full diagram

Breadboard

Breadboard - Display directly mounted on the back of the Pico (not shown)

Breadboard


Usage

Screens

Home

Home

  • A: Go to next (Battery) screen
    • If pressed again within 3 seconds,
      cycle through all the screens
  • B: Cycle Brightness presets
  • X: Select Multiple or Single Temperature mode
  • Y: If Multiple (*) or Single (**) Temperature mode:
    • Cycle Temperature sources (**)
    • Cycle bars style (*) (globally)
  • X+B: Cycle Colour palette
  • Y+B: Show Info scroll banner (hold)

Battery

Battery

  • A: Go to Home screen
  • B: Cycle Brightness presets
  • X: Continuous / Discrete battery representation
  • Y: Cycle Graphics style
  • Y+B: Show Info scroll banner (hold)

Fuel

Fuel

  • A: Go to Home screen
  • B: Cycle Brightness presets
  • X: -
  • Y: Cycle Bars style (globally)
  • Y+B: Show Info scroll banner (hold)

Temperature

Temperature

  • A: Go to Home screen
  • B: Cycle Brightness presets
  • X: Cycle Temperature sources
  • Y: Clear history for the current temperature source
  • Y+B: Show Info scroll banner (hold)

RPM

RPM

  • A: Go to Home screen
  • B: Cycle Brightness presets
  • X: Cycle Ramp style
  • Y: Cycle Bars style (globally)
  • Y+B: Show Info scroll banner (hold)

Stats

Stats

  • A: Go to Home screen
  • B: Cycle Brightness presets
  • X: Update Configuration file
  • Y: Reset uptime
  • X+B: Reset Configuration file
  • Y+B: Show Info scroll banner (hold)