Introduction
My name is Yash Agarwal, and I am a rising junior at The Village School. I decided to join BlueStamp Engineering this summer because engineering has always been my passion. Through BlueStamp, I hoped to gain some experience and learn hands-on about the different fields of engineering.
Overview
For my project, I am building a customizable robot. The base kit I used was the Makeblock Starter Robot Kit V2 w/ Electronics, bought off of www.robotshop.com. The parts in the kit could be used to build a robot tank or a three-wheeled robot car. I decided to build the robot tank, since this would allow me to make different modifications to the base robot.
The base robot came with an ultrasonic range finder, as well as an IR remote and receiver to attach to the robot. An Arduino Leonardo was installed on the robot, with 8 different ports for various sensors/parts. The IR receiver and the ultrasonic range sensor were both connected to different ports on the arduino. This made it possible to program the arduino and tell the different sensors what to do. The default program installed on the base robot had two modes. One mode allowed the user to control the robot’s base movements using the IR remote. The other mode used the ultrasonic range finder, and it basically made the robot an obstacle-avoiding machine.
The IR remote/receiver connection allowed me to control the robot by pressing buttons on the remote. At first, I did not know where and how to attach the IR receiver onto the robot. I needed a good spot that could connect to the remote without any wires getting in the way. Therefore, I decided that I would mount the IR receiver to the very front of the robot, on top of the ultrasonic sensor. I did this using a ziptie (as can be seen in the picture below). Later on, after adding a few more sensors and parts to the robot, I decided to move the IR sensor to the back of the robot, on top of one of the 3D beams that I printed (explained further down). Because of this, I was able to easily point the remote at the receiver and control the robot, without any wires or parts getting in the way of the connection. I was able to make the robot move forward (where both motors accelerated forward), move backward (where both motors accelerated backward), turn to the right (where the right motor accelerated backward and the left motor accelerated forward), and turn to the left (where the left motor accelerated backward and the right motor accelerated forward).
The ultrasonic range finder was mounted at the front of the robot, and it basically served as the robot’s ‘eyes.’ When in that mode, the robot moves by itself, and essentially becomes an obstacle-avoiding robot. When the robot’s eyes see, or the ultrasonic range finder senses something within a certain distance of it, the robot moves backward and turns to avoid hitting the object. The only downside to this is that the obstacle has to be right in the robot’s line of sight, or right in front of the ultrasonic range finder. Otherwise, the robot collides with any object that is not in its line of sight.
A picture of the base robot, with the ultrasonic range finder and IR receiver attached:
Materials/ Hardware
The base robot kit came with the following parts:
In addition to these base parts, I also used:
- 3D-Printed 6×2 Beams
- Sound Sensor
- Mini Spy Camera w/ Receiver
Modifications
3D Printed Beams
To add extra sensors and more parts to the robot, I needed more room on which I could mount these parts. Therefore, the first modification I made to my robot was to add more beams. I decided to 3D-print beams that could attach to the base of the robot and ultimately provide for more space.
In order for these beams to easily attach to the base robot, I needed to make them the same dimensions as the beams that came with the kit. I also needed to make holes through the beams which would line up with the holes on the beams from the kit. I measured the dimensions, the diameter of the holes, and the distance between each hole on the beams that came with the kit.
According to what I measured, I designed the beams on a program called Fusion 360. This program allowed me to specify the dimensions I needed for the beams, and it also allowed me to make holes at the correct positions on the beam. I printed the beams on a MakerBot Replicator 2. The printing took around 90 minutes. The plastic used to print was layered on, so this made it easy to screw nails through the holes. The layers created ridges, so the screws that were put through the beams stayed put.
An image of the beam I designed on Fusion 360:
An image of the 3D-printed beams attached to the back of the base robot:
Mini Spy Camera
I decided to attach a small camera to the front of the robot, which could transmit video and audio to a radio AV receiver. The camera was small, but I was unable to attach it to the base robot using screws. The screws on the camera were too small for the holes on the beams of the robot, so I attached the robot to the front of the robot using two zipties.
The camera required nine volts to function, so I connected the camera to a nine volt battery. I mounted the battery on one of the 3D-printed beams, toward the back of the robot, using tape.
I wanted to connect the receiver to my laptop, but unfortunately, laptops do not have any AV inputs. I tried finding a cable converter, but was unable to find one that I could easily attain. Therefore, I was forced to connect the receiver to a TV. The receiver connects to a TV using AV cables, and it displays whatever the camera is picking up. The TV also outputs the audio that is being received by the microphone on the camera. The receiver needed to be tuned in order to transmit the video and audio to the TV.
An image of the front of the robot, with the camera attached:
Sound Sensor
The sound sensor I decided to attach onto the robot was bought from the Lego Mindstorm collection. To attach this specific sensor to the Arduino Leonardo, I decided to take off one of the ports that were attached to the arduino. This would have opened up four pins on the arduino to which I could attach the sound sensor. The cable that I used was also bought from the Mindstorm collection, so it could only connect to the sound sensor. I needed to connect the sensor to the arduino, and in order to do this, I had to cut the other end of the cable off and individually strip the wires. This ensured that the cable could be plugged into the pins on the arduino.
A picture of the cable with one end stripped:
Unfortunately, I was unable to take the ports off of the arduino, since they were soldered to the bottom of the board. So, I decided to solder the stripped wires of the sound sensor to the bottom of the board, where the pins were connected. This was a bit messy, but it worked. I was able to connect the correct wires to their corresponding power, ground, or analog in. Through this connection, the arduino was able to read the sounds picked up and recognized from the sound sensor.
Attaching the sound sensor onto the robot was a problem. The holes that were made for attaching the sensor were made to attach to other Lego pieces from the same company. They were awkwardly placed under the sensor, as shown below:
Therefore, I unable to do much with the holes. I tried attaching the sensor onto one of the 3D-printed beams, but this didn’t work either. Finally, I was able to attach the sensor onto the robot using an L-shaped bracket. I attached one side of the bracket to one of the 3D-printed beams and the other side I attached the sound sensor. Using this bracket, I was able to also point the sound sensor outward, where it could more easily pick up sounds.
An image of the sound sensor attached to the back of the robot:
The Codes
Although the code for the ultrasonic range finder and the IR sensor/remote came online, I had to write my own code for the sound sensor. I was successfully able to have the arduino read the intensity of the sound that was being picked up by the sensor. According to the intensity of the sound, the robot would respond. Since I didn’t have much time to write an elaborate code, I wrote a simple code that would just make the robot move forward if the sound sensor picked up any loud noise.