Close
0%
0%

keezyboost40

A low-profile ortholinear board with an LCD screen running on Rust

Similar projects worth following
4x10 ortholinear with an LCD in the middle. Uses the Raspberry Pi Pico, as well as Rust firmware. With the right firmware, is capable of games, GUIs, animations, and more.

This project is open source, so all up to date source files, instructions, and documentation can be found on my Github!: https://github.com/ChrisChrisLoLo/keezyboost40

Features
- Low Profile
    - Keyboard is around 16.5mm thick, keys and keycaps included
- 1.8" LCD Screen
    - Ample real estate for animations, UI, games(?), etc.
- Uses the Raspberry Pi Pico
    - 2MB of flash storage
        - Lots of room for programming with MicroPython, or room for graphics and code
- Parts readily available
    - Only SMD parts required are diodes and kailh choc hotswap sockets
- Uses Rust firmware
    - This alone gets people excited??
    - Uses Keyberon as the firmware base, allowing for a "modular" firmware that can easily be built upon
    - More details can be found in DESIGN.md in Github

Big thank you to PCBWay for sponsoring the PCB for this project. I'm happy with their service, and I think the quality of their boards are superb. I'm very happy with both the silkscreen and solder mask quality, and recommend them to anyone who wants to print their own PCB.

keezyboost40 v15.stl

Current iteration of the keezyboost40 case at time of writing

Standard Tesselated Geometry - 184.26 kB - 08/18/2022 at 23:38

Download

keezyboost40 v15.step

Source files for the current iteration of the keezyboost40 case at time of writing

step - 83.26 kB - 08/18/2022 at 23:38

Download

  • 1 × PCB Electronic Components / Misc. Electronic Components
  • 40 × Choc Switches
  • 40 × LL4148 SMD Diodes
  • 1 × 1.8" ST7735 TFT
  • 1 × Raspberry Pi Pico

View all 10 components

  • Motivation and Design

    Christian Lo08/18/2022 at 23:43 0 comments

    Motive and inspiration

    I really wanted to play around with low choc profile switches in an ortholinear board, and I wanted to see if the portability of a low profile board would be more convinient than my other current boards.

    The three big inspirations (among many others) for this design were the Ghoul, the Technik, the Lumberjack.

    The keezyboost40 has the microcontroller in the center, which allows me to fit a microcontroller onto the board without gaining any additional height that would come with, say, soldering the microcontroller under the board.

    The acrylic screen and the LCD help make use of the realestate made by having the microcontroller in the center.

    Part choice

    I found that generally speaking, the parts I picked generally complemented each other, somewhat by accident.
    I initially picked the rapsberry pi pico over a pro micro due to its lower cost and castelated pins, which I was hoping to use to make the board low profile. However the pico took up considerably more space than the pro-micro. To make use of the real estate, I wanted to do what the Ghoul did, and make use of an LCD screen in the middle. This turned out to be a great compliment, as the large amount of computing power and pins required by the LCD were easily satisfied by the pico. Due to the large amount of pins of the pico, no IO expander or the like is required to have a display _and_ a standard key matrix. This combination of large display and powerful (compared to the ATMega line, at least) microcontroller opens up the door to different kinds of software, UI, and games. I'm excited as this board, on paper, should be capable of doing more things that wasn't previously feasible with a typical OLED and pro-micro. Some ideas I had in mind includes making games or even some sort of tamagotchi program.

    Firmware design choice

    This is arguably where I'm the most torn (and most likely to garner criticism from an online stranger), though this isn't necessarily a one way door either. I needed a firmware that could perform keybaord duties, display to an LCD, as well as be extensible enough that I can comfortably write user programs on top of it. QMK certainly ticks the first box, and thanks to the work of tzarc, writing to a SPI LCD display like mine should be doable with Quantum Painter. My bigger concern with QMK was extensibility (though I'm sure there's some QMK experts who would disagree). To me, I wasn't fully confident that QMK would always have what I need, especially for something like a tamagotchi game (clocks? interrupts? writing to flash? potentially using the pico's second core? There might be a good answer for all of these with QMK, but I didn't like the fact that it feels like I need to / should rely on the constructs and functions that it offers). I could be wrong about most of this QMK stuff, so constructive conversation is welcome.

    The biggest appeals to using a Rust based firmware with the keyberon library was the idea that it felt like I was in control of the firmware, and that if there was any problem that I hit with the RP2040 or with the libraries/framework, that I could go into the code and directly fix it myself, rather than having to work in a monolithic structure of sorts. I also like that I could work with a language that has some of the niceities that came with high level languages of the past, as well as a language that can stop me from causing a whole class of bugs. From my limited experience with it, it's a lot more fun programming with it than with C, by a fair margin. Best of all, it's easy to add a library or add a new task to the RTOS if I ever decide to do something esoteric by keyboard standards.

    PCB cutout design choice

    For the most part, the PCB is fairly bog-standard. An interesting design choice, of note, however, was the use of having a giant cutout for the pico in the middle of the board. The point of it is so that you can have the pico face down on top of the PCB _and_ be able to access the reset...

    Read more »

View project log

  • 1
    General Tools

    For the best experience, at the minimum, I suggest a decent soldering iron, flux, wire cutters, and a pair of tweezers to hold/move the SMD parts. I use lead-free solder for generally philosophical reasons, though many do claim that using lead solder is easier to work with. Hot air stations are likely very nice too, though I haven't used one personally.

  • 2
    PCB Assembly

    Firstly, solder the diodes onto the board. You want the black bar (cathode) on the diode to face down for rows 1,2, and 3. For row 4, you will want the diodes to face up. This may change in future iterations. Once done I like to wiggle the diodes gently with my tweezers to see if there's any loose connections. Don't be too rough, or you may tear off a pad!

    After that, you will want to solder the hotswap sockets on. Don't worry if the solder from the socket touches the solder from the diode: it's positioned in a way where this isn't a problem.

    Then, you'll want to solder the Raspberry pico on the board. You'll have to be fairly careful with this step. You want the "front" of the pico to lay down on the "front" PCB such that reset button is facing downwards, and the diodes and sockets are downwards. The pico should also be resting on top of the PCB, so that the PCB sandwich roughly looks like pico -> PCB -> diodes/sockets. From there, solder the pico onto the board using the castellated pins. Using headers with the pico will almost certainly lead to interference with the LCD screen. Solder one corner of the pico to position it, and then an opposite to secure it once the positioning looks good.

    Generally speaking, you'll want to test the connections before going further. You'll want to flash the pico with your firmware of choice, and then test all of the keys to confirm that they work. You can do this by shorting the hotswap sockets.

    After that, you'll then want to solder on the LCD display. You can keep the pin headers on, though you will need to clip off the SD card with a pair of wire cutters. We do this as the there is no room to utilize the SD card reader, and leaving it on leads to interference. You'll want to clip around the traces of the SD card to free it. Once clipped off, you'll want to tape the entire backside of the display to cover the pokey bits, as well as the conductive bits that could potentially short with the pico below it. After that, put the TFT onto the board and solder the header pins in place. I suggest securing the TFT down with tape or prop it up with a small piece of foam to minimize it moving around during the soldering process.

    Once you have soldered that on, you're now done with the PCB!

  • 3
    Board assembly

    The assembly of the case/board is fairly simple.

    Assuming you have an acrylic screen, you'll want to make the following "sandwich" with your long 12mm M2 screw: screw head -> acrylic piece -> M2 spacer (goes right through it) -> PCB -> M2 nut. This will effectively secure the acrylic piece to the PCB.

    Afterwards, screw the PCB to the case with the following "sandwich": screw head -> bottom of case -> PCB -> M2 nut

    Once done, put on your switches and keycaps, and you're done!

View all 3 instructions

Enjoy this project?

Share

Discussions

powiadam.ci wrote 09/15/2022 at 06:20 point

meybe put power inside and add clock

on bottom puting trackball (i hate it but in this layout is neccesary)

on up screen put knob or potenciometer (circle) for change volume or using menu in center screen

very good idea and hardware

  Are you sure? yes | no

M Conrad wrote 09/14/2022 at 18:26 point

I'm really intrigued by the Rust firmware.  I know that is one of the great potentials of Rust, but I haven't looked at it yet.  How was the maturity of Keyberon? Does it feel as polished and ready for prime-time as Arduino?  Can it protect against mis-use of the low level 8-bit registers that have to be read in specific ways?  Does it understand the complexities of interrupt handlers?

  Are you sure? yes | no

Tom Nardi wrote 09/14/2022 at 04:35 point

I know this is intended to be a keyboard, but I'd really like to see some applications built into the firmware so it could operate independently of a computer. Like a simple text editor that would let you take notes on the go, or a serial terminal emulator that let you hook up to other devices.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates