Hi! My name is Maya and I’m a rising junior at Ramaz High School. For my starter project, I built a Big Time Watch from Sparkfun. My intensive project was a tabletop robot which has sensors that can sense the edge of a table and avoid falling off. I chose to build this project because I wanted to have some experience with computer science while still having mechanical components, like building the chassis. This is my second summer at Bluestamp, and I really feel that I have furthered my understanding and capabilities in various fields of engineering. I am now even more convinced that my future is going to have some form of engineering in it.

As a second year student, I also learned about the business side of engineering. I learned how to create a business pitch for my project and captivate the attention of investors to raise money to get my project on the market. First, you have to present a problem in the world that needs to be fixed. Then, you present your solution to the problem, and if you have a working prototype, demo it. Then, you go into some detail about the core technology that you used to make your project, like the parts and how they work, the code, and the mechanical designs. Next comes any potential modifications you hope to make, and the team who will help you get the product from its idea stage to the market and consumers. Then, you further convince your audience to give you money by showing all of the applications and opportunities where your product can be used and showing a market analysis that highlights the demand for the product and how much money you would make. After explaining the process and steps it would take to achieve revenue positive status, including the time and money needed for every step, do a quick summary to remind the investors what they are investing in and why it is important.

Business pitch powerpoint


This is my final video in completing my Tabletop robot. I have succeeded in coding the servos to respond to information given by the sensors, and I designed the chassis on Sketchup and put it together after having it laser-cut from acrylic. I also added some modifications to my robot, like being able to control it manually through a Playstation 2 controller. My robot has two modes: one for when it is on the table and one for when it is on the floor. In table mode, the ultrasonic sensors detect obstacles that may be in front of it on the table and the infrared sensors point down to detect major changes in distance between when it is on the table and off the table. In floor mode, the infrared sensors point outward to detect obstacles and walls.

IMG_9906 IMG_9907
Instructables site

Code: finaltabletopcode

Bill of Materials

Fritzing file tabletop

receiver schematic
Since my last milestone, I have fixed up my robot to make it more durable. I soldered all of the wires into a PCB and secured the micro-servos in a better way. I added the modification of being able to use the joysticks on my PS2 controller to control servo speed. I also fixed a servo-jitter problem by modifying the code a little bit and learning how continuous rotation servos work. Continuous rotation servos have integrated gears and a shaft whose speed can be controlled. 0 is full speed forward and 180 is full speed backward. When I put 95 or 90 at stop, the left wheel would still twitch sometimes. My solution for this problem was to change the speed from 95 to 93.

void goStop() //brake
for (pos = 180; pos >= 0; pos -= 1) {
//delay(15); }

One problem I had was that the original battery that I used wasn’t enough to power the robot with the wireless PS2 controller, so I got a battery with more amp hours and that worked.

Another problem was that there was a big delay in between the infrared sensors sensing a change in distance and the motors responding. I fixed this by altering the code of the micro-servos to make them point at angles and make a 90 degree rotation instead of 180 degree rotation.

I really enjoyed the process of building this project. Since this is my second year at Bluestamp, I wanted to build a project that was more complicated but still had a lot of mechanical engineering in it because I really like designing things and seeing them come to life. I also wanted to have some experience in computer software and sensors because I think they are really cool. I learned the engineering lesson of measure three times cut once, and to never give up when problems become very frustrating.


I have just completed my second milestone in building my Tabletop Robot and have started working on modifications. I finished the main construction of my chassis after I designed it on Sketchup and had it laser-cut from acrylic. Some of my modifications include separate codes for if the robot is on the floor or the table and the ability to control the robot manually through a PS2 controller.

I received some design for the chassis of the the tabletop robot, but I designed it myself on Sketchup and made some modifications to make it fit for my project. I put finger joints into the design, so that I could easily attach the pieces of plastic together with nuts and bolts. After a few days of very annoying designing on Sketchup, I sent the files to the laser-cutter that was available to me at Columbia University. This is when I really learned the common engineering lesson: “Measure twice, cut once.” I had misjudged the measurements for one part that repeated in several of the pieces, and, as a result, the majority of the finger joints that I had designed didn’t fit together. After I fixed this mistake and sent the files to the laser-cutter again, the laser-cutter messed with the dimensions of the pieces because it wasn’t compatible with files exported from Sketchup. The third time the pieces were cut was the charm. I finally had all my acrylic pieces and began fitting them together.

One piece that I ended up putting in a different place was the piece that held the infrared sensors I found that if I hung them of the edge of the sensor shelf close to the table like I had originally planned, they did not give back accurate readings because the optimal distance range of the IR sensors is 10-80 centimeters. I ended up drilling holes in the main bottom piece so that I could have them higher from the ground or table.

Another problem I had was with the wheels and how they connected to the servo motors. They were very loose and caused the robot to turn slightly when it was supposed to be going straight. I figured out that the problem was that the servo horns that I had attached to the wheels were not tight enough, and after I drilled more holes and tightened it, it was much less loose.

bottom o-ring parts sensor shelf

outer piece for IR top

sides wheels
Tabletop robot Sketchup files tabletop

My first modification was to have the option to control the robot manually through a PS2 controller. I downloaded the library and added the code to my original code. I can make the robot go forward, backward,right or left, using the arrows, and brake using the red circle. I also added the option to switch to autonomous mode through buttons on the controller. The green triangle switches to autonomous table mode, and the pink square switches to autonomous floor mode. The blue X releases these options.
I had a lot of trouble getting the controller to connect to the receiver. I figured out that if I reset both the Arduino and receiver, then it would usually work.

My next modification was to add micro servos to control the position of the infrared sensors from pointing to the floor during table mode, to pointing to the side during floor mode.

My next step will be to code the joysticks on the controller to control servo speed when I am controlling the robot manually.


I have just reached my first milestone! I succeeded in coding my servos and sensors, first separately and then together. I am using two different sensors for my project: two infrared sensors that will be on the sides of my robot and one ultrasonic sensor that will be on the front of my robot. I have also begun the construction of my chassis.

INFRARED SENSORS: I am using a distance measuring sensor unit that is composed of an infrared emitting diode that sends signals, a position sensitive detector that receives the signal, and a signal processing unit. The optimal distance measuring range is 10 to 80 centimeters.
datasheet: http://www.sharpsma.com/webfm_send/1489
ULTRASONIC SENSORS: I am also using an ultrasonic sensor that is composed of ultrasonic transmitters, a receiver, and a control circuit. The transmitter generates high frequency sound waves and uses the time in between sending the signal and receiving the echo to determine distance of an object from the sensor.
datasheet: http://www.micropik.com/PDF/HCSR04.pdf

IMG_0858 FullSizeRender IMG_0859

After learning and understanding how the sensors work, I wrote the code to use the information given by the sensors to determine which direction the motors should spin. When the sensors get a reading of anything 8 cm or closer, the motors spin backward to avoid the obstacle.

I had a few difficulties getting the sensors, especially the ultrasonic sensor, to give back accurate readings. One problem was that the ultrasonic sensor kept detecting a distance of 0 cm, even if it was just lying flat on the table with nothing near it. I tried solving this problem by taking more readings per microsecond and then averaging them to see if they would get a more accurate reading. While this improved some of the readings, it still gave back 0 sometimes. I switched the ultrasonic sensor I was using twice before I found one that gave me very accurate readings.
One problem I have with my infrared sensors is that the optimal distance measuring range is 10 to 80 cm, and I often have to test for closer distances. I solved this problem by figuring out the minimum distance which it can get a more or less accurate reading (6 cm) and setting the code for the motors to turn slightly before it reaches that point.

Next, I am going to finish the construction of the chassis and work on modifications.


For my starter project, I built a Big Time digital watch from Sparkfun. It is powered by a lithium battery cell which sends electrical energy throughout the circuit. The ATmega328 microcontroller picks up oscillating waves from the 32 kHz crystal so that it can determine time. The microcontroller controls each individual segment of the 4-digit 7-segment display and which LEDs light up. There is a resistor to control the flow of energy to the LED display because light emitting diodes can’t take too much energy or else they blow up. There are two capacitors which store electrical energy and help stabilize voltage.
One problem I had when building this watch was in terms of mechanical construction. The lever that pushes down on the button to complete the circuit and make the LEDs light up kept getting stuck and resetting the time. After dismantling the watch a few times, I finally got it to work properly.


Leave a Comment

Start typing and press Enter to search