My name is Evan, I’m a rising senior at the Rockland Country Day School. My starter project was a TV-B Gone Kit, which can turn off any television with the press of a button. For my main project I’ve chosen to create a student defined project, the MacroPad. I chose this project because it would allow me to further explore an idea which I had before the program, and I believe the finished product would be valuable both as an open source plan or as a consumer product.
I really enjoyed my experience at BlueStamp. The staff, students, and guests all contributed to an environment which fostered creativity and education at a high level. In the future I plan to continue working on this project and making improvements. My goal is to have a functional device which I can use on my desktop.
Intensive Project – MacroPad
The MacroPad is a computer peripheral in the form of a keypad with adaptive keycap technology, which creates a much more natural interface for the user. The keycaps are able to display different icons which correlate to more complex functions on a computer, which makes for a much smoother workflow. The MacroPad is a platform for future expansion, much like a device which has support for third party applications such as computers or mobile devices.
Documentation and Resources
Fig. 1 – Technical drawing of keycap adapters Keycap Adapters
Fig. 2 – PCB Schematic Schematic
Fig. 3 – PCB Design PCB Design
Final Milestone – Physical Build and Code
The MacroPad is a keypad with small OLED displays on the keycaps, and is unique in that the icons which are displayed on the keycaps are dynamic, as opposed to normal keycaps which have static icons. This opens up a lot of freedom in terms of computer integration and user interface improvement. The icons could change based on user input or active software, and adapt to provide the user with a more intuitive interface to their computer.
In my final milestone, I wrote a program that showcases the functionality of the MacroPad. It contains two profiles: a home profile and a multimedia controller. In the home profile, different profiles can be selected by pressing the corresponding buttons. Inside a profile, the different functions are represented.
Second Milestone – Physical Build
In my second milestone, I worked on hardware the hardware side of the device. I assembled the board which I designed as part of the first milestone. I wrote a program to run on the Arduino Micro, however the main chip does not have enough RAM to store some of the global variables needed to run the code. I solved this issue by switching out the Arduino for a Teensy board. The main chip on the Teensy met the two requirements which I had: to have enough RAM and to have HID functionality. Because the Teensy does not have the same footprint as the Micro, I had to create an adapter, which would make all of the connections between the Teensy and the PCB internally. I also designed and 3D printed keycap adapters, to allow the displays to be easily attached to the mechanical switches (Fig.1).
First Milestone – SD Card, OLED Screen, and PCB Design
For my first milestone, I wrote a program which reads information from a micro SD card and displays it onto an OLED screen. This was especially difficult because the data from the SD card was not in the same format as the data that could be read by the screen. The data was read as a long string from the SD card, had to be separated into individual bytes, shifted and arranged into an array which could be read by the screen. I also designed a PCB based on a schematic I created (Fig. 3). The new board will streamline the connections between the components. its main purpose is to connect the various breakout boards and eliminate external connectors, as well as provide a structural base for the switches and the connectors for the displays.
The Arduino Micro is connected to headers INO1 and INO2, the switches in the nine CHERRY-MX connections, the displays in SV1 – SV9, the multiplexer int MI and MO, the logic level shifters into HV1, LV1 and HV2, HV2, the micro SD Card breakout in SD, and the three remaining I/O pins are broken out alongside GND in the SEL header to allow for extra buttons to improve the UI. See Fig. 2 for schematic.
Starter Project – TV-B Gone
For my starter project, I assembled a TV-B Gone v3. The TV-B Gone is a small device which I soldered together from a kit. It is able to turn off any tv, with the press of a button. TV’s are controlled by remotes which emit signals through infrared light which is not part of the visible spectrum. For every function on the remote a different signal is emitted, which can be detected and understood by the TV. However, different manufacturers have different signals or codes for different functions and not all brands are compatible. The TV-B Gone works by sending the different codes associated with the “off” function on most TV’s one after the other, thus turning off any compatible TV. At the heart of the device is a small microcontrolller, the ATiny84. This chip runs a simple program which receives the input signal from the button, and outputs all of the different “off” codes. The device uses four IR LEDs to emit the signals, however the micro controller cannot supply the LEDs with enough current for them to emit enough light. This is solved by five transistors which allow the LEDs receive power directly from the power source, but still be controlled by the microcontroller. The kit that I assembled is the third version of the device. In the first version, four of the transistors were connected to one pin on the microcontroller. In the second version the transistors were split up into two pins with two transistors on each pin, to increase power of the LEDs and range of the device. In the third version, another transistor was added and all of the transistors were connected back to one pin.