Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated the data #2

Open
wants to merge 21 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Images and Videos/Cad model.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images and Videos/Circuit Design.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images and Videos/Physical model1.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images and Videos/Physical model2.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Images and Videos/Working.mp4
Binary file not shown.
Binary file added Images and Videos/glove.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
30 changes: 29 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,29 @@
# Bionic-hand-Gesture-Controller
# Bionic-hand-Gesture-Controlled

This project consists of a 3D printed boinic hand controlled by the movents of a real hand, on which the glove is to be worn. It can easily be clasified into two components the physical hand to be controlled and the glove to controll it.

![Physical model](https://github.com/ShivamJha1808/Bionic-hand-Gesture-Controlled/assets/96729576/c1f6d492-af57-48ac-9987-0c487c3c2370)


## 3D Printed Boinic Hand
It is an assyembly of individual components of finguers, palm and forearm. The structure also houses the servo moters to controll the fingures and a microcontroller to operate every thing. The back face of the fingures has an ellatic string tied which provides force to pull it and keep it straight. Whenever any of the fingures is to be moved the servo pull a taught non ellastic string tied to the tip of fingure and passing through the front face of the fingure. the degree of bend of the fingure is decided by the amount of string pulled.

![Glove](https://github.com/ShivamJha1808/Bionic-hand-Gesture-Controlled/assets/96729576/aef4c383-391e-49d1-afb6-4d25489406c0)


## Glove (Controller)
On each fingure of the glove a flex sensor is attached. Whenever fingure is bent the flex sensor bends with it ass well. The resistance of a flex sensor change wrt the angle it has been bent. This change in resistance is measured using the voltage divider and analogue reading from micro-controller. Which is then mapped from 0 to 180 degrees to move the servo arm accordingly.

The circuit design and mechanical designs along with the arduino code are provided in the repositry.

```
Contributers
* Amit Kumar
* Aniket Raj
* Mitvik Sihag
* Naman Joshi
* Neelansh Varshney
* Shivam Jha
* Shivansh Sinha
* Utkarsh Singh
```
Binary file added circuit design/Circuit Design.PNG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions circuit design/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Circuit Design


## Components:
The components required for this perticular ciruit are
* An arduino UNO bord
* Five flex sensors
* Five servo motors
* External power supply of 5V
* Five resistors of resistance equall to max ratting of sensor


## Connections:

The flex sensors are connected to aanalog pins of arduino using the voltage divider circuit. The GND pin of each sensor if sorted with the GND pin on the arduino board. The positive pins of the sensor are connected to one end resistor whose other pin is connected to 5V vcc of the arduino board. The Analogue pins from A1 till A5 are connected to the junction between the positive terminal of the sensors and the resistors, creating a voltage divider circuit.

All of the servo motors are attached to external power supply (VCC to 5V and GND to GND). The signal pins of each of the Servos are connected to the digital pins of the trduino from pin 15 to 19.

The tinker cad link of the circuit design is also attached bellow. You can use the arduino code to simulate the circuit as well.
[Cuirct Design](https://www.tinkercad.com/things/c0V2zHpxv7D?sharecode=th-N2vNREqnd5TBbJzbb8K8ZItW0BL3fG6pjc-oyQbA)
66 changes: 66 additions & 0 deletions src/BionicArm_FinalDraft.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#include <Servo.h> //the library which helps us to control the servo motor

Servo fingure1;
Servo fingure3;
Servo fingure4;
Servo fingure2;
Servo fingure5;

int flex_5 = A5;
int flex_4 = A4;
int flex_3 = A3;
int flex_2 = A2;
int flex_1 = A1;

int flex_5_val;
int flex_4_val;
int flex_3_val;
int flex_2_val;
int flex_1_val;

String data="",prv_data="-1|-1|-1|-1|-1";
int msg[5];

void setup(){
Serial.begin(9600);
fingure1.attach(15);
fingure2.attach(16);
fingure3.attach(17);
fingure4.attach(18);
fingure5.attach(19);
}


void loop(){
flex_5_val = analogRead(flex_5);
flex_5_val = map(flex_5_val, 0, 730, 0, 180);

flex_4_val = analogRead(flex_4);
flex_4_val = map(flex_4_val, 0, 730, 0, 180);

flex_3_val = analogRead(flex_3);
flex_3_val = map(flex_3_val, 0, 730, 0, 180);

flex_2_val = analogRead(flex_2);
flex_2_val = map(flex_2_val, 0, 730, 0, 180);

flex_1_val = analogRead(flex_1);
flex_1_val = map(flex_1_val, 0, 730, 0, 180);


msg[0] = flex_5_val;
msg[1] = flex_4_val;
msg[2] = flex_3_val;
msg[3] = flex_2_val;
msg[4] = flex_1_val;
data=String(flex_1_val)+"|"+String(flex_2_val)+"|"+String(flex_3_val)+"|"+String(flex_4_val)+"|"+String(flex_5_val);
if(data!=prv_data)
{
fingure1.write(msg[0]);
fingure2.write(msg[1]);
fingure3.write(msg[3]);
fingure4.write(msg[3]);
fingure5.write(msg[4]);
prv_data=data;
}
}
12 changes: 12 additions & 0 deletions src/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Arduino Code

### Liberaries Required
* Servo.h (Can be installed fron Arduino IDE)

### Variable Descriptions
* fingure1 to fingure5: Objects of servo class controlling each of the fingures.
* flex_1 to flex_5: Variables storing the pin values for each of the flex sensors.
* flex_1_val to flex_5_val: Variables to store data read from the sensors.

### Program Flow
The program reads the analogue sensor values proportional to the degree of movement of the fingure. this value is then mapped to the range [0,180]. This value is then given to servo for moving the fingure. This process is repeated to keep the arm responsive and working.