Extra Inputs for Arduino With a Keyboard

48,820

88

20

Posted

Introduction: Extra Inputs for Arduino With a Keyboard

Keyboard vs. Mouse Speed Challenge

Finalist in the
Keyboard vs. Mouse Speed Challenge


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.)

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.

Step 2: Connecting the Arduino and the Keyboard


After you now have all software installed it's time connect the Arduino with the Keyboard. In this instructable I will cut the connector of from the cable, but if you later want it to be easily plugged into something it can be a good idea to use the connector.

1. Open up the Keyboard. You can throw away anything except the controller PCB and the cable.
2. Use a Dremel or a sandpaper and make the small black pads on the controller PCB shiny by polishing them.
3. Solder wires to the polished pads. This can be hard, and you may need some practice, but it will work after some time. In the photo you can see two of the wires soldered to my controller PCB. as you can see, one of the pads in the right group was damaged as I tried if it would be easier to drill holes into the PCB for soldering the wires.
4. Then all wires are soldered. You can connect the PS2 cable to you Arduino. Use this schematic here for that. To find what cable goes to what Arduino contact, it can be useful to have something to check if there is a connection, the schematic and this .
5. Done!

If you want to find out what two pins are connected to what letter, use the code attached to check. Create a map somewhere on your computer, name it "keyboard_to_serial" and add the attached .pde file into that map. Open the Arduino IDE and open up the file. Upload it and then open the serial monitor. If you now connect pads of the PCB, the key what would have been pressed is shown.

Step 3: Writing a First Program


Thanks to the library, it's very easy to write a program to get keypresses from the keyboard. You only need 5 functions. The attached .pde file has comments on that the different functions do, so it's easy to make an own program with that.

So, what was it. Now it's up to you. A security system with many sensors? A big keypad? A space control room with many buttons?
With this tutorial you have about 170 inputs for the cost of 2 digital pins of the Arduino. A fare trade, huh?

If you have any questions, post a comment or PM me at the Arduino forum (username: JanD).

And please vote then the voting starts for the Keyboard vs Mouse contest.

Share

    Recommendations

    • Microcontroller Contest

      Microcontroller Contest
    • Science of Cooking

      Science of Cooking
    • Pocket-Sized Contest

      Pocket-Sized Contest
    user

    We have a be nice policy.
    Please be positive and constructive.

    Tips

    Questions

    20 Comments

    "4. Then all wires are soldered. You can connect the PS2 cable to you Arduino. Use this schematic here for that."

    Am I missing something? I don't see a schematic.

    Is there a way to do this with a usb keyboard on an arduino unto as I really need extra inputs and don't have much funding

    would this method be suitable for making a musical keyboard for a synthesizer?


    Hate to say it but not all of the inputs will work at the same time due to keyboard ghosting

    http://www.microsoft.com/appliedsciences/antighost...

    basically this means that only some of the inputs will work at once because the are in a grid this will tend to make the project less useful but it is still really cool and usful for many other functions

    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!

    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

    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.

    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.