Author Topic: Custom Keyboard Project ...  (Read 12852 times)

0 Members and 1 Guest are viewing this topic.

Offline agodinhost

  • Thread Starter
  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
Custom Keyboard Project ...
« on: Tue, 25 June 2013, 18:13:52 »
I was kinda off looking for something about ergonomics and found this Russian forum:

http://www.yaplakal.com/forum2/st/0/topic571301.html
I don't know how to read Cyrillic neither Russian so I kept myself guessing and doing some google translation into a few parts of the text. There are some awesome pictures there. I'm right now wandering about this keyboard layout ...

The guy did an awesome job on his keyboard, It's cool - but it does not seems to be so ergonomic, mostly because of the littlefinger block area. I'm wrong?

I'm trying to figure out a way to improve his idea in order to split each keyboard side in smaller, symmetric PCB parts (it would reduce drastically the PCB fabrication price for hobbyists like me).

Well, my goal here is to get new ideas from you guys - to borrow your brains in order to produce something cool (while I'm not working on the GH60 BT - I do need something else to administrate my mood, please!)

More one Russian interesting link (just to keep up my research history up to date).
http://ibnteo.klava.org/tag/catboard
« Last Edit: Fri, 02 August 2013, 12:24:52 by agodinhost »
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline Findecanor

  • Posts: 5035
  • Location: Koriko

Offline agodinhost

  • Thread Starter
  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
« Last Edit: Fri, 30 August 2013, 09:45:44 by agodinhost »
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline agodinhost

  • Thread Starter
  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
Re: New Custom Keyboard Idea ...
« Reply #3 on: Wed, 31 July 2013, 14:27:11 »
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
- 8) 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:


The * points where will be led holes and resistors for status indication.
The * 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.

Pros:
- 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

Cons:
- 1) Maximum of 64 keys per keypad however the MCP23017 is a cheap IC, so so 1 dolar each

My influences:
- 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) ...

« Last Edit: Mon, 05 August 2013, 14:12:09 by agodinhost »
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline agodinhost

  • Thread Starter
  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
Re: Custom Keyboard Project ...
« Reply #4 on: Wed, 31 July 2013, 19:28:48 »
RESERVED
« Last Edit: Mon, 05 August 2013, 14:14:25 by agodinhost »
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline agodinhost

  • Thread Starter
  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
Re: Custom Keyboard Project ...
« Reply #5 on: Sun, 04 August 2013, 00:44:32 »
RESERVED2

bump ...
« Last Edit: Mon, 05 August 2013, 14:14:43 by agodinhost »
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline Binge

  • Island of Sandy Beaches
  • * Maker
  • Posts: 3269
  • Location: Binge Haüs
  • With Gentle Time. I Feel Very Nice.
    • Hunger Work Studio
Re: Custom Keyboard Project ...
« Reply #6 on: Sun, 04 August 2013, 01:08:28 »
I think you might have your hands reversed in a previous post?
60% keyboards, 100% of the time.

"What the hell Jimmy?!  It was ruined before you even put it up there with your decrepit fingers."

Offline gnubag

  • Posts: 509
  • Location: California, US
Re: Custom Keyboard Project ...
« Reply #7 on: Sun, 04 August 2013, 13:31:09 »
also your spacebar in your pcb sketch looks weird and there is a key missing in the bottom row (don't know if that is intended)

if you have a 2.75 spacebar there will be gaps around the keys also don't know if you really want that (looking at the chip).

making the bottom row is quite hard because of the chip and everything. there would be a gap between spacebar and the other keys.

Offline OldDataHands

  • Posts: 280
  • Location: Michigan
Re: Custom Keyboard Project ...
« Reply #8 on: Sun, 04 August 2013, 14:00:51 »
Looks like an interesting project.

Offset the columns vertically and I think you have a winner.

You should investigate how much capacitance you'll be adding
to the I2C bus with each cable/connector. You may get less
distance / fewer hops than you hope for.


Offline agodinhost

  • Thread Starter
  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
Re: Custom Keyboard Project ...
« Reply #9 on: Sun, 04 August 2013, 23:03:33 »
I think you might have your hands reversed in a previous post?
I'm not sure if I understood what you mean. The PCB is flippable (the same way they did with the ErgoDox board - the same board goes for the left and to the right hand).

also your spacebar in your pcb sketch looks weird and there is a key missing in the bottom row (don't know if that is intended)

if you have a 2.75 spacebar there will be gaps around the keys also don't know if you really want that (looking at the chip).

making the bottom row is quite hard because of the chip and everything. there would be a gap between spacebar and the other keys.
True, there is one key missing and for a 2.75u space bar we will have one gap - I'll update the images to match with the correct PCB layout.

Yes, the last row is a pain, there is no room even IF I used only the SMD IC. This is the best I could do until so far. The final layout will have 3.5mm TRRS connectors instead of the 4xpin headers, I'm still working on it in order to make it fully flippable (it's a pain too).

Offset the columns vertically and I think you have a winner.
Didn't get that, you mean the first column? The one that I'm planning to use with the control keys?

You should investigate how much capacitance you'll be adding
to the I2C bus with each cable/connector. You may get less
distance / fewer hops than you hope for.
Hmmm, I'm  not planning to use long cables, my major concern is the microcontroller speed.
I'll investigate it anyway, thanks for the feedback man.

thank you!
I really appreciated your feedback.

« Last Edit: Mon, 05 August 2013, 14:15:32 by agodinhost »
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline OldDataHands

  • Posts: 280
  • Location: Michigan
Re: Custom Keyboard Project ...
« Reply #10 on: Mon, 05 August 2013, 14:44:43 »
Sorry, "Offset the columns vertically..." should probably have been written:
"Offset the columns along the lines of how the ErgoDox did it..."

You might need to arrange separate power supplies if you chain enough hungry parts into the system...

Offline agodinhost

  • Thread Starter
  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
Re: Custom Keyboard Project ...
« Reply #11 on: Mon, 05 August 2013, 18:08:38 »
Sorry, "Offset the columns vertically..." should probably have been written:
"Offset the columns along the lines of how the ErgoDox did it..."
I wouldn't ending up with an ergodox? It would be a complete different board!
 
I can do that, but for starters I think this simple square board will be handy. I'm trying to build the smaller  and cheapest mech keyboard. With this simplicity in mind I think that anyone will be able to, using my schematics and basic board, design his own keyboard ...

You could use direct wiring (no PCB) but this approach is not that easy, IMHO.

You might need to arrange separate power supplies if you chain enough hungry parts into the system...
As far as I know Teensy drains no more than 100ma. I did a quick search to get some info regarding the MCP23017 but I wasn't able to find how much it drains so I'm guessing it consumes more or less 50ma.

100ma + 7x 50ma = 450ma.

It's possible to have up to 7 keypads in chain - but this is the worst case scenario - I think that in most cases 4 keypads will be enough.

The minimum a port needs to provide is 100mA so all usb devices can assume that is available. If the device needs anything more than that it needs to negotiate it with the port, the standard 2.0 port can handle 500 mA. Most probably I'll have to change hasu's code to handle this 500ma negotiation.

I'm right?
« Last Edit: Tue, 06 August 2013, 06:57:08 by agodinhost »
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline OldDataHands

  • Posts: 280
  • Location: Michigan
Re: Custom Keyboard Project ...
« Reply #12 on: Tue, 06 August 2013, 16:30:31 »
The current used by each I/O expander will
be largely driven by the loads attached to it.
(only 1mA @ 1MHz clock w/o loads)
Your switch matrix + whatever LEDs dominate...
Seems like you'll be fine as long as you keep it simple!
 

Offline agodinhost

  • Thread Starter
  • Posts: 767
  • Location: Brazil, RJ
  • Soylent green is people ...
    • Dr Ian O Xaman
Re: Custom Keyboard Project ...
« Reply #13 on: Wed, 07 August 2013, 14:21:15 »
The current used by each I/O expander will
be largely driven by the loads attached to it.
(only 1mA @ 1MHz clock w/o loads)
Your switch matrix + whatever LEDs dominate...
Seems like you'll be fine as long as you keep it simple!
Awesome!

Anything else guys?
please?
 :)
Building one square I2C keyboard with those 1200 switches (thanks JDCarpe)
GH60 |GH60-Alps |GH60-BT |GHPad/GHPad Alps |GH60-Case |Alps TKL |EL Wire |OS Controller, Round 2 |My Custom Keyboard |WTT/WTB

Offline philpirj

  • Posts: 18
  • Location: Saint-Petersburg, Russia
Re: Custom Keyboard Project ...
« Reply #14 on: Wed, 07 August 2013, 20:16:29 »
I was kinda off looking for something about ergonomics and found this Russian forum:
http://www.yaplakal.com/forum2/st/0/topic571301.html

Hey, that's what i did some time ago. It's in this topic http://geekhack.org/index.php?topic=42577
Here's a link with translation http://translate.google.com/translate?sl=auto&tl=english&u=http://habrahabr.ru/post/177347/
Sorry, i was too lazy to translate it manually, 70KB of text.

Offline kurplop

  • THE HERO WE DON'T DESERVE
  • Posts: 992
Re: Custom Keyboard Project ...
« Reply #15 on: Thu, 08 August 2013, 06:46:10 »

Hey, that's what i did some time ago. It's in this topic http://geekhack.org/index.php?topic=42577
Here's a link with translation http://translate.google.com/translate?sl=auto&tl=english&u=http://habrahabr.ru/post/177347/
Sorry, i was too lazy to translate it manually, 70KB of text.
 
Very impressive! I'm going to take some time and study this.