Bottle Cap Keyboard
This is a pretty simple and fun project with Arduino Pro Micro.
You will create a simple version of the president's key(board).
It will do an action in your computer (Mac or Pc) by emulating keyboard shortcuts or commands.
In my case, I use it with CMD+Q (quit application in mac) shortcut key for easy off from working.
You Will Need...
- Arduino Pro Micro (not pro mini)
- 1 Mechanical switch. (Clicky Blue Switch recommended)
- Printed parts. (Model files is included in attached zip file)
- TOP, BOTTOM, KEYCAP
- 1 Pin-head cable. (female)
- USB cable micro 5 pin. (Commonly used)
Downloads
Assembly
I recommend to watch the instruction video (ENG SUB). (wiring is bit tricky)
- Soldering the Pins on Reverse. (Header Pins on topside)
- Place an Arduino Pro Micro on bottom case. (There are slots for pin headers)
- Cut a header pin cable in half and solder directly to the switch.
- Close the top case on the bottom case.
- Connect header pins from outside. ( 8(A8) and GND port)
- Insert the switch.
- Insert a bottle key cap part.
- Done
Arduino Sketch
Header pin is connected to port 8(A8) = switch_pin is 8.
We use internal pull-up resistor 'cause the switch directly connected.
I used CMD+q (mac) for using the key as exit application short cut. (Use KEY_LEFT_ALT + KEY_F4 for PC)
Change Keyboard.press( ?? ) part to program your own shotcuts.
#include <HID.h> #include <Keyboard.h> // connected PIN8 const int switch_pin = 8; int button_state = 0; int previous_button_state = HIGH; long last_debounce_time = 0; const long debounce_delay = 50; void setup() { // We use internal pullup registor 'cause the switch directly connected. pinMode(switch_pin,INPUT_PULLUP); digitalWrite(switch_pin, HIGH); Keyboard.begin(); } void loop() { button_state = digitalRead(switch_pin); if ((button_state != previous_button_state) && (button_state == HIGH)) { if ((millis() - last_debounce_time) > debounce_delay) { // Exit Program (CMD+Q in mac) & Have a nice day! // Use KEY_LEFT_ALT + KEY_F4 for PC Keyboard.press(KEY_LEFT_GUI); Keyboard.press('q'); delay(100); Keyboard.releaseAll(); // This is important after every Keyboard.press it will continue to be pressed last_debounce_time = millis(); } } previous_button_state = button_state; }
Done
Most soft drink PET bottle lids conform PCO-1881 standard and usable for this project.
I hope you'll have fun.