Gesture Controlled 3D Printed Robotic Hand
Area of Interest
BASIS Independent Silicon Valley
My final milestone was, in many meanings of the phrase, putting everything together. I had my working circuit and my functional code, and I just needed to finish the glove and assemble my 3D printed hand. I used special connectors so that I could effectively solder wires to the sensors and connected that to my new PCB. My PCB, or printed circuit board, was essentially just a more permanent, soldered-on version of my breadboard circuitry. Once I had that working, I moved on to sew my flex sensors to my glove and make sure that wouldn’t fall apart. Along the way I realized one of the flex sensors was shorted out, as I’d melted the pins in a botched soldering job. Once I got a new one and finished the whole glove contraption, it was time for the real fun to begin. Assembling the robotic hand was not the cakewalk I assumed it would be, and required a lot of effort and attention to detail. I spent a great deal of time filing the plastic joints to minimal friction. Then I had to string the fingers with fishing line, and attach and tighten them to my servos. I used hot glue for temporary adhesion while i crimped the wires, which I decided to remove using a heat gun. However this heat gun ended up melting my fishing line, forcing me to restart. Eventually I got everything together and found out that my servos were fried. After getting replacements and frying one of those too, I eventually made my hand run on 3 servos. One running my pinkie and ring, one running my middle, and one my index. My thumb was unfortunately uncontrolled by anything.
My second milestone is connecting all my servos to my flex sensors in my circuit. Previously, I had a single flex sensor controlling whether or not my LED was turned on. The program printed out the value of the resistance of the flex sensor at any given flex level, and once it reached 100k ohms, the LED would light up. I took that and continued with it, adding all 5 flex sensors and 5 mini servos into the circuit, such that each flex sensor would controlled its corresponding miniservo. I duplicated the voltage divider circuit five times for each flex sensor on one side of the breadboard. The other side housed the wiring for my five mini servos. Each servo has three wire, the negative, the positive, and the signal. I connected the signal wire of each servo to a digital port. Servos require a solid amount of current to run properly, around 500 mA, but arduinos cannot safely output that amount of current. As such, I had to use an external power source. Originally I used a battery pack with 2 AA batteries, and later on I experimented with a power supply, but I eventually settled on a USB to micro USB battery charger and a breakout board. I had a couple defective servos and that combined with my somewhat faulty program made it difficult to solve early problems. But with the help of my functioning previous code I eventually fixed my program and made it output the right values for my flex sensor resistances and control the servos correctly.
My first milestone was connecting the flex sensor to the arduino and measuring the values it outputs. The flex sensor is essentially a variable resistor, and as the sensor bends, the resistance increases, dropping more voltage and causing less current to flow through whatever circuit it is a part of. I hoped to find the resistance at any given moment as part of my first milestone. In order to do so, I created a voltage divider so that I can use the voltage divider equations in order to find and output the resistance of the flex sensor as it bends. I had to rearrange the equation a bit in order to solve for the flex sensor’s resistance, as shown on the napkin. The input voltage is 5V from the port on the Arduino, and the other resistor in the voltage divider is a 22k ohm resistor. My program took in the analog value of the output voltage provided by the circuit and converted it an actual voltage and then plugged that in to the rest of the equation. Analog values range between 0 and 1024, and therefore dividing the value read by the Arduino by 1o24 and multiplying by 5V gives an accurate value for the output voltage as a result of the voltage divider. The value of the resistance is printed onto the serial monitor, and once the resistance reaches a threshold value of 100k ohms, the LED lights up.
My Starter Project is the Useless Machine, a box that stubbornly resists the flipping of a switch through a motor controlled plastic arm that pops out of a door. I enjoyed this project because I learned about the different electrical components and their roles in this circuit and how to solder them together, as well as how to assemble a basic mechanical construction.
How it works
The Useless machine is composed of a PCB, a motor, a plastic arm, and is powered by 3 AAA batteries. The PCB is composed of a flip switch, 2 resistors, 2 terminals, an RGB LED, and a snap switch. The battery pack and the motor connect by way of the terminals into the PCB, which controls all the motion and action. The two switches on the board, a normal flip switch and a snap switch, serve to control the motion of the arm on the motor. The snap switch is triggered when the arm of the machine is lying prone and stops the motor from moving further, and when the flip switch is triggered current is sent to the motor in order to move the arm up until it hits and resets the flip switch. Once it does, current is sent in the opposite direction the arm moves back down until it lies prone again. Additionally the RGB LED that glows green as the arm moves up and red as it goes down. There is a hinge flap which hides the internal components of the box that the arm pushes up in order to flip the switch.