Glove Controlled Robotic Arm

A robotic hand controlled from a distance is capable of completing many jobs: even in environments hazardous to humans.

Engineer

Kenta H.

Area of Interest

Mechanical Engineering, Biotech

Final Code + Bill of Materials

School

Monta Vista High School

Grade

Rising Junior

Overall Reflection

I had fun constructing this project, as I was able to learn the basics of both electrical and software engineering. My experience in coding will especially help me in the future, as coding has become a fundamental part of almost every field of engineering. All of the resources, whether it was from the internet or from the instructors, were helpful and essential factors for my project. The environment of Blue Stamp was also a fun and supportive place to work on my project, as I was able to learn may concepts of engineering while also making new friends. Overall this program was a really great experience for me. 

Final Milestone

My final milestone is to have the robotic arm controlled wirelessly through the flex sensors on the glove. Bending the fingers with the glove on will allow the person to control each axis of the arm. I also moved every circuit from a breadboard to a perf board, as well as added a battery pack for the robotic arm so that it does not have to be connected to my computer.

Similar to my second milestone, each flex sensor controls different servo motors through the bending of the sensors. However, instead of sending analog values directly to the digital pins on the Arduino, the data first goes to a nrf24l01. There are two nrf modules in the project: one transmitter and one receiver. The analog values are sent to the transmitter nrf module, which then sends the data through radio waves to the receiver nrf module. The receiver nrf module then sends the data to a separate Arduino to control the arm. 

A key component of this milestone is the nrf module. The nrf modules can be coded as either a transmitter and a receiver. They use the 2.4GHz band and can operate with baud rates from 250kbps up to 2Mbps. There are also eight pins on this module. Two of the pins, Vin and GND, are what powers the module. The CE and CSN pins are wired to the digital pins of the Arduino and can set the modules in standby or active mode. The three SPI pins are wired to the ICSP pins of the Arduino and are in charge of communication. The last pin, the interrupt pin, is not used in this circuit.  A major problem I faced while working on this milestone was having the nrf modules interact with each other. In the beginning, I tried to have them send simple messages, but nothing showed up on the serial monitor for the receiver code even though the serial monitor for the transmitter displayed that data was being sent.  After research and rewiring the SPI pins to the ICSP pins instead of digital pins, I was successful in having the two nrfs interact. A modification I have in plan are to replace the Arduino UNO on the glove to an Arduino NANO to make the circuit on the glove smaller. I also plan to add a battery pack for the glove so that the glove does not have to be connected to my computer. 

Second Milestone

My second milestone is having a robotic arm function with flex sensors attached to a glove. Every connection from the glove to the arm is wired for a more secure communication. The 6V battery pack feeds the voltage to the servo motors while the Arduino provides voltage to the flex sensors.

By wearing the glove and bending their thumb, index finger, middle finger, and ring finger, the robotic arm can be controlled. Each finger controls a different axis of the arm: the rotation, main actuation, second actuation, and the gripper. A key component of this milestone is the flex sensors. Flex sensors have polymer ink with conductive particles inside that causes a certain resistance to the current. When the sensor is bent, the distance between the particles increases, also increasing the resistance. These flex sensors, along with the 22kOhm resistors on the breadboard, create a voltage divider. A voltage divider works by using two resistors in a series to divide the input voltage and creating a different output voltage. When the flex sensor is bent, the resistance increases, increasing the voltage drop of the flex sensor and therefore decreasing the output voltage. The analog pins in the circuit read the changes in the voltage and send them to the Arduino, where the uploaded code converts these values to angles of rotation for the servo motors, allowing the arm to function. A major problem I faced while progressing in this milestone was having a single servo motor function with a single flex sensor. After learning many concepts, I was able to figure out through the serial monitor that the flex sensor was successfully causing differences in values, but that the servo motor was physically broken. After replacing all the servo motors I was able to control the servo motors with the movement of the flex sensors.

First Milestone

My first milestone is having a robotic arm function with a software controller. Each servo motor controls a different part of the arm: the rotation of the arm, the movement of the main axis, the movement of the second axis, and the claw.

The robotic arm functions when any changes are made to the numbers on the controller and the data is sent to the Arduino. The yellow pins of the 3pin servo motors are wired to the Arduino to receive the signals, while the other red and orange pins are wired to a breadboard to receive energy from a 6V battery pack. This battery pack is required for the arm to function because my computer is not enough to power the four servos for function.  

Key components include the servo motor, which is able to rotate a certain amount of degrees because these servos send a Pulse Width Modulation through the control wires, such as the minimum and maximum pulses, allowing the rotor to spin to the desired position. Other components include the breadboard, which sends current from the battery pack to the servos, and the Arduino, which is able to store the code for the software to control the servos. An example of the code is

 

if (Serial.available() ) {
servo1Pos = Serial.parseInt();
servo2Pos = Serial.parseInt();
servo3Pos = Serial.parseInt();
servo4Pos = Serial.parseInt(); 

 

These lines of code allow each servo motor to obtain the servo position values from the serial ports. A major problem I faced while working on this first milestone is that whenever I moved the arm, the arm would start to shake very wildly and would not stop. Through research, I found out that this was caused by a fault in the way the Arduino sends pulses. After trial and error, I was able to greatly reduce the shaking by placing a cable tie around one of the servos.

The Useless Machine

My starter project was the Useless Machine, a contraption that functions when the lever on the top is tilted, causing an acrylic arm to come out of the opening door of the box and returns the lever to its original position, and the arm returns to its initial state.

Some of the key components for the useless machine include the 6-pin lever, the controller of the whole contraption and the flow of energy, the snap switch, which restricts the movement of the arm, the LED, which turns green when the arm comes out and turns red when the arm returns back into the box, and resistors, which restrict the flow of current from the batteries to the LED to prevent the LED from breaking. A major problem I faced while constructing this project was assembling the box itself, for the pillars on the edges did not have threads in the holes, making predrilling a necessity for the assembly. I also had trouble having the arm to function, but I was able to fix this by soldering the wires more for better connections. This was a great project for a start because the process of building the machine is similar to what I will go through for my main project.

STEM Summer Camps Coding & Robotics Classes For Kids San Francisco Coding & Robotics Classes For Kids New York Coding & Robotics Classes For Kids Denver Coding & Robotics Classes For Kids Palo Alto STEM Summer Camps For Kids in New York STEM Summer Camps For Kids in Palo Alto STEM Summer Camps For Kids San Francisco STEM Classes For Kids in New York STEM Classes For Kids in Palo Alto STEM Classes For Kids in San Francisco Code Classes For Kids Code Classes For Kids in New York Code Classes For Kids in Palo Alto Code Classes For Kids in San Francisco STEM Summer Camps For Kids

Leave a Comment

Start typing and press Enter to search