Hi there! My name is Rain and I am a rising junior at Staten Island Technical High School. I heard about BlueStamp Engineering through my school and I decided to give it a shot–with no knowledge of circuitry or electronics or robotics at all. My starter project was the electronic theremin, which I chose because I had heard of theremins previously. They are very entertaining instruments, and my blog post on how they work can be found farther down this page. My main project, which I developed over an intense four weeks, was the omnidirectional robot. This robot has three wheels, which may seem odd and impractical to those who haven’t heard of such a technology. In reality it can go across the floor in any direction as controlled by toggle sticks on a PS2 controller. How cool is that? Read my blog posts below for my starter project as well as the milestones I achieved during my robot-building process!
Documentation:
Schematic: Image format
Mechanical Drawing (Google Sketchup file): Mech_Dwg
Code (Arduino file): omnirobot_bluestamp
Bill of Materials (Microsoft Word file): BOM_robot
The Completed(?) Robot (8/1/13)
These past six weeks at BlueStamp have been an absolute blast. Which is interesting, because I started the program a little scared that my lack of electronics and robotics knowledge would work against me, and that I would not have the motivation to complete my project. Clearly this isn’t what happened! I could not be more satisfied with my omnidirectional robot. He is quite obedient.
Now that it’s complete, I can give you a better idea of the math behind the robot’s omnidirectional function. The left toggle on the PS2 controller provides “stick values” to the Arduino serial monitor, according to their position. These values translate to a theta value which the Arduino software understands. (Yay for trigonometry!?) That theta value is used to calculate a new value for each motor–three different values because each motor faces a different direction. (They face different angles according the Cartesian plane that Arduino maps out for the robot.) The new value yet again translated into another value between 1000 and 2000 that the motor controllers understand, and each number determines the direction of its respective motor. The right toggle also provides stick values that control the robot’s stationary rotation by providing stick values that translate to microcontroller values.
In short, the toggles on the controller determine, pretty intuitively, where the robot needs to go and which way it rotates.
Yes, my omnidirectional robot is done. Except it’s not really done because I need to 3D-print an R2D2 casing or some other superb character casing for it before Maker Faire. I can even add LEDs and sounds and sensors if I want to. The possibilities are indeed endless. Which makes this robot even more exciting than I ever imagined it would be!
IT’S ALIIIIIIIIIIVE (7/26/13)
Hardware, hardware, hardware. This week I fixed a multitude of hardware issues–and software issues as well, as both kinds are equally problematic–and thus I have finally reached my third project milestone. 🙂
The first obstacle I hit since my last milestone was a difficult one: I lacked motor drivers. These drivers are required to connect the motors to the Arduino board so that they receive a signal and can be driven with a PS2 controller. It is impossible, I learned, to create the robot without them. I ordered drivers that essentially convert my motors to servos, or motors that can read their angle of rotation, and I modified much of the PS2-compatible sketch by adding functions compatible with servos, using Jacky’s (from BSE NYC 2012) sketch as a reference.
Then I encountered an entirely new problem: the Arduino board was powered, but the motors weren’t moving. My instructors and I tried everything–proofreading the code, rewiring, changing the power source from 5V (my laptop) to 7.4V (a Li-Ion rechargeable battery). The problem was ultimately in the code. Arduino software has the ability to perform mathematical calculations, including trigonometry, which my robot uses to navigate across the floor at the desired angle. While the calculations were sound, the trig functions themselves “confused” the “if” and “while” statements that I had written to test controller functionality. I removed those statements and kept the math. I also recharged my battery (A dead battery, surprisingly enough, is not obvious right away!) and fashioned steel braces to prevent the robot’s wheels from falling off.
And…
A FULLY FUNCTIONAL OMNIDIRECTIONAL ROBOT WAS BORN! Awesome.
See Jacky’s BSE profile for the sketch I referenced.
Working with Arduino and Playstation 2 (7/12/13)
This week’s milestone did not come easily at all. Three days–that’s twelve hours at BlueStamp, plus some–of nonstop reading about Arduino language and other topics pertaining to electronics. And for those twelve hours I had no idea what I was reading about. No. Idea. At. All. (If anything I understood the concepts of ground and power a little better, but not much more than that.)
On Thursday morning, I found a very, very helpful Arduino tutorial, the link of which I will include below. Using this tutorial I finally grasped some basic and very important Arduino vocabulary: loop, setup, libraries, functions, variables. But after this came the challenge of applying my new Arduino programming knowledge and modifying Arduino code according to what I need.
I started off simple: modifying the example sketch “Blink” (found in the Arduino program for public use) so that it worked with two LEDs rather than one, and alternating the blinking pattern of those LEDs. After I found a sketch online that would configure the PS2 controller and wireless receiver to the Arduino board, I decided to experiment a little and add a portion of the modified Blink sketch to the PS2 sketch. After fixing some technical errors that I had made in my code–forgetting curly brackets and other little technicalities–this process turned out to be quite easy.
And so it was that I reached my second milestone! You can see how I configured the PS2 controller and the LEDs in the video below.
Awesome Arduino tutorial: http://www.ladyada.net/learn/arduino/index.html
PS2X Arduino library: https://github.com/madsci1016/Arduino-PS2X
The Omni-directional Robot (7/5/13)
It’s only the end of my second week at BlueStamp and I have accomplished a ton of things for my main project–the omnidirectional robot. Besides creating a mechanical and electrical schematic and figuring out important connections on my robot (wheel to motor, motor to wooden body, and so on), I have recognized collectively two main accomplishments as my first milestone.
The first of these was planning out the wooden body of my robot. The robot will have two hexagonal wooden parts–one for holding electrical components, and one serving as a tray for small objects. I had to draw and dimension the diagram shown below and convert a flat hexagon image to a .DXF file so that a laser-cutter could read the diagram and cut out the pieces accurately. Luckily, this process is easier than it sounds, and the pieces will be ready very soon.
My other accomplishment of the week was getting the Arduino programming software to work with my computer. Initially I kept getting an error message that prevented me from uploading code to the Arduino board. It turned out that I had downloaded a faulty beta version of the software, and I re-downloaded the standard version. At first this didn’t help either… but only because my Arduino board wasn’t connected to the computer. So that was fixed quite easily.
Now I can upload very basic codes to the Arduino board, and hopefully next week I can write most or all of the code needed for my omni-robot. Some quotes from my great instructors to end this post:
“Always check your connections!” –Will
“This will happen about seventy more times.” –Nifer
Building a Theremin (6/28/13)
Hello! My name is Rain and I have made a theremin as my starter project. The theremin is an instrument played by moving one’s hand around its antenna. It is very entertaining to play and demonstrate for your friends, and if you want to build one like mine you can order the kit at this link: http://www.apogeekits.com/theremin.htm
How it works: Two types of oscillations (waves), fixed and variable, are used to produce the sound. The “fixed” form is simply a wave that does not change in
frequency, which is emitted from a current on the circuit board of the theremin.
“Variable” oscillation, as its name implies, is a set of waves that can change
in frequency. To understand this change, you must know that when current flows,
a magnetic field forms around it. In addition, humans have a certain
capacitance, or ability to hold electrical charge. Thus, a current flows through
the instrument’s antenna, and a hand placed near the antenna can interrupt the
magnetic field clouding around it, and the oscillation changes. Two
microcontrollers measure each oscillation. The theremin then makes its sound by
amplifying the difference between oscillations.
My theremin was actually being quite difficult and needed much trial-and-error debugging. Initially it would automatically switch from continuous to discrete moment, without any of its buttons being pressed. With the help of my BlueStamp instructors I came to the conclusion that the LEDs sometimes malfunctioned and acted as the switch that changed those modes, and removing one LED seemed to solve the problem. I might do some re-soldering or replace a microcontroller or LED to make the theremin work properly in the future!
Watch my theremin here:
Reflection
I applied for BlueStamp Engineering with only a genuine interest in learning. I
had zero knowledge of circuitry, coding, breadboards, motors, schematics, voltage rates,
inputs and outputs–you name it, I didn’t know it. Six weeks later I have
learned all about these things, and so much more! Yes, there were stretches of time when I
felt like the dumbest person in the galaxy, whether for making a certain mistake or not
seeing an obvious problem right away. But I used the many tools and
gadgets that BlueStamp provides, the Internet, and discussions with my
instructors–all very important–to keep my eyes on the final goal that was
the omnidirectional robot. I also made sure that the motivation to learn and to complete a serious project stayed with me even on difficult days, keeping in mind that there is a solution to every problem. Eventually–not easily, but eventually–I built my first robot ever–which I am extremely satisfied with–and also learned to think critically and solve problems like an engineer.
My amazing instructors and mentors in engineering (thank you Nifer and Will!!
<3) made the learning process much more enjoyable. The comfortably small class
size and much-needed mid-class breaks were also vital in helping me stay
focused. Guest speakers felt repetitive at times, but they gave great insight into the difficulties and entrepreneurial matters of the engineering profession. I learned so much this summer and made new friends who clearly share common interests with me, and I am truly so happy that I spent my summer at this amazing program.
Complete list of helpful links and tutorials:
Awesome Arduino tutorial: http://www.ladyada.net/learn/arduino/index.html
PS2X Arduino library: https://github.com/madsci1016/Arduino-PS2X
how are you just using 3 pwm to drive the 2 wire motor, how is the motor moving moving clockwise and anti clockwise by not changing the polarity and getting the varying pwm.
pls correct me if im wrong as im new to all this
pls post your electronic schematic so that i can understand it properly. pls reply as soon as possible.
Very valid, pithy, succtnci, and on point. WD.