В статье мы рассмотрим простую конструкцию на микроконтроллере, реализующую 10-кнопочную USB HID (Human Interface Device) клавиатуру, которая является Plug-and-Play устройством и не требует установки драйверов. Изначально устройство предназначалось для быстрого доступа к часто используемым сочетаниям клавиш в операционной системе Windows, например Alt+F4 (закрыть программу), Windows+D (свернуть все окна), Ctrl+Alt+Del и др. Однако пользователи могут приспособить устройство и для других целей, например, для сбора и накопления данных.
Основой конструкции является микроконтроллер Microchip PIC18F14K50, помимо него используется несколько резисторов, конденсаторов и коннекторы. Устройство не требует отдельного источника питания, т.к. подключается к порту USB компьютера (USB Host) и получает питание от него.
Аппаратная часть базируется на примере от компании Microchip “USB Device HID Keyboard”, который предоставляется в отладочном наборе DM164127 - Low Pin Count USB Development Kit. Сочетания клавиш задаются в программе микроконтроллера, назначение сочетания клавиш мы рассмотрим во второй части статьи.
Коды сочетаний клавиш предназначены для операционной системы Windows, однако возможно их переназначение для использования в других ОС.
Основные характеристики устройства:
- 10 входных каналов (кнопки);
- все кнопки имеют подтягивающие резисторы к «+» питания;
- активное состояние кнопок – низкий логический уровень;
- подключение к порту USB;
- питание от USB;
- Plug-and-Play устройство, не требуется установка драйверов.
Основные характеристики микроконтроллера PIC18F14K50:
- Flash-микроконтроллер со встроенным USB 2.0 интерфейсом;
- рабочая частота до 48 МГц;
- 16 КБайт Flash-память программ, 768 Байт SRAM, 256 Байт EEPROM;
- один 8-битный таймер, три 16-битных таймера, 1 канал ШИМ;
- коммуникационные интерфейсы: USB, SPI, I2C, UART;
- встроенный 9-канальный 10-битный АЦП;
- два аналоговых компаратора;
- до 15 линий ввода/вывода общего назначения;
- корпус: 20-выводный DIP, SOIC, SSOP.
Для сборки устройства нам понадобятся:
- микроконтроллер PIC18F14K50;
- кварцевый резонатор 12 МГц;
- один конденсатор 0.1 мкФ;
- один конденсатор 220 нФ;
- 2 сборки из 5 резисторов номиналом 10 кОм;
- один резистор номиналом 1.5 кОм;
- панелька (сокет) для установки 20-выводного микроконтроллера;
- коннектор USB Type B;
- кабель USB Type B – Type A;
- 10 кнопок;
- 4-выводные и 6 выводные коннекторы (либо аналогичные).
Принципиальная схема устройства
Вид печатной платы
Печатная плата односторонняя, пользователи могут самостоятельно разработать печатную плату с применением smd компонентов с целью миниатюризации устройства.
Расположение элементов на печатной плате
Кнопки установлены на отдельной плате и подключаются к плате с микроконтроллером при помощи коннекторов (обозначены на плате HEADER1-4 и HEADER5-10).
Назначение отдельных компонентов и основные замечания по установке на печатную плату
Наборы 10 кОм резисторов – данные элементы содержат в себе 5 резисторов номиналом 10 кОм каждый, включенных параллельно с одним общим выводом. Этот вывод обозначается точкой на корпусе элемента.
Кварцевый резонатор должен быть расположен максимально близко к микроконтроллеру. Возможно, потребуется подключение двух конденсаторов емкостью 22 пФ к кварцевому резонатору. Конденсатор С2 (220 нФ) подключается между выводом микроконтроллера VUSB и V+.
Резистор R1 (1.5 кОм) подтягивает линию Data+ к напряжению питания, что сигнализирует для Host устройства, на какой скорости работает USB Device (клавиатура).
Джамеперы, указанные на печатной плате (J1 и J2, P1-P2-P3, G1 и G2, Rx и Tx), используются в связи с односторонней разводкой печатной платы, а также для возможности расширения функций:
- J1 соединен с J2;
- P1 подключен к P2, который подключен к P3;
- точки G1 и G2 остаются свободными (подключены к «–» питания);
- точки Rx и Tx подключены к линиям Rx и Tx микроконтроллера (на схеме не показано) для расширения функций.
Кнопки подключаются при помощи коннекторов к плате с микроконтроллером согласно схемы.
В следующей части статьи мы рассмотрим основные моменты в ПО микроконтроллера, как назначать сочетания клавиш и использование клавиатуры.