Распиновка Raspberry Pi 4 Model B — это 40-контактный разъём GPIO (General Purpose Input/Output), по расположению контактов полностью совместимый с предыдущими моделями линейки, начиная с Pi B+. Неправильное подключение датчика или модуля к этому разъёму — самая частая причина выхода из строя отдельных пинов или всей платы, поэтому перед первым экспериментом нужно точно знать, где находится земля, где питание, а где программируемые выводы.
Ниже разберём нумерацию контактов, назначение каждой группы пинов, альтернативные функции интерфейсов I2C, SPI, UART и PWM, а также ограничения по напряжению и току, которые критичны именно для Raspberry Pi 4.
Общая структура 40-пинового разъёма
Разъём GPIO на плате Raspberry Pi 4 представляет собой двухрядную штыревую гребёнку 2×20 контактов с шагом 2,54 мм. Пин номер 1 находится ближе всего к углу платы со стороны разъёмов SD-карты — на шелкографии он обычно помечен квадратной площадкой или точкой. Дальше нумерация идёт «змейкой»: нечётные пины — в одном ряду, чётные — в соседнем.
Все 40 контактов делятся на четыре функциональные группы:
- 🔌 Питание — пины 5V (2 и 4) и 3,3V (1 и 17);
- ⏚ Земля (GND) — восемь контактов, равномерно распределённых по разъёму;
- 🎛️ Цифровые GPIO — 28 программируемых линий GPIO0–GPIO27;
- 🆔 Служебные пины EEPROM — GPIO0 и GPIO1 (ID_SD, ID_SC), зарезервированные под идентификацию плат расширения HAT.
Важно понимать разницу между двумя системами нумерации. Физическая нумерация (BOARD) — это просто порядковый номер контакта на гребёнке от 1 до 40. Нумерация BCM — это номер линии процессора Broadcom, и именно она используется в большинстве библиотек (RPi.GPIO, gpiozero). Например, физический пин 12 — это GPIO18 в нумерации BCM.
Перед подключением всегда уточняйте, какая нумерация используется в вашем коде — BOARD (физические пины) или BCM (номера GPIO процессора). Путаница между ними — частая причина «неработающих» схем.
Полная таблица распиновки Raspberry Pi 4
Ниже приведены ключевые контакты разъёма с их основными и альтернативными функциями. Полную официальную схему стоит сверять с документацией Raspberry Pi, так как часть функций зависит от конфигурации в config.txt.
| Физ. пин | Назначение / BCM | Альтернативная функция |
|---|---|---|
| 1 | 3V3 (питание 3,3 В) | — |
| 3 | GPIO2 | SDA1 (I2C) |
| 5 | GPIO3 | SCL1 (I2C) |
| 7 | GPIO4 | GPCLK0 / 1-Wire |
| 8 | GPIO14 | TXD0 (UART) |
| 10 | GPIO15 | RXD0 (UART) |
| 11 | GPIO17 | — |
| 12 | GPIO18 | PWM0 / PCM_CLK |
| 19 | GPIO10 | MOSI (SPI0) |
| 21 | GPIO9 | MISO (SPI0) |
| 23 | GPIO11 | SCLK (SPI0) |
| 27 | GPIO0 | ID_SD (EEPROM HAT) |
Чётные пины 2, 4 выдают 5 В напрямую от входа питания, а пины 6, 9, 14, 20, 25, 30, 34 и 39 — это земля. Их удобно использовать как опорные при прозвонке схемы мультиметром.
Интерфейсы I2C, SPI и UART на GPIO
Одна из сильных сторон Raspberry Pi 4 — аппаратная поддержка популярных шин прямо на гребёнке. Чтобы вывести показания датчика или подключить дисплей, не нужны дополнительные контроллеры — достаточно активировать нужный интерфейс через raspi-config или файл /boot/firmware/config.txt (в старых версиях ОС — /boot/config.txt).
Для шины I2C используются пины 3 и 5 (GPIO2/GPIO3). На плате уже установлены подтягивающие резисторы на эти линии, поэтому внешние pull-up обычно не требуются. Проверить подключённые устройства можно командой:
i2cdetect -y 1
Интерфейс SPI0 занимает пины 19–24 (GPIO9–GPIO11 плюс линии выбора чипа CE0/CE1). UART по умолчанию выведен на пины 8 и 10 — через него удобно подключаться к консоли или обмениваться данными с микроконтроллерами, но учтите, что уровни сигнала — 3,3 В, а не 5-вольтовая логика Arduino.
Ограничения по напряжению и току
Ключевая особенность, которую нельзя игнорировать: все линии GPIO Raspberry Pi 4 работают с логикой 3,3 В и не имеют защиты от 5 В на входе. Подача 5-вольтового сигнала с датчика или Arduino напрямую на пин GPIO может необратимо повредить процессор. Для согласования уровней применяют делители напряжения или специализированные преобразователи уровней (level shifter).
⚠️ Внимание: никогда не замыкайте пины 5V и 3,3V между собой и не подавайте питание 5 В на линию 3,3 В (пины 1 и 17). Это одна из самых быстрых причин выхода платы из строя.
По току ограничения тоже существенные. Считается безопасным не нагружать один пин GPIO током выше примерно 16 мА, а суммарный ток всех линий не должен превышать порядка 50 мА — точные пределы зависят от настроек и ревизии, поэтому для нагрузок вроде реле, моторов и мощных светодиодов всегда используйте транзисторный ключ или драйвер.
⚠️ Внимание: реле, электромоторы и светодиодные ленты нельзя питать напрямую от пина GPIO — только через транзистор, MOSFET или драйвер с отдельным источником питания и общей землёй.
Если нужно подключить 5-вольтовый датчик, используйте двунаправленный преобразователь уровней на MOSFET (например, модули на BSS138) — это самое простое и надёжное решение для I2C и цифровых линий.
Практическое подключение: пошаговый порядок
Безопасная последовательность работы с разъёмом выглядит так. Сначала плата полностью обесточивается — не просто выключается, а отключается кабель питания USB-C. Затем схема собирается на макетной плате, и только после визуальной проверки подаётся питание. Подключение проводов «на горячую» при работающей плате часто приводит к случайным замыканиям соседних пинов.
☑️ Чек-лист перед подачей питания
Для проверки работоспособности конкретного пина удобно использовать простой тест: светодиод с резистором порядка 220–330 Ом между пином GPIO и землёй. Программно переключая состояние линии, вы убедитесь, что пин жив и правильно определён в коде.
gpio readall # вывод текущего состояния всех пинов (wiringPi, если установлен)
Как узнать состояние пинов без wiringPi
В современных версиях Raspberry Pi OS утилита wiringPi может отсутствовать. Альтернатива — библиотека gpiozero в Python: from gpiozero import LED; led = LED(18); led.on(). Состояние линий также видно через файлы в /sys/class/gpio/ при использовании классического интерфейса.
Отличия распиновки Pi 4 от других моделей
Физически гребёнка Pi 4 повторяет Pi 3 B+ и Pi Zero — те же 40 контактов в том же порядке. Различия кроются в альтернативных функциях: процессор BCM2711 позволяет вывести на GPIO дополнительные аппаратные UART и каналы PWM, которых не было у предшественников. Эти функции активируются через device tree overlays в config.txt, и их доступность стоит проверять в официальной документации под вашу задачу.
- 🔄 Совместимость плат HAT — большинство плат расширения для 40-пиновых моделей работают без изменений;
- ⚡ Питание — Pi 4 требователен к качеству источника 5 В/3 А, просадки напряжения влияют и на стабильность GPIO;
- 📡 Дополнительные UART — могут быть переназначены на свободные пины через overlays.
Распиновка разъёма у Pi 4 идентична другим 40-пиновым моделям, но набор альтернативных функций шире — перед переносом проекта со старой платы проверьте конфигурацию overlays.
Типичные ошибки при работе с GPIO
Опыт показывает, что большинство проблем связано не с неисправностью платы, а с ошибками подключения. Перепутанная нумерация BOARD/BCM, отсутствие общей земли между Raspberry Pi и внешним устройством, подача 5 В на вход — три лидера по частоте. Отдельная категория — попытка запитать мощную периферию от пина 3,3 В, который рассчитан на весьма ограниченный ток.
Если пин перестал реагировать после экспериментов, проверьте его на другой простой схеме. Когда не работает только одна линия, а остальные в порядке — вероятно, повреждён именно этот вывод процессора, и проект придётся пересадить на соседний свободный GPIO.
Частые вопросы
Сколько всего программируемых пинов у Raspberry Pi 4?
Из 40 контактов гребёнки 28 линий являются программируемыми GPIO (GPIO0–GPIO27). Из них GPIO0 и GPIO1 зарезервированы под EEPROM плат HAT, поэтому свободно доступно 26 линий.
Можно ли подключать 5-вольтовые датчики напрямую?
Нет, входы GPIO не толерантны к 5 В. Используйте делитель напряжения или преобразователь логических уровней, иначе есть риск повредить процессор платы.
Чем отличается нумерация BOARD от BCM?
BOARD — это физический номер контакта на гребёнке (1–40), BCM — номер линии процессора Broadcom. В коде нужно явно указать, какой режим используется, иначе схема будет работать неправильно.
Как включить I2C или SPI на Raspberry Pi 4?
Через утилиту raspi-config (раздел Interface Options) либо добавлением строк вида dtparam=i2c_arm=on в файл конфигурации загрузки. После изменения требуется перезагрузка.
Что делать, если один пин перестал работать?
Проверьте его простым тестом со светодиодом и резистором. Если другие пины работают, а этот нет — вероятно повреждение вывода. Перенесите функцию на свободный GPIO и откорректируйте код.