TV Wand
A gesture device for controlling unmodified televisions and projectors.
As a project for ES 52: Circuit Design, a classmate and I designed a “TV wand,” a device which a user can wave that can be used to control basic television functions. This kind of interface could be used in situations where the conventional push button remote falls short, especially in cases where fine motor control is difficult, such as use by those with muscular or neurodegenerative disorders or by the elderly. It might even be helpful for using the TV in the dark or at night. We mapped specific swipe gestures with the wand to control the television’s power status and volume. We wanted to keep the TV unmodified, so the device used the standard infrared protocol used on TVs today. The final product worked reliably and was a lot of fun to play with.
The course covered both analog and digital circuitry, so the rubric required that the project have both components. While it would have been easier to simply hook up a digital accelerometer to a microprocessor and put all logic the microprocessor, we decided to challenge ourselves and implement as much of the project in analog and use the micro controller only as an IR transmitter (for sending modulated signals via the IR LED as per NEC protocol).
The system had two components, the wireless wand and the IR control box. The wand was the component that the user was able to hold and gesture. The IR control box sat on a coffee table or in front of the TV. It received wireless radio signals from the wand and relayed the appropriate IR command to the television.
Circuitry of the wand consisted of a low power analog accelerometer whose X and Z outputs (with minimal filtering) were each connected to a pair of tuned comparators. One of the four comparators would go high when acceleration in exceeded a certain value in positive X, negative X, positive Z, or negative Z direction. These correspond to swipe gestures of the wand in different directions. A radio chip then relayed the signal to the IR control box. All the components were connected to an auto shutoff circuit consisting of an RC timer, a MOSFET, and a push button. A pushbutton pulls the gate of a p‐channel power MOSFET to ground and saturates a capacitor. The low voltage on the gate causes the source‐drain resistance to be very low allowing for battery power to pass through the transistor. When the button is released, the capacitor discharges over the resistor, source-drain resistance increases again, and power is cut.
The IR control box consisted of a micro controller (Arduino Uno) and IR LED control circuit. After a signal from a comparator went high (indicating a gesture, the program checked the same input after a delay to ensure signal is still high to reject bumps of the remote. Once this gesture was determined, the Arduino sent a hexadecimal command using a particular 38khz protocol (NEC in this case) to pulse an IR LED and communicate with another IR device, such as a television. The IRremote library developed by Ken Shriff utilized the PWM functionality of the Arduino Uno to produce the correct signal. After reading the first comparator high signal, the Arduino timed out for a short period of time so that the deceleration portion of the gesture is not interpreted as another gesture.
Our remote performed very reliably; the four directions, up, down, left, and right were programmed to control power, source, volume down, and volume up respectively on the Epson projector that was sitting in the lab. Quick flick gestures were properly interpreted and slower gestures did not cause any output as we had hoped. Corrupted XBee firmware (and not enough time to order new ones) forced us to ditch the radio and connect by a length of wire instead, but the problem could be easily remediated.
The course covered both analog and digital circuitry, so the rubric required that the project have both components. While it would have been easier to simply hook up a digital accelerometer to a microprocessor and put all logic the microprocessor, we decided to challenge ourselves and implement as much of the project in analog and use the micro controller only as an IR transmitter (for sending modulated signals via the IR LED as per NEC protocol).
The system had two components, the wireless wand and the IR control box. The wand was the component that the user was able to hold and gesture. The IR control box sat on a coffee table or in front of the TV. It received wireless radio signals from the wand and relayed the appropriate IR command to the television.
Circuitry of the wand consisted of a low power analog accelerometer whose X and Z outputs (with minimal filtering) were each connected to a pair of tuned comparators. One of the four comparators would go high when acceleration in exceeded a certain value in positive X, negative X, positive Z, or negative Z direction. These correspond to swipe gestures of the wand in different directions. A radio chip then relayed the signal to the IR control box. All the components were connected to an auto shutoff circuit consisting of an RC timer, a MOSFET, and a push button. A pushbutton pulls the gate of a p‐channel power MOSFET to ground and saturates a capacitor. The low voltage on the gate causes the source‐drain resistance to be very low allowing for battery power to pass through the transistor. When the button is released, the capacitor discharges over the resistor, source-drain resistance increases again, and power is cut.
The IR control box consisted of a micro controller (Arduino Uno) and IR LED control circuit. After a signal from a comparator went high (indicating a gesture, the program checked the same input after a delay to ensure signal is still high to reject bumps of the remote. Once this gesture was determined, the Arduino sent a hexadecimal command using a particular 38khz protocol (NEC in this case) to pulse an IR LED and communicate with another IR device, such as a television. The IRremote library developed by Ken Shriff utilized the PWM functionality of the Arduino Uno to produce the correct signal. After reading the first comparator high signal, the Arduino timed out for a short period of time so that the deceleration portion of the gesture is not interpreted as another gesture.
Our remote performed very reliably; the four directions, up, down, left, and right were programmed to control power, source, volume down, and volume up respectively on the Epson projector that was sitting in the lab. Quick flick gestures were properly interpreted and slower gestures did not cause any output as we had hoped. Corrupted XBee firmware (and not enough time to order new ones) forced us to ditch the radio and connect by a length of wire instead, but the problem could be easily remediated.
Check out our final report here:
TV Wand Final Report |
© Ishan Chatterjee 2020