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

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

6 min read Rust Обновлено 06 Jan 2026
Установка Rust на Raspberry Pi
Установка Rust на Raspberry Pi

Что понадобится

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

Изображение схемы подключения светодиода и резистора к GPIO18 и GND на Raspberry Pi

Соберите схему так: GPIO 18 → положительная ножка светодиода → отрицательная ножка светодиода → резистор → GND на плате.

Примеры в руководстве делались на Raspberry Pi 3B+ под Raspbian Stretch в режиме рабочего стола. Те же шаги работают и по SSH, но для разных моделей Pi и дистрибутивов поведение может немного отличаться.

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

Скриншот с командой установки Rust в терминале

Чтобы установить Rust, откройте страницу установки rust-lang и скопируйте команду инсталлятора в терминал. При запросе выберите стандартную (default) установку.

Варианты, которые предлагает инсталлятор Rust

Инсталляция уведомит вас об окончании, но она может занять время в зависимости от скорости соединения.

После установки

Скриншот, показывающий, что rustc и cargo установлены, но ещё не в PATH

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

Проверка версий rustc и cargo в PATH

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

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

Откройте терминал и создайте новую папку для проекта:

mkdir YourFolder
cd YourFolder

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

cargo new YourProject

Вы увидите подтверждение создания проекта.

Создание новой папки и пустого rust-проекта в терминале

Перейдите в папку проекта и посмотрите содержимое:

cd YourProject
ls

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

Простая программа на Rust — объяснение

Пример скрипта hello-world на Rust

Откройте src/main.rs в редакторе. По умолчанию там содержится шаблон “Hello, world!”.

Синтаксис Rust будет знаком тем, кто раньше работал с языками C/Java — Rust использует точки с запятой и фигурные скобки, а не отступы, как Python. Программа должна компилироваться перед запуском.

Пустой файл Cargo.toml

Откройте Cargo.toml. В нём хранятся данные проекта, инструкции сборки и зависимости (crates). Мы добавим одну зависимость для доступа к GPIO.

Сборка примерного проекта

В терминале, находясь в корне проекта, выполните:

cargo build

Выполнение cargo build для сборки проекта

В результате появится папка target и файл Cargo.lock. Cargo.lock фиксирует версии зависимостей — для обучения его можно игнорировать. Исполняемый файл лежит в target/debug/.

Запуск на Mac/Linux:

./YourProject

На Windows появится YourProject.exe.

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

Отлично — теперь конвертируем проект в программу, работающую с GPIO.

Настройка работы с GPIO

Добавление rust_gpiozero в Cargo.toml

В этом примере используется crate rust_gpiozero. Он создан по аналогии с Python GPIO Zero и упрощает управление пинами. Добавьте зависимость в Cargo.toml:

[dependencies]
rust_gpiozero = "0.2.0"

Сохраните файл и выполните быструю проверку сборки зависимостей, не компилируя весь код:

cargo check

Cargo check проверяет код и устанавливает зависимости

Первичная загрузка зависимостей может занять несколько минут.

Hello Blink — мигалка светодиода

Raspberry Pi с подключённым светодиодом

Теперь изменим main.rs, чтобы светодиод мигал. Можно использовать готовый код из Gist, а можно написать вручную.

В начало файла добавьте подключение библиотеки:

use rust_gpiozero::*;

Добавьте задержки из стандартной библиотеки:

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

В функции main создайте переменную для пина и цикл:

let led = LED::new(18); // назначаем GPIO18 для светодиода

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

Сохраните файл и вернитесь в терминал.

Тестирование

Фотография светодиода, который светится

Соберите и запустите проект одной командой:

cargo run

Если всё в порядке, светодиод начнёт мигать с интервалом 1 секунда. Нажмите Ctrl-C, чтобы остановить программу. При ошибках внимательно проверьте синтаксис: пропущенные двоеточия, точки с запятой или фигурные скобки — частая причина проблем.

Частые проблемы и способы их решения

Важно: если вы видите ошибки доступа к GPIO (permission denied), попробуйте запустить программу с sudo или добавьте своего пользователя в соответствующую группу, управляющую GPIO, в вашем дистрибутиве.

  • Программа не запускается, ошибка “permission denied”: попробуйте sudo cargo run или настройте права доступа к /dev/gpiomem//sys/class/gpio.
  • Зависимости не собираются: проверьте подключение к интернету и свободное место на SD-карте.
  • Светодиод не мигает: проверьте правильность схемы, полярность LED и значение резистора.
  • Программа падает с паникой (panic): изучите текст panic и стек вызовов, добавьте логирование/печать для диагностики.

Альтернативные подходы

  • rppal — ещё один популярный crate для доступа к GPIO/Peripherals (включая I2C, SPI). Он даёт более низкоуровневый контроль, чем rust_gpiozero.
  • Системные вызовы из C/C++ через FFI, если требуется оптимизация или драйверы.
  • Использовать Python и библиотеку gpiozero для быстрого прототипирования, а затем портировать на Rust при необходимости.

Когда Rust на Raspberry Pi не лучший выбор

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

Руководство по отладке — шаги

  1. Убедитесь, что cargo check проходит без ошибок.
  2. Соберите cargo build и запустите исполняемый файл напрямую из target/debug.
  3. Запустите с sudo, если видите ошибки доступа к GPIO.
  4. Если программа падает, запустите её через RUST_BACKTRACE=1 для получения стека:
RUST_BACKTRACE=1 cargo run
  1. Проверьте физическое подключение на макетной плате.

Мини‑методология прототипирования аппаратных проектов на Rust

  1. Начните с простейшего — мигалки светодиода.
  2. Добавляйте один элемент за раз (сенсор, мотор, интерфейс).
  3. Выделяйте модульную логику в отдельные файлы/модули.
  4. Пишите тесты для логики (где возможно) и интеграционные проверки для HW-интерфейсов.
  5. Документируйте зависимости в Cargo.toml и фиксируйте версии по мере стабилизации.

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

  • Исполняемый файл запускается без ошибок (или с контролируемым sudo).
  • Светодиод мигает с ожидаемой периодичностью (пример — 1 секунда).
  • Программа корректно завершается по SIGINT (Ctrl-C).
  • Нет утечек системных ресурсов при длительном запуске.

Контрольная таблица для ролей

  • Разработчик: клонировать проект, собрать cargo build, проверить cargo check.
  • Хобби‑инженер: проверить схемы, резисторы и полярность LED, запустить cargo run.
  • Преподаватель: иметь запасные светодиоды и провода, инструкции для учащихся и пример Gist.

Краткий справочник команд (cheat sheet)

  • Установка Rust: см. официальный инсталлятор (curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh)
  • Создание проекта: cargo new ProjectName
  • Быстрая проверка: cargo check
  • Сборка: cargo build
  • Сборка и запуск: cargo run
  • Получение деталей ошибки: RUST_BACKTRACE=1 cargo run

Безопасность и приватность

  • Работа с GPIO не затрагивает личные данные, но соблюдайте общие меры безопасности: отключайте питание перед изменением схемы, используйте резисторы и защитные элементы.
  • При сетевом доступе (SSH) используйте надёжные пароли или ключи и обновляйте систему.

Сопутствующие советы по совместимости

  • Для разных моделей Raspberry Pi и дистрибутивов могут потребоваться соответствующие целевые таргеты (targets) и пакеты для кросс‑компиляции. Если вы планируете кросс‑компиляцию с x86 на ARM — настройте подходящий toolchain и sysroot.

Decision flow: стоит ли использовать Rust для вашего проекта?

flowchart TD
  A[Нужен быстрый прототип?] -->|Да| B[Используйте Python]
  A -->|Нет| C[Требуется скорость, безопасность, управление памятью?]
  C -->|Да| D[Рассмотрите Rust]
  C -->|Нет| B
  D --> E[Есть опыт с Cargo/компиляцией?]
  E -->|Да| F[Используйте Rust и rust_gpiozero/rppal]
  E -->|Нет| G[Выделите время на изучение инструментов]

Пример: альтернативная реализация с rppal

Если хотите более низкоуровневый доступ, можно использовать rppal:

Добавьте в Cargo.toml:

[dependencies]
rppal = "0.12"

Пример использования:

use rppal::gpio::Gpio;
use std::{thread::sleep, time::Duration};

fn main() {
  let gpio = Gpio::new().expect("Не удалось открыть GPIO");
  let mut pin = gpio.get(18).expect("Нет пина").into_output();
  loop {
    pin.set_high();
    sleep(Duration::from_secs(1));
    pin.set_low();
    sleep(Duration::from_secs(1));
  }
}

Этот подход даёт больше контроля над конфигурацией пина и его режимами.

Заключение

Rust не заменит Python во всех сценариях — Python остаётся отличным выбором для быстрой разработки и обучения. Тем не менее Rust привносит сильную типобезопасность, контроль над памятью и хорошие возможности для написания быстрых и надёжных приложений. На Raspberry Pi Rust уже позволяет писать как простые прототипы, так и производственные решения для встраиваемых систем.

Коротко — вы успешно установили Rust, создали проект, добавили crate для GPIO и реализовали мигалку светодиода. Дальше можно попробовать подключить датчики, управлять мотором или отправлять данные по сети.

Сводка

  • Установите Rust с официального инсталлятора и перезагрузите сессию.
  • Создайте проект через Cargo и добавьте rust_gpiozero или rppal.
  • Напишите простой цикл включения/выключения GPIO18 и запустите cargo run.
  • При проблемах проверьте права доступа, физическое подключение и журналы ошибок.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство