Introduction: LeapTek : Leap Motion Interface With MediaTek LinkIt ONE Board!

About: Maker. Moonshot thinker. Researcher. Programmer. Quizzer. Teenager!

Hello Everyone,

I'm Geeve George a 15 year old Maker/Electronics Hobbyist.I love Computer Vision , Android Development and Algorithm Design.I am currently in 11th Grade Computer Science Student at Little Rock Indian School. :) Find more about me at : www.geevegeorge.co.vu.

What is Leap Motion ?

Leap Motion, Inc. is an American company that manufactures and markets a computer hardware sensor device that supports hand and finger motions as input, analogous to a mouse, but requires no hand contact or touching.

What is the Leap Motion Controller and how does it work ( In a Nutshell ) ?

The Leap Motion controller is a small USB peripheral device which is designed to be placed on a physical desktop, facing upward. Using two monochromatic IR cameras and three infrared LEDs, the device observes a roughly hemispherical area, to a distance of about 1 meter. The LEDs generate pattern-less IR light and the cameras generate almost 300 frames per second of reflected data, which is then sent through a USB cable to the host computer, where it is analyzed by the Leap Motion controller software using "complex maths" in a way that has not been disclosed by the company, in some way synthesizing 3D position data by comparing the 2D frames generated by the two cameras.

What is LeapTek ?


Introduction :

It has been a couple of months since I received my Leap Motion Controller. As soon as I got the controller I was super excited to build gesture recognition projects by programming the Leap Motion.

When I first started Leap Motion Programming , I used the Eclipse IDE and wrote java code to control Leap Motion. A month ago , I was curious to know of a means by which I can control hardware using Leap Motion. I have been using Arduino for more than 2 years and I wanted to know on how I could link the Arduino Platform and the Leap Motion Controller. I had found about Cylon.JS Which is a really amazing way to control Arduino Hardware using Leap Motion. But , I realized that I could use "Processing IDE" instead.

This is how the project got kickstarted and I am happy to open-source LeapTek using which you can control your Hardware Devices using a MediakTek LinkIt ONE Board and a Leap Motion Controller.


About the Device :

LeapTek is built on top of the MediaTek LinkIt ONE Board , it uses the Leap Motion Controller to detect gestures and 3 led's are lit up according the the Number of Fingers corresponding to the Led's are detected by the Leap Motion Controller.


Hope you enjoyed reading the Introduction , Now Let's Start Building LeapTek!

Step 1: Hardware Setup!

Materials Required :

1. MediaTek LinkIT One Board [Buy Here] ( Micro-USB and other components Included )

2. Leap Motion Controller [Buy Here]

3. LED's [Buy Here]

4. 10k Resistors [Buy Here]

Setting Up Hardware Parts :

  • Firstly , Take 3 LED's and 3 10k Resistors.
  • Connect LED's to the Breadboard , and connect the 10k resistors to each of the Led's such that the current flowing through the +ve lead doesn't damage the LED's.
  • Connect the LED's to the Digital Pins and Ground on the MediaTek LinkIt ONE Board.
  • After Completing the Software Setup ( Next Step ) , connect the Leap Motion Controller and MediaTek LinkIt ONE Board to the PC.

LeapTek 3D Box Design :

Step 2: Software Setup!

1. Mediatek LinkIt One Setup :

  • Firstly You need setup your MediaTek LinkIt One Board with the Arduino IDE , So I request you to follow the Instructions available in the Official Website of MediaTek Labs : http://bit.ly/1KcU66X
  • Once you have completed the Setup , you can launch the IDE and make sure you are connected to the Proper COM Port.


2. Leap Motion Software Setup :

  • Firstly you need to download the Processing IDE : [Download Here]
  • Next , You need to Install the leap motion library for processing , To do this :
  • Click on Sketch → Import Library... → Add Library. Then , search for leap motion and install the library by Michael Heuer or download it [HERE] and then add the library to your processing sketch directory ~/processing/libraries/


3. General Instructions :

  • Now , you can download the LeapTek Arduino Code attached here or from my [Github Repository]
  • Next you need to download the LeapTek Processing Sketch attached here or from my [Github Repository]
  • Firstly , Upload the Arduino Sketch to your MediaTek LinkIt One board and then next upload the processing sketch by editing the value of the COM Port in the Sketch.

Processing Source Code :


/* LeapTek : Connecting Leap Motion Controller to the MediaTek LinkIt One Board 
 * Author : Geeve George
 * Instrubtables : <a href="https://www.instructables.com/member/Geeve+George/" rel="nofollow">  https://www.instructables.com/member/Geeve+George/...>

*/
import com.leapmotion.leap.*; //leap motion library
import processing.serial.*; //serial communication library</p><p>Controller leap; //define a controller
Serial port; 

void setup(){
  size(250,250); //sketch size
  leap = new Controller(); // initialize the controller
  port = new Serial(this, "YOUR COM PORT HERE", 9600);//initialize the port in my case its [2]
}

void draw(){
  FingerList fingers = leap.frame().fingers().extended(); //finger list to get the fingers count
  int count = fingers.count(); // integer holds the count of fingers
  
  background(0);  // box background color
  fill(255); // text color
  textSize(height/2); // text size
  text(count, 90, 160); // text value and position on the box
  port.write(count); // port sends the integer to arduino
}


Arduino Source Code :

<p>/*<br> * LeapTek : Connecting Leap Motion Controller to the MediaTek LinkIt One Board 
 * Author : Geeve George
 * Instrubtables :  https://www.instructables.com/member/Geeve+George/...
 */</p><p>int ledone = 8;
int ledtwo = 10;
int ledthree = 11;
int c = -1; // int for income value</p><p>void setup()
{ 
  Serial.begin(9600); //set serial with baud rate
  pinMode(ledone,OUTPUT);
  pinMode(ledtwo,OUTPUT);
  pinMode(ledthree,OUTPUT);
}</p><p>void loop()
{ 
  if (Serial.available()>0){  //if we have incoming value
    c =Serial.read(); //read the value minus 48 
    Serial.println(c); 
    if(c == 0) 
    {
      digitalWrite(ledone,LOW); //if 0 fingers turn off led
      digitalWrite(ledtwo,LOW);
      digitalWrite(ledthree,LOW);
    }
    else if(c==1)
    {
      digitalWrite(ledone,HIGH);
      digitalWrite(ledtwo,LOW);
      digitalWrite(ledthree,LOW);
    }</p><p>    else if(c==2)
    {
      digitalWrite(ledone,LOW);
      digitalWrite(ledtwo,HIGH);
      digitalWrite(ledthree,LOW);
      
    }</p><p>    else if(c==3)
    {
      
      digitalWrite(ledone,LOW);
      digitalWrite(ledtwo,LOW);
      digitalWrite(ledthree,HIGH);
    }
    else if(c == 5) {
      
      digitalWrite(ledone,HIGH);
      digitalWrite(ledtwo,HIGH);
      digitalWrite(ledthree,HIGH);//if 5 fingers turn on led
    }
  }
}</p>

Step 3: Results!

I have attached the video here showing how the project works!

  • Show 1 finger to turn on the first led.
  • 2 fingers to turn on second led.
  • 3 fingers to turn on third led.
  • 5 fingers to turn on all the LED's.

Thanks for reading this instructable. I am happy that I was able to open this project. I am looking forward to all the amazing builds that can be made by modifiying this project!

I will be open-sourcing more projects , stay tuned in! :)

#Keep Making!

Make It Glow! Contest

Participated in the
Make It Glow! Contest

Tech Contest

Participated in the
Tech Contest