I'm postponing and postponing this project. I think that now I got to a point where It's better to publish it to get some feedback.GH32 I2C KeyPad OR save the Teensies ...Why do we have to have the teensy uC inside the keyboard? There is any way to share the uC with several keyboards?
Poking into the ErgoDox project I saw that it already uses I2C into one of its sides so I figured it would be easy to change it in order to use I2C at both sides. Unfortunately the ErgoDox firmware is not based on Hasu's code and it still doesn't have any support for I2C.
Changing Hasu's code to get the I2C support and using only I2C to test the keyboard matrix we would be able to use only 4 wires, to cascade multiple keyboards (up to 7) and we would be able to share the same uC with these multiple keyboards!
Yes, I2C is slower than direct pin checking (as you can guess) but it is way flexible and it's easy to use (IMHO).
Something like this:
The teensy board (or any atmega32u4 board) could be installed inside one weight to hide it's ugly face:
My goals with this project:
- 1) It must be cheap, cheap enough to be sent to a fab house with less than 25 bucks per one whole keyboard (at least 60%)
- 2) Must be small
- 3) Must be simple, it should use through hole OR SMD components
- 4) Must be modular
- 5) Must be expandable
- 6) Must use NORMAL keycaps (1u, 1.5u for control keys and 2.75 space bar)
- 7) Must use Hasu's firmware, it will require modifications in order to use I2C
It must be done quickly - otherwise I'll ending up procrastinating more one project ...
The price goal is kinda self explanatory, price is always THE constraint in my pocket (I'm again talking about money? Gosh). The size of the PCB affects the price so I decided that one small PCB would be the better way to go. Simplicity is a must in order to solder the components then I decided to use double footprints into my PCB components (both through hole and SMD). The modularity goal is achieved with the multiple keypads itself.
My right hand layout:
My left hand layout:
points where will be led holes and resistors for status indication.
points where will be led holes to be jumped as you like (still deciding it).
This board will support up to 4 leds - I used all available MCP23017 pins.
- 1) Price
- 2) Size
- 3) Simplicity
- 4) I think it could be used as one complete open source "Keyboard Development Kit". My initial schematic can be changed in order to support your own layout
- 1) Maximum of 64 keys per keypad however the MCP23017 is a cheap IC, so so 1 dolar each
- The ErgoDox I2C communication
- The Cherry MX flippable switch footprint
- The uTron layout
- The expensive Genovation Control Pad 681
Parts List (BOM) per pad:
- 32x Cherry MX switches (you can drop a few if you like)
- 32x diodes
- 1x MCP23017 (I choose this IC because it's easy to get it worldwide)
- 2x TRRS 3.5mm jack female connectors (in and out respectively)
- 1x TRRS male/male cable
- 2x 10kohm resistors
The PCB until so far:
I quoted this PCB at seedstudio and I can get 10 boards by so so 50 bucks.
I would love to hear some ideas to add into this project (or to sub) ...