The Emotive robot is an Arduino-powered robot that can mimic emotion and react to human presence.
Area of Interest
Ramaz Upper School
I have not yet completed my second milestone.
My first milestone was to assemble the wave shield. Its job is to play audio (.wav) files off an SD card. It can play through a speaker or an audio jack if present. There is also a dial to control the volume.
Full view with speaker
How the Wave Shield works
The wave shield connects to an arduino and replaces all of its pins. It has an SD card reader to read the audio files. There are three prominent chips on the shield, which you can see in Figure 1. The first one is a DAC, or Digital to Analog Converter, next to the long chip in Figure 1. It takes the digital signals from the SD card and converts it to analog for the speaker to play. The long one mentioned above is a buffer gate, which serves to amplify the signal coming from the shield, as well as to control the timing of all the different signals. The small chips on top of the SD card reader are operational amplifiers, which allows the components to only be powered by the power source instead of the arduino.
Scattered throughout the shield are (electrolytic) capacitors (the black cylinders and orange bits in Figure 1), a transistor (sandwiched between the two electrolytic capacitors), and resistors (like between the DAC and buffer gate) to regulate the current in the circuit. There is a dual-channel potentiometer in the bottom-right corner (more visible in Figure 2) to control the volume. When the potentiometer is turned, it blocks power from going to the speaker/headphone jack, which in turn lowers the volume. Finally, to integrate the shield with the Arduino, I had to solder male headers on the bottom of the shield (to connect to the Arduino’s female headers), and then add female headers to the top to expose connections for other components. Unfortunately, I was not able to use all the pins, as pins 2, 3, 4, 5 and 10 are used by the shield for SD card operations. In order to get visible indication of the Arduino’s status, I soldered an LED and resistor to the shield and connected it to pin 13, to mimic the built-in LED. I will also do this for the 5V pin, to turn it into a power indicator.
Making the wave shield proved to be a challenge. For starters, I never soldered this much — or with components so delicate, such as chips and the SD card reader. I also barely work with shields, so having to provide a stable interface to the Arduino was nerve-racking. I also learned the importance of power regulation. The majority of the components on the shield are simply to protect the other components from damage. I also learned how speakers work (and that they do not need to be polarized) as well as how to read data from an SD card using the SD library. Another cool part of this milestone was personalizing it. By soldering on two LEDs and wiring them to my liking, I was able to get useful functionality without resorting to a tutorial.
One big problem with the wave shield is that it is configured to use a library where the author took liberties. Instead of using the standard SD library, he rewrote parts of it to be incompatible, thus forcing me to convert all my code to use his library. The library itself takes >70% of the Arduino’s memory, and since the shield is for the UNO, I cannot simply switch to a MEGA, or other device. This may lead to problems down the line, but I am sure I can fix it later.
For my starter project, I made the Useless Machine, which is basically a simple box with a switch. The switch starts off leaning forward, as in Figure 1. When the switch is flipped, an arm comes out of the box and flips the switch back. The circuit is in such a way that when the switch is pointing back, the signal sent to the arm’s motor tells it to go forward. The arm is aligned so that it will hit the switch back to its original position, as shown in Figure 2. When this happens, a signal is sent to turn the motor in reverse until the arm hits a kill switch, ending the process. Figure 3 shows a circuit diagram for this project.
From doing this project, I realized how much hardware can achieve without software. Instead of using the switches as input and programmatically controlling the motor, the current naturally flows to do the same job. During construction of the outer box, I accidentally screwed the acrylics on upside-down, which was frustrating later on, but then was able to simply reverse it and everything worked again. Also, the screws holding the whole box together did not go in right, and it was hard to get it to stay together. But overall it was a very simple process. Now that I have finished my starter project, I am ready to move on to my more complicated main project.