Meet the BluePhage Express, a Bluetooth keyboard controller for use with CircuitPython/KMK, QMK, and ZMK

Here’s a new Bluetooth controller I made that can replace a Pro Micro, but has plenty of nice extra features to take things to the next level. It uses the same NRF52840 chip that has begun to proliferate all over for use with with these sorts of keyboard microcontrollers.

There are two primary things that set this particular controller apart from the rest: it has a small 2MB SPI Flash chip onboard for program memory. This makes this particular board excellent for use with CircuitPython and the KMK framework, a new firmware that makes it extremely fast and easy to change anything about your keyboard. It also makes it extremely easy to add new modules and ways to interfact with your devices - if you can edit a text file, you can change keymaps, layers, and whatever you want in a flash.

The other significant piece is that this board has a built-in fuel gauge and battery monitoring chip. Most battery-powered controllers use a simple resistor divider to determine how much battery power you have left. The problem with this is while simple, it really isn’t all that accurate. This dedicated low power onboard monitor allows you to get more information about your battery - it can be calibrated for different battery sizes, and be programmed to do nifty things like notify you when you get to a low battery percentage (of your own choosing).

Of course, this controller also has a few other niceties - lithium ion battery charging as per usual, a 5V buffer that allows you to drive addressable RGB LED’s, the ability to control your 3V output with a GPIO pin, and a low profile USB-C connector. This board is a little bit longer than a Pro Micro (about 5mm) but also breaks out 4x additional GPIO pins compared to a regular Pro Micro. One of those GPIO will output at the 5V USB level or the battery voltage level, whichever is higher.

While this is compatible with the various BLE QMK forks and the ZMK framework, it isn’t really designed for that - using CircuitPython is just so much easier than setting up a whole development environment( and that’s coming from someone ostensibly experienced with this stuff!). It has a pretty strong community, and I’d like to continue that. I wanted to do something different from the original BluePhage and the various other NRF52 controllers that have proliferated in the last little while.

CircuitPython isn’t the be-all end-all though, support for low power devices in it is still in its infancy. With that said, if you really wanted low power and low latency, you probably wouldn’t even be (or dare I say, shouldn’t be) using BLE in the first place - you’d be better off with something like a Centromere or Zygote keyboard if that were the case.


awesome work, this looks substantially preferable to the Nice! nano IMO, however as you state the dongled wireless connection options are much better than bluetooth, no chance of making a stand alone controller with dongle?

It is very nice!

Did you had it open source it on plan to do it in the future ?
You are the second guy I see in this forum that embraces CircuitPython for keyboard firmware, and talks about KMK.
I now really want to dig in python programming keyboards just to see how it works and its convenience !