wiki:2012/Projects/SignetRingDrivesafe

Version 10 (modified by joshuad, 5 years ago) (diff)

--

Signet Ring Project

Background

Most commercial tablets and smart phones with capacitive touchscreens consist of an array of conducting electrodes behind a transparent, insulating glass layer which detects a touch by measuring the additional capacitance of a human body in the circuit. When a user touches the screen, her finger acts as the second electrode in a capacitor with the screen as the dielectric. This change in voltage measured at one or more screen electrodes is then passed to the screen controller for processing. By using a voltage source and creating an artificial change in voltage, we can simulate touch events on a device.

The Device

The ring contains a small flash memory that stores a bit sequence or a message, which could be a user identifier or a secret key that authenticates a user. It also has a simple processor that reads the bit sequence and generates a On-Off keying modulated signal. That is, bit one is represented by turning on a carrier signal; and bit zero by switching off that carrier signal. When the ring is pressed against the screen, it acts as a voltage source which creates a set of touch events with timestamps following the bit sequence being transmitted.

Objective

The Signet Ring project uses artificial touch events to enable capacitive touch screen devices to uniquely identify users based on their individual code created from their ring. My objective was to create the application part of this project on an android device. An application to identify users based on a 4 bit/sec Ring transmitter. Once a user presses the ring on top of the screen, the program will identify which user is touching the screen and act accordingly.

Accomplished

The bulk of my summer was spent creating this application as well as testing and upgrading the current ring.

Identifying Touch Events

The Android platform has different types of events to determine what type of touch occurred on the screen. The ring that we are using was designed to create many "MOVE" events. Along with these "MOVE" events, we needed their exact timestamps to determine how far apart they were and when exactly they occured. However, Since the events captured by the actual Android operating system were inaccurate due to queuing delays we needed to access the kernel logs within the device to get the original timestamps. This required root access to the device. Reading the log stream from the kernel logs, gave us the information we needed.

Decoding 4 or 5 bit Codes

After reading the logs and scanning for the events we needed, I needed to apply an algorithm to accurately determine which groups of events were 1 bits and which were 0 bits. Using an algorithm developed by my mentor in MATLAB,

Login Screen Application

TODO

Build New Rings for different Codes

TODO


Drivesafe

Background

The Drivesafe application is a program that resembles a fusion between a phonebook and a chat client. It

Objective

Accomplished