Introduction
Hello, my name is Adan B., and I am a rising junior at Kipp King Collegiate high school in San Lorenzo, California. I am currently attending the Bluestamp engineering program for 6 weeks, and I can say that I love it here. A lot of students wonder about the things that they learn, thinking why do they learn these things even though they will never use it in the future. Well here things are different. Here, you learn how to be an engineer with hands on training, and what you will actually be doing in the future. This is place where engineers are created, and I am currently in that process. Here at Bluestamp, you build a a starter project and a main project. My starter project is a mini POV, and my main one is a hand gesture controlled robot.
Main project
Main project final video
Description
Here is my final video for my main project. As you can see, a lot has been done since my milestone #2 video. The first thing I did after I configured my xbees was to get started on the robot. The robot was going to based off of another the robot I saw on the intructables, except with my design and some different components. Here are the steps I took to create my robot and to also configure it to my glove so they can work.
- The first step to creating my robot was to create the chassis for my robot. To do this I used a piece of wood that was left over from some one else’s chassis. At first I cut a humongous piece, about 10″ by 11″, which I cut using a jig saw. One of my instructors told me that it was too big, so I reduced it to 8″ by 8″. I then created little platforms about 3 1/2″ by 8″ so that they could fit my battery pack and my arduino set up. However, one of my instructors stated that all the components needed for my robot could fit on the two little platforms, so that is what I did. After I had my two pieces of wood, I had to make holes into the corners for the spacer studs so that the two pieces of wood could be separated. I cut the holes with just a regular drill about about the half inch away from every corner. After this, I simple screwed in the spacer studs, which I then unscrewed later because you add anything in between the pieces of wood.
- Step two was to simply add the vex motors to the chassis. First I had to add the vex motors onto the bottom of the chassis. I put these on with L shaped brackets, a vex bar I cut in half, one half for each motor, and some screws. I had to make holes in order to connect the L shaped brackets, but that wasn’t too hard.
- In step three, I taped the arduino with the xbee shield close to the end of the chassis. Then I added a bread board to the other end of the chassis in order to connect all the wires on the robot. I used vex motor controllers to connect the motors to the arduino. I made this circuit in order for any reader to understand how I set up my wiring.
- Once the circuit was finished and the robot was finished, I simply uploaded the code for the robot onto the robot and the code for the glove onto the glove. The codes I linked are edited and made to work with vex motors. I used the movement of the thumb to go backwards, middle finger to go forward, pointer finger to turn right, and ring finger to turn left.
Milestone #2
Xbees
My second milestone is configuring the xbees that are required to for wireless communication between my robot and my glove. The xbees proved to be very hard to configure, with multiple problems reveling themselves throughout the three weeks in took to configure my xbees. First problem that surfaced was that I could not find a good tutorial on the internet explaining how to configure xbees. Three weeks later, after I was close to giving up on them, I learned that the type of xbees that I had, which were series two, are zigbees and not xbees, which means I had been looking for the wrong tutorials the whole time. With the zigbees, all I could get was one day communication but only between XCTU software, which is the software used to configure xbees. One way communication was really all I needed, but me being the perfectionist I am, I had to get two way communication. This is where I ran into the biggest problem I had during the whole program. So to get two way communication, I knew it had something to do with the firmware on the zigbees, so I changed the firmware on one of them and I ended up bricking it, which in other words means I screwed up. I tried to unbrick my zigbee for a little more than a week with no luck, and I knew that I didn’t come up with a solution fast than I was probably not going to finish my project. So after trying for a very long time, and with the help of an instructor, I fixed my zigbee and recovered the one way communication I had before. However, I only had communication over XCTU, and I needed the xbees to communicate over arduino/xbee shield. After trying various things to try and get communication over arduino, even using another friend’s xbees instead of mine, I realized I had made a major mistake. So the whole time I had thought that my xbees were not communicating because they were not working, but they did work because they could communicate over XCTU. I talked to a guy on Sparkfun and he made me realize my first mistake, that being that the code I was using to try and communicate over arduino needed something more for it to work, this being because I was using arduino leonardos and not any other arduino. However, the main problem I had was that I did not connect enough to my xbee shield in order for it to properly communicate with the arduino.
Now that I fixed these problems, and after getting a new pair of xbees, these ones actually xbees, and with the help of a friend, I was able to get two way communication between xbees. Once I had this down, all I did was write a code that would make an arduio/xbee shield setup turn on an LED when it receives data from the xbee connected to my computer, that data being a 1 for on and a 0 for off. This is probably the hardest challenge I will have throughout my whole project. Next steps will be to build a robot for my glove to control, and program the robot and the glove to communicate.
Video
Milestone #1
Hand gesture robot (glove only)
Here is the first part of my main project, which is going to be a hand gesture controlled robot. The first part of my project consisted of making the glove part of my project. Basically the glove will control the robot, which is in construction. The glove is many of many different parts, but the three most important parts are…
Arduino Leonardo
This is a micro controller that essentially is the brains of the whole glove. It reads the values from the flex sensors, processes them, then sends them to the robot via an xbee.
Flex sensors
These are what are attached to the fingers of the glove so that they can be flex with the fingers. When these things are flexed, they read this and send the information to the arduino. The arduino and the flex sensors are wired together with simple wires and 22k ohm resistors.
Xbees
These are what enable the wireless communication between the arduino on the glove and the arduino on the robot. There is one xbee mounted on the glove and another on the robot. The xbee on the glove is the router, and it will send information to the xbee on the robot, which is the coordinator.
Process
Part one of my main project proved to be very difficult. The first part to putting the glove together was getting all the materials necessary. All the above parts were used and also an xbee shield, which is just used to connect the arduino to the xbee, resisters, a button, headers to connect the xbee shield to the arduino, and button which will be for later in the project.
- The first step to making the glove was to make sure my flex sensors worked. To do this I had to connect the flex sensors to one of my arduino using a bread board, then I uploaded a code onto my arduino and I opened the serial monitor on the arduino software and wrote the values shown on there. Here is the way I connected the flex sensors to the arduino
- After I made sure that each of my flex sensors were working correctly, it was time to connect my xbees. First what I did was download the XCTU software in order to connect the xbees, and then I had to connect my xbees to the software, which is where I ran into my first problem. When connecting the xbees, I successfully connected one by using the xbee dongle, but since I only had one dongle, I attempted to connect the other using the arduino/xbee sheild setup, which proved ineffective. So with the help of another friend’s dongle, I successfully connected both of my xbees to the XCTU software. Now to actually connect the xbees, I had to change the firmware on one of them so that it would be a router, and that is how I got a communication link between the xbees.
- The next step was to simply connect my flex sensors to my arduino/xbee shield setup via wires and resisters, and then I also soldered a button onto the xbee shield so that I can toggle between one function on the robot and another. After I finished wiring, I simply sewed my flex sensors onto the glove so that they stay and so that they move with the movement of my hand. After I connect my robot to my glove, I will add a battery pack to the glove so that it can function without being connected to a computer.
Video
Starter project
Hardware
My starter project was the mini POV. Although it was easy building the actual POV, the programming and coding part was where it got difficult. The actual device was made up of many components, but they all fall under 10 different things. The first and main part of the POV was the silk screened PCB which is basically where all the components were soldered to and it also allowed for the transfer of energy from the batteries to the rest of the components soldered on to the PCB. One of the components attached to the PCB were 3 ¼ W 4.7 K resistors used to manage the flow of electricity to the micro controller. The micro controller is essentially the brains of the the POV. It is a single integrated circuit containing a processor core, memory, and programmable input/output peripherals. To connect the micro controller to the rest of the POV, a 20 socket pocket was connected to the micro controller to complete the circuit from the micro controller to the POV. To control the flow of electricity throughout the POV, three 5.6 V zener diodes were used so that electricity would flow in one direction through the zener diodes, and energy would only flow in the opposite direction is if the energy capacity exceeds 5.6 V. The message displayed by the POV is produced by 8 red 5 mm LED lights, soldered on to the PCB in a straight line very close to each other. To manage the flow of electricity to the LED lights, 8 ¼ W 100 ohm resistors were used so that LED’s would not burn from receiving too much energy. In order for the POV to display a message, the micro controller on the device had to be connected to a computer through a DB-9 female connector. The final part of the POV is the battery pack, which supply’s the POV with energy to display a message. This is the hardware part of the POV.
Software
The software part of the POV was very difficult. First I needed to download the Avr terminal application in order to code the POV, but since I was using a USB to serial port connection to connect the POV to my computer, some modifications had to be done to terminal in order for my computer to communicate with the POV. Once that was done, the actual code had to be written, which consisted of 0’s and 1’s, 0 meaning a certain light on the POV be turned of for that time and 1 being for it to be on. I finished the code after some time, uploaded it to the POV, and finally attempted to see if the POV worked and it showed the message I wanted it to show. I was successful in this, and got the POV to display HBDJ (acronym).
POV=success
Schematic
(Taken from https://learn.adafruit.com/assets/5643)
Video