Сборка робота на Raspberry Pi: руководство для начинающих и обзор проектов
Введение
Raspberry Pi — полноценный Linux-компьютер за $35–75, идеальный «мозг» для робота: Python/OpenCV/ROS, GPIO, камера, Wi-Fi, Bluetooth, огромное сообщество. Рассмотрим пошаговую сборку простого робота-избегатора препятствий и обзор вдохновляющих проектов.
Проект 1: Робот-ибегатор препятствий (Beginner)
Компоненты (BOM)
- Raspberry Pi 3B/3B+/4 (любой с 40-pin GPIO)
- 2× DC мотор-редуктор (TT motor, 6В/100–200 об/мин) + 2 колеса
- 1× Опорное колесо (caster wheel)
- Драйвер двигателей L298N (или L293D, TB6612FNG — лучше по эффективности)
- 2× ИК-датчик препятствий (FC-51 / HW-201) или ультразвуковой HC-SR04
- Батарея: 2×18650 (7.4В) + DC-DC step-down 5В/3А (или Power Bank 2.4А+)
- Рама шасси (акрил/алюминий/3D-печать)
- Провода, макетка, Dupont, паяльник, термоклей
- MicroSD 16+ ГБ (Raspberry Pi OS Lite / Ubuntu Server)
Подключение ИК-датчика (FC-51)
FC-51 VCC → Pi 5V (Pin 2/4)
FC-51 GND → Pi GND (Pin 6)
FC-51 OUT → Pi GPIO 17 (Pin 11) # Настраиваемый порог потенциометром на модуле
Тест: python3 -c "import RPi.GPIO as GPIO; GPIO.setmode(GPIO.BCM); GPIO.setup(17, GPIO.IN); print(GPIO.input(17))" — 0 = препятствие, 1 = свободно.
Подключение L298N к двум моторам
L298N:
ENA (PWM) → Pi GPIO 18 (Pin 12, HW PWM0)
IN1 → Pi GPIO 23 (Pin 16)
IN2 → Pi GPIO 24 (Pin 18)
IN3 → Pi GPIO 25 (Pin 22)
IN4 → Pi GPIO 8 (Pin 24)
ENB (PWM) → Pi GPIO 13 (Pin 33, HW PWM1)
Motor A (левый) → OUT1/OUT2
Motor B (правый) → OUT3/OUT4
L298N +12V → Батарея 7.4В (VBAT)
L298N 5V OUT (jumper ON) → Pi 5V (Pin 2/4) # L298N имеет слабый 5В LDO, лучше внешний DC-DC!
L298N GND → Pi GND (общая земля ОБЯЗАТЕЛЬНО)
Важно: L298N теряет ~2В на транзисторах. При 7.4В на моторы придёт ~5.4В — нормально для 6В моторов. Для 12В моторов нужен 3S Li-Ion (11.1В). Рекомендую **TB6612FNG** (MOSFET, без потерь, меньше, не греется).
Python-код (GPIO Zero — проще, чем RPi.GPIO)
#!/usr/bin/env python3
from gpiozero import Robot, DistanceSensor
from signal import pause
# ИК-датчик как DistanceSensor (threshold_distance=0.2, max_distance=1)
# Но ИК даёт только 0/1. Лучше свой класс или используем DigitalInputDevice.
from gpiozero import DigitalInputDevice, PWMOutputDevice, DigitalOutputDevice
from time import sleep
left_motor = Robot(left=(23, 24), right=(25, 8), pwm=True) # (forward, backward) pins
# Для PWM на ENA/ENB нужен gpiozero.Motor с pwm=True и отдельные PWM пинсы — проще класс Robot с pwm=True не поддерживает.
# Используем ручное управление:
ena = PWMOutputDevice(18) # ENA
enb = PWMOutputDevice(13) # ENB
in1, in2 = DigitalOutputDevice(23), DigitalOutputDevice(24)
in3, in4 = DigitalOutputDevice(25), DigitalOutputDevice(8)
ir = DigitalInputDevice(17, pull_up=False) # 0=препятствие
def forward(speed=0.6):
in1.on(); in2.off(); in3.on(); in4.off()
ena.value = speed; enb.value = speed
def backward(speed=0.5):
in1.off(); in2.on(); in3.off(); in4.on()
ena.value = speed; enb.value = speed
def turn_left(speed=0.6):
in1.off(); in2.on(); in3.on(); in4.off()
ena.value = speed; enb.value = speed
def turn_right(speed=0.6):
in1.on(); in2.off(); in3.off(); in4.on()
ena.value = speed; enb.value = speed
def stop():
ena.value = 0; enb.value = 0
in1.off(); in2.off(); in3.off(); in4.off()
print("Robot started. Press Ctrl+C to stop.")
try:
while True:
if ir.value == 0: # препятствие
stop()
sleep(0.2)
backward(0.5)
sleep(0.4)
turn_right(0.6)
sleep(0.5)
else:
forward(0.6)
sleep(0.05)
except KeyboardInterrupt:
stop()
print("Stopped.")
Запуск
- Сохраните как
robot.py, сделайте исполняемым:chmod +x robot.py. - Автозапуск:
crontab -e→@reboot /home/pi/robot.py &(или systemd service). - Проверьте направления моторов — поменяйте IN1/IN2 если надо.
Обзор вдохновляющих проектов на Raspberry Pi
1. CHOP Quadruped (4-лапый, как Boston Dynamics Spot)
- Open Source, 3D-печать, Raspberry Pi 4B + Arduino Mega (сервоконтроллеры).
- Pi: планирование траектории, инверсная кинематика, Python, Bluetooth-джойстик.
- Arduino: низкоуровневое управление 12 сервоприводами, чтение IMU.
2. Ping-Pong Robot (робот для настольного тенниса)
- Промышленные линейные направляющие, высокоскоростные камеры, Pi 4 + GPU для трекинга мяча.
- DIY версия: 3D-печать, лазерная резка, управление по Wi-Fi.
3. Raspberry Pi Humanoid (гуманоид)
- Bioloid / Dynamixel сервоприводы, Pi Zero 2 W + 1-ячейка LiPo 2500 мАч.
- Ультразвук/ЛИДАР для избегания, гироскоп для баланса.
- ADC (MCP3008/ADS1115) для аналоговых датчиков.
4. Pi Roomba (робот-пылесос)
- Roomba 500/600 series SCI (Serial Command Interface) + Pi через USB-UART.
- JS/Node.js пакеты (node-roomba), джойстик, картография.
5. Butter Robot (Rick & Morty)
- Pi Zero W + RPi Camera Module + USB Audio + L9110 драйвер + 9g сервы.
- Видео/аудио стриминг через Blynk / WebRTC.
- Компактный, забавный, обучающий.
6. Petoi Nybble (роботизированный кот)
- Open Source, лазерная резка дерева (не 3D-печать!), Pi 3B+ + Arduino Pro Mini.
- Arduino: рефлексы, мышечная память, сервоконтроль. Pi: высокоуровневые команды, AI.
7. Spot Micro (мини Spot)
- Pi 3B + Ubuntu, C++/Python, PCA9685 (16-канальный PWM/I2C) для 12 серв.
- Троты, походка, 3-осевое управление углами. LiDAR опционально для SLAM.
8. Miniature Fighting Robot (батл-бот)
- Pi Zero W + Bluetooth-джойстик → GPIO → L298N (движение) + TL300G ESC (кинетик/спинер).
- 3D-печатный корпус, 500 мАч LiPo. Простота управления через GPIO.
9. Devastator Tank (робот-танк)
- Платформа Devastator (DFRobot) + Pi Zero W + камера + мотор-шилд.
- Гусеничный ход, FPV управление, Python/OpenCV для распознавания.
Советы для успешных робототехнических проектов на Pi
- Питание — №1 проблема. Отдельный DC-DC 5В/3–5А для Pi, моторы от отдельного аккумулятора (или мощный BEC). Общая земля!
- Охлаждение Pi под нагрузкой (OpenCV, ROS, навигация) — радиатор + вентилятор 30×30×10 мм.
- ROS 2 (Humble/Iron) на Pi 4/5 — стандарт для серьезной робототехники. На Pi 3/Zero — тяжеловато, используйте Micro-ROS на STM32/ESP32 + Pi как верхний уровень.
- Камера: Pi Camera Module 3 (IMX708, 12 МП, автофокус) или Global Shutter (для быстрых движений).
- Симуляция: начните в Gazebo / Webots / Isaac Sim — сэкономите недели железа.
- Версионируйте код (Git), ведите журнал изменений железа.
Заключение
Робот на Raspberry Pi — доступный вход в автономную робототехнику с компьютерным зрением и ИИ. Начните с простого избегатора на GPIO Zero / gpiozero, потом добавляйте камеру, SLAM, ROS. Сообщество, документация и экосистема Python делают Pi лучшей платформой для обучения и прототипирования. Главное — надёжное питание и механика.
Промышленные технологии
- Как 3D-принтеры печатают металлические детали: от порошка к точности
- Сборка надежного тока зеркального контура: Пошаговое руководство
- Создание робота на Arduino и Raspberry Pi: пошаговое руководство
- Создание умного робота с Bridge Shield — интеграция Raspberry Pi и Arduino
- DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
- Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство
- Разработка надежной программы электрического обслуживания: практическое руководство
- Создание стейкхолдер-фокусированной IoT продуктовой дорожной карты
- Сборка Саурона: Полугуманоидный робот на Arduino Mega 2560 – Полное руководство
- Проектирование надежной программы электрического обслуживания для повышения безопасности и производства