Неправильное подключение датчика к контактам GPIO — самая частая причина, по которой Raspberry Pi 3B перестаёт загружаться или теряет периферию: плата не имеет защиты от перенапряжения на линиях ввода-вывода, и подача 5 В на логический вход способна вывести процессор из строя. Поэтому перед первым экспериментом с разъёмом нужно точно знать распиновку — какой контакт отвечает за питание, какой за данные и какое напряжение допустимо.

В этой статье разберём полную распиновку 40-контактного разъёма Raspberry Pi 3 Model B: нумерацию пинов, назначение шин UART, I2C, SPI и PWM, ограничения по току и практические правила безопасного подключения. Материал подойдёт и для модели 3B+ — распиновка у них идентична.

Общий вид разъёма GPIO и нумерация контактов

На плате Raspberry Pi 3B установлен 40-контактный двухрядный штыревой разъём с шагом 2,54 мм. Это стандарт, который появился начиная с модели B+ и сохраняется во всех последующих полноразмерных платах. Контакты расположены в два ряда по 20 штук вдоль длинного края платы.

Существует две системы нумерации, и их путаница — частый источник ошибок. Нумерация BOARD — это физические номера контактов от 1 до 40. Нумерация BCM — это номера каналов GPIO процессора Broadcom, которые используются в коде. Например, физический контакт 11 соответствует GPIO17 в нумерации BCM. В библиотеках вроде RPi.GPIO режим нумерации задаётся явно:

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM) # нумерация по процессору

или GPIO.setmode(GPIO.BOARD) — по физическим контактам

Ориентир на плате — контакт 1, он находится у края платы со стороны разъёма microSD, ближе к углу. Рядом с ним на шёлкографии обычно есть метка P1. Нечётные контакты идут по одному ряду, чётные — по другому.

Контакты питания: 5V, 3V3 и GND

Часть контактов разъёма отведена под питание, и их нельзя использовать как линии данных. На разъёме доступны два уровня напряжения: 5 В (контакты 2 и 4) и 3,3 В (контакты 1 и 17). Земля (GND) разведена на восемь контактов: 6, 9, 14, 20, 25, 30, 34 и 39.

Линия 5 В подключена к входному питанию платы практически напрямую, поэтому ток здесь ограничен в основном блоком питания и полифюзом платы. Линия 3,3 В питается от встроенного стабилизатора, и её возможности заметно скромнее — нагружать эту линию мощной периферией не стоит. Точный допустимый ток зависит от ревизии платы и подключенных устройств, поэтому для прожорливых датчиков лучше использовать внешний источник.

⚠️ Внимание: все логические входы и выходы Raspberry Pi 3B работают с уровнями 3,3 В и не толерантны к 5 В. Подача 5 В от датчика или Arduino напрямую на GPIO может необратимо повредить процессор. Используйте делитель напряжения или преобразователь уровней.

Таблица распиновки 40 контактов

Ниже — ключевые контакты разъёма с назначением в обеих нумерациях. Полная схема симметрична: левый (нечётный) и правый (чётный) ряды чередуют сигнальные линии, питание и землю.

Физ. контактBCMОсновная функцияАльтернативная функция
13,3 ВПитание
3GPIO2SDA1 (I2C)Данные шины I2C
5GPIO3SCL1 (I2C)Тактирование I2C
7GPIO4GPCLK0Общий цифровой пин
8GPIO14TXD (UART)Передача последовательного порта
10GPIO15RXD (UART)Приём последовательного порта
12GPIO18PWM0Аппаратный ШИМ
19GPIO10MOSI (SPI0)Данные SPI
21GPIO9MISO (SPI0)Данные SPI
23GPIO11SCLK (SPI0)Тактирование SPI

Контакты 27 и 28 (GPIO0 и GPIO1, обозначаются как ID_SD и ID_SC) зарезервированы под шину EEPROM плат расширения HAT. Использовать их в своих проектах не рекомендуется — система может обращаться к ним при загрузке для определения подключённых плат.

💡

Распиновка Raspberry Pi 3B идентична моделям 3B+, 2B и B+ — схемы и платы расширения для этих моделей взаимозаменяемы.

Интерфейсы UART, I2C и SPI

Большинство проектов на Raspberry Pi 3B строится вокруг трёх стандартных шин. UART (контакты 8 и 10) — последовательный порт для связи с микроконтроллерами, GPS-модулями и консолью отладки. По умолчанию на 3B аппаратный UART связан с модулем Bluetooth, а для внешнего порта используется mini-UART — это особенность модели, которую нужно учитывать при настройке скорости обмена.

I2C (контакты 3 и 5) — шина для подключения нескольких датчиков по двум проводам, каждый с собственным адресом. SPI (контакты 19, 21, 23 плюс линии выбора чипа CE0/CE1 на контактах 24 и 26) — более быстрый интерфейс для дисплеев, АЦП и флеш-памяти.

По умолчанию эти интерфейсы могут быть отключены. Включить их можно через утилиту конфигурации:

sudo raspi-config

Interface Options → I2C / SPI / Serial Port

Как проверить, что I2C работает

После включения I2C установите утилиты командой sudo apt install i2c-tools, затем выполните sudo i2cdetect -y 1. На экране появится таблица адресов — подключённые устройства отобразятся своими шестнадцатеричными адресами. Пустая таблица означает, что устройство не отвечает: проверьте проводку и питание датчика.

Ограничения по току и безопасное подключение

Каждый контакт GPIO рассчитан на ток порядка единиц-десятков миллиампер — этого достаточно для светодиода через резистор или логического сигнала, но не для мотора или реле с прямым питанием. Суммарный ток всех GPIO тоже ограничен. Превышение нагрузки проявляется нестабильной работой платы, перезагрузками или выходом контакта из строя.

  • 🔌 Светодиоды подключайте только через токоограничивающий резистор.
  • ⚙️ Реле и моторы — через транзисторный ключ или драйвер, никогда напрямую от GPIO.
  • 🔀 5-вольтовые датчики — через преобразователь логических уровней или делитель напряжения.
  • 🔋 Общую землю внешнего источника питания и платы соединяйте обязательно.
  • 🧷 Подключайте провода только при выключенном питании платы.
⚠️ Внимание: замыкание контакта 5 В на соседний GPIO даже на долю секунды может вывести плату из строя. При работе с макетной платой проверяйте положение перемычек до подачи питания, а не после.
📊 Для какого проекта вы используете GPIO Raspberry Pi 3B?
Умный дом и датчики
Робототехника и моторы
Дисплеи и индикация
Обучение и эксперименты

Практический пример: подключение кнопки и светодиода

Простейший способ проверить распиновку на практике — собрать схему с кнопкой и светодиодом. Понадобятся два резистора: токоограничивающий для светодиода (обычно берут номинал в сотни Ом) и подтягивающий для кнопки, хотя вместо внешнего можно задействовать встроенную подтяжку процессора.

☑️ Проверка схемы перед подачей питания

Выполнено: 0 / 5

Пример кода для проверки на Python:

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.OUT) # светодиод на GPIO17 (контакт 11)

GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP) # кнопка на GPIO27 (контакт 13)

while True:

if GPIO.input(27) == GPIO.LOW:

GPIO.output(17, GPIO.HIGH)

else:

GPIO.output(17, GPIO.LOW)

Если светодиод загорается при нажатии — распиновка определена верно, и можно переходить к более сложной периферии. Если схема не работает, первым делом проверьте, какая нумерация задана в коде и к какому физическому контакту подключены провода.

💡

Распечатайте этикетку распиновки или используйте плату-справочник вроде GPIO reference card, которая надевается прямо на разъём — это избавит от постоянного сверения со схемой и снизит риск ошибки.

Отличия распиновки Raspberry Pi 3B от других моделей

40-контактный разъём Raspberry Pi 3B совпадает по распиновке с моделями 2B, 3B+, 4B и Zero — платы расширения и схемы подключения между ними переносятся без изменений. Отличия кроются в деталях: у 4B, например, доступны дополнительные альтернативные функции UART и I2C на тех же контактах.

Старшие ревизии первых плат (Model B ревизии 1 и 2) имели 26-контактный разъём, и их распиновка несовместима с 40-контактной напрямую — первые 26 контактов в целом соответствуют, но назначение отдельных пинов отличается. Если вы переносите старый проект, сверяйте каждый контакт по официальной документации конкретной ревизии платы.

💡

Перед подключением любой платы расширения или датчика сверяйте назначение контактов с официальной документацией вашей ревизии платы — это единственный надёжный источник распиновки.

Часто задаваемые вопросы

Сколько контактов GPIO у Raspberry Pi 3B доступно для проектов?

Из 40 контактов разъёма часть занята питанием и землёй, а два зарезервированы под HAT EEPROM. Пользователю доступно около двух десятков свободно программируемых линий GPIO, многие из которых имеют альтернативные функции UART, I2C, SPI и PWM.

Можно ли подключать 5-вольтовые датчики напрямую к GPIO?

Нет. Логические входы Raspberry Pi 3B рассчитаны на 3,3 В и не имеют защиты от 5 В. Используйте двунаправленный преобразователь уровней или, для однонаправленных сигналов, резистивный делитель напряжения.

Чем отличается нумерация BCM от BOARD?

BOARD — это физические номера контактов разъёма от 1 до 40. BCM — номера каналов процессора Broadcom, которые используются в документации и большинстве библиотек. Одна и та же линия имеет разные номера в двух системах, поэтому режим нумерации всегда указывается в коде явно.

Почему UART на Raspberry Pi 3B работает нестабильно?

Возможная причина — особенность модели 3B: аппаратный UART закреплён за Bluetooth-модулем, а на внешние контакты выведен mini-UART, скорость которого зависит от частоты ядра. Варианты решения — переназначение UART через параметры в config.txt или отключение Bluetooth, если он не нужен. Точные настройки зависят от версии ОС, сверяйтесь с документацией.

Подойдёт ли распиновка 3B для Raspberry Pi 3B+?

Да, распиновка 40-контактного разъёма у этих моделей полностью идентична. Схемы подключения, платы расширения и код переносятся без изменений.