Raspberry Pi: обзор плат, выбор ОС и работа с GPIO

Raspberry Pi: обзор плат, выбор ОС и работа с GPIO

Что представляет собой одноплатный компьютер Raspberry Pi, какие системы на него ставят, как установить Raspbian и безопасно работать с выводами GPIO.

Компьютер, который помещается на ладони

Raspberry Pi — одноплатный компьютер размером чуть больше кредитной карты. Его создавали как учебное пособие по информатике, но за несколько лет плата разошлась гораздо шире. Все модели построены на процессорах с ARM-архитектурой. За 2012–2019 годы вышло 11 разновидностей, отличающихся параметрами и, соответственно, стоимостью; поздние версии получили модули WiFi и Bluetooth.

Основные элементы платы Raspberry Pi B+

Модель Raspberry Pi 4B поступила в продажу в июне 2019 года. Она оснащена графическим процессором VideoCore VI (OpenGL ES 3.x) и аппаратным декодером 4Kp60 для HEVC-видео. Два порта microHDMI с поддержкой сигнала до 4K позволяют подключить два монитора одновременно.

Плата Raspberry Pi 4B

Операционные системы

Внешне плата похожа на Arduino, но работает по другому принципу: как обычный ПК, под управлением операционной системы. Наиболее известные варианты:

  • Raspbian — с 2015 года основная система для Raspberry Pi на базе Debian GNU/Linux, оптимизированная под ARM; рабочий стол LXDE с оконным менеджером Openbox, в комплекте Mathematica и версия Minecraft Pi;
  • Debian — система с открытым исходным кодом, более 59000 готовых пакетов, по умолчанию рабочий стол GNOME; доступны образы с KDE, Xfce, LXDE, MATE и Cinnamon;
  • Ubuntu — основана на Debian, самый популярный дистрибутив Linux для веб-серверов;
  • Fedora — базируется на дистрибутиве Red Hat, включает LibreOffice и Mozilla Firefox;
  • Arch Linux — дистрибутив общего назначения без графического установщика;
  • Gentoo Linux — гибкое управление пакетами и оптимизация под конкретное железо, подходит и для рабочей станции, и для сервера;
  • RISC OS — создана специально для ARM, быстро запускается благодаря хранению данных в ПЗУ;
  • OpenELEC и OSMC — программные комплексы для домашнего кинотеатра.

Установка Raspbian

Для установки к плате подключают монитор, клавиатуру и мышь. Понадобится SD-карта: её форматируют в FAT32 штатными средствами Windows или программой SD Memory Card Formatter. Дистрибутив скачивают с официального сайта Raspberry; для неопытных пользователей существует упрощённый установщик NOOBS. Архив распаковывают в корень карты.

Карту вставляют в плату и подают питание через разъём micro-USB. Установка занимает порядка 10 минут и требует лишь простых действий вроде выбора языка и ввода пароля. В конце предлагается выбрать интерфейс, консольный или графический; после нажатия Finish система перезагружается.

Выводы GPIO и их ограничения

Главное отличие Raspberry Pi от обычного компьютера — порты общего назначения GPIO (General-purpose input/output). Через них подключают дисплеи, кнопки, датчики, реле и другие модули. Конструктивно это двухрядная штыревая колодка с шагом 2,54 мм у края платы: у ранних моделей A и B в ней 26 выводов, у более новых — 40.

Колодка GPIO на плате Raspberry Pi 3B+ с нумерацией выводов

Помимо самих GPIO на колодку выведены 3,3 В, 5 В и GND, а часть контактов имеет альтернативные функции.

Распиновка GPIO для разных модификаций Raspberry Pi

GPIO работает с напряжением 3,3 В, максимальный ток нагрузки на один вывод — 50 мА. Превышение этих значений вредит плате, поэтому между портом и исполнительным устройством рекомендуют гальваническую развязку, а на входах применяют резистивные делители и преобразователи уровней.

Два типичных примера. Светодиод, подключённый к выводу напрямую, перегрузит порт — нужен ограничительный резистор. Кнопка, замыкающая вывод на землю, опасна, если этот вывод по ошибке настроен как выход: нажатие напрямую соединит 3,3 В и GND. Резисторы в цепи кнопки защищают от такой ситуации. Экономить на элементах защиты не стоит.

Управление GPIO из Python

В Raspbian для работы с портами есть стандартный модуль RPi.GPIO. Перед использованием его советуют обновить командами sudo apt-get update и sudo apt-get install python-rpi.gpio. Программы для Raspberry Pi традиционно пишут на Python: скрипту не нужен компилятор, но язык требует строгого соблюдения отступов.

Учебный проект: светодиод на GPIO4 мигает раз в секунду, а при нажатой кнопке на GPIO17 — в пять раз чаще. Файл создают в терминале командой nano /home/pi/led_key_test.py. Скрипт подключает модули time и RPi.GPIO, сбрасывает порты вызовом GPIO.cleanup() и выбирает нумерацию по названиям выводов, а не по положению на колодке: GPIO.setmode(GPIO.BCM). Вывод светодиода настраивается как выход, вывод кнопки — как вход.

В бесконечном цикле программа читает кнопку: при нажатии, то есть логическом нуле на входе, задержка равна 0,1 с, иначе 0,5 с. После этого светодиод включается и гаснет с выбранной паузой. Прерывание по CTRL+C перехватывается, чтобы сбросить порты перед выходом.

Из редактора выходят сочетанием CTRL+X с подтверждением сохранения. Затем файл делают исполняемым командой chmod +x /home/pi/led_key_test.py и запускают, указав его путь. На экране появляется приветствие, светодиод мигает раз в секунду, при удержании кнопки частота возрастает и возвращается к прежней, когда кнопку отпускают.

← Все статьи