gatoBot: Веб-управляемый робот на Raspberry Pi Zero W с живым видеопотоком
История
gatoBot
gato — испанское слово для кот.
gatoBot — робот на базе Raspberry Pi Zero W, которым можно управлять полностью из веб-браузера, наблюдая за живым видео с бортовой камеры. Я построил его, чтобы дать своим котам игрового компаньона и продемонстрировать универсальность платформы Raspberry Pi.
О Raspberry Pi
Raspberry Pi — серия маленьких, доступных одноплатных компьютеров, разработанных Raspberry Pi Foundation для продвижения компьютерного образования по всему миру. Стал популярным выбором для робототехники, домашней автоматизации и образовательных лаб. Подробнее на Wikipedia.
Основные особенности
- Управление через любой веб-браузер, давая власть командовать роботом из любой точки локальной сети.
- Видеопоток в реальном времени с Pi Camera, чтобы видеть то, что видит робот.
- Низкая стоимость, батарейное питание, подходящее для мобильного использования.
Спецификация материалов (BOM)
- 1 × Raspberry Pi Zero W — ~$10.00
- 1 × Raspberry Pi Camera Module — ~$15.00
- 1 × держатель 4 × AA батарей — ~$1.00
- 1 × 4000 mAh USB пауэрбанк — ~$10.00
- 1 × шасси робота-машинки с 2 × DC моторами — ~$15.00
- 1 × L298N dual H-мост драйвер моторов — ~$4.00
Общая стоимость: ~$55.00.
Схемы
Схема подключения соединяет драйвер L298N с GPIO пинами Pi и моторы с выходами драйвера. Камера подключается к CSI порту Pi, а пауэрбанк питает Pi и драйвер моторов.
После сборки робот выглядит так:

Проблемы с направлением DC моторов
Если моторы вращаются в противоположную сторону от ожидаемой, скорректируйте логику HIGH/LOW в motors.py как показано ниже:
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)
Веб-интерфейс
После подачи питания на Pi и подключения к Wi-Fi, можно управлять роботом, перейдя по адресу https://raspberry_ip:8000/ из любого браузера. Интерфейс предлагает простые элементы управления направлением и отображает живой видеопоток.

Производственный процесс
- Как считывать температуру с DS18B20 на Raspberry Pi 2
- Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
- Точный мониторинг температуры в серверной на Raspberry Pi
- Подключение ультразвукового датчика HC‑SR04 к Raspberry Pi 3 — полное руководство
- Датчик слежения за линией на Raspberry Pi — простой детектор двери/линии KY‑033
- Обнаружение молний с Raspberry Pi и AS3935: практическое руководство
- Создание headless сигнализации утечки воды на Raspberry Pi 2 с Adafruit T‑Cobbler Plus
- Открыватель гаражных ворот на Raspberry Pi с живой видео-трансляцией — пошаговое руководство
- Перехват команд ИК-пульта на Raspberry Pi без LIRC: подход через Python UART
- Мастерство GPIO Raspberry Pi: подключение PIR-датчика движения на B+/Model 2