Difference between revisions of "S15: Hand Gesture Recognition using IR Sensors"

From Embedded Systems Learning Academy
Jump to: navigation, search
(References Used)
(Software Design)
Line 222: Line 222:
  
 
=== Software Design ===
 
=== Software Design ===
Show your software design. For example, if you are designing an MP3 Player, show the tasks that you are using, and what they are doing at a high level. Do not show the details of the code. For example, do not show exact code, but you may show psuedocode and fragments of code. Keep in mind that you are showing DESIGN of your software, not the inner workings of it.
+
<table>
 +
<tr>
 +
<td>
 +
 
 +
</td>
 +
<td valign="top" align="justify" width=400px>
 +
<b>Filter Algorithm</b>
 +
</tr>
 +
</table>
 +
 
 +
<table>
 +
<tr>
 +
<td valign="top" align="justify" width=700px>
 +
<b>State Machine Diagram:</b>
 +
 
 +
 
 +
 
 +
 
 +
<br>
 +
</td>
 +
</tr>
 +
<tr>
 +
<td valign="top" align="justify" width=400px>
 +
<b>Application Development</b><br>
 +
<i>QT Software</i><br>
 +
QT is a cross-platform application framework that is widely used in developing application software that can be run on various software and hardware platforms with little or no change in the underlying codebase while having the speed and the power of native application. [1]
 +
It is mainly used to make GUI based applications but there can be applications such as consoles or command-line applications developed in QT. QT is preferred by many application programmers as it helps in developing GUI applications in C++ as it uses the standard C++ libraries for backend.
 +
Platforms supported by Qt are:
 +
* Android
 +
* Embedded Linux
 +
* Integrity
 +
* iOS
 +
* OSX
 +
* QNX
 +
* VxWorks
 +
* Waylands
 +
* Windows
 +
* Windows CE
 +
* Windows RT
 +
* X11
 +
QT applications are highly portable from one platform to other as QT first runs a Qmake function before compiling the source code. It is very similar to ‘cmake’ which is used for cross platform compilation of any source code. The qmake auto generates a makefile depending on the operating system and the compiler used for the project. So if a project is to be ported from windows to linux based system then the qmake auto generated a new makefile with arguments and parameters that the g++ compiler expects.
 +
</td>
 +
<td width=300px align="center">
 +
[[File:S15 244 Grp10 Ges qtdevices.png|300px]]<br>
 +
[[File:S15 244 Grp10 Ges qt-sdk.png|300px]]
 +
</td>
 +
</table>
  
 
=== Implementation ===
 
=== Implementation ===

Revision as of 20:11, 22 May 2015


Abstract

The aim of the project is to develop hand gesture recognition system using grid of IR proximity sensors. Various hand gestures like swipe, pan etc. can be recognized. These gestures can be used to control different devices or can be used in various applications. The system will recognize different hand gestures based on the values received from IR proximity sensors.

Objectives & Introduction

We use various hand gestures in our day-to-day life to communicate while trying to explain someone something, direct them somewhere etc. It would be so cool if we could communicate with various applications running on the computers or different devices around us understand the hand gestures and give the expected output. In order to achieve this, we are using a 3-by-3 grid of analog IR proximity sensors and connecting these sensors via multiplexers to the ADC pins on SJOne Board. As a hand is moved in front of the sensors, the sensor values would in a particular pattern enabling us to detect the gesture and instruct the application to perform the corresponding action.

Team Members & Responsibilities

  • Harita Parekh
    • Implementing algorithm for gesture recognition
    • Implementation of sensor data filters
  • Shruti Rao
    • Implementing algorithm for gesture recognition
    • Interfacing of sensors, multiplexers and controller
  • Sushant Potdar
    • Implementation of final sensor grid
    • Development of the application module

Schedule

Show a simple table or figures that show your scheduled as planned before you started working on the project. Then in another table column, write down the actual schedule so that readers can see the planned vs. actual goals. The point of the schedule is for readers to assess how to pace themselves if they are doing a similar project.

Week# Start Date End Date Task Status Actual Completion Date
1 3/22/2015 3/28/2015 Research on the sensors, order sensors and multiplexers Completed 3/28/2015
2 3/29/2015 4/4/2015 Read the data sheet for sensors and understand its working. Test multiplexers Completed 4/4/2015
3 4/5/2015 4/11/2015 Interfacing of sensors, multiplexers and controller Completed 4/15/2015
4 4/12/2015 4/18/2015
  • Implementation of sensor data filters
  • Implement algorithm to recognize left-to-right movement
Ongoing
5 4/19/2015 4/25/2015
  • Implementation of final sensor grid
  • Implement algorithm to recognize up-to-down movement
  • Implement algorithm to recognize right-to-left movement
Scheduled
6 4/26/2015 5/2/2015
  • Implement algorithm to recognize pan movement
  • Implement algorithm to recognize down-to-up movement
  • Develop the application module
Scheduled
7 5/3/2015 5/9/2015 Testing and bug fixes Scheduled
8 5/10/2015 5/16/2015 Testing and final touches Scheduled
9 5/25/2015 5/25/2015 Final demo Scheduled

Parts List & Cost

SR# Component Name Quantity Price per component Total Price
1 Sharp Distance Measuring Sensor Unit (GP2Y0A21YK0F) 9 $14.95 $134.55
2 STMicroelectronics Dual 4-Channel Analog Multiplexer/Demultiplexer (M74HC4052) 3 $ $
3 SJ-One Board 1 $80 $80

Design & Implementation

Hardware Design

The image shows the setup of the project.

System Block Diagram:
The system consists of 9 IR proximity sensors, which are arranged in 3x3 grid. The output of the sensors is given to the Analog-to-Digital convertor on the SJOne Board to get the digital equivalent of the voltage given by the sensors. Since there are only 3 ADC channels exposed on the pins on the board, we cannot connect all the sensors directly to the board. For these we have used three multiplexers, which has 3 sensors each connected to its input. The output of the multiplexers is connected to ADC. SJOne board is connected to the laptop via UART-to-USB connection.

S15 244 Grp10 Ges block diagram.png

Proximity Sensor:
This sensor by Sharp measures the distance from an obstacle by bouncing IR rays off the obstacle. This sensor can measure distances from 10 to 80 cms. The sensor returns an analog voltage corresponding to the distance from the obstacle. Depending on which sensor returns valid values, validations could be made and hand movement can be determined. There is no external circuitry required for this sensor. The operating voltage recommended for this sensor is 4.5V to 5.5V.

S15 244 G10 Ges sensor.jpg

Multiplexer:
The chip used in the project is M74HC4052 from STMicroelectronics. This is a dual 4-channel multiplexer/demultiplexer. Due to shortage of ADC pins to interface with the sensors, use of multiplexer is required. The multiplexer takes input from three sensors and enables only one of them at the output. The program logic decides which sensor’s output should be enabled at the multiplexer’s output. A and B control signals select one of the channel out of the four. The operating voltage for the multiplexer is 2 to 6V.

S15 244 G10 Ges mux.jpg

UART-to-USB convertor:
To communicate to SJONE board over UART there is a need an USB to serial convertor and a MAX232 circuit to convert the voltage levels to TTL, which the SJONE board understands. Instead it’s better to use a UART-to-USB convertor to avoid the multiple conversions. This is done using CP2102 IC, which is similar to a FTDI chip.

S15 244 Grp10 Ges UART to USB.JPG

Hardware Interface

Pin connections for IR Sensor to Multiplexer:
S15 244 Grp10 Ges sensor-to-mux.png

Pin connections on SJOne board:
S15 244 Grp10 Ges sjone pinouts.png

Connections between SJOne board and UART-to-USB Convertor:
S15 244 Grp10 Ges SJOne to UART.JPG

Software Design

Filter Algorithm

State Machine Diagram:




Application Development
QT Software
QT is a cross-platform application framework that is widely used in developing application software that can be run on various software and hardware platforms with little or no change in the underlying codebase while having the speed and the power of native application. [1] It is mainly used to make GUI based applications but there can be applications such as consoles or command-line applications developed in QT. QT is preferred by many application programmers as it helps in developing GUI applications in C++ as it uses the standard C++ libraries for backend. Platforms supported by Qt are:

  • Android
  • Embedded Linux
  • Integrity
  • iOS
  • OSX
  • QNX
  • VxWorks
  • Waylands
  • Windows
  • Windows CE
  • Windows RT
  • X11

QT applications are highly portable from one platform to other as QT first runs a Qmake function before compiling the source code. It is very similar to ‘cmake’ which is used for cross platform compilation of any source code. The qmake auto generates a makefile depending on the operating system and the compiler used for the project. So if a project is to be ported from windows to linux based system then the qmake auto generated a new makefile with arguments and parameters that the g++ compiler expects.

S15 244 Grp10 Ges qtdevices.png
S15 244 Grp10 Ges qt-sdk.png

Implementation

This section includes implementation, but again, not the details, just the high level. For example, you can list the steps it takes to communicate over a sensor, or the steps needed to write a page of memory onto SPI Flash. You can include sub-sections for each of your component implementation.

Testing & Technical Challenges

Describe the challenges of your project. What advise would you give yourself or someone else if your project can be started from scratch again? Make a smooth transition to testing section and described what it took to test your project.

Include sub-sections that list out a problem and solution, such as:

My Issue #1

Discuss the issue and resolution.

Conclusion

Conclude your project here. You can recap your testing and problems. You should address the "so what" part here to indicate what you ultimately learnt from this project. How has this project increased your knowledge?

Project Video

Upload a video of your project and post the link here.

Project Source Code

References

Acknowledgement

All the components where procurred from Amazon, Adafruit and digikey. We are thankful to Preet for his continuous guidance during the project.

References Used

IR Sensor Data Sheet
LPC_USER_MANUAL
Multiplexer Data Sheet
QT Software