I have finally decided to get a keyboard but thnikk charges between $21 for his basic and $36 for his RGB version plus $2 for keycaps. The nono keyboard is $40 plus $12 shipping from the Osu! store.
I liked thnikk's keyboard for his simplistic design, and I figured out that he uses Teensy LC from his website for his RGB version witch is like an Arduino and even uses the same IDE as an Arduino.I have an Arduino Uno laying around that I am not using and decided to use it for this project.
Currently the code only turns on an LED when the button it pushed. I may put an RGB LED in it but for now this is fine.
Step 1: List of Material
- Key Switches You can use any switches you want. I got 9 Gaterons for $5.99 but you can also use Cherry MX.
- Wire I am going to use breadboard male to female wire but you can use servo extenders or solder wires onto the switches. I received 40 pcs for $1.18 on ebay.
- KeyCaps I purchased the WASD Keycap Sampler for $5 plus $2.54 shipping.
- Plastic Box I found a plastic box laying around the house that I can use.
- Arduino I am using a Uno but if you use a Leonardo, Duo, or Teensy as they have built in USB support.
- Soldering Iron if you prefer it.
Total Cost = $14.71
Step 2: Programming an Arduino Uno
First we are going to upload the arduino sketch like we normally would. Feel free to modify to code to how you like it.
Step 3: Uploading Keyboard Firmware for AtMega 16u2
Follow the instructions from arduino.cc/en/Hacking/DFUProgramming8U2 to upload the Arduino-keyboard-0.3.hex from mitchtech.net/arduino-usb-hid-keyboard/ to the secondary microcontroller. Incase you want to reprogram your arduino again, you will need to either reflash the 16u2 with this firmware from Arduino or flash the AtMega 328p chip with an ISP like the usbasp.
Step 4: Build the Case
I took the box and cut two hole for buttons in the middle of the box. I made the holes smaller than the buttons and filed out the hole to make them fix perfectly.
I screwed the arduino onto the bottom of the box to hold it in place.
I soldered the jumper wire to the buttons because the female end does not fit the pins on the button.