Touch gesture recognition using body capacitance

For my final year project, I tried to replicate and possibly improve the Disney's touche device using much cheaper components than they did. It was a partial success, but a great learning experience nontheless. These days most touch sensitive devices are designed either to recognize where it has been touched or whether is touched or not. Many objects around us in everyday life can be potentially used as touch interactive surface providing they are made out of conductive material. With the conventional way it would only be possible to detect whether the object has been touched or not. However, by exciting the object with different frequencies it is possible to detect how much skin is touching it. Essentially the system could recognize whether the object is grabbed, pinched, touched by one or more fingers or any other gesture which have different amount of skin touching it. There are many surfaces, objects and liquids which can be transformed into touch sensitive devices without additional buttons or touchscreens like door handles, mobile phones, lamps, desks, walls etc. 


1.1       Outcomes and goals

Main goal of the project was to develop and design a device which would be able to do GD (gesture detection) on the objects connected to it. This would include designing and making the main PCB and writing software for the PC and Android smart phones. However, due to lack of time and unforeseen challenges it was infeasible.

As mentioned above one of the goals was designing and making the main PCB for learning purposes. This process includes:

  1. Designing the PCB in Eagle CAD software
  2. Etching the PCB in home environment
  3. Applying solder mask
  4. Soldering

For the software side of the project, the main goals were as following:

  1. Design PC side application in C++/Qt
  2. Learn LibSVM and write a wrapper to simplify user interactions with it
  3. Port the application mentioned in 1st point for smart phones

 

Most of the goals were successfully achieved, except for increasing the device sensitivity. One of the requirements was to develop a sensor which can be interfaced with human skin directly and used as touch interface. Unfortunately, the current design wasn’t able to excite the human body in different frequencies enough to detect change from the input signal. On the other hand, the GD system is able to sense the presence of human body and differentiate from multiple gestures when touching a conductive object, including liquids. As of now GD system could be used for detecting gestures on objects only, with some modification it can be potentially used as smart light switch, where different gestures enable different lighting in the room or by manufacturing a copper frame in a smart phone, the GD system could sense how is the phone being held in hand.

1.2       GD system architecture

Standard way of doing capacitive touch sensing is by using one fixed frequency. However GD system is using a technique called frequency sweep, which enables to do capacitive touch sensing in multiple frequencies. For example, in frequencies ranging from 100 kHz up to 50 Mhz.

For frequency sweep the micro-processor will generate AC signal in specific frequency range to excite the electrode. The electrode can be any surface connected to the ADC of the micro-processer. The micro-processor measures the amplitude of the specific frequency the electrode was excited. Essentially, constructing spectrum for different levels of excitement. By varying the capacitance the spectrum should in theory change. A human touch basically changes, in almost all cases increases, capacitance. The way human is touching the electrode, or the amount of skin contacted with the electrode will produce a different output.  In other words, electrical properties of human touch will change the excitement spectrum.  Then by using simple machine learning algorithms like SVM or neural network, for pattern recognition, the way of human touching the electrode can be detected.  In short, with frequency sweep technique it is not only possible to detect a touch, but as well how it was touched.  Interestingly this is all achieved through single electrode.  Please see Figure A‑1 for the basic architecture of the touch sensing technique

Figure A‑1 Touch sensing architecture

The technique of frequency sweep has already been used for various medical applications. For example, already in year 1979 it was proposed to be used for analysis of neuromuscular junction continuity[1].  As well it has been used for wireless communication and different kinds of proximity sensors.

The project is highly inspired by Disney’s research called touché[2]. More or less they are using exactly the same approach GD system is using.

There are two more articles (projects) which are using frequency sweep technique to do touch recognition.  Both of them have been highly inspired by touché and they constructed much cheaper version of the touché. Sprites [3]method involves using a standard AVR micro-controller to do frequency sweep from 0-3.5MHz. For recognition, just like touché Sprite is using SVM algorithm. And the other one by DZL [4] reconstructed touché using arduino, however for gesture recognition he is measuring the highest point of the frequency sweep. Which is very unreliable compared to pattern recognition using machine learning.

Even though both of the “cheap” implementations are using PWM for exciting the electrode, the GD system is using a proper sine wave generator, just like touché. More precisely it uses AD9850 function generator. This unit can generate up to 50MHz pure sine wave. The decision was made to use a proper sine wave generator because of the electrical properties of the human body. More than 99% of the human body’s resistance is at the skin on average which is about 1MΩ[5]. On the other hand AC signal can pass through the human skin and go through the least impedance in the corresponding phase and amplitude of AC signal. Internal human resistance is around 100Ω.

 

Files

Download: final_year_project_report2.pdf (5.48M)

Download: final_year_all_files.zip (19.01M)


[1] http://informahealthcare.com/doi/abs/10.3109/03091907909160663

[2] http://www.disneyresearch.com/wp-content/uploads/touchechi2012.pdf

[3] http://spritesmods.com/?art=engarde&page=1

[4] http://dzlsevilgeniuslair.blogspot.se/2012/05/arduino-do-touche-dance.html

[5] http://www.meo.etc.upt.ro/materii/cursuri/IBM/1.pdf




ADVERTISEMENT

  • Julie

    Julie in Implementing pulse oximeter using MAX30100

    Hello, I am working with the MAX 30105 to sense heartbeat. I have just set it up by specifying the led currents, sample average, led mode, sample rate, pulse width and adc range. Then I clear fifo and then try to read its first value. However,...

    oz1jua

    oz1jua in Simple TLS/SSL SMTP client for Qt5

    Why is this not in the code. It took many many hours to get it to work.   sMessage.append("Subject: " + subject + "\n");  sMessage.append("\r\n" +...

    ahMAX30100

    ahMAX30100 in Implementing pulse oximeter using MAX30100

    Hi,I studied thoroughly your article and got too much confusion clear.but the problem is my RED led  does not light up. Thats why I am not able to calculate the HB and Spo2.What shuld I do for.  

    krish

    krish in Implementing pulse oximeter using MAX30100

    We are giving away a $100 Amazon gift card to one lucky winner on November 30th, 2017. We hope the winner will use it to buy their  favorite Santamedical Pulse Oximeter on Amazon but they can use it however they like :) There are 7 ways to enter...

    Gaurav Kumar

    Gaurav Kumar in Implementing pulse oximeter using MAX30100

    OFFER : Buy SM-1100S #PulseOximeter at 25% discount on Amazon #Thanksgiving #Christmas #Newyear #Blackfriday Save 25% each on Qualifying items offered by Oximeter Superstore when you purchase 1 or...

    Gurin Products

    Gurin Products in Implementing pulse oximeter using MAX30100

    A Pulse Oximeter is a healthcare device that is used to measure pulse rate and blood fresh air vividness of an individual. Blood fresh air vividness is also denoted as Spo2 by doctors and is very important in the medical care field....

    KORI

    KORI in Implementing pulse oximeter using MAX30100

    Hello, This code is working perfectly for me, but i cannot find where i can increase the current of the LED, becuase, i have nice reading on the finger, but as many other user it will be more pracitlce to use this measurments on the wrist, did you try to measure the...