10-кнопочная USB HID клавиатура на PIC микроконтроллере » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки Написать нам
Опрос

На каком языке программирования вы пишите программы?


Ассемблер
Си
Бейсик
Паскаль
Другой


Последние материалы
  • Каршеринг в Москве - это Просто, Удобно и Недорого.
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Программирование на C микроконтроллеров PIC24
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Популярные материалы
    Случайная книга
    Программирование устройств на PIC микроконтроллерах » Схемотехника » Компьютер » 10-кнопочная USB HID клавиатура на PIC микроконтроллере
    10-кнопочная USB HID клавиатура на PIC микроконтроллере
    Автор публикации: alex Просмотров: 9594 Добавлен: 28-01-2013, 09:58 Комментарии: 0

         В статье мы рассмотрим простую конструкцию на микроконтроллере, реализующую 10-кнопочную USB HID (Human Interface Device) клавиатуру, которая является Plug-and-Play устройством и не требует установки драйверов. Изначально устройство предназначалось для быстрого доступа к часто используемым сочетаниям клавиш в операционной системе Windows, например Alt+F4 (закрыть программу), Windows+D (свернуть все окна), Ctrl+Alt+Del и др. Однако пользователи могут приспособить устройство и для других целей, например, для сбора и накопления данных.

    10-кнопочная USB HID клавиатура на микроконтроллере PIC

         Основой конструкции является микроконтроллер 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 выводные коннекторы (либо аналогичные).
    Компоненты необходимые для сборки USB HID клавиатуры

    Принципиальная схема устройства
    Принципиальная схема USB HID клавиатуры на микроконтроллере PIC

    Вид печатной платы
    Печатная плата

    Печатная плата односторонняя, пользователи могут самостоятельно разработать печатную плату с применением 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 микроконтроллера (на схеме не показано) для расширения функций.

    Кнопки подключаются при помощи коннекторов к плате с микроконтроллером согласно схемы.

    Подключение кнопок USB HID клавиатуры к микроконтроллеру


    Программное обеспечение

         Как отмечалось в первой части статьи, за основу конструкции были взяты примеры приложений, которые предназначены для использования с отладочным набором Low Pin Count Development Kit от компании Microchip. Этих примеров и демонстрационных приложений для разработки USB устройств очень много, для нашего устройства был выбран пример реализации USB HID клавиатуры.
         Для разработки программного обеспечения, а также для внесения корретив, переназначения сочетаний клавиш необходима интегрированная среда разработки MPLAB и компилятор С18, которые доступны для скачивания на официальном сайте компании.
         Программы микроконтроллера из примеров компании Microchip написаны таким образом, что ее можно использовать для различных PIC микроконтроллеров со встроенным USB интерфейсом. Единственное, что понадобится, – это скорректировать код функции Keyboard().
         Данная функция вложенная и условно расположена так: ProcessIO() -> Keyboard() -> Check if IN endpoint is ready -> Check Switches ->Send Data -> ProcessIO()
         Основной момент в программе – это поверка состояния кнопок, заполнение буфера данных соответствующими данными и отправка их по USB в компьютер. Затем цикл повторяется.
         В буфер данных записываются 8 байт, которые имеют определенные значения. В программе эти 8 байт обозначены как hid_report_in[0] - hid_report_in[7].

    Рассмотрим их назначение.

    hid_report_in[0]= – это байт модификатора, он содержит информацию о состоянии функциоанльных клавиш (Alt, Ctrl, Shift, Win). 8 битное значение, которое характеризует нажатие этих кнопок по отдельности, или одновременное нажатие нескольких (напрмер Ctrl+Shift).

    Назначение битов в байте hid_report_in[0]
    Бит
    Соответствующая
    клавиша
    0
    Левый Ctrl
    1
    Левый Shift
    2
    Левый Alt
    3
    Левая Win
    4
    Правый Ctrl
    5
    Правый Shift
    6
    Правый Alt
    7
    Правая Win

    Например, запись:
    hid_report_in[0]=4 означает, что байт имеет значение 4 (десятичное число), и это соответствует нажатой кнопке Alt (бинарный код 100);
    hid_report_in[0]=7 означает, что байт имеет значение 7, и это соответствует нажатым кнопкам Ctrl+Alt+Shift (бинарный код 111).

    Следующий байт hid_report_in[1]=0, всегда равный 0, зарезервирован.
    Байты hid_report_in[2] … hid_report_in[7] предназначены для записи и отправки по USB интерфейсу кодов клавиш. Т.е. одновременно может эмулироваться нажатие до 6 клавиш, и данные отправляются как единое целое. Коды клавиш для USB HID устройств можно взять в документе HID Usage Tables, который доступен для скачивания в разделе загрузок.
         Такая реализация позволяет эмулировать и посылать данные (коды) о нескольких одновременно нажатых кнопках. К примеру, Alt+Пробел+n. Также, иногда потребуется эмулировать нажатие комбо-клавиш, наприер Alt+Пробел и затем клавиша n. Для такой реализации в программном обеспечении нужно использовать байты данных NextModKey and NextKey и затем установить флаг AnotherFlag. В этом случае, после посылки первой команды, отправится следующая с кодом данной последней клавиши.
         Для прошивки микроконтроллера можно использовать внешний программатор или предусмотреть установку разъема для внутрисхемного программирования установленного микроконтроллера.

    В архиве файлы проекта MpLab, Документ HID Usage Tables, Принципиальная схема, рисунки печатной платы, исходные коды и HEX файл для прошивки микроконтроллера

    10keyshidkeyboard.rar [1,24 Mb] (cкачиваний: 642)

    Категория: Компьютер, PIC18
    « Назад
    Комментарии