Hi, my name is Shanmukha and I am a rising Junior at Bridgewater-Raritan High School. For my intensive Bluestamp project, I decided to construct a Glove Controlled Robot, based off of this instructable. I chose this project due to my love for all types of engineering. After hearing that it one of the most difficult projects that students are able to create at the program, I decided that this would be a great way to challenge myself, and it was.
Overall, my experience at Bluestamp this past summer was a tremendous stepping stone into my future as an engineer. I learned about electrical engineering, computer science, and mechanical engineering just by creating this robot. I recognized that problems come up all the time, and it takes an engineer to solve them. I realized there is no better feeling one can experience than getting something to run after days, or even weeks, of tirelessly working on it. I know that I want to pursue a career in engineering, and hopefully solve some everyday problems that people face today.
Area of InterestComputer Engineering
SchoolBridgewater-Raritan High School
Wiring/Project Video: https://www.dropbox.com/s/r2fy85d47muab3o/Robot.mp4?dl=0
Bill of Materials: bill-of-materials-for-robot
Motor Driver Schematic: https://cdn.sparkfun.com/datasheets/Robotics/TB6612FNG%20Breakout%20v11.pdf
I finished my intensive project at Bluestamp Engineering. After finishing the second milestone, I had to make several improvements to the robot to get it to work how I wanted it too. It was a strenuous process, but it was all worth it when I saw the claw opening and closing finally.
The first thing I did was I set up the chassis. I took a metal plate (“1/4” inch), and cut it into a rectangular shape with the dimensions 10 inches long/ 8 inches wide. I thought this would be a good size, and it turned out that it was the perfect size to fit all of my components on. After cutting the metal, I used sandpaper to smooth out the edges since they were still very sharp. I then drilled holes to attach the motor holsters, and put int the 2 front wheels. After putting in all of the wheels, I put the battery pack on the chassis. To keep it on properly, I drilled 2 extra holes and used zipties to hold it down. I then put the breadboard and Arduino onto the battery pack using velcro.
After finishing the chassis, I went to work on my claw. I was lucky enough that there was a youtube video on how to assemble the specific claw I had, and I was able to make it pretty quickly. My problems with the claw came when I mounted the claw onto the chassis. What happened was that the claw was too heavy, and the motors could not move the car with all of the sudden weight. I figured out that the best solution for this was to directly power the motors with 12 Volts, which would make it go faster, and the extra weight of the claw now did not matter after doing this. After finishing the chassis completely, I worked on completing the code for the project.
The first thing I did on my code was change all of the while loops that I was using to “if else” statements. I had a huge if statement, with multiple if else statements nested in it. This was much better as it eliminated a lot of the delay i was previously experiencing with the motors. I then coded for the servos that the claw is essentially controlled by. I set them to specific degree values, and made gestures that would open or close the claw, move the base left or right, and move the wrist up and down. I also made 2 functions called “ void move_motors” and “void move_claw” and put both of them in the a loop. If certain characters were sent from the hand Arduino/Xbee, then the motors would run, and if different characters were sent, then the claw would move. This made it easy for me to avoid any confusion. The claw became problematic for me but I realized it was because the 5 Volt regulator, which powered the claw, was heating up. This would stop it from working at times. To fix this problem, I added a big heat sink for surface area. After doing such, my project worked exactly how I wanted it too.
My second milestone was using my glove to control the motors. This process had a lot of steps involved. This involved learning XCTU(the Xbee Software), the functionality of an H-Bridge dual motor driver, a lot of coding, and even learning how to sew! My first step in achieving my second milestone was getting the Xbee to connect and communicate with each other.
To get the Xbee’s to connect, I had to download XCTU, a program used to connect the Xbee’s. Xbee’s are wireless communication devices which can also attach to the arduino. I knew that using these would make it easier for me in the long run, because then I would just use arduino to code for the Xbee’s. Using the Xbee’s proved to be a difficult task for me, specifically getting them to connect. To do so, I learned what the Xbee’s actually were, and tried to understand the functionality of them. I then used a Xbee shield to plug the Xbee into my computer. By doing so, I was able to change the PAN ID to be the same for both of them. I already knew that one Xbee would act as the router (data sender), and the other Xbee would act as a coordinator(data receiver). To accomplish this, I made the Destination Address High the same for both Xbee’s and made the Destination Address low on the coordinator the same as the Serial Low of the router. This allowed one way communication between the Xbee’s.
After changing the settings on XCTU, I wanted to test out if the communication was actually working. I decided to run a LED Blink Test. To do this, I put the both Xbee’s on separate Xbee shields, which would allow me to attach them to arduinos. I needed 2 arduinos, one for the router Xbee, and one for the coordinator Xbee. They both were programmed differently, and I was able to get the LED, which was on the coordinator Xbee shield, to blink.
My next step was constructing the glove. This was a really laborious process because I actually had to learn how to sew. It was more difficult than I expected, and I could not get the hang of tying off the string at the end. Also, my stitches were a bit wide for my pinky finger, and the sensor popped out of the stitches. To fix this, I simply cut the stitches, and restitched the finger. Overall, it was a rewarding process, and was a vital step in achieving my goal.
Furthermore, I had to learn how to use a H-Bridge dual motor driver. I used this device to control 2 motors simultaneously. In my video, I only demonstrated one motor running, but 2 can run as well. After attaching the H-Bridge to a breadboard, I worked on the code for my project. As stated before, I had 2 different programs, one for the router, and one for the coordinator. The router reads the flex sensor values and sends a character depending on the if-statement. For example, say I want the motors to run forward if the index finger and the middle finger are bent. That means that I would have an if statement saying that if both of the conditions are met, then the router Xbee would send a character to the coordinator Xbee. If that specific character is read, then the Xbee would run a specific block of code(in this case it would make motor 1 and motor 2 go forwards)
My next steps are to code for different types of gestures, set up the chassis, and create the claw.
My first milestone was constructing the flex sensor portion of the project. This involved learning how to solder, understanding the uses and functionality of a breadboard. I made 5 different flex sensors, and I tested them all out on a breadboard. The way that flex sensors work is simple: when bent, resistance increases, which lowers the voltage. That ensures a different reading when bent, and that is why flex sensors are a key component in this project.
Using the breadboard to ensure my circuit was correct and working was my first step in this project. I then had to solder the correct wires together. Before doing so, I color coded my wires to attach the flex sensors. Coming off of every individual flex sensor, there are two different connections which I made. The right one, also called the Vcc, is attached to each individual flex sensor. The left one is attached to ground. Connected to that is a 22kΩ resistor, which then connects to another wire. My third wire connects directly from the left metal pin to ground (See the picture below for an overview schematic). After connecting all of the wires, I just added electric tape the connections to ensure that the soldering would stay put, and so the circuit would not short. The entire circuit is powered by a 5V power supply, which I used the arduino for. I created a program for testing the flex sensor values on the arduino as well. To gather all of my values, I used the serial monitor. I also used the map function in my code to restrict the values that the serial monitor would display from between 0-100. When the sensors were unbent, they all measured in the 95-100 range. When fully bent (like they would be on my glove), the readings came out between 20-35, depending on the finger I tried it on.
My next step in completing this project is getting the Xbees to communicate, and also getting my flex sensors to connect to the Xbees.
My starter project is the electronic die. I decided to uptake this project due to the fact that I would learn more about circuitry and different electric connections. The basic overview of the project is that it works just like a regular die, and it uses LED lights to showcase the different rolls. There are four different pin combinations used by the PIC microcontroller to make all six different roll possibilities. Each of the four different pin combinations trigger a different dot pattern. Only four dot lighting patterns are used, as I explained in the video.
To actually roll the die, the piezo needs to be turned on. To complete this action, the acrylic base which the piezo rests on is tapped on any surface. This turns the piezo on, and the piezo sends a pulse to the PIC microcontroller. This wakes up the PIC from sleep mode, and it goes into its interrupt routine. During this stage, a regular pin is changed to an analog pin, and the piezo value is read at that time. Also, after 15 seconds of no movement, the PIC microcontroller automatically turns off, in an effort to save battery.
Another thing to note about this project is that the die roll is completely random. The same number could be rolled twice. The reasoning behind this is because the piezo sends the PIC microcontroller a random number between 1 and 1023. The last three digits are taken, and the lowest significant figure is read. If a zero or any number that is not between one and 6 is read, the test reruns itself. Once a functional value is read, it is then displayed on the LED lights.