gatoBot: Raspberry Pi Zero W Web‑Controlled Robot with Live Video Streaming
Discover how to build a fully web‑controlled Raspberry Pi Zero W robot that streams live video, perfect for DIY robotics enthusiasts and cat owners alike.
Story
gatoBot
gato is the Spanish word for cat.
gatoBot is a Raspberry Pi Zero W‑based robot that you can control entirely from a web browser while watching live video from its onboard camera. I built it to give my cats a playful companion and to showcase the versatility of the Raspberry Pi platform.
About Raspberry Pi
The Raspberry Pi is a series of small, affordable single‑board computers developed by the Raspberry Pi Foundation to promote computer science education worldwide. It has become a popular choice for robotics projects, home automation, and educational labs. See Wikipedia for more details.
Main features
- Control via any web browser, giving you the power to command the robot from anywhere on your local network.
- Real‑time video streaming from the Pi Camera, so you can see what your robot sees.
- Low‑cost, battery‑powered operation suitable for mobile use.
Bill of materials
- 1 × Raspberry Pi Zero W board – ~$10.00
- 1 × Raspberry Pi Camera Module – ~$15.00
- 1 × 4 × AA battery holder – ~$1.00
- 1 × 4 000 mAh USB battery pack – ~$10.00
- 1 × robot car chassis with 2 × DC motors – ~$15.00
- 1 × L298N dual H‑bridge motor driver – ~$4.00
Total cost: ~$55.00.
Schematics
The wiring diagram connects the L298N driver to the Pi’s GPIO pins and the motors to the driver’s outputs. The camera connects to the Pi’s CSI port, and the battery pack powers the Pi and the motor driver.
Once assembled, the robot looks like this:

DC motors direction issues
If the motors move in the opposite direction of what you expect, adjust the HIGH/LOW logic in motors.py as shown below:
def backward():
GPIO.output(Motor1A,GPIO.HIGH)
GPIO.output(Motor1B,GPIO.LOW)
GPIO.output(Motor2A,GPIO.HIGH)
GPIO.output(Motor2B,GPIO.LOW)
def forward():
GPIO.output(Motor1A,GPIO.LOW)
GPIO.output(Motor1B,GPIO.HIGH)
GPIO.output(Motor2A,GPIO.LOW)
GPIO.output(Motor2B,GPIO.HIGH)
def turnLeft():
print("Going Left")
GPIO.output(Motor1A,GPIO.HIGH)
GPIO.output(Motor1B,GPIO.LOW)
GPIO.output(Motor2A,GPIO.LOW)
GPIO.output(Motor2B,GPIO.HIGH)
def turnRight():
print("Going Right")
GPIO.output(Motor1A,GPIO.LOW)
GPIO.output(Motor1B,GPIO.HIGH)
GPIO.output(Motor2A,GPIO.HIGH)
GPIO.output(Motor2B,GPIO.LOW)
Web interface
After powering the Pi and connecting it to Wi‑Fi, you can control the robot by navigating to https://raspberry_ip:8000/ from any browser. The interface offers simple directional controls and displays the live video feed.

Manufacturing process
- Accurate Temperature Monitoring in a Server Closet with Raspberry Pi
- Master Raspberry Pi GPIO: Interfacing a PIR Motion Sensor on B+/Model 2
- How to Connect, Calibrate, and Program the HC‑SR501 PIR Motion Sensor with a Raspberry Pi
- Automated Plant Watering System with Raspberry Pi & Web Dashboard
- DIY Wall‑E Inspired Raspberry Pi CD‑Box Robot
- Build an Internet‑Controlled Video‑Streaming Robot with Arduino & Raspberry Pi
- Build a Raspberry Pi Webcam Robot – Step‑by‑Step Video Streaming Guide
- UV Disinfection Robot Powered by Arduino Mega: Remote‑Controlled Germicidal System
- Autonomous Sudoku Solving Robot
- Build Stunning Web-Driven LED Animations with Raspberry Pi & Arduino