Посмотрим более подробно на распиновку новой платы Raspberry Pi 4 GPIO и подробно изучим каждую функцию.
GPIO
Из википедии: GPIO или Интерфейс ввода/вывода общего назначения (англ. general-purpose input/output, GPIO) — интерфейс для связи между компонентами компьютерной системы, к примеру микропроцессором и различными периферийными устройствами. Контакты GPIO могут выступать как в роли входа, так и в роли выхода — это, как правило, конфигурируется. GPIO контакты часто группируются в порты.
Во многих отношениях Raspberry Pi 4 улучшает возможности более ранних моделей Pi. Одноплатный компьютер поддерживает не только больший объем оперативной памяти, более высокую скорость процессора и расширенные периферийные устройства, но выводы GPIO сохраняют свои стандартные функции, установленные предыдущими моделями, наряду с дополнительными функциями для существующих выводов. Давайте посмотрим, что делают стандартные 40 контактов на Raspberry Pi, а затем рассмотрим каждую из этих функций подробнее.
Как я написал ранее, GPIO — это Интерфейс ввода/вывода общего назначения.
Универсальный интерфейс ввода/вывода — это, собственно, то, что означает GPIO и прекрасно описывает работу контактов плат Raspberry Pi. Они очень похожи на штыревые порты Arduino, так как их можно настроить для чтения входов или записи выходов. Эти контакты позволяют вашему Pi взаимодействовать с различными компонентами, такими как кнопки, потенциометры и зуммеры.
По теме: Управление GPIO Raspberry Pi через Node.js
Есть две схемы именования, с которыми вы должны ознакомиться: нумерация WiringPi и Broadcom. Последняя — это то, как официально называют каждый пин, отображен зеленым цветом на изображении выше. WiringPi, библиотека интерфейса GPIO, которую вы, скорее всего, будете использовать. Имеет собственную аппаратно-независимую систему нумерации. Не забывайте проверять, с какому выводом вы на самом деле работаете при программировании Pi.
Пины питания и заземления
Контакты питания и заземления используются для питания внешних цепей. Все Raspberry Pi со стандартными контактами 40 GPIO будут иметь два контакта 5В и два контакта 3.3В, всегда в одном и том же месте.
Наряду с контактами 5 В и 3,3 В доступны 8 заземляющих контактов (GND). Контакты питания и заземления позволяют питать ваши компоненты Raspberry Pi, такие как светодиоды и двигатели. Однако помните, что перед тем, как на что-либо подавать питание через эти контакты, всегда следует устанавливать надлежащие компоненты или внешнюю схему. Питание чего-либо со слишком большим током или значительными скачками напряжения, например, двигатель без соответствующего контроллера мотора, повредит контакты и может сделать их непригодными для использования.
Альтернативные функции
В то время как многие проекты могут уживаться с выводами питания и ввода, иногда от Pi требуются разные способности. К счастью, некоторые выводы GPIO удваиваются как интерфейсы I2C, SPI и UART. Pi 4 расширил возможности многих выводов, поддерживая эти интерфейсы на большем количестве из них, чем в Raspberry Pi 3b+ и до неё. Ниже приведем краткое описание по каждому интерфейсу.
I2C
I2C, или протокол Inter-Integrated Circuit, позволяет вашему Raspberry Pi управлять несколькими датчиками и компонентами, известными как ведомые (slave, подчиненные). Связь осуществляется через SDA (вывод данных) и SCL (вывод тактовой частоты). Каждое ведомое устройство создается с уникальным адресом, чтобы обеспечить быструю связь со многими устройствами. Контакты ID_EEPROM также являются I2C, но используются для связи с дополнительными платами, а не подчиненными компонентами.
SPI
SPI, или последовательный периферийный интерфейс, также используется для управления компонентами с отношениями мастер-ведомый (ведущий-ведомый), хотя он не такой компактный. Для работы требуются часы (SCLK), контакты Master Out Slave In (MOSI) и Master In Slave Out. Выводы выполняют то, что подразумевают их названия, с помощью SCLK, регулирующего скорость передачи данных, MOSI используется для отправки указаний от Pi на подключенные устройства, а MISO делает наоборот.
UART
Если вы раньше работали с Arduino, возможно, вы уже слышали о UART или Serial (последовательная связь). Универсальный асинхронный приемник/передатчик используется для подключения плат Arduino к компьютерам, которые их программируют, а также для связи между другими устройствами с приемными и передающими контактами. Эти контакты могут использоваться для управления вашим Pi через другой компьютер, если последовательная консоль включена в raspi-config, или для прямого управления Arduino, если вы не можете использовать кабель USB для своего проекта.
По теме: Как подключить Raspberry Pi к Ардуино?
PWM
Наряду с другими функциями все контакты поддерживают программный ШИМ, а GPIO12, GPIO13, GPIO18, GPIO19 — аппаратную широтно-импульсную модуляцию.
Официальный 40-контактный список Raspberry Pi
Хотя стандартная распиновка для всех 40-контактных Raspberry Pi осталась прежней, вы можете найти обновленный список функций для Raspberry Pi 4 в официальном репозитории raspi-gpio на GitHub.
Если вы постоянно забываете какой пин что делает? Ниже вы можете распечатать распиновку Raspberry Pi B+, созданную Андреасом Гором (более известным как Splitbrain).
Его дизайн можно распечатать и разместить прямо на верхнюю часть платы, чтобы упростить запоминание всех контактов.
Интерфейс ввода-выводы общего назначения (general-purpose input/output, GPIO)
интерфейс для подключения компьютерных компонент, например микрокомпьютер или интегральная схема с различными переферийными устройствами. Распиновка (контакты) могут использоваться не только как вход, так и выход — это назначается, точнее конфигурируется.
Основное назначение GPIO в компьютере raspberry pi 3 model b для чтения от различных датчиков, так и для управления.
Распиновка GPIO raspberry pi model b+
Выше приведена картинка с распиновкой GPIO «малинки» raspberry pi 2 b 3. Также выложим распиновку всех raspberry pi ( ревизии 1, 2 ):
Распиновка GPIO raspberry pi разных моделей и ревизий (rev)
Контакты на GPIO находятся близко, монтаж большого количества проводников усложняется. Есть выход, подключается плата почти с размером с Raspberry pi 3, так же есть возможность легкого подключения и несложного переключения с помощью перемычек.
Купить эту плату для расширения порта GPIO можно в интернет магазине, цена не большая порядка 6 $
Содержание
- Обзор
- Операционные системы
- Установка Raspbian
- Работа с GPIO
- Программирование GPIO
- Часто Задаваемые вопросы FAQ
Обзор плат Raspberry Pi
Raspberry Pi – это миниатюрный одноплатный компьютер, который с лёгкостью поместится на ладони взрослого человека. Несмотря на свои скромные размеры, плата имеет высокую производительность, что позволяет ей выйти на один уровень со стационарными ПК. Изначально Raspberry Pi была разработана, как учебное пособие по информатике. Но сама идея оказалась настолько удачной, что за несколько лет мини-компьютер стал популярен в очень широких кругах. С течением времени Raspberry Pi пережила несколько модификаций, каждая из которых отличалась от предшественника каким-либо параметром. Такой подход позволил регулировать стоимость изделия в зависимости от потребностей пользователя, что также положительно сказалось на популярности устройства. Вся линейка Raspberry Pi применяет процессоры с АРМ-архитектурой, которая зарекомендовала себя с лучшей стороны. На рисунке №1 показан внешний вид одной из популярных плат Raspberry Pi В+.
Рисунок №1 – обзор составных элементов Raspberry Pi
На сегодняшний день (период 2012-2019гг.) существует 11 разновидностей Raspberry Pi. Последние версии оснащены беспроводными WiFi и Bluetooth модулями, расширяющими границы применения мини-пк в области Ethernet-технологий. Ниже приведена сравнительная таблица, в которой отражены особенности каждой модификации с указанием некоторых технических данных.
Модификация |
Процессор |
Тактовая частота |
Количество ядер |
Объём ОЗУ |
Количество GPIO |
Количество USB |
Поддержка Ethernet |
Поддержка WiFi |
Поддержка Bluetooth |
Год выпуска |
В |
ARM1176JZ-F |
700 МГц |
1 |
512 МБ |
26 |
2 |
√ |
2012 |
||
А |
ARM1176JZ-F |
700 МГц |
1 |
256 МБ |
26 |
1 |
2013 |
|||
В+ |
ARM1176JZ-F |
700 МГц |
1 |
512 МБ |
40 |
4 |
√ |
2014 |
||
А+ |
ARM1176JZ-F |
700 МГц |
1 |
256 МБ |
40 |
1 |
2014 |
|||
2В |
ARM Cortex-A7 |
900 МГц |
4 |
1 ГБ |
40 |
4 |
√ |
2015 |
||
Zero |
ARM1176JZ-F |
1 ГГц |
1 |
512 МБ |
40 |
1 |
2015 |
|||
3B |
Cortex-A53 (ARM v8) |
1,2 ГГц |
4 |
1 ГБ |
40 |
4 |
√ |
802.11n |
4.1 |
2016 |
Zero W |
ARM1176JZ-F |
1 ГГц |
1 |
512 МБ |
40 |
1 |
802.11n |
4.0 |
2017 |
|
3B+ |
Cortex-A53 (ARM v8) |
1,4 ГГц |
4 |
1 ГБ |
40 |
4 |
√ |
802.11n |
4.2 |
2018 |
3A+ |
Cortex-A53 (ARM v8) |
1,4 ГГц |
4 |
512 МБ |
40 |
1 |
802.11n |
4.2 |
2018 |
|
4B |
Cortex-A72 (ARM v8) |
1,5 ГГц |
4 |
1, 2, 4 ГБ |
40 |
4 |
√ |
802.11n |
5.0 |
2019 |
Как видно из вышеприведенной таблицы, даже самая младшая модель в линейке имеет вполне серьёзные характеристики, учитывая то, что это одноплатный компьютер размером чуть больше кредитной карты.
На рисунке №2 изображена последняя на момент написания статьи модификация Raspberry Pi 4В, запущенная в продажу в июне 2019г. Она оснащена дополнительным графическим процессором VideoCore VI (OpenGL ES 3.x), а также аппаратным декодером 4Kp60 для воспроизведения HEVC видео. Два порта microHDMI с возможностью пропускать сигнал до 4К, позволяют подключить одновременно два монитора.
Рисунок №2 – внешний вид Raspberry Pi 4В
Основной отличительной чертой Raspberry Pi от обычных компьютеров, является наличие программируемых портов ввода-вывода GPIO. С помощью них можно управлять различными устройствами и принимать телеметрию с различного рода датчиков.
Где приобрести?
Купить Raspberry Pi вы можете в нашем магазине с доставкой по всей России.
Операционные системы
Хоть Raspberry Pi внешне может напомнить нам Arduino, он всё-таки использует кардинально другой метод функционирования. Данная плата, как и обычный ПК, работает под управлением одной из специализированных операционных систем. В зависимости от области применения или личных симпатий, каждый может выбрать для себя свою. Ниже приведён перечень наиболее популярных «операционок» для Raspberry Pi с их кратким описанием.
Raspbian – данная операционная система в 2015 году была представлена как основная для Raspberry Pi. Она по максимуму оптимизирована для процессоров с АРМ-архитектурой и достаточно активно продолжает развиваться. Основой операционной системы является Debian GNU/Linux. Среда рабочего стола состоит из LXDE (среда для UNIX и других POSIX-совместимых систем типа Linux и BSD), а также менеджера окон Openbox (бесплатный менеджер для X Window System). В состав дистрибутива входят: программа компьютерной алгебры Mathematica; модифицированная версия Minecraft PI; урезанная версия Chrome.
Debian – операционная система с открытым исходным кодом. В состав Debian входит более 59000 пакетов уже скомпилированного ПО. Система использует ядро Linux или FreeBSD. В стандартный дистрибутив включены: среда рабочего стола GNOME с набором наиболее популярных программ, таких как Firefox, LibreOffice, Evolution, и прочий набор для работы с мультимедиа. Также есть возможность установки образов с используемыми средами рабочих столов KDE, Xfce, LXDE, MATE и Cinnamon.
Ubuntu – система основана на Debian GNU/Linux. По популярности Ubuntu занимает первое место среди дистрибутивов Linux, предназначенных для web-серверов. В состав дистрибутива входят: программа для просмотра Интернет; офисный пакет, программы для коммуникации и т.д.
Fedora – эта операционная система основана на дистрибутиве Linux от известной фирмы Red Hat. В состав дистрибутива входят LibreOffice, Mozilla Firefox, а также другое ПО, которое можно дополнительно установить через Цент Приложений GNOME.
Arch Linux – это свободно распространяемый дистрибутив GNU/Linux общего назначения. Особенностью данной системы является отсутствие графического установщика, что может изрядно потренировать навыки ярых исследователей Linux.
Gentoo Linux – один из популярных дистрибутивов GNU/Linux с гибкой технологией управления пакетами. В системе предусмотрена возможность максимальной оптимизации под конкретное аппаратное решение. Алгоритм управления пакетами даёт возможность легко реализовать как рабочую станцию, так и сервер.
RISC OS – операционная система специально разрабатывалась для процессоров с архитектурой АRМ. Особенности ядра RISC OS позволяют системе производить ускоренный запуск за счёт хранения данных в ПЗУ. Такой подход также помогает защитить данные при различного рода сбоях и влияния вредоносного ПО.
OpenELEC – это программный комплекс для организации домашнего кинотеатра под управлением GNU/Linux.
OSMC – ещё один комплекс для реализации домашнего кинотеатра.
В сети Интернет, помимо перечисленных операционных систем, можно найти ещё множество модификаций для самых различных предназначений. Но так как Raspbian является основной средой для Raspberry Pi, то в дальнейшем будем опираться именно на неё.
Установка Raspbian
Для установки операционной системы необходимо подключить к плате Raspberry Pi минимальный набор периферии, а именно: монитор, клавиатуру и мышь. Далее, необходима SD-карта с записанным образом Raspbian. Именно с неё и будет производится установка.
Для того, чтобы записать образ на карту памяти, её необходимо вставить в компьютер и отформатировать в системе FAT32. Сделать это можно как стандартными средствами Windows, так и сторонними программами, например – SD Memory Card Formatter. После чего, скачиваем дистрибутив операционной системы с официального сайта Raspberry. Для неопытных пользователей, доступна упрощённая версия установщика NOOBS. По окончании загрузки, архив необходимо распаковать в корень карты памяти. На этом подготовительный этап окончен.
Вставляем карту памяти в плату Raspberry Pi (клавиатура, мышь и монитор уже подключены) и подаём питание через разъём micro-USB. Начинается установка Raspbian, которая длиться порядка 10 минут. В это время от пользователя практически ничего не требуется кроме самых простых и интуитивно понятных действий, таких как выбор языка, ввод пароля и т.п. На завершающем этапе появиться меню, в котором можно выбрать тип пользовательского интерфейса (консольный или графический). Выбираем графический и завершаем установку нажатием кнопки Finish. Система попросит перезагрузиться и как следствие запуститься уже в более привлекательном виде.
Работа с GPIO
Как уже говорилось ранее, основной отличительной черной Raspberry Pi от обычного ПК, является наличие на плате портов общего назначения GPIO (General-purpose input/output). Пользователю доступна возможность управления этими выводами, а это значит, что к Raspberry Pi можно подключать дисплеи, кнопки, датчики, реле и прочие электронные модули, которыми можно манипулировать на своё усмотрение.
Внешне GPIO выполнен в виде двухрядной штыревой колодки с шагом 2,54мм, которая расположена на краю платы. Ранние модели, такие как В и А содержат 26 выводов, а более современные – 40. На рисунке №3 показан внешний вид портов общего назначения для платы Raspberry Pi 3В+ с указанием нумерации выводов.
Рисунок №3 – выводы GPIO
Но для того, чтобы полноценно использовать GPIO, знать их нумерацию недостаточно. Необходимо точно понимать где расположен тот или иной вывод, как он называется и за что он отвечает. На рисунке №4 приведена полная распиновка разъёмов GPIO для различных модификаций Raspberry Pi.
Рисунок №4 – распиновка GPIO в платах Raspberry Pi
Как видно из вышеприведенного рисунка, на колодке помимо самих GPIO выведены штырьки с напряжениями 3,3V, 5V, а также выводы GND. Некоторые GPIO имеют альтернативные функции, назначение которых указано в синих блоках. К тому же нельзя нарушать нагрузочные способности порта, чтобы не вывести Raspberry Pi из строя. Следует помнить, что GPIO работает с напряжением 3,3V и максимальным током нагрузки 50mA на один вывод. Это означает, что любое превышение указанных параметров негативно скажется на работоспособности платы, поэтому лучше использовать гальваническую развязку между GPIO и внешним исполнительным устройством. То же самое относится и ко входным цепям, к которым применяются резистивные делители и всевозможные преобразователи уровней. На рисунке №5 показан пример правильного и неправильного подключения базовых элементов.
Рисунок №5 – примеры правильного и неправильного подключения
В левой части рисунка прямое подключение светодиода приведёт к превышению максимально допустимого тока 50mA. Это, в свою очередь, выведет GPIO10 из строя. В правой части рисунка добавлен ограничительный резистор, который будет удерживать ток в допустимых рамках. Что касается кнопки, то может возникнуть ситуация, когда GPIO10 ошибочно будет сконфигурирован на выход, и её нажатие приведёт к прямому соединению 3,3V и GND. При добавлении резисторов R2 и R3 все выводы будут гарантировано защищены от перегрузок. Исходя из вышеизложенного можно сделать вывод, что мелочится в элементах защиты не стоит, так как работоспособность Raspberry Pi гораздо важнее кучки дешёвых резисторов.
Программирование GPIO
Операционная система Raspbian предлагает пользователям удобный модуль для программного управления GPIO. Называется он RPi.GPIO и является стандартным приложением. Перед его применением, модуль рекомендуется обновить. Сделать это можно набрав в консоли следующие строки:
sudo apt-get update
sudo apt-get install python-rpi.gpio
Чтобы иметь практическое представление о работе с GPIO, создадим небольшой проект, который заставит Raspberry Pi мигать светодиодом один раз в секунду, а при нажатии на кнопку увеличивать частоту мигания в 5 раз. Схема будущего проекта показана на рисунке №6.
Рисунок №6 – схема управления светодиодом
За управление светодиодом будет отвечать GPIO4, а за чтение состояния кнопки GPIO17.
По классике, программы для Raspberry Pi пишутся на скриптовом языке программирования Python. Особенность его в том, что для запуска программы не требуется компилятор. Скрипт запускается и начинает работу сразу, но его необходимо сохранить в файл с последующей загрузкой в плату. Для этого открываем терминал и прописываем следующую строку:
nano /home/pi/led_key_test.py
Тем самым мы создаём файл «led_key_test.py» в директории «/home/pi». Как следствие откроется редактор, в который необходимо написать нижеследующий код.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Подключение библиотек для работы с GPIO и организации задержек по времени
import time
import RPi.GPIO as GPIO
# Определение выводов GPIO, к которым подключены светодиод и кнопка
LED = 4
KEY = 17
# Сброс портов (все выводы настраиваются на вход — INPUT)
GPIO.cleanup()
# Режим нумерации пинов — по названию (не по порядковому номеру на колодке)
GPIO.setmode(GPIO.BCM)
# Настройка пина LED на выход (OUTPUT)
GPIO.setup(LED, GPIO.OUT)
# Установка логического (0) на выводе LED
GPIO.output(LED, GPIO.LOW)
# Настройка пина KEY на вход (INPUT)
GPIO.setup(KEY, GPIO.IN)
# Вывод приветствия на экран
print ‘Hello Raspberry Pi’
# Проверка на прерывание программы по нажатию (CTRL+C) на клавиатуре
try:
# Бесконечный цикл
while True:
# Если кнопка нажата (на пине KEY логический 0)
if GPIO.input(KEY) == False:
# Выставляем задержку 0,1 сек. и выводим сообщение
timeout = 0.1
print ‘Key is pressed.’
else:
# иначе задержка — 0,5 сек.
timeout = 0.5
# Включаем светодиод
GPIO.output(LED, GPIO.HIGH)
# Задержка
time.sleep(timeout)
# Гасим светодиод
GPIO.output(LED, GPIO.LOW)
time.sleep(timeout)
# Если CTRL+C была нажата – сбрасываем порт и завершаем выполнение программы
except KeyboardInterrupt:
GPIO.cleanup()
Ещё одной немаловажной особенностью программы Python является строгое соблюдение отступов (табуляций) при написании программ. Учитывайте это правило при создании своего кода.
Итак, переходим к последнему этапу. Чтобы выйти из редактора жмём CTRL+X и сохраняем программу нажатием «у» + ENTER. Осталось только сделать скрипт исполняемым. Для этого вводим в терминале следующие строки:
chmod +x /home/pi/led_key_test.py
/home/pi/led_key_test.py
Видим на экране приветствие и мигающий 1 раз в секунду светодиод. Теперь проверяем работоспособность кнопки, и если всё сделано правильно, то при её нажатии частота мигания возрастёт и возвратиться к прежней при её отпускании.
Часто задаваемые вопросы (FAQ)
Вопрос: Какие виды внешних устройств можно подключить к Raspberry Pi по Bluetooth-каналу?
Ответ: В этом плане нет особых ограничений. Например, такие устройства, как колонки, мышь и клавиатура, с лёгкостью могут быть подключены к плате. Метод сопряжения зависит от операционной системы, которая установлена Raspberry Pi.
Вопрос: Какой на Raspberry Pi установлен root-пароль по умолчанию?
Ответ: Всё зависит от операционной системы. К примеру, для Raspbian, паролем будет «raspberry».
Вопрос: Можно ли применить Raspberry Pi для управления 3D-принтером?
Ответ: По большому счёту, применить Raspberry Pi для управления 3D-принтером возможно, но не слишком удобно. Дело в том, что стандартные операционные системы, предназначенные для Raspberry Pi, не способны обеспечить RealTime-режим, необходимый для чёткой работы принтера. Другой преградой является недостаточное количество GPIO для подключения всей необходимой периферии без применения специальных плат расширения.
Вопрос: Как можно установить Apache, PHP, MySQL на Raspberry Pi?
Ответ: Этом можно сделать стандартными Linux-командами:
-
sudo apt-get install apache2 php5 libapache2-mod-php5
-
sudo apt-get install php5-mysqlnd
-
sudo apt-get install phpMyAdmin
Используемые источники:
- https://arduinoplus.ru/raspinovka-raspberry-pi-4-gpio/
- https://raspberry3.ru/raspberry-pi-gpio-raspinovka/
- https://3d-diy.ru/wiki/arduino-platy/obzor-plat-raspberry-pi/