Гид по технологиям

Установка Rust на Raspberry Pi

7 min read Программирование Обновлено 28 Dec 2025
Установка Rust на Raspberry Pi
Установка Rust на Raspberry Pi

rust-raspberry-pi

Если вы интересуетесь программированием, то, вероятно, слышали про Rust. Этот язык, изначально разработанный при участии сообщества Mozilla, полюбился разработчикам за безопасность памяти и высокую производительность. Raspberry Pi — многофункциональный мини‑компьютер, идеально подходящий для практики и обучения. В этой статье мы объединим оба инструмента: установим Rust на Raspberry Pi и создадим простую программу, мигающую светодиодом через GPIO.

Что нужно заранее

  • Raspberry Pi (любая модель с GPIO, в статье использовалась Raspberry Pi 3B+).
  • Светодиод (LED).
  • Резистор 220–1 kΩ.
  • Макетная плата (breadboard) и провода для соединений.

A circuit diagram showing an LED and resistor attached to the GPIO 18 and GND pins of a Raspberry Pi

Подключите цепь так: GPIO 18 -> анод светодиода (длинная ножка) -> катод светодиода -> резистор -> GND. Проверьте соединения перед подачей питания.

Важно: работа с GPIO требует прав доступа. Выполняйте команды от имени пользователя, у которого есть доступ к GPIO (обычно pi или пользователь, добавленный в группу gpio), или запускайте с sudo, если это необходимо.

Совместимость и окружение

Эта инструкция написана с учётом Raspbian Stretch в настольном режиме, но шаги также работают через SSH. Разные модели Raspberry Pi и разные версии ОС могут вести себя немного иначе — учтите версии пакетов и архитектуру (armv7/arm64).

Как установить Rust на Raspberry Pi

The Terminal command required to install Rust

  1. Перейдите на страницу установки Rust (rust-lang) и скопируйте команду установки rustup. В терминале выполните команду установки. При запросе выберите установку по умолчанию.

  2. Установщик скачает rustup, rustc и Cargo. Процесс может занять несколько минут в зависимости от скорости сети.

The three choices presented by the Rust installer.

Что делать после установки

Rustc and Cargo are installed, but not currently in PATH

После завершения установки инструменты rustc и cargo могут быть установлены, но ещё не добавлены в PATH текущей сессии. Обычно нужно перезагрузить систему либо выйти и снова войти в сеанс пользователя, чтобы обновлённый PATH применился.

Проверьте установку командой:

rustc --version
cargo --version

Если версии отображаются, установка успешна.

Testing Rust and Cargo in PATH with their version numbers.

Для редактирования кода используйте любой удобный редактор. В статье использовался Code-OSS (community build VS Code), но можно применять nano, vim, Geany или другие IDE.

Создание нового Rust проекта

Откройте терминал и выполните:

mkdir YourFolder
cd YourFolder

Создайте проект с помощью Cargo:

cargo new YourProject

В ответ вы получите подтверждение создания проекта. Перейдите в папку проекта и просмотрите содержимое:

cd YourProject
ls

Вы увидите папку src и файл Cargo.toml — это основы любого Rust проекта.

Быстрое объяснение структуры проекта

A sample hello-world rust script

  • src/main.rs — входная точка приложения (если создавался бинарный проект).
  • Cargo.toml — метаданные проекта, зависимости (crates), версии и настройки сборки.

Откройте src/main.rs — проект уже содержит простую программу “Hello, world!”. Rust синтаксически похож на C/Java: фигурные скобки и точки с запятой обязательны; код нужно компилировать перед запуском.

A blank Cargo.toml file

В Cargo.toml мы позже добавим зависимость (crate) для доступа к GPIO.

Сборка и запуск проекта

Соберите проект:

cargo build

Using the Cargo Build command to build the sample project

После сборки появится папка target и файл Cargo.lock. Executable находится в target/debug:

./target/debug/YourProject

Или запустите сборку и выполнение одной командой:

cargo run

The file structure of the built rust project along with the hello world program running.

Подключение к GPIO из Rust

Adding the Rust GPIO Zero crate to the Cargo.toml file

Для работы с GPIO мы будем использовать крейт rust_gpiozero (версия в примере 0.2.0). Он схож по API с Python GPIO Zero, поэтому примеры часто понятны тем, кто работал с Python.

В секцию [dependencies] файла Cargo.toml добавьте:

[dependencies]
rust_gpiozero = "0.2.0"

Сохраните файл и в терминале выполните:

cargo check

Команда cargo check скачает зависимости и проверит, что проект компилируется. Это быстрее, чем полная сборка, и помогает выявлять ошибки на ранней стадии.

Cargo check will check code for errors and install dependencies

Пример: Hello Blink — мигающий светодиод

A Raspberry Pi with an LED attached

Откройте src/main.rs и замените содержимое на следующий код. Если не хотите писать код вручную, готовый пример можно найти на GitHub Gist (проверьте совместимость версии крейта).

use rust_gpiozero::*;
use std::thread::sleep;
use std::time::Duration;

fn main() {
    let led = LED::new(18); // пин 18

    loop {
        led.on();
        sleep(Duration::from_secs(1));
        led.off();
        sleep(Duration::from_secs(1));
    }
}

Комментарии:

  • use rust_gpiozero::*; — подключает API крейта.
  • Duration::from_secs(1) — пауза в 1 секунду.

Сохраните файл и запустите проект:

cargo run

An image showing the LED lighting up

Если светодиод мигает, поздравляю — ваша первая аппаратная программа на Rust успешно запущена. Для остановки нажмите Ctrl‑C.

Чек-лист перед запуском (быстрое руководство)

  • Провода и полярность светодиода проверены.
  • Резистор выбран в пределах 220–1 kΩ.
  • Пользователь имеет права на доступ к GPIO или запуск от root.
  • Cargo и rustc установлены и видимы в PATH.
  • В Cargo.toml указана зависимость rust_gpiozero = “0.2.0”.
  • Выполнена команда cargo check и нет ошибок зависимостей.

Типичные ошибки и как их исправить

  • Программа не запускается: проверьте вывод команды cargo run на предмет сообщений компилятора. Частые ошибки — пропущенные точки с запятой, неверные имена модулей или несовместимости версий крейтов.
  • rustc или cargo не найдены: перезапустите терминал или выполните выход/вход в систему, чтобы обновился PATH, или добавьте в PATH вручную ~/.cargo/bin.
  • Нет доступа к GPIO: запустите программу с sudo или добавьте пользователя в группу gpio (sudo usermod -aG gpio ), затем выйдите и войдите снова.
  • Светодиод не мигает: проверьте схемы подключения и целевой пин (18), убедитесь, что резистор и светодиод исправны.

Отладка аппаратного кода

  • Перед запуском скомпилируйте: cargo build — это быстрее, чем полный цикл run при отладке.
  • Для вывода отладочной информации используйте println! и проверяйте лог в терминале.
  • Если вы используете SSH, убедитесь, что питание Pi стабильно и USB‑порты/кабель не прерывают работу.

Альтернативные подходы к работе с GPIO

  • Использовать другие крейты, например direct sysfs или другие обёртки, если нужна более низкоуровневая работа.
  • Писать небольшие части на C и подключать их через FFI, если нужны специфичные оптимизации.
  • Оставаться на Python (gpiozero) для быстрого прототипирования, а затем переписывать критичные части на Rust.

Руководство по безопасности и лучшие практики

  • Никогда не подключайте периферию при включённом питании, чтобы избежать короткого замыкания.
  • Используйте резисторы и защитные элементы, не превышайте допустимый ток GPIO пина.
  • Обновляйте пакеты ОС и безопасные зависимости крейтов.

Сценарии использования и роли

  • Новичок / Хоббист: использовать примеры для обучения основам и безопасным подключениям.
  • Преподаватель: показывать различия синтаксиса и концепций между Python и Rust.
  • Разработчик встраиваемых систем: использовать Rust для части кода с критичными по памяти компонентами.

Критерии приёмки

  • Код компилируется без ошибок: cargo check и cargo build проходят успешно.
  • Программа запускается: cargo run запускает приложение без аварийных завершений.
  • Светодиод мигает с интервалом ~1 с.
  • Логи/вывод в терминале корректны при использовании println!.

Полезные команды — шорткат‑лист

  • Установить Rust: curl –proto ‘=https’ –tlsv1.2 -sSf https://sh.rustup.rs | sh
  • Проверить установки: rustc –version; cargo –version
  • Создать проект: cargo new MyApp
  • Сборка: cargo build
  • Быстрая проверка: cargo check
  • Сборка и запуск: cargo run

Небольшой метод: как быстро переносить прототипы с Python на Rust

  1. Прототипируйте логику на Python, работая с gpiozero.
  2. Определите горячие участки/точки отказа.
  3. Перенесите периферийный код на Rust с использованием rust_gpiozero.
  4. Соберите и протестируйте оба варианта параллельно.

Частые случаи, когда Rust может не подойти

  • Если вам нужно быстро и без компиляции экспериментировать — Python быстрее итерационно.
  • Для сложных вычислений, где платформа не поддерживает нужную архитектуру или крейты недоступны.

Глоссарий (одна строка на термин)

  • Cargo — система сборки и менеджер пакетов в Rust.
  • Crate — пакет/модуль в экосистеме Rust, аналог зависимости.
  • rustup — инструмент управления версией Rust и компонентами.
  • GPIO — универсальные входы/выходы общего назначения на Raspberry Pi.

Шаблон плана урока для преподавателя (30–45 минут)

  1. 5 мин — обзор Raspberry Pi и Rust (почему Rust?).
  2. 10 мин — установка rustup и проверка окружения.
  3. 10 мин — создание проекта и обзор Cargo.toml.
  4. 10 мин — подключение крейта rust_gpiozero и написание main.rs.
  5. 5–10 мин — запуск, тестирование и обсуждение проблем.

Примеры тестов и приёмка

  • Unit тесты: логика без аппаратных зависимостей можно покрыть unit-тестами стандартными средствами Rust (#[cfg(test)]).
  • Интеграционные тесты для аппаратного слоя требуют моков или тестовой среды; при отсутствии мока — ручное тестирование на устройстве.

Куда двигаться дальше

  • Изучите документацию rust_gpiozero и примеры в репозитории.
  • Исследуйте асинхронные возможности Rust для управления несколькими устройствами.
  • Попробуйте интегрировать сенсоры, PWM и I2C устройства.

Резюме

Вы установили Rust на Raspberry Pi, создали проект Cargo, добавили dependency rust_gpiozero и написали программу, мигающую светодиодом. В статье также представлены чек-листы, отладочные советы, альтернативные подходы и руководства по безопасности.

Важно: Rust не заменит Python во всех задачах, но он даёт сильные преимущества в безопасности и производительности для проектов, где это важно.

Приятного кодинга и безопасных подключений!

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как сделать слайдер для камеры за $35
Сделай сам

Как сделать слайдер для камеры за $35

Как стримить с телефона на ПК через OBS
Стриминг

Как стримить с телефона на ПК через OBS

Как удалить аккаунт Reddit — полное руководство
Инструкции

Как удалить аккаунт Reddit — полное руководство

Как выбрать камеру для влогинга
Видео

Как выбрать камеру для влогинга

Как сравнить процессоры CPU: практическое руководство
Hardware

Как сравнить процессоры CPU: практическое руководство

Отключить всплывающее «Открыть в приложении» на Reddit
Инструкция

Отключить всплывающее «Открыть в приложении» на Reddit