Tuesday, April 3, 2012

Virtual Keyboard

                    Virtual Keyboard


With the alluring range of latest smart phones and tablets, this term sounds quite viable these days. A virtual keyboard is a software component that allows a user to enter characters. Here is a project from the students of Cornell University which featuring a ‘Virtual keyboard’ which is not completely a software component but still is virtual in complete sense. This device replaces a physical keypad with a customizable keyboard printed on a standard A3 size paper whose keystrokes are read and translated to real input.
 
As mentioned, the physical component is a printed A3 size paper with black background and blue keys. A conventional off-the-shelf laser beam with a line-generating diffractive optical element is used which generates invisible plane of red light hovering a few millimeters over the typing surface. A CMOS camera continuously captures images of the region containing the typing surface for red colour data. It is evident that a laser shining over a human surface produces saturating amounts of red colour data than otherwise. So, whenever the captured image’s red data exceeds a threshold value, a press is detected. The functioning of the camera to take input from it is initiated by the user through the microcontroller unit (ATMega32). The I2C protocol is used to establish a healthy interface between camera and MCU. After the images are captured, they are read from the camera registers at a rate of 6 frames per second for processing. A java applet is used as a simple GUI where the users can enter scan codes of the keys they desire and transmit it to the microcontroller through a standard com port on the PC.

Hence, we can sum up the crucial hardware and software implementations for the system as below:
 
Hardware:
·         Laser module
·         Camera and its associated circuitry
·         Outer casing for the entire device
 
Software:
·         Implementing the I2C protocol to read and write registers from camera
·         Reading values from camera to obtain 6 frames every second
·         Processing the images to obtain the pressed key
·         Converting the pressed key into a scan code which is then transmitted using the PS/2 protocol
·         Sending serial data from a java application to update the array of scan codes in the Mega32

0 comments:

Post a Comment