AutoThaw is an ESP32-based automatic driveway salt dispenser that eliminates the need to manually salt your driveway before a snowstorm. It pulls live weather API data to detect incoming freezing conditions and autonomously triggers salt distribution — no manual intervention needed.
The entire enclosure was designed from scratch in SolidWorks and 3D printed in PLA. Material selection was straightforward — since AutoThaw operates exclusively in freezing outdoor conditions, PLA's relatively low melting point is entirely irrelevant. PLA was chosen for its dimensional stability, high rigidity, and printability at tight tolerances, making it the most practical choice for a functional outdoor enclosure. This is also a DFM decision: PLA is widely available, inexpensive, and prints reliably without warping, reducing iteration time during development.
The DC motor was mounted into the dispenser hub using a press interference fit, eliminating the need for fasteners entirely. This reduces part count, simplifies assembly, and removes any risk of fastener loosening under vibration — a direct application of DFM and DFA principles. Achieving the correct interference required several print iterations to dial in the tolerance stack between the printed bore and the motor shaft, but the result is a zero-slop, fully rigid drivetrain with no mechanical play.
The ESP32 was chosen as the microcontroller specifically for its built-in WiFi capability — the core function of AutoThaw depends on polling a live weather API over the network, which would have required a separate WiFi shield on an Arduino, adding cost, complexity, and failure points. The ESP32 handles this natively, keeping the design clean and minimal.
The DC motor operates at 9V, which immediately rules out driving it directly from an ESP32 GPIO pin — GPIO outputs are limited to 3.3V at roughly 40mA, nowhere near enough current to drive a motor. A MOSFET switching circuit was used instead: the ESP32 sends a low-power logic signal to the MOSFET gate, which switches the full 9V motor circuit on and off. This decouples the control logic from the power path entirely, protecting the microcontroller while allowing precise software control of the motor. The 9V battery was selected to match the DC motor's rated operating voltage.
Firmware is written in C++ and handles weather API polling, JSON parsing, motor control logic, and network communication. Tailscale was used to expose the device securely over the network, enabling remote monitoring and control from anywhere without opening firewall ports.
A Python backend ties the system together — integrating the Gemini API for intelligent decision-making on when conditions warrant dispensing, and ElevenLabs for voice alerts. Rather than triggering on a simple temperature threshold, the Gemini integration allows the system to reason over multiple weather signals simultaneously, making smarter dispensing decisions that account for forecast confidence, precipitation type, and timing. The result is a system that thinks, speaks, and acts on its own.
AutoThaw pushed me to think across the full stack simultaneously — mechanical tolerancing, power electronics, firmware logic, and API integration all had to work together as one system. Getting the interference fit right took several print iterations, and debugging the MOSFET circuit reinforced a lesson I now apply to every hardware project: always verify power delivery and current requirements before assuming the control logic is the problem. Integrating multiple external APIs also taught me how to architect software around unreliable network conditions, building in retries and fallback states so the system degrades gracefully rather than failing silently.