Компонент · Контроллер
Raspberry Pi
Raspberry Pi — полноценный компьютер с Linux размером с карту, то есть мозг для роботов, которым нужны зрение, ROS или вычисления, не подвластные Arduino.
Что это такое
Raspberry Pi — полноценный компьютер размером с банковскую карту. Если Arduino Uno — микроконтроллер, который бесконечно выполняет одну программу, то Pi работает под управлением Linux и может одновременно управлять камерой, обмениваться данными по сети, запускать ROS 2 и выполнять код робота. Это компьютер, к которому обращаются, когда роботу нужно думать, а не только реагировать.
Эта вычислительная мощность реализована на одной плате: многозадачность Linux делает Pi менее подходящим для точного до микросекунд тайминга, который микроконтроллер обеспечивает без усилий. Это не конкуренты, а партнёры.
Как это работает
Pi загружает операционную систему (обычно Raspberry Pi OS) с карты microSD, после чего работает как любая машина с Linux. Для робототехники важен 40-выводный разъём GPIO: цифровые входы и выходы, а также шины I²C, SPI и UART, позволяющие Pi считывать датчики и управлять оборудованием. Всё это дополняют компьютерные узлы — USB, Ethernet, Wi-Fi и интерфейс камеры, — которых у микроконтроллера просто нет.
Распространённая архитектура — робот с двумя мозгами: Pi отвечает за восприятие и планирование (зрение, SLAM, узлы ROS) и передаёт команды двигателям Arduino, выполняющей управление в реальном времени.
Когда его следует использовать
Выбирайте Pi, когда роботу нужны возможности компьютера:
- Компьютерное зрение — камера и OpenCV для обнаружения меток, объектов или линий.
- ROS 2 — запуск узлов, тем и навигационного стека.
- Построение карты / SLAM — создание карты и определение положения в ней.
- Сеть — веб-панель, дистанционное управление или телеметрия.
Для задач, требующих только управления в реальном времени, оставляйте Arduino или ESP32: они дешевле, проще и лучше обеспечивают точный тайминг.
Подключение и типичные ошибки
- Логический уровень — 3.3 V; выводы не выдерживают 5 V. Подача 5 V на вывод GPIO может повредить Pi. Преобразуйте уровень сигналов от компонентов 5 V, например линии TX HC-05.
- Он всё равно не может питать двигатели. GPIO передаёт сигналы; ток двигателя проходит через драйвер, например L298N.
- Требования к питанию строгие. Подавайте стабильные 5 V достаточного тока; провалы напряжения повреждают SD-карту и вызывают случайные перезагрузки.
- Корректно завершайте работу. Отключение питания работающей системы Linux может повредить карту — предусмотрите безопасное выключение или используйте файловую систему только для чтения.
40-выводный разъём и доступные выводы
В разъёме 40 выводов, но как GPIO использовать можно только 26. Остальные предназначены для питания и земли.
| Функция | Выводы (нумерация BCM) | Примечание |
|---|---|---|
| I²C-1 | GPIO 2 (SDA), GPIO 3 (SCL) | На плате имеются постоянные подтягивающие резисторы 1.8 kΩ к 3.3 V |
| SPI0 | GPIO 10 (MOSI), 9 (MISO), 11 (SCLK), 8/7 (CE0/CE1) | |
| UART | GPIO 14 (TX), 15 (RX) | По умолчанию используется консолью Linux — её необходимо освободить |
| Аппаратный PWM | GPIO 12, 13, 18, 19 | Только эти четыре; остальной PWM формируется программно |
| Питание | 3.3 V, 5 V | 5 V поступает непосредственно со входа — без стабилизации |
| Общего назначения | Остальные |
Две из этих строк регулярно отнимают у людей целый вечер.
UART является консолью. Из коробки GPIO 14/15 передают приглашение входа Linux. Подключите к ним модуль GPS или Arduino — и вместо данных вы получите служебные сообщения входа. Освободите их с помощью sudo raspi-config → Interface Options → Serial Port → login shell: no, hardware serial: yes. У Pi 3 и более поздних есть дополнительная особенность: хороший UART по умолчанию используется Bluetooth, а разъёмный — упрощённый «mini UART», скорость которого изменяется вместе с тактовой частотой CPU. Добавьте dtoverlay=disable-bt в /boot/config.txt, чтобы поменять их местами.
Программный PWM дрожит. Только четыре вывода имеют аппаратный PWM. Остальные формирует ядро, и планировщик Linux может его прервать — на сервоприводе это проявляется заметным подёргиванием. Это нагляднейший пример того, что Pi делает плохо.
Проблема тайминга без лишних слов
Это самое важное, что нужно понять о Pi в роботе, и это не дефект — именно так работает операционная система.
Микроконтроллер, выполняющий loop(), запускает только ваш код, поэтому интервал 1 ms равен
1 ms. Linux использует разделение времени: ядро может вытеснить процесс для обработки сетевого пакета,
записи на диск или выполнения любой из сотни фоновых задач.
| Задача | Микроконтроллер | Raspberry Pi (обычный Linux) |
|---|---|---|
| Контур управления 1 kHz | Простая, точная | Возможна с отдельными пропусками порядка миллисекунд |
| PWM сервопривода | Очень стабильный | Заметно дрожит на выводах программного PWM |
| Считывание энкодера с частотой 20 kHz | Обычная задача с прерываниями | Ненадёжно — фронты пропускаются |
| Измерение времени ультразвукового эха | Точность до микросекунд | Случайные ошибки в несколько сантиметров |
| Зрение, планирование, сеть | Невозможно | Именно для этого предназначен |
Следствие — архитектура с двумя мозгами, причём это не компромисс, а обычное проектирование серьёзного робота:
Raspberry Pi Microcontroller
- camera, vision - encoder counting
- SLAM, path planning <--> - PID motor control
- ROS 2 nodes - servo timing
- networking, dashboard - emergency stop
high-level goals hard real time
Они обмениваются данными по последовательному интерфейсу USB, UART или I²C, и каждое устройство выполняет свою сильную сторону. Pi, пытающийся считать фронты энкодера, будет их пропускать; Arduino, пытающаяся запустить OpenCV, не сможет этого сделать.
Питание и проблема SD-карты
Питание — место, где чаще всего отказывают роботы на Pi, а характер отказа исключительно дорог: провал напряжения во время записи повреждает SD-карту, и вся системная копия теряется.
| Модель | Рекомендуемый источник | Под нагрузкой |
|---|---|---|
| Pi Zero 2 W | 5 V, 2.5 A | ~350 mA в типичном режиме |
| Pi 3B+ | 5 V, 2.5 A | ~500 mA, пики около 1.2 A |
| Pi 4B | 5 V, 3 A (USB-C) | ~600 mA, пики около 1.5 A |
| Pi 5 | 5 V, 5 A (USB-C PD) | Ещё выше |
Отсюда следуют правила:
- Никогда не питайте двигатели и Pi от одной шины. Бросок тока двигателя — именно тот переходный процесс, который повреждает карту.
- При понижении напряжения от батареи используйте импульсный регулятор, а не линейный. Линейный регулятор, преобразующий 11.1 V в 5 V при токе 1 A, выделяет 6 W.
- Следите за предупреждением в виде молнии. Pi показывает значок низкого напряжения и записывает его в журнал;
vcgencmd get_throttledтакже сообщает о нём. Любое ненулевое значение означает недостаточное питание, и со временем оно повредит карту. - Корректно завершайте работу. Выполняйте
sudo shutdown -h nowперед отключением питания. Для робота, выключаемого тумблером, нужны либо кнопка выключения, подключённая к GPIO, либо корневая файловая система только для чтения.
Для робота, эксплуатируемого в реальных условиях, стоит серьёзно рассмотреть файловую систему только для чтения: при включённом
overlayfs во время работы ничего не записывается на карту, и питание можно отключить в любой момент без
последствий. Возможность локально сохранять данные теряется, что обычно является приемлемым компромиссом.
Какую модель выбрать для робота
| Модель | RAM | Почему выбрать |
|---|---|---|
| Pi Zero 2 W | 512 MB | Крошечная и лёгкая. Достаточна для камеры и простого зрения |
| Pi 3B+ | 1 GB | Недорогая, достаточна для ROS 2 с небольшими узлами |
| Pi 4B (4 GB) | 4 GB | Практический оптимальный вариант для ROS 2 и зрения |
| Pi 5 | 4–16 GB | Заметно быстрее; требует больше питания и активного охлаждения |
Для ROS 2 с камерой 4 GB — точка, после которой работа перестаёт быть утомительной. RViz, узел зрения и навигационный стек вместе используют больше 1 GB, а Pi, начавший выгружать данные в SD-карту из-за нехватки памяти, становится неприемлемо медленным и изнашивает карту.
На практике нельзя считать необязательными два аксессуара: радиатор или вентилятор (Pi 4 при постоянной нагрузке снижает частоту при 80 °C, и троттлинг приводит к потере кадров) и качественную карту microSD класса A2, а ещё лучше — загрузку с USB SSD. Узким местом гораздо чаще оказывается скорость карты, а не CPU.
Диагностика
| Симптом | Вероятная причина | Исправление |
|---|---|---|
| Случайные перезагрузки | Недостаточное питание | Проверьте vcgencmd get_throttled; используйте источник 3 A |
| SD-карта постоянно повреждается | Питание отключено во время записи | Корректно завершайте работу или используйте файловую систему только для чтения |
| Значок молнии | Низкое напряжение | Лучший источник и лучший кабель — кабель имеет значение |
| Последовательный вывод содержит сообщения входа | Консоль всё ещё использует UART | Отключите login shell в raspi-config |
| Неверная скорость последовательной передачи | Mini UART связан с тактовой частотой CPU | Используйте dtoverlay=disable-bt, чтобы получить хороший UART |
| Сервопривод подёргивается | Программный PWM и планировщик | Используйте PCA9685 или микроконтроллер |
| Неверный счёт энкодера | Пропущенные фронты под нагрузкой | Считайте их на микроконтроллере |
| Через несколько минут становится медленнее | Тепловой троттлинг | Радиатор или вентилятор |
| Вывод GPIO перестал работать | 5 V подан на вывод 3.3 V | Преобразуйте уровень; вывод, вероятно, повреждён |
| Устройство I²C не обнаружено | Интерфейс не включён | raspi-config, затем i2cdetect -y 1 |
Pi или микроконтроллер?
| Arduino / ESP32 | Raspberry Pi | |
|---|---|---|
| Что выполняется | Только ваш код | Linux и ваш код среди многих процессов |
| Тайминг | Детерминированный до микросекунд | Не гарантируется, с дрожанием порядка миллисекунд |
| Время загрузки | Мгновенно | 20–30 секунд |
| Отключение питания | Безопасно | Может повредить файловую систему |
| Зрение, ROS 2, сеть | Нет | Да |
| Потребление | Миллиамперы | От сотен миллиампер до ампер |
| Стоимость | $3–8 | $35–80 |
Честный ответ: это не конкуренты. Pi не может надёжно считать импульсы энкодера, а микроконтроллер не может запустить OpenCV. Почти каждый функциональный хобби-робот в итоге использует оба устройства, и осознание этого на раннем этапе избавляет от множества бесполезных попыток заставить одно выполнять работу другого.
Если всё поведение робота помещается в один контур управления — следование за линией, обход препятствий или решение лабиринта, — Pi вам вообще не нужен, а его добавление замедляет запуск, снижает надёжность и усложняет отладку.
Исследуйте граф
Используется в этих сборках
Проекты, учебные пути и симуляторы, в которых используется Raspberry Pi.
Сравнение
Альтернативы
Вопросы
Raspberry Pi: частые вопросы
Что такое Raspberry Pi?
Raspberry Pi — небольшой недорогой одноплатный компьютер, на котором работает полноценная операционная система Linux. В отличие от Arduino, который выполняет одну программу на микроконтроллере, Pi является настоящим компьютером: он может одновременно работать с камерой, запускать браузер, ROS и код робота.
Raspberry Pi или Arduino — что выбрать?
Arduino используйте для управления двигателями и датчиками в реальном времени, а Raspberry Pi — когда роботу нужны зрение, построение карты, ROS или сеть. Многие роботы используют оба устройства: Pi как высокоуровневый мозг, а Arduino как руки, работающие в реальном времени. Многозадачность Linux делает Pi хуже, а не лучше микроконтроллера при работе с точностью до микросекунд.
Может ли Raspberry Pi управлять двигателями?
Его выводы GPIO могут передавать сигналы PWM и направления, но, как и Arduino, он не может питать двигатель от вывода. Двигатели по-прежнему приводятся через H-мост, например L298N. Выводы Pi также работают на 3.3 V, поэтому при подключении к частям 5 V учитывайте логические уровни.
Нужен ли Raspberry Pi для робота?
Нет. Большинство роботов для начинающих (следующих за линией, обходящих препятствия) без проблем работают на Arduino при значительно меньших затратах и сложности. Выбирайте Pi, только когда задаче действительно нужен компьютер: компьютерное зрение, SLAM, запуск ROS 2 или веб-интерфейс.
Какие модели Raspberry Pi лучше всего подходят для робототехники?
Обычно выбирают Raspberry Pi 4 и Pi 5 — их CPU и RAM достаточно для компьютерного зрения и ROS. Pi Zero 2 W — крошечный маломощный вариант для более лёгких роботов, где важнее место и батарея, чем максимальная скорость. Самые старые модели (Pi 1 и 2) не используйте для вычислительно сложных задач.
Дополнительные материалы