The Making of an Easy Program Launcher Button
After watching Matt Richardson's AWESOME Button project video, where he embeds a microcontroller within a Staples Easy Button to create a special purpose keyboard, I was inspired to make a similar item to present as a gift to a user of the software that I develop professionally. This user had requested that we create an "Easy Mode" for our software to group all of the features commonly used by his organization into a simple and easy to use graphical user interface component. Since the "Easy Mode" concept was inspired by the Easy Button campaign from Staples, I thought an Easy Button would be perfect for launching the software in the "Easy Mode."
I called this modified Easy Button the Easy Program Launcher.
Like the AWESOME Button, the Easy Program Launcher uses a Teensy USB Development Board embedded within a Staples Easy Button. Whenever the Easy Button is pressed, key codes are transmitted to a computer through a USB connection. For the case of the Easy Program Launcher, the transmitted key codes cause an application to be launched on the computer. Because the software initially targeted by the Easy Program Launcher works with both the Windows and Linux operating systems, the Easy Program Launcher has also been designed to work with both the Windows and Linux operating systems. A slide switch, hidden within the Easy Button's battery compartment, is used to select between the Windows and Linux modes.
The project's key code transmission software was created using the Arduino IDE with the Teensyduino software add-on. Application launch was achieved for Windows by transmitting the 'WinKey+R' key combination followed by the name of the program to be launched, and for Linux by transmitting the 'Alt+F2' key combination followed by the name of the program to be launched.
Once the software was complete, it was loaded onto a Teensy USB Development Board for testing with a push button and slide switch:
After the initial push button test, a Staples Easy Button was disassembled, following the same procedure described by the AWESOME Button project video, and connected to the Teensy for testing:
The initial circuit tests were made with the button and switch connected to the Teensy's D0 and D1 pins, but the B0 and B1 pins were used for the final version of the circuit. Pull-up resistors are not required for either the button or switch because the Teensy's pins have their own internal pull-up resistors that can be enabled in software.
Connecting the Teensy to the Easy Button's circuit board involves connecting one of the Teensy's GPIO pins to a trace on one side of the button, and connecting the Teensy's ground pin to a lead on the other side of the button. There are two possible connection points on the left side of the button, the trace with the resistor and the trace with the capacitor. For this project, the resistor was desoldered from the board and the Teensy's B0 pin was connected in its place. The Teensy's ground pin was then connected to the trace on the board's right side:
With the Teensy connected to the Easy Button's circuit board, the Teensy was installed and the Easy Button was reassambled, again following the procedure described by the AWESOME Button project video. The slide switch was routed into the Easy Button's battery compartment, which it would share with the Teensy USB Development Board, and fastened into place with plenty of hot glue:
As you can see, I really ground up the area around the battery compartment. My Dremel skills could clearly use some work. At least the battery cover hides most of the damage. When turned right-side up, the final product looks like this:
One final test of the Easy Program Launcher showed that it was indeed working:
Instead of sending the name of a specific application to be launched, the Easy Program Launcher sends the name of a batch file (shell script on Linux) that can be customized to launch any program or execute any series of commands.
With the button fully assembled and tested, it was placed back into its original gift box packaging for delivery:
I have created a separate project page for the Easy Program Launcher, where source code, schematics, and instructions for building an Easy Program Launcher button can be found. Click here to learn more about how you can build your own Easy Program Launcher.