Instructables

The Arduino is perhaps the coolest thing on earth. There are many types, the Uno, the Mega, the Pro, the Pro Mini, etc. etc.

But one thing that often can be a problem is that you only have a limited number of inputs and outputs. There are many solutions for that, ranging from multiplexers to port expanders. But one thing that gives you up to 171 extra inputs is to use an old keyboard. And that is that this instructable is going to be about.


(The image it an example of things that can be used with this. As you can see, I only put up switches and relays. What's because the keyboard controller only can handle non-time sensitive digital inputs.)
 
Remove these adsRemove these ads by Signing Up

Step 1: What you need


What do you need? First, an Arduino. Second, an old Keyboard what still works. And that's pretty much all.

1. An Arduino.
2. An old  PS2 keyboard. It will work with a USB keyboard, but will be extra work and will not be covered here. (You only need the controller PCB)
3. A PS2 jack. Optional, you can also cut the cable.
4. Some buttons or relays and some wires to connect the buttons to the controller PCB with.
5. The Arduino IDE . There are enough tutorials on how to install it spread around the WWW.
6. The PS2Keyboard library. See further down on how to install it.
7. A good idea to use this with.

Please note what the keyboard in the image is not the one I used. I have already demounted my keyboard long ago.


Installing the library:
1. Go to this page and click on PS2Keyboard.zip. A window will now come up asking what you what you want to do with the file. Click on open.
2. You will now have an explorer window (on windows. I can't help you with other operating systems). Click on Extract all Files up to the left. Enter arduinoInstallPath /libraries (arduinoInstallPath is the place there you installed the Arduino IDE) and then click on Extract.
3. Go to arduinoInstallPath/ libraries/PS2Keyboard and delete the file "PS2Keyboard.cpp.o".
4. Done.

zazenergy3 years ago
This is a pretty cool idea! Thanks for sharing. I think it would really help to give some more information on how it was made and maybe break out the steps a bit more. Good job!
02JanDal (author)  zazenergy3 years ago
Thanks.

What do you think about them saying break out the steps?

JanD
First of all, if you came up with this at the age of 14, sweet, good job!

What she means I think is, that you have 3 quite big step at the moment, and you could make them into say, 6 smaller steps. For example, in step 2, you start about opening the keyboard and end with programming the Arduino when you've completely dissasembled the keyboard and connected other "stuff" to it. You could make two steps out of that, say: step 2 is the dissasembly of the keyboard, and where to make connections, and step 3 for programming the Duino.

Just a suggestion, have fun using stuff for what it was not intended to do! :)

Thom
avi91111 months ago
This is ingenious. And you came up with this when you were 14? Have fun at NASA !
Don't damage that chip? That is about impossible because the black epoxy covering it cannot be melted by a soldering iron. However, I might test that epoxy on a Dremel with a profiling (circuit board drilling) bit. But I'm not going to use an expensive keyboard PCB; I'm going to use a cheap TV game PCB.
TheHawkeye3 years ago
This is agreat idea, but I have a question. It's obvious you can get inputs from the keyboard, but can you output to the board? I guess the question is really if this is one-way. It could vary I guess if there are diodes.
The only reason I'm suspicious about outputting to the keyboard is because if you enable the on-screen keyboard you can toggle the lights and function of the physical keyboard's Num Lock, Caps Lock, and Scroll Lock.
If you only supply power to a keyboard, pressing the lock keys will not toggle the lock lights. That's because the USB or PS/2 host has direct reading of the lock keys, and is the only computer to control the lock lights (the keyboard just does as it is told).
02JanDal (author)  TheHawkeye3 years ago
I've also thought about that, and i think it should be possible, but as far as i know not with the library i use.
odalcet2 years ago
a comment on step 2 (Wndows file downloading)

On Linux (Ubuntu 8.04 - hardy, Firefox 10.0.2)

When I left-click on download link link, a windows opens with 4 options (depending on your add-ons):

1 - Open with Archive Manager (default)
2 - DownThemAll
3 - Save file
4 - dTa OneClick

There's also a check box:: "Do this automatically for files like this from now on"

My first option is DownThemAll. It's a great Firefox add-on.

Select it and the "Add downloads" windows opens

Check your destination folder and press the "Start" button The DownThemAll main window opens with your file for downloading. When finished, the progress bar will show 100%.

If you hover with your mouse on the download name, you will see some info about your file, the most important: destination path in case you forgot where that was.

Now you can (1) go to than folder or (2) right-click on name and select an option or (3) double-click to open your downloaded file.
TheHawkeye3 years ago
I guess another question is how can you figure out which key scan be used at the same time. It seems more keys in certain areas work together than keys from other areas on a standard keyboard.
Depends on how fancy a keyboard you use

http://en.wikipedia.org/wiki/Rollover_%28key%29
02JanDal (author)  spasysheep3 years ago
Basicly, the only thing you have to do (on a programming side) is to read the keys with simple functions.

On a hardware side, the only thing you have to do is connect switches between the two groups (as in a matrix) and then try your way to find what two positions are what key.

Jan
patovala3 years ago
some schematic of how to connect the switches, and what mean each cable color from the ps2 output.
02JanDal (author)  patovala3 years ago
As I think that most keyboard controllers are quiet different, I think that can be hard, but I'll see what I can do.
quite*

wha'ts with the (.temp);
i like your instructable, but I think it needs more information about those relays and schematics.