Raspberry Pi
: одноплатный компьютер размером с банковскую карту, разработанный британской компанией Raspberry Pi Foundation как бюджетная система для обучения информатике, но позже получивший более широкое применение и известность
[[_TOC_]]
----
## Общее
Raspberry Pi является полноценным компьютером, хотя и менее быстрым и мощным. Зато он может делать одну вещь гораздо более эффективно, чем любой домашний компьютер - благодаря ряду контактов GPIO вдоль верхнего края платы он может управлять внешними устройствами. Устройства могут быть абсолютно любыми, от обычной лампочки, до беспилотного летательного аппарата. В данном случае область применения Raspberry ограничена лишь вашей фантазией и знаниями.
[[https://ant-lab.mipt.ru/education/get/get-students/-/raw/master/1-gpio/images/pi-labelled-names.png|alt=pi_names]]
> На официальном сайте есть туториалы, как собрать ... На странице новостей постоянно публикаются новые оригинальные проекты, построенные на базе малинок https://www.raspberrypi.com/news/
## Пины
40-контактный разъем GPIO имеется на всех современных платах Raspberry Pi (кроме некоторых моделей Raspberry Pi Zero). До Raspberry Pi 1 Model B+ (2014) платы имели более короткий 26-контактный разъем. Разъем GPIO на всех платах имеет шаг контактов 0,1 дюйма (2.54 мм).


> ⚠️ Нумерация контактов GPIO не соответствует физической последовательности пинов.
Каждый пин GPIO имеет несколько "имен"; первое и самое очевидное относится к «физическому» расположению на плате. Начиная с левого верхнего угла (с контакта, ближайший к тому месту, где вставлена карта micro SD), у нас есть физический контакт 1, который обеспечивает питание постоянное напряжение 3.3 В. Справа от этого контакта находится физический контакт 2, который обеспечивает питание 5 В. Затем номера контактов увеличиваются по мере продвижения вниз по каждому столбцу, при этом контакт 1 переходит в контакт 3, 5, 7 и т. д., пока мы не достигнем контакта 39. Вы быстро увидите, что каждый контакт с 1 по 39 в этом столбце соответствует нечетной последовательности чисел. И для столбца, начинающегося с контакта 2, он будет идти 4,6,8 и т. д., пока не достигнет 40. Следуя четной последовательности чисел. Физическая нумерация контактов — это самый простой способ найти контакт, но многие учебные пособия, написанные для Raspberry Pi, следуют другой последовательности нумерации. Нумерация контактов Broadcom (BCM) (также известная как номер контакта GPIO)
Нумерация контактов Broadcom (BCM) сначала может показататься хаотичной. Отображение контактов BCM относится к контактам GPIO, которые были напрямую подключены к системе на кристалле (SoC) Raspberry Pi. По сути, у нас есть прямые связи с мозгом нашего Pi для подключения датчиков и компонентов для использования в наших проектах.
Доступ к наглядной справке по GPIO можно получить на Raspberry Pi, открыв окно терминала и выполнив команду `pinout`.

Также можно воспользоваться интерактивным справочником [pinout.xyz](https://pinout.xyz/). Кроме того, на рабочих столах каждой малинки лежит схема распиновки.
> ⚠️ Не все 40 контактов доступны для программирования. На самом деле для программирования доступны только 26 контактов ввода/вывода (GPIO), которые имеют номера от GPIO2 до GPIO27.
Контакты GPIO являются цифровыми, это означает, что они могут иметь два состояния: выключено или включено. Они могут иметь направление для приема или отправки тока (ввод, вывод соответственно), и мы можем контролировать состояние и направление выводов, используя такие языки программирования, как Python, JavaScript, node-RED и т. д.
## Напряжение
На плате присутствуют два контакта 5 В и два контакта 3.3 В, а также несколько контактов заземления (0 В), которые не настраиваются. Все остальные контакты являются пинами общего назначения на 3.3 В, что означает, что выходы способны выдавать напряжение в 3.3 В, а входы устойчивы к подаче 3.3 В.
## Выходы
Контакт GPIO, используемый как выходной, может быть настроен на высокое значение напряжения (HIGH = 3.3 В) или на низкое (LOW = 0 В).
- Получаемые уровни напряжений: 0В и +3.3В (не +5В, от которых питается малинка)
- Максимальный ток: 2 - 16мА (по умолчанию 8мА)
- Максимальный суммарный ток нагрузки для всех задействованных пинов GPIO - 50мА
## Входы
Вывод GPIO, обозначенный как входной, может считывать либо высокое значение напряжения(3.3 В), либо низкое (0 В).
- Максимально допустимое напряжение равно +3.3В
- Уровень логической единицы (1) начинается примерно с напряжения +1.8В
- максимальный ток 0.5 мА
Это упрощается за счет использования внутренних подтягивающих вверх или вниз резисторов. Контакты GPIO2 и GPIO3 имеют фиксированные подтягивающие вверх резисторы, но для остальных пинов подобное поведение можно настроить программно.
## Дополнительные функции
Помимо простых устройств ввода и вывода, контакты GPIO могут использоваться с множеством альтернативных функций (последовательный порт, интерфейсы SPI и I^2^С и т.д.), некоторые доступны для всех контактов, другие — только для определенных пинов.
Подробнее
- PWM (pulse-width modulation)
- Программный ШИМ доступен для всех пинов
- Хардварный ШИМ доступен на GPIO12, GPIO13, GPIO18, GPIO19
- SPI
- SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7)
- SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
- I^2^C
- Data: (GPIO2); Clock (GPIO3)
- EEPROM Data: (GPIO0); EEPROM Clock (GPIO1)
- Serial
- TX (GPIO14); RX (GPIO15)
Если не учитывать контакты, которые могут выполнять специальные функции, то остается 17 программируемых контактов общего назначения