2. GPIO

Аббревиатура GPIO с английского расшифровывается как: General Purpose Input/Output — интерфейс, который содержит Входы и Выходы общего назначения, к которым можно подключать разнообразные исполнительные устройства, датчики, дисплеи, контроллеры, разные модули и разную периферию.

NB! GPIO подключены напрямую к процессору, и неграмотное подключение может повредить сам процессор.

Raspberry Pi 3 не имеет аналоговых входов/выходов.

gpio

Особенности работы с GPIO

  • Максимальный суммарный ток обоих выводов 3,3В равен 50 мА, напрямую можно подключать устройства только с током потребления меньше 50 мА.
  • Максимальный суммарный ток обоих выводов 5В равен 300 мА.
  • На выводы GPIO нельзя подавать напряжение выше 3,3В - можно спалить вход или весь процессор.
  • Выводы 14 и 15 по умолчанию выполняют альтернативную функцию и являются выводами UART (RXD и TXD), поэтому при включении на них присутствует высокий уровень 3,3В.
  • Все настраиваемые выводы GPIO (кроме SDA и SCL) по умолчанию являются входами и поэтому имеют высокое сопротивление

RPi.GPIO

Для работы с GPIO на Python нужна специальная библиотека RPi.GPIO. Ее можно установить прямо с репозиториев, набрав в терминальном окне:
sudo apt-get install python-rpi.gpio или sudo apt-get install python3-rpi.gpio (для 3-й версии Питон)

В новом дистрибутиве Raspbian она уже установлена.

GPIO.BOARD — нумерация портов на плате по порядку
GPIO.BCM — это более низкий уровень и обращается напрямую к номерам каналов на процессоре

GPIO.setmode(GPIO.BOARD)
GPIO.setmode(GPIO.BCM)

bcm


Выбирается режим работы пинов (вход или выход):

GPIO.setup(channel, GPIO.IN)
GPIO.setup(channel, GPIO.OUT)


Осуществляют подтяжку вывода к 3,3 В или к земле:
GPIO.setup(channel,GPIO.IN, GPIO.PUD_UP)
GPIO.setup(channel,GPIO.IN, GPIO.PUD_DOWN)

Для выходов можно определить начальное положение: 0 или 1.
GPIO.setup(channel, GPIO.OUT, GPIO.LOW)
GPIO.setup(channel, GPIO.OUT, GPIO.HIGH)

Для того, чтобы прочитать вход, существует такая команда:
GPIO.input(channel)

Для того чтобы произвести запись на выход, есть такая команда:
GPIO.output(channel, state)

Программа выдаст ошибку при попытке настроить пин, состояние которого не было возвращено в исходное при помощи GPIO.cleanup().

GPIO.setwarnings(False) # Отключить предупреждения

GPIO.setwarnings(True) # Включить предупреждения