Клавиатура для arduino своими руками

Аналоговая клавиатура для Arduino своими руками

Аналоговая клавиатура для Arduino своими руками.

Ссылки на компоненты:

Модуль расширителя интерфейса (I2C)- http://ali.pub/dwj5n

ЖК-дисплей LCD1602 (синий экран)- http://ali.pub/alnru

Схема аналоговой клавиатуры для Arduino

Аналоговая клавиатура для Arduino своими руками

Оставьте комментарий:

Юный Технарь:

Помощь проекту:

Деньги можно перечислить на карту Сбербанка России:

4276 5400 2194 5088

Поиск

Последние статьи

Расширитель входов и выходов для ESP 01 …

Расширитель входов и выходов для ESP 01 на MCP23017.

KaScada Cloud — Загрузка и выгрузка фай…

KaScada Cloud — Загрузка и выгрузка файла.

Мой канал на YouTube

Подпишитесь!

2015, Arduinoprom.ru — блог Чилингаряна Грачика. Все авторские права на тексты принадлежат ему.

При размещении текстов и видеоматериалов на сторонних ресурсах активная гиперссылка ОБЯЗАТЕЛЬНА.

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

Источник

64-клавишная матричная клавиатура для работы с Arduino

Мастер-самодельщик работает над проектом, который будет иметь встроенную клавиатуру и здесь есть проблема: как включить клавиатуру в прототип платы разработки? В проекте нельзя использовать USB-клавиатуру или существующую клавиатуру на базе Arduino, потому что клавиатура в реальном проекте подключена напрямую к микроконтроллеру, который обрабатывает все другие функции. Для решения проблемы мастер разработал 64-клавишную матрицу клавиатуры для прототипирования печатной платы.

Эта печатная плата не содержит никаких микросхем. Строки и столбцы матрицы клавиатуры подключаются непосредственно к разъемам контактов, так что клавиатуру можно подключить к Arduino или любому другому микроконтроллеру.

Мастер включил подробный код с комментариями. На клавиатуре 64 клавиши, включая модификаторы для shift, caps, ctrl, alt, fn и «special». Также есть шесть дополнительных клавиш, которые можно использовать для чего угодно. Функции каждой отдельной клавиши могут быть определены индивидуально.

Шаг первый: принцип работы матрицы клавиатуры
На этой клавиатуре 64 клавиши. Если бы мы подключили каждую из этих кнопок напрямую к плате разработки, нам потребовалось бы 64 контакта ввода-вывода. Это много выводов и больше, чем доступно на большинстве плат. Чтобы уменьшить количество разъемов до разумного числа, можно использовать матрицу клавиатуры, для которой требуется только количество выводов, равное квадратному корню (с округлением в большую сторону) из числа клавиш.

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

Поскольку устройство работает с микроконтроллером, «активировать» означает установить для этой строки значение LOW или HIGH. В этом случае мы устанавливаем для строки значение LOW, потому что используем встроенные подтягивающие резисторы микроконтроллера на входных контактах столбцов. Без подтягивающего резистора вывод будет реагировать непредсказуемо, и будут регистрироваться ложные нажатия кнопок.

Читайте также:  Каркасные дома своими руками с гаражом

Для всех строк также обычно установлено значение HIGH, что предотвращает соединение выводов столбца с выводами строки независимо от того была, нажата кнопка или нет.

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

Матрица клавиатуры требует количества контактов, равного квадратному корню из числа клавиш, но в данной конструкции клавиатуры всего 11 контактов (а должно быть 16). Контактов 11 потому что в конструкции используется сдвиговый регистр 74HC595. Этот регистр позволяет использовать только три контакта ввода / вывода Arduino для управления до 8-ми выходных контактов. Эти три контакта позволяют отправить байт (восемь бит) в регистр сдвига, который устанавливает для своих восьми выходных контактов значение HIGH или LOW. Используя регистр сдвига для выводов выходной строки, мы экономим 5 полных выводов ввода / вывода.

Можно использовать регистр сдвига и для входных контактов, но здесь нужен другой тип регистра. Такой детали у мастера не было в наличии. К тому же использование сдвигового регистра для ввода также усложняет чтение столбцов и может вызвать проблемы с дребезгом клавиш.
schematic.pdf


Шаг второй: дизайн печатной платы
Теперь, когда есть понимание работы клавиатуры, мастер разрабатывает печатную плату в KiCAD. Он просто поместил символ кнопки и символ диода, затем скопировал и вставил их, пока не получил сетку из 64 ключей. Затем я добавил два символа разъемов 1×8: один для строк и один для столбцов. Одна сторона кнопок была соединена в столбцы, а другая сторона кнопок была соединена в ряды.

Следующим шагом было назначить посадочные места печатной платы каждому из этих схемных символов. Входящая в комплект KiCAD библиотека схемных символов/посадочных мест имеет необходимые встроенные символы.

Обращаем особое внимание на номера контактов. У KiCAD есть проблема, когда номера выводов условного обозначения диода не совпадают с номерами выводов посадочного места. Это приводит к тому, что диоды находятся в обратном порядке, что является серьезной проблемой, учитывая их полярность. Чтобы решить эту проблему мастеру пришлось создать специальную посадочную площадку для диода с зеркальными местами контактов.

Создав схему и назначив символы, мастер перешел к разводке печатной платы. Контур платы был создан в Autodesk Fusion 360, экспортирован как DXF, а затем импортирован в KiCAD на слое Edge Cuts. Большая часть работы после этого заключалась в простом расположении кнопок так, чтобы их расположение было похоже на обычную клавиатуру.

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



Шаг четвертый: подключение клавиатуры к Arduino
Подключение выглядит сложно, но на самом деле все довольно просто.
Восемь перемычек идут от контакта столбца прямо к следующим контактам Arduino:
Column 1 > A0
Column 2 > A1
Column 3 > A2
Column 4 > A3
Column 5 > A4
Column 6 > A5
Column 7 > 5
Column 8 > 6
Затем устанавливаем сдвиговый регистр 74HC595 на макетную плату. Точка указывает на контакт 1. Регистр сдвига имеет два контакта, подключенных к 5 В, и два контакта, подключенных к земле.

Читайте также:  Как сшить для кухни своими руками выкройки

Для подключения сдвигового регистра к Arduino нужно всего три провода:
Shift (Clock) 11 > 4
Shift (Latch) 12 > 3
Shift (Data) 14 > 2
По какой-то глупой причине выходные контакты сдвигового регистра расположены нелогично. Обратите особое внимание на схему распиновки сдвигового регистра при подключении их к выводам.
Row 1 > Shift (Q0) 15
Row 2 > Shift (Q1) 1
Row 3 > Shift (Q2) 2
Row 4 > Shift (Q3) 3
Row 5 > Shift (Q4) 4
Row 6 > Shift (Q5) 5
Shift 7 > Shift (Q6) 6
Shift 8 > Shift (Q7) 7
К контактам Arduino 0 и 1 ничего не подключается. Эти контакты используются для последовательного порта и вызывают конфликты.



Шаг пятый: прошивка
В статье приводится два кода. Первый старый, второй доработанный с учетом недостатков. Вводная часть работает для обоих кодов.
Все в коде имеет подробные комментарии. В основном, контакты настраиваются как входы и выходы. Основной цикл просто содержит функцию таймера. Каждые 5 мс он вызывает функцию сканирования клавиатуры. Эта функция вызывает отдельную функцию для установки регистра сдвига перед проверкой каждого столбца. Нажатые клавиши выводят свое значение в Serial.

Если вы хотите изменить то, что печатается при нажатии клавиши, просто измените Serial.print («_»); в операторе if, соответствующем условию. Например, вы можете установить, что будет печататься, когда вы удерживаете FN и нажимаете N. То же самое верно для любой другой клавиши с каждым модификатором.

Многие ключи вообще ничего не делают в этом коде, потому что он просто печатает в Serial. Это означает, что клавиша Backspace не действует, потому что вы не можете удалить из последовательного монитора — эти данные уже получены. Однако вы можете изменить это если хотите.
Эта клавиатура предназначена для создания прототипов более сложных проектов. Вот почему легко изменить ее функциональность. Если, например, вы хотите распечатать набранный текст на OLED-экране, вы можете просто заменить каждый Serial.print ( на display.print ( или все, что требуется для вашего конкретного дисплея). Инструмент Replace All в Arduino IDE отлично подходит для замены всех этих значений одним быстрым шагом.

Новый код полностью переписан и работает лучше, чем исходный код. В основном это было сделано для решения проблемы с алгоритмом, который не позволял вводить символы при каждом нажатии клавиши. Исходный код проверял, чтобы конкретная клавиша была нажата не последней . Это вызывало проблему, если удерживались 2 или более клавиши, что приводило к вводу чего-то вроде «fgfgfgfgfgfgfgfgfgfg». Это также не позволяло вводить одну и ту же клавишу снова и снова очень быстро, например, когда вы набираете две буквы m в слове «bummer.».
Новый код решает обе эти проблемы. Вместо того, чтобы отслеживать последнюю нажатую клавишу, устройство проверяет состояние всей клавиатуры и сравнивает его со всем состоянием клавиатуры в последнем цикле. Это означает, что цикл может выполняться намного быстрее, и можно очень быстро вводить один и тот же ключ снова и снова. Производительность значительно улучшена. Все символы также находятся в массивах вверху, поэтому можно легко их найти и изменить. Для каждого модификатора есть независимые массивы. Код также намного короче.
Единственным недостатком этого нового кода является то, что он использует больше динамической памяти, хотя и использует значительно меньше места для программы. На Arduino Uno теперь используется: 3532 байта (10%) пространства для хранения программ и 605 байтов (29%) динамической памяти.

Читайте также:  Красивый фундамент для забора своими руками

Источник

Резистивная клавиатура на Arduino

Резистивную клавиатуру на Arduino можно применить для расширения функций основной клавиатуры на компьютере, так и для управления с клавиатуры практический любым Android устройством имеющим OTG интерфейс.

Аппаратная часть

Для реализации данного проекта нам понадобится любой контроллер Arduino на чипе ATmega32u4, например Arduino Leonardo. Этот микроконтроллер позволяет делать HID устройства.

Подойдёт и более компактный вариант от RobotClass — Лео-микро ROC, подходящий для встраиваемой установки. Например, в автомобиль — для управления планшетом. Так же будет нужен набор резисторов различного номинала (к примеру 10 кОм) и набор кнопок.

Количество кнопок и резисторов зависит от того, сколько требуется сделать кнопок.

Программа и схема

Для начала соберем простенькую схему. Сама клавиатура будет подключена к аналоговому входу A0, что не особо принципиально. Можно использовать любой другой.

После сборки схемы получаем

После подключаем контроллер к компьютеру и загружаем в плату следующий скетч

После того, как загрузили скетч, открываем «Монитор порта» и нажимая на кнопки видим их значения в мониторе порта .

Программа для управления Android устройством на Ардуино

Теперь попробуем сделать клавиатуру для управления планшетом или телефоном на базе Android. Схема устройства остается та же, что и была. Но теперь контроллер будет распознаваться устройством как USB HID, в нашем случае клавиатурой.

Загружаем следующий скетч:

Теперь Android устройство распознает нашу клавиатуру, и мы можем управлять, например, медиаплеером.

Заключение

Данный пример клавиатуры можно реализовать для управления компьютером, установленным в автомобиль, или добавить внешнее устройство к своему смартфону.

Источник

Клавиатура для arduino своими руками

Совсем недавно я начал осваивать платформу Arduino, что это такое вы можете узнать из этой статьи. Наигравшись с подключением к ней светодиода и покупных модулей я решил изготовить простейший модуль матричной клавиатуры самостоятельно. Матричная клавиатура работает по принципу строк и столбцов то-есть если брать в пример нашу клавиатуру то у неё четыре строки и четыре столбика и имеет она 16 кнопок. Что-бы было более понятно, набросал принципиальную схему матричной клавиатуры.

Для изготовления клавиатуры нам потребуется кусок текстолита с фольгированным слоем меди размером 50*70 мм, 16 кнопочек 3*6 мм, и штыревой соединитель 2.54 мм на 8 штырьков. Если всё перечисленное имеется то можно приступать.

Эскиз печатной платы я подготовил в программе Sprint-Layout 5.0, если кому понадобится вот ссылка на эскиз. Берём текстолит и вырезаем кусок нужного нам размера, зачищаем его и обезжириваем спиртом или бензином (Галоша). Далее заранее подготовленный эскиз печатной платы распечатываем на лазерном принтере и изготавливаем плату по технологии ЛУТ.

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

Сейчас осталось только впаять кнопки и соединитель. Кнопки я выпаял из старой сломанной автомагнитолы, а штыревой соединитель купил в ближайших радиотоварах, стоит он около 10 рублей за 40 штырей. Если у вас нет кнопок или соединителя то можно их приобрести тут (Кнопки — Соединитель).

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

Источник

Оцените статью
Своими руками