My name is Lake and I am a rising junior at The Chapin School. For my starter project, I built a junior theremin. A theremin is an unique electrical instrument that can be played without being touched. I chose this project because I wanted to learn about radio transmission, and I also to take home a working instrument. For my main project I built the omnidirectional robot, which is a robot with holonomic wheels, that allow it to move in any direction. I chose this project because it past BSE students get a firm grasp of many important engineering skills. Building the omnidirectional robot taught me many skill sets such as Arduino programming, woodworking, and intense troubleshooting. The projects that I chose taught me about a wide range of engineering (including software, electrical, and mechanical engineering)!
Completing this project gave me so many important tools that I will be able to use for the rest of my life. I learned how to self learn and self advocate in ways that I never thought I could. I also learned how to compartmentalize ideas and think like an engineer. The most important thing that I gained from this program was the confidence to create bigger and better projects in the future. It is an amazing feeling to have the ability to actualize plans that before seemed like a distant, unreachable ideas. I have kept a journal of these such ideas for years now and I can now put them into the world with gusto! It also feels incredible to have worked for six weeks and end up with a finished problem that I can be proud of!
For my final milestone I decorated my robot, finished my documentation, and got inspired to create new projects in the future. I added EL (electroluminescent) wires to my project as well as an inverter to power them. This gave my project some bling that makes it stand out from the crowd. I also added metallic decoration to my robot’s base to make the EL wire pop! I want to, in the future, create Arduino projects that involve fencing, which is another thing that I am passionate about. I want to create my own electronic target using Arduino with pressure sensors and a monitor. I also want to create an omnidirectional chair that would basically be a scaled up version of the robot I created at BSE. I would use an office chair and industrial sized omnidirectional wheels. I also learned about instructable, which is a really cool website where you can learn how to create projects and share your own.
Documentation (I worked really hard on these links, so please check them out!)
For my second milestone I completed all the code for omnidirectional movement and even added some modifications to my code.
After spending a considerable amount of my third and fourth weeks at BlueStamp learning about Arduino, I started to understand and piece together a plan for what I needed to accomplish with my code. There is very little documentation for this exact project, so I had to dig really hard to find helpful example code, libraries, and learn more about the commands I needed to use. It all payed off because by the middle of my fourth the week I had programmed enough to make all of my motors rotate forwards and backwards, and by the end of the week I had a basic version of my omnidirectional code. By the beginning of the fifth week (when I filmed the milestone video) I completed the code, although it’s still a bit jittery and could be more efficient.
I used the example code from Bill Porter’s PS2 library as an outline for my entire code. I then began adding details specific to my project. I found a helpful tutorial from Make Zine that detailed how to do omnidirectional vectoring with stepper motors. Even though the code was not applicable to my project, I was able to use this to understand the general idea behind omnidirectional movement. I ended up using trigonometry rather than vectoring for my arduino to run the servos at specific speeds. I also added (of the entire robot) to turn the robot around.
There was a lot of trial and error while trying to get my servo motors to do omnidirectional movement. I used PWM, for loops, increments, and even directly giving servo position all with no luck. I had to do A LOT of research about servos and continuous rotation. I ended up using the map function to coordinate the PS2 joysticks with the servo motors (which is much more complicated than the previous options, but it worked!) and trigonometry. Going through all of these trials and tribulations took a lot of perseverance, but it was worth it to reach my second milestone!
For my first milestone I configured my Arduino with the PS2 receiver, built the base of my robot, and made L-brackets to hold up the wheels of my robot, to complete all of the mechanical aspects of my project.
I was able to configure my PS2 receiver using guides by Curious Inventor and Tech Monkey Business as well as a youtube tutorial. I used both the Curious Inventor and Tech Monkey Business guides to connect the PS2 receiver to one end of the jumper cables and the youtube tutorial to connect the other end of the jumper cables to the Arduino. I also laid out my breadboard so that I could put servo motors with their motor controllers and a power source directly onto it (using this helpful instructable).
In order to build the base of my robot I needed to do a lot of research. I was considering many shapes, but I found that a regular hexagon would be the best shape for my project. This is because an omnidirectional robot with 3 wheels requires the drive shafts to be 120 degrees apart and the alternating sides of a hexagon were able to do this perfectly. After outlining the shape of the base, it was cut for me with a jigsaw. I then measured out space for the motor and motor mounts where I encountered a serious issue! The motor mounts, called L brackets, that I ordered turned out to be too large for my motors. I spent a long time trying to design new ones, eventually landing on a design utilizing spare parts of my projects. I drilled the motors (and motor mounts) to the base of my robot. I then attached the wheels and then, using metal bars, I secured the wheels in place.
I ran into some unexpected trouble actually drawing the hexagon for my base, as drawing a hexagon is extremely difficult, even with a ruler! I ended up using a hexagon calculator and measuring out specific lines to draw my sides accurately. Also, as I wrote before, I bought l-brackets that were too large, and ended up having to do some serious problem solving in order to not waste too much time.
During my first week at BlueStamp I completed my starter project, which was the junior theremin. I came across many issues and had to come up with many solutions but I will explain those later on. A theremin is an electrical instrument that can be played without being touched. It does this by changing the pitch of a note depending of the distance of the user’s hand from the antenna of the theremin.
Here’s how the junior theremin works:
The theremin is powered by a 9V battery. The current from this battery is reduced from 9V to 5V by a voltage regulator. A 555 timer chip uses this current to create time delays that form the frequency. This frequency is then sent to the antenna where it is converted to radio waves and emitted. The resulting current is sent from the 12C508 microcontroller. This chip then sends information to the piezo buzzer and LEDs to perform actions in accordance to the frequency. The piezo buzzer amplifies the current into sound (acting as a speaker) and the LEDs light up! Before the current reaches the piezo buzzer, it is filtered by an electrolytic capacitor that smoothes out the current to allow the piezo buzzer to produce a “harmonious” sound.
The junior theremin works as part of a capacitor. A capacitor is made from two plates (made from conductive material) and a dielectric (made from an insulating material) between them. The antenna of the theremin acts as one of the plates and the user’s hand the other. The space between the plates, called the dielectric, is air. The distance between these plates affects the capacitance which then determines the frequency of the current.
The junior theremin operates in two modes: discrete and continuous. When you first turn the theremin on, it is in continuous mode meaning that the notes are legato (or played smoothly and connected). In discrete mode, the notes are staccato (or played with articulation) and when you hold down the + and – button in this mode, the octave changes up or down. The mode can be changed by pressing the ‘+’ and ‘-’ buttons at the same time.
I came across a multitude of problems within the week that I worked on this project. My first issue was the soldering. The tip of my soldering iron was not hot enough so many of the joints were balls of solder that I flicked frantically into place. This resulted in bad connections which meant poor conductivity. Even after I desoldered the improper connections and completed all the assembly I needed in this project, the theremin still would not turn on. I tried changing the batteries, checking solder joints, and making sure that my resistors were in the right place; all with no luck. Then, when I asked for help, the heavy duty problem solving began. I got to use a DC power supply, a multimeter, and an oscilloscope. The DC power supply is a lot like a large battery that has the added bonus of being able to supply various amounts of voltage. The multimeter measures voltage, and we used it to check to see how charged the 9v battery was. “The scope” is a large and complicated piece of machinery that we used to measure waveforms.
Ultimately, the main problem was with the microcontrollers that were placed in the incorrect order and were most likely fried in the problem solving process. Also a the voltage regulator was fried and needed to be replaced.