AnthonyDiGirolamo / Teensy Thumb Keyboard
Projects that are alternatives of or similar to Teensy Thumb Keyboard
-
teensy-thumb-keyboard
Handheld tactile switch keyboard for Teensy 3.2 compatible boards.
- [[https://www.tindie.com/products/15575/][Teensy Thumb Keyboard - PCB only]] - Tindie product page and ordering
- [[https://hackaday.io/project/162281-teensy-thumb-keyboard][hackaday.io page]] - more photos, info and project logs
- [[https://www.thingiverse.com/thing:3209958][thingiverse 'HyperPixel 4 & Raspberry Pi 3 B+ Handheld' page]]
*** v1.1 Photo [[./images/v1.1_photo1.jpg]]
** Features
- 60 keys arranged in a 6x10 matrix (uses 16 pins on the microcontroller).
- Silkscreen has a qwerty layout with number keys arranged in a numpad.
- Lead free ENIG-RoHs surface finish with 2oz copper.
- SPI, I2C, and 2 additional GPIOs broken out.
- Each pin along the edge of the Teensy is connected to one extra pin in the prototyping area.
- Beginner friendly through hole soldering.
- Example Arduino sketch [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/tree/master/firmware][firmware]] provided. Additional details in the [[https://hackaday.io/project/162281-teensy-thumb-keyboard/log/156138-example-firmware-posted][Example Firmware Posted project log]].
- Layout is completely customizable in the firmware.
- [[https://github.com/qmk/qmk_firmware][qmk_firmware]] should also work however, I don't have an example running yet.
Three possible mounting options
- Teensy on the front, mounted right-side up, with usb port facing north.
- Teensy on the back, mounted upside down, with usb port facing north or south.
- Teensy on the back, mounted upside down, with usb port facing south. Note: Breakout pins will only work as expected with USB facing north.
** Parts list for a fully working keyboard
- 1x [[https://www.pjrc.com/store/teensy32.html][Teensy 3.2]] or [[https://www.pjrc.com/store/teensylc.html][Teensy LC]]. A [[https://www.tindie.com/products/TleraCorp/butterfly-stm32l433-development-board/][Butterfly STM32L433]] will also work (though not as a USB keyboard).
- 10x 1N4148 Zener Diodes
- 60x Panasonic EVQ-PAC04M Tacticle Switches. These are the quieter and higher quality switches. Some are available at [[https://www.digikey.com/products/en?keywords=EVQ-PAC04M][digikey]]. If you wish to use the 3d printed faceplate the overall switch height must be 4.3mm. These models will also work: EVQ-PAD04M EVQ-PAE04M EVQ-PAG04M. Otherwise any standard 6x6mm momentary switch will work.
** Ordering
- [[https://www.tindie.com/products/15575/][Teensy Thumb Keyboard - PCB only]] Tindie product page
- Ordering yourself from a PCB manufacturer:
- https://oshpark.com instructions: upload the [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/blob/master/hardware/v1.1/teensythumbboard.kicad_pcb][kicad pcb file]] file.
-
https://jlcpcb.com/quote instructions: upload the [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/blob/master/hardware/v1.1/plots/gerbers.zip][gerber.zip file]] The
settings I'd recommend are:
- Layers: 2
- Thickness: 1
- Surface finish: LeadFree HASL-RoHs or ENIG-RoHs (don't want lead on a board you may be typing on)
- Copper weight: 2oz (1oz is probably fine though, the heavier weight copper stands up better to repeated solder and desoldering I think)
- Everything else default settings.
** Cases
- Keyboard Faceplate [[https://a360.co/2QAJ0Qb][Fusion 360 Public Link]]
- Raspberry Pi 3 B+ & HyperPixel4 Handheld [[https://a360.co/2QzHvla][Fusion 360 Public Link]]
** Firmware
-
The layout for USB keyboarding is defined in the
usb_key_matrixvariable in [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/blob/master/firmware/LayoutThumbKeyboard.h#L109][LayoutThumbKeyboard.h]] -
If you don't need a USB keyboard and are rolling your own hardware project then you can focus on the layout defined by the
ascii_key_matrixvariable in [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/blob/master/firmware/LayoutThumbKeyboard.h#L74][LayoutThumbKeyboard.h]] -
There are three layers defined: base, shift, and Fn layers.
-
USB can be disabled by commenting out define
USE_TEENSY_USB_KEYBOARD. -
All the keyboardy goodness is handled by the
keyboard_update();function called from inside the standard Arduinoloop(). -
If you don't need the keys to behave like a keyboard you can gut most of that example and just use
key_matrix.update();The KeyboardMatrix class handles reading the button states. -
An alternative firmware option for a pure USB keyboard would be to run the excellent https://github.com/qmk/qmk_firmware.
*** Compiling on Windows machines
1. Using a Teensy 3.2 or Teensy LC follow these directions for downloading
and installing the teensyduino add-on to the Arduino environment:
https://www.pjrc.com/teensy/td_download.html
2. Once you have both installed. Launch the Arduino IDE and check what
version of teensyduino is installed by going to *Help > About
Arduino*. The about window for me shows *Arduino 1.8.9* in the upper left
and *Teensyduino 1.46* in the upper right.
3. Download the code archive from:
https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/archive/master.zip
4. Extract that folder and move the firmware folder to:
~C:\Users\anthony\Documents\Arduino\firmware~ Substitute "anthony" with
your username.
5. Rename the ~firmware~ folder to ~teensy32_thumb_keyboard~
The full path should be:
~C:\Users\anthony\Documents\Arduino\teensy32_thumb_keyboard~
And these files should exist inside there:
#+BEGIN_SRC text
KeyboardMatrix.cpp
KeyboardMatrix.h
LayoutAppleM0110a.h
LayoutCommon.h
LayoutThumbKeyboard.h
LinkedList.h
teensy32_thumb_keyboard.ino
#+END_SRC
6. Open
~C:\Users\anthony\Documents\Arduino\teensy32_thumb_keyboard\teensy32_thumb_keyboard.ino~
in the arduino IDE.
7. In the *Tools* menu select *USB Type > Serial + Keyboard + Mouse + Joystick*
8. Click the verify or upload buttons in the toolbar. If compilation is
successful you should see a message like:
#+BEGIN_SRC text
Sketch uses 27920 bytes (10%) of program storage space. Maximum is 262144 bytes.
Global variables use 6680 bytes (10%) of dynamic memory, leaving 58856 bytes for local variables. Maximum is 65536 bytes.
#+END_SRC
*** Uploading the firmware without compiling
If you don't wish to compile the firmware yourself you can use the
precompiled hex files provided in the [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/tree/master/firmware-compiled][firmware-compiled]] folder.
To get them loaded on a Teensy 3.2 or LC download and install the
[[https://www.pjrc.com/teensy/loader.html][Teensy Loader Application]] once installed plug in your teensy board and load
the correct firmware file:
- [[https://www.pjrc.com/store/teensy32.html][Teensy 3.2]]: ~teensy32_thumb_keyboard.ino-teensy32.hex~
- [[https://www.pjrc.com/store/teensylc.html][Teensy LC]]: ~teensy32_thumb_keyboard.ino-teensyLC.hex~
** Alternate Versions
- [[https://github.com/AnthonyDiGirolamo/i2c-thumb-keyboard][i2c-thumb-keyboard]]