Below are 33 of my favorite personal projects along with some of their engineering challenges.

Game Console PCB: A custom PCB that can run 2-player Pong, Simon, and reaction competitions. It also had every pin broken out for other uses. 

Key engineering challenges: Onboard memory was a major problem. The ATTIN85 has 8kb of flash. When I was breadboarding, I used a standard OLED library. This library alone almost takes up all of the ATTINY85's available storage. I searched for a long time to find a bare-bones driver that would meet requirements. The memory issue kept recurring and forced me to learn how to be very efficient with the code I was writing.




Plotter V2: A fast and rigid pen plotter redesigned around linear rails for improved portability, acceleration, and accuracy.

Key engineering challenges: One of the Axis had a unaccounted for stretch, I was forced to create a python preprocessor for the Gcode to distort in the necessary way. Canelevered linear rail had deflection issues; I majorly reinforced the axis connection points and decided that a secondary stationary rail was not required.




POV Wand: A WiFi connected persistence of vision wand that fetches and displays the current temperature using addressable LEDs. 

Key engineering challenges: When the wand is waved backward, the reverse image must be displayed in order to overlap the forward swing. Implementing this reverse was not hard, but the timing delay between when the swing was detected and when to start the sequence was not the same for both directions. Machining the housing was very hard for me, it took me around five hours to create the tool paths, and I had to make many compromises on the design.




Plotter V1: A custom CNC pen plotter designed from scratch, including the mechanics, motor control, G-code generation, and kinematics. 

Key engineering challenges: The pen was supported from the end in an earlier version, this caused major stability issues, wobble, and inaccuracy. The solution was to hold the pen lower and move that whole axis as low as possible for stability. The control structure had to pass through no less than four pieces of software to get the gcode running on the machine. These were Inkscape, LightBurn, vsc and fluidNC.


 

Micro Camera: A tiny battery-powered ESP32 camera that captures photos to a microSD card with a controllable flash. 

Key engineering challenges: I was unable to read the SD card on boot, so I did not know how many pictures were on it or what they were called. To remedy this, I named each photo with a random name from zero to 10,000. This basically guaranteed that no photos would be overwritten. This only works since the volume of photos I'm taking is relatively very low. A byproduct of this is that the photos are not in any kind or order when opened on a laptop. I could not simply increment a counter since there is no way to determine how many times the ESP32 has booted up before. Looking back on it, I could have saved data about the photo number in EEPROM. 




Tiny Arcade: A miniature 8x8 LED matrix arcade used to explore object oriented programming, graphics, and collision detection. 

Key engineering challenges: The 8x8 grid of LED's were not aranged in a serpentine pattern like other matricies Ive worked with. This required a new positional function to get from an XY location to an LED index value. I experiumented with how small I could make the wall fo the housing, I got down to about 1.5mm before it felt too flimsy to be functional. 




TicTacToe Bot: An unbeatable Tic Tac Toe program that uses the minimax algorithm to determine the optimal move. 

Key engineering challenges: Minimax was very computationally intensive, doing roughly half a million recursive calls to determine the first move. Since it always picks a corner and since all the corners are the same, I simply preprogrammed the first move to cut down on the compute necessary. Switching orientation from the standard form required that every line, circle, and text box was rotated, and the x and y were not intuitive. If I were doing it all again, I would create a function to perform this transformation automatically. 




Wordle Bot: A small machine that solves the daily Wordle in an average of three to four guesses. 

Key engineering challenges: Wiring, space was extremely limited in the housing, which made routing very hard. Capacitive switches were very unreliable; I implemented a version of debouncing which had to average reading over a 500ms interval and compared it to other intervals. Sourcing a list of available words was not publicly available, but someone on GitHub has a list of about 2300 words which has never failed thus far.



 

Weather Display: A compact electronic display designed to present useful weather information at a glance. 

Key engineering challenges: OI had a bug early on which fetched the weather data around 10000 times per hour. This is over the free limit, and since I didn't notice for a few hours, I was billed around $30 in API fees. This was fixed with a robust waiting condition along with monitoring serial outputs whenever it makes an HTTP request.




Micro RC Car: A miniature ESP NOW-controlled RC car designed to fit into the smallest practical form factor. 

Key engineering challenges: The wheels did not spin at the same rates even though they were identical motors; this required that I quantify the speed difference and offset it in the code. For the second, smaller rc car, the motors were not geared down; the speed differential was far greater. It was uncontrollable; the second project failed.




Valentine's Gift: A homemade mechanical split flap display inspired by a clock my girlfriend liked. 

Key engineering challenges: The arm which led the picture flap down was made adjustable since it had to be perfect for the top picture to sit vertically before it flaps down. Later I realized that I didn't even need the arm at all. With gravity alone, the photos would rotate on their own in a perfectly acceptable way.




Cat Doorbell: A wireless ESP32 and ESP8266 doorbell that alerts me when one of my cats is waiting outside. 

Key engineering challenges: Tuning the sensitivity of the PIR detector took significant time. There was a fine line between detecting leaves blowing in the distance and not seeing a cat directly moving in front of the sensor. I also struggled to implement a low battery warning and a special tone sequence to the annunciator. 




RC X-mas Tree: A remotely controlled electronic Christmas tree built as a fun holiday project. 

Key engineering challenges: I started with buttons for the X-mas tree (not shown in video); they were effective but required the user to physically be there to control it. I fixed this by creating a web access point to control all of the features. Now, any device with an internet connection and a web browser could control these lights.




Linear Clock:  An unconventional clock that displays time through the position of a carriage moving along a linear rail. 

Key engineering challenges: The stepper motors were very noisy; I bought my way out of this problem with TMC2209 stepper drivers. These new drivers were as silent as drivers can be and improved the experience all around. 




3D Printer Pen Plotter: An unconventional clock that displays time through the position of a carriage moving along a linear rail. 

Key engineering challenges: Getting positive pressure on the pen was very important. I had to make sure that a spring was always pushing the pen down weather it was drawing or not. Moving the spring in a standard pen from the front to the back proved to be the solution. This ensured the pen was always fully extended while providing tolerance when the pen was in contact with the page. 




String Shooter: A string launching machine built around a pair of high-speed brushless motors. 

Key engineering challenges: The arming sequence on the ESC that I bought was not documented. I tried to read the signals coming from a drone controller, but I ended up having a potentiometer and figuring out what the arming sequence was through trial and error. Then I hardcoded that into the program to arm on boot.




Lots of LEDs: A large programmable LED display used to experiment with clocks, animations, graphics, and even video playback. 

Key engineering challenges: Combining four 16x was non-trivial. Each matrix had a serpentine pattern, arranged where the output of the top left fed the bottom left, then the top right, then the bottom right. I wrote a function which took in an XY location and outputted an index value. For example, LED 18,5 might be LED index 533. 




Omni Wheel Car: An omnidirectional robot car developed over several months to explore unconventional robotic movement.

Key engineering challenges: Kinematics for the wheels was challenging. I wastched a lot of youtube videos about 




Coding Projects: A collection of small programming experiments including a pool geometry simulator, birthday paradox simulation, and precise age calculator. 

Key engineering challenges: The birthday paradox quickly becomes too computationally intensive for most laptops. It draws a line from the new node to every other node every time a node is added. This demands exponential compute from the processor. 




Servo Sisyphus: A small robotic arm that repeatedly carries a ball bearing through a three-dimensional Hilbert curve. 

Key engineering challenges: The servo motors were too fast for the Hilbert curve I had to implement; I had to implement for loops to gradually make the movements such that the robot would arrive at the bottom at the same time the ball did.




Robot Sand Artist: A two-motor drawing machine that creates geometric patterns in sand by varying the relative motor speeds.

Key engineering challenges: Typically, a slip ring would be needed if you have electronic components on both sides of a continuously rotating data bridge. To avoid using one, I housed all of the electronics on the first linkage and flipped the motor upside down. This was a bad design choice because I rested all the weight axially on the motor shaft, and I also relied on it for radial stability.  Neither the first nor the second linke were ridged enough for the desired task. The backlash in the gears was enormous, but that didn't matter because the motors were only being spun in one direction. 




Mechanical Illusion: This mechanism has a T shaped gearbox with two counter rotating sets of spiraling blades which create this interesting illusion when they spin.

Key engineering challenges: The bevel gearbox kept trying to push the gears into the sides of the box. The proper fix for this problem would have been axial thrust bearings to prevent wear and 




Servo Clock: A minimalist clock prototype that maps the twelve hours of a clock onto 180 degrees of servo movement.

Key engineering challenges: The wood was quite thick, and the magnet did not have a strong attraction at that distance. To fix this, I sanded down the wood in an arc around the path the magnet would take; this allowed the magnet to be closer.




Gear Clock:  A massive three-foot wooden gear clock that combines a servo and real-time clock module to mechanically display time. 

Key engineering challenges: The large three-foot gear needed to be rotated by a precise amount of arc minutes. I achieved this through the use of a servo motor with a one-way force mechanism. This mechanism would lets it slip over the gears on the back swing and apply force on the forward motion.




Cat Treat Dispenser: A simple push-button-operated servo mechanism that automatically dispenses treats for my cat. 

Key engineering challenges: The hopper kept getting stuck with treats and jamming. The fix was to use a smaller-sized treat that would not get stuck in the funnel.




I <3 U: A small servo and LED-powered mechanical gift activated by a switch. 

Key engineering challenges: The wiring was a mess; I had flying wires running everywhere inside the box, and they all came together on a breadboard. This was very unreliable and disconnected frequently. If I were to revisit it, I would make a PCB.



 

Pi Hole: A Raspberry Pi based network filter that blocks advertisements, trackers, and malicious traffic. 

Key engineering challenges: Getting the DNS permissions from my internet provider was difficult. 




Binary LED Counter: A ten LED Arduino counter that visually represents numbers in binary at an adjustable counting speed. 

Key engineering challenges: The control algorithm was the hardest part. For this project, I interacted with binary expressions directly. 




Modified Microwave Transformer: An experimental transformer rewound to convert high-voltage, low-current power into extremely low-voltage, high-current power.

Key engineering challenges: Opening the transformer and getting out the secondary coil was tedious. I damaged one transformer in the process of doing this. On my second attempt, I used a cloth and mallet to keep the primary coils intact.




The Reaction Contraption: An Arduino powered reaction time game built entirely from recycled components with several difficulty modes. 

Key engineering challenges: Program size was getting very large; this was my first program to surpass 1000 lines. The written code was very poor; I did not yet know about function calls and classes and such. Navigating the code was a challenge.



 

Lichtenberg Wood Burning: A high voltage experiment that created branching electrical patterns in wood.

Key engineering challenges: The combination of water and salt for the conductive solution would vary the results quite a bit. If this mixture was not correct, the high voltage would either not burn at all or short out too fast.



 

Voltage Multiplier: A high voltage experiment combining a booster, flyback transformer, and Marx generator to produce electrical arcs. 

Key engineering challenges: Creating high-voltage capacitors was novel for me; I made them out of tin foil sheets and sheet protectors. I rolled them up and taped them closed. For the high-voltage resistors, I just used sticks from a live tree, or even cups of water. If i bought these components outright, it would have been very expensive.



Jacob's Ladder: A high-voltage demonstration that creates a continuously rising electrical arc between two conductors.

Key engineering challenges: Handling the microwave transformer safely was a major concern for me. Creating a checklist for the procedure made sure that I was not one of the many who died by mishandling these devices. 



STEM Facts Shuffle

Some of My Rent Free Thoughts

Press the button to see a STEM fact!

Engineering is the closest thing to magic we have. 


Create your website for free!