Можно ли сделать полноценную USB-клавиатуру с помощью Makey Makey + Raspberry Pi?

15

Я недавно купил Макей Макей (на основе Arduino Leonardo / ATMega32u4), в надежде построить полный USB стимпанк стиле клавиатуры от некоторых металлических деталей. Прежде чем он прибыл, я перечитал детали и понял, что он имеет только 18 возможных входов, поэтому более 85 клавиш не будут работать. У кого-нибудь есть идеи, как я мог бы создать такого зверя, возможно, с Raspberry Pi? (который подключается довольно легко, из предыдущих постов )

sventechie
источник
Это замечательно.
Jivings
1
Вместо ввода для каждой клавиши вы можете использовать матрицу и использовать 18 входов для обработки 81 клавиши (матрица 9x9), насколько я знаю, у RPi меньше входов, чем у Arduino, поэтому я не думаю, что это поможет.
Крэйг,
@Craig, так что вы имеете в виду объединение входных данных, как это: arduino.cc/playground/Main/KeypadTutorial
sventechie
@sventech да. Я не знаком с этим макияжем, поэтому не знаю, как его переключение с высоким сопротивлением будет взаимодействовать с матрицей.
Крейг,

Ответы:

6

Если вы просто хотите сделать клавиатуру без использования Makey Makey, вы можете сделать это, используя функциональность GPIO Raspberry Pi. Но, как уже говорилось ранее, Raspberry Pi не имеет достаточно контактов, чтобы сделать клавиатуру, которая действительно полезна.

Однако, если вы хотите добавить 2 микросхемы, вы можете сделать себе клавиатуру с таким количеством клавиш, что у вас возникнет проблема с функцией каждой клавиши!

Я предлагаю подключить 2 микросхемы I2C к шине I2C на Raspberry Pi и использовать их для создания собственной матрицы сканирования.

Если вы используете один PCF8574, у вас есть 8 доступных выводов ввода / вывода, если вы получаете PCF8575, у вас даже есть 16 доступных выводов ввода / вывода. Комбинируя, вы можете получить матрицу сканирования:

  • 64 ключа: (2x PCF8574)
  • 128 клавиш: (1x PCF8574 и 1x PCF8575)
  • 256 клавиш: (2x PCF8575)

Вы должны всегда использовать один из них в качестве вывода, а другой - в качестве ввода. На выходе вы позволяете биту «идти» от бита 0 до бита n (7 или 15), это столбцы матрицы. С другой стороны, вы постоянно читаете значение ввода, и это строки матрицы. Комбинация того, какой выходной бит активен и какой входной бит равен «1», является нажатой клавишей.

принцип сканирования матрицы

На самом деле создание матрицы - это самая большая работа, и пока вы занимаетесь ею, не забывайте добавлять диод после каждого переключателя, который вы вставляете в матрицу, этот диод (нормальный 1N4148 подойдет) должен быть размещен вместе с анодом. к выключателю и катоду к линии ряда. Падение напряжения 0,6 В на этом диоде не должно быть проблемой, оставшиеся (3,3 В - 0,6 В) 2,7 В все равно должны быть логическим «1».

практическая матрица сканирования

Причиной такой нагрузки на диоды является то, что она предотвращает такие вещи, как ореолы и маскирование ключей. Побочное действие - это эффект, если вы нажимаете более трех клавиш одновременно, возможно, что он интерпретируется как совершенно другой ключ, потому что большее количество строк будет иметь логическую «1». Маскировка - это эффект, если при нажатии нескольких клавиш и отпускании клавиши это (в некоторых ситуациях) не будет обнаружено, поскольку строка для этой клавиши все еще является логическим «1».

Призрачный пример

На рисунке показан пример ореолов: кнопки A, B, D нажимаются, и кроме строки 1 (для кнопки A) также высока строка 2 (для кнопки C), в данный момент столбец 1 активен, что неверно.

После всего аппаратного приключения вам нужно написать или адаптировать драйвер ядра для фактического использования клавиатуры под Linux. Хорошей отправной точкой может быть эта ссылка: Драйвер для клавиш на расширителе ввода-вывода TCA6416 I2C , это аналогичная идея, но используется только 16-клавишная клавиатура.

Надеюсь, это вам немного поможет.

Икку
источник
3

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

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

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

Крис Страттон
источник