Рубрики
Проекты на Raspberry Pi

Подключение кнопки к Raspberry Pi с помощью программы на Python

Обеспечение взаимодействия между пользователем и платой Raspberry Pi является важной часть большинства электронных проектов на основе данной платы. В этой статье мы рассмотрим подключение кнопки к плате Raspberry Pi, являющейся одним из самых простых элементов для взаимодействия между пользователем и электронным устройством.

В данном проекте мы подключим кнопку к одному из контактов ввода/вывода (GPIO) платы Raspberry Pi, а светодиод к ее другому контакту. Также мы напишем программу на Python, в которой мы запрограммируем чтобы при нажатии кнопки пользователем светодиод мигал непрерывно.

Но прежде чем переходить к сути нашего проекта давайте немного поговорим об операционной системе Linux и языке программирования Python.

Linux

Linux представляет собой операционную систему (ОС) подобную Windows, она может выполнять все базовые функции, которые есть в Windows. Но между этими двумя операционными системами есть существенная разница, заключающаяся в том, что Linux является бесплатной ОС (ее можно бесплатно скачать и пользоваться ею), а Windows – нет.

Другое существенное различие между этими ОС заключается в том, что в Linux открытый исходный код и при желании вы легко можете изменить любой фрагмент ее кода под свои нужды. В случае же с Windows так не получится, поскольку это запрещено лицензией на ее использование.

Операционная система, на которой работает плата Raspberry Pi (Raspberry Pi OS, бывшая Raspbian), основана на операционной системе Linux. Также про такие ОС говорят, что они являются Linux-подобными операционными системами. Поэтому в наших дальнейших статьях мы немного изучим и команды ОС Linux.

Python

Python является языком программирования, подобным C, C++, JAVA и т.д. Эти языки используются для разработки различных приложений. Но всегда помните о том, что все эти языки программирования работают в операционной системе. Вы не можете работать с языком программирования без использования ОС. То есть язык программирования является зависимым от ОС. Вы можете работать с языками Python, C, C++ и JAVA как в ОС Linux, так и в ОС Windows.

В наших проектах мы используем язык Python для взаимодействия с контактами ввода/вывода в плате Raspberry Pi, а также для ряда других операций.

Контакты ввода/вывода в плате Raspberry Pi

Внешний вид и распиновка контактов ввода/вывода (GPIO) платы Raspberry Pi показаны на следующих рисунках.

Как показано на представленном рисунке, у платы Raspberry Pi имеется 40 контактов ввода/вывода. Но однако не все эти контакты доступны для программирования. На самом деле для программирования доступны только 26 контактов ввода/вывода (GPIO), которые обозначены на представленном рисунке с GPIO2 до GPIO27.

Эти контакты вы можете программировать по своему усмотрению. Некоторые из этих контактов могут также выполнять специальные функции (последовательный порт, интерфейсы SPI и I2С и т.д.). Если не учитывать контакты, которые могут выполнять специальные функции, то остается 17 программируемых контактов общего назначения, на следующем рисунке они обозначены кружками зеленого цвета.

Каждый из этих 17 контактов может выдерживать ток до 15mA, а суммарный ток от всех контактов ввода/вывода не должен превышать 50mA. Таким образом, если мы задействуем все эти 17 контактов, то в среднем на каждый контакт должен приходиться ток не более 3mA.

Необходимые компоненты

  1. Плата Raspberry Pi 2 Model B или другая аналогичная (купить на AliExpress).
  2. Резистор 220 Ом или 1 кОм (купить на AliExpress).
  3. Светодиод (купить на AliExpress).
  4. Кнопка.
  5. Макетная плата.
  6. Соединительные провода.

Схема проекта

Схема для подключения кнопки к плате Raspberry Pi представлена на следующем рисунке.

Как показано на схеме, мы подключили светодиод к контакту PIN35 (GPIO19), а кнопку – к контакту PIN37 (GPIO26). Поскольку, как мы уже рассмотрели ранее, через контакт нельзя пропускать ток более 15mA, то последовательно со светодиодом мы подключили резистор (сопротивлением 220 Ом или 1 кОм).

Объяснение программы для Raspberry Pi

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

После того, как все необходимые соединения в схеме сделаны, мы можем подать питание на Raspberry Pi и после загрузки ее операционной системы можно начать писать программу в ней на Python. Подробнее о том, как это можно сделать, можно прочитать в статье про мигание светодиода с помощью Raspberry Pi (!!!!!!!!!).

В программе нам первым делом необходимо подключить (импортировать) библиотеку для работы с контактами ввода/вывода. Также мы импортируем эту библиотеку RPi.GPIO под именем “IO” (то есть переименовываем ее для использования в программе), то есть далее в программе всегда, когда мы захотим обратиться к контактам ввода/вывода, мы будем использовать слово ‘IO’.

Иногда контакты ввода/вывода (GPIO pins), которые мы собираемся использовать в программе, могут выполнять другие функции. В этом случае во время исполнения программы мы будем получать предупреждения (warnings). Следующей командой мы укажем плате Raspberry Pi на то, чтобы она игнорировала эти предупреждения и продолжала исполнение программы.

Мы можем обращаться к контактам ввода/вывода (GPIO pins) платы Raspberry Pi используя либо номер контакта на плате, либо его функциональный номер. В представленной выше распиновке контактов ввода/вывода можно увидеть, к примеру, что обозначение GPIO26 соответствует контакту PIN 37. То есть в зависимости от того, какой способ обращения к контактам мы выбрали, мы можем обращаться к рассмотренному контакту либо по номеру ‘37’, либо по номеру ‘26’. В данном проекте мы выберем способ обращения к контактам по их функциональным номерам, поэтому используем следующую команду:

Далее мы сконфигурируем контакт GPIO26 (PIN37) в качестве цифрового входа поскольку на этом контакте мы будем обнаруживать нажатия кнопки.

Затем в программе мы будем использовать команду «While 1:» – она будет формировать бесконечный цикл. Внутри этого цикла все команды будут исполняться непрерывно.

Исходный код программы

При исполнении программы светодиод, подключенный к GPIO19 (PIN35), будет мигать всегда, когда нажата кнопка. Если кнопка не нажата, то светодиод будет находиться в выключенном (OFF) состоянии.

Видео, демонстрирующее работу проекта

2 ответа к “Подключение кнопки к Raspberry Pi с помощью программы на Python”

Здравствуйте. Такой вопрос.. В коде программы написано, что мы будем программировать контакты GPIO по их функциональным номерам (BCM), то есть мы будем обращаться к PIN39 как ‘GPIO19’.Насколько я понял, GPIO19 соответствует PIN35, но не PIN39. Как не искал распиновку GPIO с таким «расположением» GPIO19 — не нашел. Это опечатка или я чего-то не так понял? Заранее благодарю за ответ. С уважением, Данила.

Добрый вечер. Да, это опечатка. На рисунке в статье приведена правильная распиновка

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *