Inspiration

As a team, we constantly found ourselves wasting time searching through disorganized drawers for the right tool. We wanted to build something that was not only technically challenging but also something practical that we would actually use in real life. The Smart Drawer System is a system that knows exactly where every tool is and opens the right drawer automatically, eliminating the need to search for tools and waste time and fixing our problems.

Functionality

Our Smart Drawer System is an IoT-powered tool management and checkout system. Users select a tool like a hammer or wrench from a web dashboard running on a Raspberry Pi, and the system automatically unlocks the correct drawer using servo-actuated rack and pinion systems controlled by an ESP32 microcontroller. Every checkout is timestamped and logged in real time, giving teams full visibility into tool usage history. Drawers auto-lock after a set time, ensuring tools are always secured when not in use.

Construction

The system is built on a two-layer architecture. The Raspberry Pi hosts a Streamlit web dashboard, manages the tool database, and communicates with the ESP32 over USB serial. The ESP32 receives open and close commands over serial and drives the DS3225 servo motors with PWM signals, while also managing auto-close timing independently of the Pi. The servo motors are powered from a dedicated DC power rail through a barrel jack screw terminal, which is also where the ESP32 is grounded.

For the physical build, we used LEGO Technic components and a DS3225 servo motor to make a rack and pinion system. The servo drives a pinion gear which moves a rack attached to the drawer, providing linear motion to open and close each drawer. The servo motor is mounted inside the drawer while the rack runs along the side of the sliding drawer tray, with M3 screws used to connect the LEGO Technic holes with the mounting hardware.

Challenges

The biggest problem we had was that we were a 3-person team, and 1 of our team members was essentially not there for 75% of the hackathon due to other commitments. This reduced how complex we could make this project, but all 3 of us still put in effort to achieve our result.

Getting the ESP32 to reliably communicate with the Raspberry Pi was one of our main issues. The ESP32-S3 requires specific bootloader settings including CDC on Boot configuration and a precise BOOT and RESET button sequence to flash successfully. We also encountered USB detection issues on the Pi caused by a BuildHAT drawing too much power.

We initially planned to use YOLO-based computer vision to automatically detect tools placed in front of a USB webcam, and trained a custom YOLOv8 model using a Roboflow dataset with images of tools for this purpose. However, we pivoted to a manual dropdown-based checkout system in which the tools were automatically assigned drawers to ensure easier system integration.

Also, we originally designed custom CAD parts for a rack and pinion drawer mechanism and attempted 3D printing, but encountered repeated printer errors. We adapted quickly by switching to a Sterilite plastic drawer unit and a rack and pinion system made of LEGOs, both of which saved us a lot of time and were just as effective.

Lessons Learned

This hackathon taught us the value of rapid prototyping and knowing when to pivot. We learned that a simpler, working solution is often better than a complicated one that takes significantly longer to implement. We gained hands-on experience with ESP32-S3 firmware flashing, USB serial communication between Linux and microcontrollers, servo motor control with PWM, and building full-stack IoT systems from scratch. We also learned how to set up SSH and SCP workflows for remote development on embedded Linux systems, and gained practical experience with Streamlit for rapid web dashboard development.

Looking Ahead

In the future, we want to fully implement the YOLO computer vision layer for fully automatic tool detection and add RFID checkout tracking for individual user accountability. Moreover, we would like to integrate a mobile app for remote monitoring and add a speaker that announces what action is happening with text-to-speech. Once these are sorted, we plan to explore a more robust locking mechanism using linear actuators for heavier duty applications if we were to scale to more drawers.

Built With

Share this project:

Updates