Introduction: Gesture Calculator(Intel IoT)

The idea behind the project is to develop a calculator which works based on the hand movement which will be useful for the visually challenged to perform arithmetic operations.

Step 1: Idea

The motto of the project is to make the visually challenged to perform mathematical calculations. A Gesture based module interprets mathematical data and operators from the finger movement.It facilitates the visually challenged/impaired to perform arithmetic calculations(Addition,Subtraction,Multiplication,Division). Gestures, Specifically finger movements are used to input values with which the required mathematical calculations can be performed.

Gesture controls are enabled by interfacing the flex sensor embedded gloves with a Intel Edison. Flex Sensors are placed in a voltage divider circuit with a potentiometer .Based on the multiple resistance values obtained on bending the flex sensor, the user's input the specific value. these values are processed in the intel edison. The output of the calculation can be heard through the bluetooth speaker. and also displayed via lcd display.

Step 2: Hardware Used

Intel Edison

Flex Sensors

Groove Speaker

Groove Lcd

Groove button

Potentiometer

Step 3: Design Procedure

  • Fit the potentiometer to the flex sensor to vary the resistance level.
  • Fix the flex sensors to a gloves.
  • Provide the power Supply to the flex sensors.
  • Have common ground and power supply point.
  • The power is supplied via Intel Edison.
  • Based on the output range of flex sensor allocate the numericals and operators to perform Calculations.
  • Interface speaker and lcd to the Intel Edison Board.

Step 4: Code:

int sensorread1=A0;

int val1=0;

int sensorread2=A1;

int val2=0;

int sensorread3=A2;

int val3=0;

int sensorread4=A3;

int val4=0;

int pin1=2;

int pin2=3;

int pin3=6;

int pin4=7;

int pin5=5;

int a,b,c,d;

int ans;

void setup()

{

Serial.begin(9600);

pinMode(sensorread1,INPUT);

pinMode(sensorread2,INPUT);

pinMode(sensorread3,INPUT);

pinMode(sensorread4,INPUT);

pinMode(pin1,INPUT);

pinMode(pin2,INPUT);

pinMode(pin3,INPUT);

pinMode(pin4,INPUT);

pinMode(pin5,INPUT);

}

void loop()

{

if (digitalRead(pin1))

{ val1=(analogRead(sensorread1));

//Serial.println(val1);

delay(2000); if (val1>=265 && val1<=295)

{

a=1;

Serial.println(a);

}

else if (val1>=155 && val1<=180)

{

a=2;

Serial.println(a);

}

else {

Serial.println("");

} } /*=========================================================================================*/

if (digitalRead(pin2))

{ val2 =(analogRead(sensorread2));

//Serial.println(val2);

delay(2000);

if (val2>=170 && val2<=230)

{

b=3;

Serial.println(b);

}

else if (val2>=500)

{

b=4;

Serial.println(b);

}

else

{

b=5;

Serial.println(b); } } /*=========================================================================================*/

if (digitalRead(pin3))

{

val3=(analogRead(sensorread3));

//Serial.println(val3);

delay(2000);

if (val3>=320 && val3<=340)

{

c=6;

Serial.println(c);

}

else if (val3>=260 && val3<=290)

{

c=7;

Serial.println(c);

}

else

{

c=8;

Serial.println("8");

} } /*========================================================================================*/

if (digitalRead(pin4))

{ val4=(analogRead(sensorread4));

//Serial.println(val4);

delay(2000);

if (val4>=275 && val4<=300)

{

Serial.println("+");

}

else if (val4<=275)

{ Serial.println("*"); }

else

{

Serial.println("");

} } /*==========================================================================================*/

if(digitalRead(pin5))

{

if(val4>=275 && val4<=300)

{

ans=c+a;

Serial.println(ans);

}

else if (val4<=275)

{

ans=c*b;

Serial.println(ans);

} } }