Inspiration
When we heard the D-Day theme, we imagined the worst: desolate areas with pollution, radiation, and unknown dangers. What if we had a Mars Rover-like device to scout unseen areas and warn us of incoming threats?
What it does
Our prototype navigates to specified coordinates, avoiding obstacles along the way. It collects air quality, temperature, and humidity data, sending everything to a website where threat levels are mapped onto a grid. Click any square to see environmental readings and AI-analyzed threat assessments from camera images.
How we built it
We used two MCUs: an Elegoo UNO R3 for driving and an ESP32 for data transmission to Firebase. The rover uses a gyroscope (MPU6050) and ultrasonic sensor for navigation, with PID control for straight driving and automatic drift compensation. When obstacles appear, it scans for the clearest path while staying aimed at its target.
The ESP32 sends sensor data and images to Firebase. Gemini 2.0 Flash API analyzes this data—assessing threat levels based on pictures, temperature, and humidity—then displays results on our React.js + Vite web interface.
Challenges we ran into
Hardware proved incredibly unpredictable. Our Arduino UNO Q mysteriously died mid-development, jumper wires failed constantly, and our DHT sensor arrived broken. We also struggled with ESP32-Firebase integration and managing database, frontend, and backend simultaneously—all while starting 7 hours late due to debugging.
Accomplishments that we're proud of
We built a fully functional rover with vision-based threat detection, created a complete full-stack web application, and achieved everything in our scope despite the setbacks.
What we learned
Hardware debugging is brutal, but defining the problem clearly before jumping to solutions makes all the difference.
What's next for Roverwatch
Transform to aerial drones, implement offline capabilities with TinyML and SD card storage, expand sensors, improve mapping with SLAM algorithms, and build advanced 3D visualization.
Log in or sign up for Devpost to join the conversation.