Подключение сенсорной клавиатуры к Raspberry Pi

В данной статье мы рассмотрим подключение емкостной сенсорной клавиатуры (Capacitive Touchpad) к плате Raspberry Pi, которая будет использоваться как устройство ввода данных для нашей платы. Применяемая нами в этом проекте сенсорная клавиатура имеет 8 кнопок с нанесенными на них цифрами от 1 до 8. Однако эти кнопки не являются по своей сути кнопками, на самом деле это чувствительные к прикосновению пластины, закрепленные на печатной плате. Когда мы прикасаемся к одной из этих пластин изменяется емкость ее поверхности. Это изменение емкости обнаруживается управляющим устройством клавиатуры, которое после этого подает напряжение высокого уровня (high) на соответствующий выходной контакт клавиатуры.

Внешний вид подключения сенсорной клавиатуры к Raspberry Pi

Ранее на нашем сайте мы рассматривали подключение подобной сенсорной клавиатуры (тачпада) к микроконтроллеру AVR.

Контакты ввода/вывода (GPIO) в Raspberry Pi

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

Местоположение контактов ввода/вывода (GPIO) на плате Raspberry Pi

Распиновка контактов ввода/вывода (GPIO) платы Raspberry Pi

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

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

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

Расширенная распиновка контактов ввода/вывода (GPIO) платы Raspberry Pi

Здесь необходимо отметить тот факт, что плата Raspberry Pi работает с логическими уровнями +3.3V, поэтому на ее контакты нельзя подавать напряжение более +3.3V. Поэтому нам необходимо запитать нашу сенсорную клавиатуру от источника с напряжением +3.3V, чтобы с ее выходных контактов можно было непосредственно подавать сигналы на контакты платы Raspberry Pi.

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

  1. Плата Raspberry Pi 2 Model B или другая аналогичная (купить на AliExpress).
  2. Емкостная сенсорная клавиатура (Capacitive Touchpad).
  3. Макетная плата.
  4. Соединительные провода.

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

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

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

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

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

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

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

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

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

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

Далее мы сконфигурируем 8 контактов платы Raspberry Pi в качестве цифровых входов – к ним подключены выходные контакты емкостной сенсорной клавиатуры.

Далее в программе мы будем проверять состояние контактов платы Raspberry Pi, к которым подключены выходные контакты емкостной сенсорной клавиатуры. К примеру, рассмотрим контакт GPIO21. Если на этом контакте уровень high, то мы выполним действия, относящиеся к этому оператору IF. Если же на этом контакте уровень low, то действия внутри оператора IF выполняться не будут.

Следующей командой будет формироваться бесконечный цикл, внутри него все команды будут выполняться непрерывно.

Далее переходим к полному тексту программы.

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

При нажатии кнопки на сенсорной клавиатуре ее номер будет показываться на экране дисплея.

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

(Проголосуй первым!)
Загрузка...
71 просмотров


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

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