Inspiration
We started this project with the idea of building something nostalgic and fun. Growing up, Plants vs. Zombies was one of our favorite games, and the Peashooter character was iconic. We thought it would be cool to bring it into the real world by making a robot version of the Peashooter — one that could move, aim, and “shoot” just like in the game. The goal was to mix childhood memories with everything we've been learning about hardware and embedded systems.
What it does
Our project is a real-life version of the Peashooter from Plants vs. Zombies. It’s a web-server robot that can move forward, backward, left, and right using a 4-wheel drive system. On top of that, it has two servo-driven features: one servo simulates the Peashooter “shooting,” and the other adjusts its tilt or head angle. The entire robot is wirelessly controlled through a custom web interface hosted directly on the ESP32-S3, which acts as a Wi-Fi access point.
How we built it
We started with an ESP32-S3 DevKit as the brain of the system. We used an H-Bridge motor driver to control four DC motors for full directional movement. Two servo motors were added — one for shooting and one for tilting — The control interface is served from the ESP32 using the WiFiServer library and can be accessed by connecting to a Wi-Fi network hosted by the board. HTML buttons allow us to drive the bot and trigger servo actions from any browser. Power was supplied via an external battery pack connected through a buck converter to maintain voltage stability, especially during Wi-Fi use and servo motion.
Challenges we ran into
One of the biggest challenges was power instability. When we powered the motors and ESP32 from the same source, the board kept disconnecting from Wi-Fi or rebooting. We fixed this by isolating power for the ESP32 and adding capacitors to smooth voltage drops. This allowed for our server to run properly, as well as to allow our h-bridge to work correctly, making our motors respond to all of the commands
Accomplishments that we're proud of
We’re proud of turning a nostalgic game character into a functioning robot. From setting up a wireless control system, to tuning the servos, to solving power and pin conflicts — everything came together in a cohesive way. The final build not only moves and acts like a Peashooter but also has a personality thanks to the visuals of the plant pot chassis design.
What we learned
This project taught us a lot about embedded development, especially working with the ESP32-S3. We learned how to set up a Wi-Fi access point, build a real-time web interface, use hardware PWM for motors and servos, and debug power-related issues. We also gained experience reading datasheets and troubleshooting GPIO conflicts. The main thing that we learned was the use of a capacitor when running an ESP32 to avoid any disconnection errors when using an external power source.
What's next for NAB - PeaShooter
Now that the Peashooter is up and running, we’re excited to keep building on it. One idea is to add camera-based vision or sensors so it can detect zombies (or obstacles) on its own. This would be very fun and interesting to do, maybe even making it an autonomous peashooter that is able to detect certain objects via some sort of machine learning models.
External Hardware Used (Used for stronger shooting only)
- 4S LiPo Battery
- 2 High-Torque Motors

Log in or sign up for Devpost to join the conversation.