Hi my name is Zach I go to Jewish Community High School of the Bay, For my starter project, I built the electronic die. It is used by tapping its bottom side and then it will give you a number between one and six with green LED’s. It was extremely fun to use, and if you want to build it yourself order the building kit at this link.
Before this program I didn’t know basically anything about building robots or programing and throughout the program I learned how to do much of this in an area I am very interested in (I want to work with cars). This program has given me the bases of going off and making projects on my own. In spite of this the most important thing I learned was a mentality towards project building. I learned to never give up no matter how badly you think you just messed up your project or how hard it is to build, you just have to keep going and you will fix it.
Since my second milestone, I have done a video camera modification. I ordered a drone camera with a pre-attached antenna to the top of the robot. I then attached a receiver, screen, battery, and switch to my controller. The camera transmits a signal to the receiver on the 12th channel (my receiver can pick up 64 signals). The receiver sends the signal to the screen so the screen shows what the camera sees. The screen and the receiver on my controller are powered by a 12V battery. My greatest challenge with this was that when the camera was plugged in, the 5V pin was overheating and would not work, but when I plugged it into the 3V pin it would just show static. I ended up putting a diode into the 5V pin to lower the voltage down to 4.3V. This solved the problem; it didn’t overheat, but it still showed what the camera was seeing on the screen.
For my second milestone, I completed writing the code to run my robot. To do this I had to learn some trigonometry to turn the x and y coordinates that the controller sends to your Arduino into wheel speeds that the motor controllers send to the wheels. I thought of the x and y coordinates as part of a right triangle. Using the Pythagorean theorem we find the third side which is defined by the variable “L.” The variable L is the speed of the robot. On the inside of the triangle is the 90 degree angle and the angle theta, “Θ”, which is the angle between the direction of the robot and the forward on the robot. The way to find theta is to take the arctangent of y over x. Now I wanted to get the angle of the direction of the robot relative to the wheel. Using the variable omega, “Ω”, which is the angle of the wheel relative to forward on the robot. We find the angle of the robot motion relative to the direction of the wheel by doing the equation Θ-Ω=. Next I wanted to get the speed of the wheel. To do this we need to do L*cos(Θ-Ω)=speed of the wheel.
While working the math, the problems I ran into mostly dealt with understanding the trigonometry used in the code. This was my first time using trig functions like cos, arccos, and variables like omega and theta. It took me about 2 days to understand the math. Really, the only way to get through it was to be persistent.
After a long and arduous couple weeks, I got my full robot built and able to move on very simple code. At first, I was getting my Arduino to connect to the ps2 controller, which was pretty simple that took the least amount of time. Surprisingly, it was the proof that the ps2 controller actually worked that took time. To get the proof I needed to move on, I had to find and install the right library for Arduino. Once I got all this to work, I knew I had my ps2 controller set up correctly. Once I got my ps2 controller set up, I started on getting my servos attached to my Arduino. To do this you need to connect your servo to a motor controller. To do this, I plugged the ground pin coming out of the motor controller to the main ground (this is the ground that all motor controllers and the Arduino are attached to), attach the PWM pin to one of the PWM ports on the Arduino, anitialy plugged the power pin into the main power to which the Lithium Ion Battery is connected. After I got all three of the servos connected to my Arduino, I made a CAD (computer aided design) file that contained the schematics for my wooden hexagons. The CNC machine didn’t work so I ended up cutting out my wooden hexagons using a jigsaw. After that, I attached the Arduino, the servos, and motor controllers to one of the wooden hexagons. Then I attached braces from the bottom wooden hexagon to the top wooden hexagon so I could put stuff on top of my robot for it to carry. My wheels were the next to be attached along with the wheel braces. After this, my robot was almost completely done. Later I added a switch, which turned the Arduino on and off, so the battery didn’t run down when you weren’t using it. Then I just added the basic code using the arrow pad on the ps2 controller to control my robot’s movement. This was fun to build, but it was also very challenging. I did not know how anything I was using worked, I didn’t know how to use the power tools I needed, and I did not know how to code. Over time and lots of research I learned what all of my parts did. I also learned how to use tin snips, jigsaw, dremel, and the heat gun. To code, I just looked up a few videos and basic functions on Arduino and after some practice, got the hang of some basic commands which were just enough to get my robot moving.
How it works is a power supply that is connected to the PIC, and the PIC is connected to the LED’s. The PIC is basically running the whole thing. Each of the PIC’s pins (which it has eight of) send a signal to two of the LED’s, to either light up or stay off. Two more pins on the PIC attach to the battery to stay powered. To ensure the LED’s safety, the resisters regulate the amount of amps that go through the LED’s so they don’t burn out. The diode is keeping the electricity running in one direction, which is outward from the PIC so the PIC doesn’t short circuit. The Piezo is what turns the die on and starts it rolling. The Piezo detects vibrations, so when you tap the bottom of the die the piezo picks it up and sends a signal to the PIC to give you a random number.
While I was working on this project, my biggest problems were with figuring out how the PIC worked. I had to research how all of the other components of my die were affected by the PIC. I was also confused, because I could only account for what six of the pins on the PIC were being used for. It turns out that the solution is very simple. All the pins on the PIC did not need to be used for the dice, so not of them were being connected.