Skip to content
/ qalble Public

An Alice-like 35% 3d printed mechanical keyboard using ItsyBitsy dev boards

License

Notifications You must be signed in to change notification settings

somepin/qalble

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QALBLE

An ergo 35% 3d printed wireless mechanical keyboard, born from the thought of "Imagine QAZ but split like an Alice 😳"

The BLE is a misnomer since the keyboard can be wired or wireless depending on the ItsyBitsy microcontroller development board used.

QALBLE

Related Projects

QAL (handwire) - The original integrated plate handwired version.

Adalyn - Aesthetic top mount design featuring a PCB with an integrated microcontroller, by MarvFPV and tominabox1.

Project Structure

/case - STLs to print and STEPs for modification. The nonsplit case is untested, and the flat case only works with wired builds.

/firmware - ZMK and Vial-QMK firmware files.

/pcb - KiCad 6 files.

/img - Readme images.

The Releases page contains the gerbers for PCB production and the .uf2 file for Vial-QMK firmware flashing.

Components

The PCB is designed to be hand-soldered with no PCBA services required. Mouser links to components are included for convenience.

Part Quantity Notes
1N4148 Diodes (Through hole/SMD) 36 Either through hole or SMD SOD-123 diodes are supported
Adafruit ItsyBitsy nRF52840 1 Bluetooth module daughterboard
Adafruit LiIon/LiPoly Backpack 1 Charging circuit daughterboard
Adafruit LiPo Battery 3.7V 500mAh 1 Adafruit battery must be used due to LiIon/LiPoly Backpack JST connector polarity
EC11 Rotary Encoder 1 Optional, 15mm height is reccomended
Mill-Max Ultra Low Profile Sockets 1 Needed to socket ItsyBitsy/LiPo backpack and fit them into the case, P/N 315-47-164-41-003000
Mill-Max Machined IC Pins 31 Optional, can be substituted with trimmed diode legs, P/N 3320-0-00-15-00-00-03-0
MX Switches 35-36 Quantity depends on if an encoder is used
Slide Switch SPDT Right Angle 1 Power switch for Bluetooth

If going wired instead of wireless, an Adafruit ItsyBitsy RP2040 can be used instead of the ItsyBitsy nRF53840, and the LiIon/LiPoly Backpack, LiPo Battery, and Slide Switch would not be needed.

PCB Assembly Notes

The ItsyBitsy development board is socketed with the micro-usb port facing the top of the case. Ultra low profile Mill-Max sockets must be used for both the ItsyBitsy and LiPo Backpack so they can fit in the case.

If using a rotary encoder, it can be installed in either the left B or right B key position, but not both.

If building this keyboard wired, skip to Case Notes. The following is only for use with the ItsyBitsy nRF53840 to make a wireless keyboard.

When installing switches, clip the following 8 switches' pins flush to the PCB before soldering:

Switches to clip before soldering

This is done just so the switch pins have less risk of poking the battery underneath, as so:

Battery

I also taped over the flush switch pins and screws underneath, just in case.

When installing the LiPo Backpack the following modifications have to be made to use the power switch:

Lipo Backpack modifications

First, cut the trace in between BATA and BATB on the LiPo Backpack with a hobby knife. Then, solder short strips of wire from BATA and BATB on the backpack to the BATA and BATB jumper pads on the PCB.

!!! IMPORTANT !!!

The backpack can only be used with Adafruit batteries. Other batteries may have different voltage, chemistry, polarity or pinout. DO NOT plug in other batteries to the backpack's JST port.

Case Notes

The case is designed to be 3d printed and not machined by a CNC router.

Hardware

Printing

The case is printed at 0.2mm layer height with the flat faces of each piece face down on the print bed. Enable supports for the wedge piece(s) for the ItsyBitsy/Backpack/battery cavity. The nonsplit case should fit on at least a 250mm print bed, but it is untested. Otherwise, the split case was made to fit on a 150mm print bed.

Assembly

If using the split case, the pieces of the case top, bottom, and wedge are super glued together.

All 9 M3 heat set inserts are installed in the top section of the case. Install the heat set insert at the front of the case at your own discretion. The case wall is too thin around this heat set insert, so the plastic may melt and sag at this part.

After installing the heat set inserts, screw in the plate/PCB assembly into the top of the case. The bottom half of the case screws in to the wedge directly, without heat set inserts, so be careful to not overtighten and strip the plastic.

When attaching the case top with plate/PCB to the bottom/wedge, align it so that the ItsyBitsy and Lipo Backpack slot into their respective spaces and the power switch can poke through the hole. Also ensure that the battery fits in the case.

Finally, screw the case halves together.

Firmware

ZMK (Wireless - ItsyBitsy nRF53840)

Fork my ZMK config repo and edit the config/boards/shields/qalble/qalble.keymap file to customize your keymap. If this is your first time using ZMK, follow the ZMK Docs to get started.

Vial-QMK (Wired - ItsyBitsy RP2040)

Flash the somepin_qal_vial.uf2 file in Releases to the ItsyBitsy RP2040.

Manual Compilation

Use the rp2040-fix2 branch of vial-qmk.

Copy/paste the files in /firmware/vial-qmk to vial-qmk/keyboards/qal.

Compile via make in the top directory of the firmware after setting up your build environment:

make qal:vial

Flashing

First flash

While the ItsyBitsy is unsocketed and unplugged from the computer, hold down the SW/BOOT tactile switch when plugging it in to launch the bootloader. A new file explorer window will open, then drag and drop the corresponding .uf2 firmware file into the new window to flash.

Subsequent flashes

For wireless/ZMK, use the &bootloader keycode while the keyboard is switched off and plugged in to launch the bootloader.

For wired/QMK, use Bootmagic by holding the top-left most key (Q) while plugging the keyboard in to launch the bootloader.

Issues

  • The current hardware (ItsyBitsy nRF52840+LiPo Backpack) does not support getting the battery level in ZMK, so the battery will always appear fully charged in Windows despite it discharging

  • ZMK sometimes loses connection over bluetooth

    • I fix this by resetting the board via the power switch and quickly switching profiles
  • Vial configuration such as combos are lost

    • Backup Vial keymap (File > Save current layout...), reflash, then reload the keymap (File > Load saved layout...)