Description: For this project, our goal was to create a fully functional robot that could traverse an outdoor path while staying stable and within the size limit of 14L × 8W × 10H. The robot had to be remote-controlled, meaning it ran on battery power and was operated from a phone, rather than being autonomous, which would require the robot to navigate and make decisions on its own without user input. Before building the final version, we created a prototype that included a sketch of the design and combined all our skills—Onshape, coding, and engineering—to bring the project together.
During this phase, our goal was for our robot to move autonomously, which means it acts independently without being controlled by a person. We used continuous-rotation servos, which can spin 360° continuously, and a switch that turned on our Raspberry Pi Pico. The Pico was connected to the wires that powered and controlled the servos, allowing the robot to operate.
We also used code to control the robot’s movement. By programming the servos to move forward, backward, right, and left for specific amounts of time, we were able to make the robot move autonomously. We also had to logically determine which servo speeds and directions corresponded to moving forward, backward, right, or left.
Video:
Description: Next, we transitioned to Bluetooth control because our final project required the robot to be user-controlled instead of running on autopilot. The most challenging part was implementing the purple-path logic. The robot had to continuously listen for Bluetooth commands and immediately stop whenever we released a button on the Dabble app, which was the interface we used for remote control. Another difficult part was programming the NeoPixels so that different buttons triggered different light patterns. Switching between effects—especially when using multiple NeoPixels—was one of the most complex parts of the coding process.
Video:
Description: To remotely control our robot, we used the Thonny coding application to write and upload programs to the microcontroller. At the beginning of the code, we imported several libraries so we could access the functions stored in our project folder. Before the while True: loop, we defined all the components the robot needed to operate, such as the pixel_pin, which matches the GPIO pin on the breadboard where the NeoPixel strip is connected, and the left and right servos, which are assigned to their corresponding Pico pins. These setups allow the robot to control its lights, servos, and movement through the code written in Thonny.
Description: For my CAD design, I used a variety of tools to build and shape each part of the project. I used Extrude to create my ice cream cone in 3D, and the Center-Point Rectangle tools to create accurate base shapes. The Cut tool helped me remove material, while Dimension allowed me to set precise measurements so everything fit together correctly. I also used Offset to create evenly spaced outlines, and Mirror to duplicate symmetrical features without having to redraw them. Throughout the design process, I relied on Line and Construction tools to guide my sketches and keep everything aligned. These tools worked together to help me create a clean and accurate CAD model.
Here are the images:
Description: This circuit diagram shows the electrical system of my design. At the bottom is the microcontroller (a Pico in real life), connected to the breadboard, which is powered by the batteries and runs the code. The motors act as servos that move the robot forward, backward, left, and right. The batteries serve as the robot’s power source during Bluetooth control. I also included Neopixels at the bottom to provide lighting for our lantern-themed robot. The diagram includes Dabble to show how we switch from autonomous mode to remote control. Our battery voltage is 3V to indicate the power level and that the batteries can be replaced as needed.
Circuit Diagram:
Video:
As I completed this project, I learned a lot—especially about the trial-and-error nature of the engineering design process. During the coding phase, I struggled with writing the code correctly, defining variables, and troubleshooting when the program failed to run. This stage reflected the testing and iteration phase of engineering, as I repeatedly moved between the computer and the batteries to test, revise, and retest my work. These setbacks helped me understand that failure is not the end of the process, but a necessary step toward improvement.
In the Onshape phase, I experienced challenges during the design and planning stage—not because the tools were too difficult, but because I wanted to execute the design as accurately and effectively as possible. I especially struggled with using lines to form the wheel rims so the servos could fit properly on the sides of the car, which required multiple adjustments and refinements.
My final design differed from my original concept, demonstrating the redesign stage of the engineering process. Instead of creating an all-pink ice cream truck, I revised the design by changing the background to white and adding a blue-and-pink striped pattern at the bottom. Overall, I enjoyed creating this project, even though my robot ultimately did not function as intended. The experience reinforced the importance of persistence, problem-solving, and continuous improvement, which are all central to the engineering process.