Projects

Here is everything I’ve built. Well, maybe not everything, but all the important stuff.

High School Years: Highlights

2019-20: RED STORM ROBOTICS, vex robotics competition @ Scarborough (teams 344X, 344R)

When I returned to Scarborough, I worked with the engineering teacher to start a VRC team. I helped with searching for and applying for grants, ordering parts, and building out a workspace. I then took on a quasi-mentorship position in Team 344X where I helped show my teammates how to design with Vex parts, how to build efficiently, how to program the robots, and (above all) how to think critically about a challenge. In January, the team raised enough money from grants to spin off a second team, 344R. Several other students and I built a second robot (effectively starting halfway through the competition season) and competed under that number, eventually qualifying for the state championship and the world championship (both of which were cancelled due to COVID-19).

2018-19: PENGUINS ROBOTICS, vex robotics competition @ MSSM (team 4393S)

This was my first experience with a robotics competition. I did most of the building and all of the programming for my team. Our team won two tournaments, was a finalist at the state championship, won the design award at the state championship, and competed at the world championship.

2017-18: TESSELATE, mesh network system

Background: The MSSM dormitory was the perfect testbed for an idea I had been interested in for a while–mesh networking systems that can cheaply, quickly, and reliably deliver internet access to an area.

Technical Description: I set up three nodes (each composed of one Raspberry Pi single-board computer and a couple of USB Wi-Fi dongles) along my dorm room wing. The nodes connected to each other using the BATMAN-ADV (Better Approach To Mobile Ad-hoc Networking Advanced) protocol, and each one provided an access point to allow other devices to connect. A fourth node, located in my dorm room, provided an internet connection for the mesh.

Results: My experimentation with mesh networking taught me many of the principles of computer networking, such as the OSI model. The software I worked with was definitely not a “batteries included” experience–I needed to manually configure IP address assignment and DHCP services on each node, for instance. Working with this had a high learning curve, but the skills I learned have helped me with many other projects I’ve done over the years. (After all, what doesn’t connect to the network these days?) In particular, my understanding of what causes network latency has helped me mitigate against it when working on Vibrance, which requires precise timing to synchronize all the connected devices.

2017: PYTHAGORAS, robotics education platform

Background: At the time I started work on this idea, there were no robotics kits available that were suitable for makers of all skill levels. I wanted to produce a platform that would allow inexperienced users to learn programming in a simple environment, but would also get out of the way of advanced users who wanted direct control over the hardware. (This is somewhat similar to what Arduino has done–the Arduino language is simple for beginners to learn, but it allows advanced users to do advanced things like directly manipulate registers if they want to.)

Technical Description: I designed a 3D-printed chassis and a custom PCB for the kit. I also wrote a web interface where users could create and run programs written in Google Blockly, using custom blocks to interface with the robot hardware. I created tools for advanced users as well, including a plugin for the Atom text editor that allowed users to deploy Python code to the robot.

Results: The concept eventually failed when the manufacturer of the single-board computer the design used, Next Thing Co., went bankrupt. There were no other single-board computers with comparable features (onboard eMMC, to be precise) at a reasonable price point.

Middle School Years: Highlights

2016-17: MAKERGAMER, fantasy gaming console

Background: This project was inspired by Pico-8, a “fantasy console” that allowed people to write retro-feeling games for modern hardware. I set out to create a similar “fantasy console” that could play games written in Scratch but felt like a traditional video game console.

Technical Description: I designed and programmed an interface for downloading Scratch projects by the project ID, adding them to a virtual library, and playing them on demand. I also added support for games written in Python or Javascript (including many simple games I had made while learning Javascript), and programmed a text editor tool that stylistically fit with the rest of the interface to allow users to modify the games they downloaded (hence, the “Maker” part of the name).

Results: It worked well enough for me to demo it to people. But it didn’t really have that much actual use, as all the games could just be played in a web browser.

2016: R2D2 CLONE, made of an old plastic bucket

Background: Exactly what it says on the tin. This was made for several occasions: a STEM fair at my local elementary school, and Halloween later that year when I went trick-or-treating as Luke Skywalker.

Technical Description: I spent a lot of time adding features to this robot; it could be controlled using either a Wii remote or a smartphone app. It had speech synthesis software and an internal speaker, a camera mounted to allow video streaming, and a few LEDs for blinky lights.

Results: It did its job and did it well. Not much else to say.

2015: CYCLOPS, simple remote controlled robot with camera functionality

Background: This was my first major robotics project. I built it in order to demonstrate it at the aforementioned STEM fair. This event consisted of adults (and myself, 6th grade at the time) presenting science experiments and activities to 3rd thru 5th grade students and their families. I maintained my presence as the only child presenter for two more years after, as I brought other projects I’d made to demonstrate.

Technical Description: I connected up some old Lego NXT motors to an H-bridge chip, connected that up to a PWM generator and a Raspberry Pi single-board computer, and read through datasheets and documentation to figure out how to get it all to talk to each other. I spent time adding a lot of features to this robot. It had bumpers on the front and back that would detect a collision and stop the robot from driving further into the wall and a camera that could take photos which I could pull up on my family’s laptop.

Personal note: This was a significant step for me: No longer was I building things in walled gardens of parts that “just worked,” like Lego sets. The tools, parts, and protocols I used, like SSH, bash, I²C, and Python, were really used in industry.

Results: Unfortunately, the robot didn’t work wirelessly at the event. Wi-Fi network restrictions and poor cell service left me with no way to operate the robot except to prop it up on blocks on a table.

My school then invited me to demonstrate this robot at the end-of-schoolyear celebration. In anticipation of this, I made a few changes. I replaced the unreliable Wi-Fi link that had been my downfall at the STEM fair with a Bluetooth module. My dad wrote some code that ran on the laptop to allow me to send commands to my code over Bluetooth. Everything was working great (except for the reduced bitrate that Bluetooth had, meaning I had to limit the photos I took with the camera to a comically low 25x25px resolution).

Unfortunately, a mere 3 days before the event took place, a power outage hit my house just as my robot was starting to turn on, and my program was corrupted. (Yes, I should have been using version control, but I was literally not old enough to get a GitHub account yet.) I spent the next 3 days frantically re-writing and testing my program. But I was able to get the code running just in time for the event, and all went well! The feeling of triumph my 6th-grade self had on that stage has propelled me through years of similar projects.