Главная страница » Что такое профиль hid

Что такое профиль hid

  • автор:

HID совместимые устройства что это такое?

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

В класс HID устройств входят клавиатуры, мыши и другие типовые девайсы.

Что такое профиль HID

Подразумевается что если устройство является HID совместимым то подключая его к основному устройству поддерживаемому HID, оно автоматически будет определено и подключено. Как пример телевизоры Panasonic поддерживают HID устройства и к телевизору можно подключить клавиатуру или беспроводную мышь но они также должны поддерживать HID профиль.

Данный класс изначально был придуман для USB устройств но потом также был распространён и на Bluetooth устройства.

Сначала многие производители производили различные девайсы которые поддерживались только определёнными устройствами. Например можно вспомнить телевизоры Samsung которые поддерживали работу только клавиатур Samsung для телевизоров. Самсунг продавал такие клавиатуры по 60-80$. Но другие производители делали телевизоры с поддержкой HID устройств, что делало их более привлекательными для приобретения. В итоге Samsung отказался от такой практики.

Профили bluetooth: что это такое и для чего они нужны

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

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

Подросток говорящий: «мне купили новый жёсткий диск и модулятор-демодулятор» будет выглядеть забавно среди своих сверстников. Молодежь не будет использовать точную терминологию. Они скажут: «мне купили новый винт и модем». В этой фразе «винт» означает «винчестер, жесткий диск», а «модем» – это сокращение от первых букв двух слов: МОдулятор-ДЕМодулятор.

Почему же компьютерные термины требуют специального толкования, точнее, дополнительного объяснения того, что они на самом деле означают?

Компьютерная территория, как бы нам не хотелось обратного, – территория Америки и англоговорящих стран. Основное программное обеспечение и комплектующие производятся именно там, ну или в Китае. Последнее пока никак не влияет на терминологию. Посему основной источник обогащения словаря компьютерных терминов – английский. И даже не английский, а жаргонный компьютерный английский.

Стандартное подключение и определение HID-совместимой мыши

Если рассматривать данный вопрос с практической точки зрения, сегодня любое устройство управления, подключаемое посредством интерфейсов USB, Bluetooth или даже Wi-Fi, распознается именно как стандарт HID. Как уже понятно, к съемным накопителям это не относится.

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

Ввод и общие порты

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

Разъем PS/2 был разработан корпорацией IBM для подключения мыши и клавиатуры. Он начал использоваться начиная с устройства персонального компьютера IBM/2. От имени этого компьютера и было образовано имя порта. Интерфейс имеет специальную маркировку — фиолетовый для клавиатуры и зеленый для мыши.

Как вы можете видеть, это разъем на шесть контактов, вот его схема:

Даже несмотря на то что цоколи и раскладка контактов для мыши и клавиатуры одинаковы, компьютер не обнаружит устройство, если вы подключите его не в тот разъем. Как я уже говорил, на данный момент PS/2 уже вытеснен другой технологией. Теперь подключение к компьютеру периферийных устройств чаще всего выполняется по USB.

Последовательный порт (Serial Port)

Несмотря на то, что последовательными портами называется целая группа портов, включая PS/2, есть еще одно значение у этого термина. Он используется для обозначения интерфейса совместимого со стандартом RS-232. К таким интерфейсам относятся DB-25 и DE-9.

DB-25 — это вариант разъема D-Sub изначально разработанный в качестве основного порта для соединения по протоколу RS-232. Но большинство устройств используют не все контакты.

Затем был разработан DE-9, который работал по тому же протоколу, а DB-25 стал использоваться чаще для подключения принтера вместо параллельного порта. Сейчас DE-9 — это основной последовательный порт, работающий по протоколу RS-232. Его также называют COM портом. Этот разъем все еще иногда применяется для подключения мыши, клавиатуры, модемов, ИБЛ и других устройств, работающих по этому протоколу.

Сейчас интерфейсы подключения устройств компьютеру DB-25 и DE-9 применяются все реже, потому что их вытесняет USB и другие порты.

Параллельный порт Centronics или 36-pin порт

Порт Centronics или 36-pin был разработан для связи компьютера и принтера по параллельному протоколу. Он имеет 36 контактов и перед началом широкого применения USB был достаточно популярен.

Переустановка драйвера

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

Но в большинстве случаев это не нужно, поскольку все оборудование класса HID должно распознаваться любой компьютерной системой и без этого.

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

Устройство интерфейса пользователя — Human interface device

Устройство интерфейса с человеком или HID — это тип компьютерного устройства, обычно используемого людьми, которое принимает ввод от людей и выдает вывод людям.

Термин «HID» чаще всего относится к спецификации USB-HID . Этот термин был придуман Майком Ван Фландерном из Microsoft, когда он предложил комитету USB создать рабочую группу класса «Устройства ввода для человека». Рабочая группа была переименована в класс устройств интерфейса человека по предложению Тома Шмидта из DEC, поскольку предлагаемый стандарт поддерживает двунаправленную связь.

Менее распространенные HID

Требования для приложений для телефонов с Windows 8. x

Приложения для телефонов Windows 8. x могут получить доступ к API Windows. Devices. хуманинтерфацедевице , если производитель ПОДДЕРЖИВАЛ протокол HID для конкретных устройств и предоставил соответствующие данные устройства разработчикам приложений. Список поддерживаемых устройств HID, а также данные, необходимые для реализации обнаружения устройств, см. в документации производителя.

Есть много странных терминов, связанных с использованием компьютера. Возможно, вы видели «Устройство интерфейса человека» или «HID». Звучит как что-то из научно-фантастического фильма, но что именно это означает?

10 самых распространенных проблем с компьютером и их решения Практическое использование интерфейса usb в pic контроллерах Интерфейсы сканеров штрих кода: usb, rs-232, kb, usb/rs, usb/kb, hid Ответы на вопросы ит-диктант 2021

Usb hid logger - программа для протоколирования данных от hid устройств (сканеры, клавиатуры, считыватели) Внешние интерфейсы компьютера для подключения устройств - losst 10 самых распространенных проблем с компьютером и их решения - okolokompa Что такое пользовательский интерфейс: ценность, виды ui и элементы Есть много странных терминов, связанных с использованием компьютера Возможно, вы видели Устройство интерфейса человека или HID Звучит как что-то из Что такое пользовательский интерфейс?

Урок #4. Опыты с программатором PICkit2

Компания Microchip Technology Inc. выпускает недорогой программатор разработчика PICkit2, который в первую очередь используется для программирования Flash-контроллеров. Отличительной особенностью этого программатора является доступность полной документации и исходных кодов прошивки для микроконтроллера, и программы оболочки для компьютера.
PICkit2 получает питание от USB, формирует регулируемые напряжения программирования и питания, а так же имеет 3 линии входа-выхода для подключения к программируемому устройству. Для возможности обновления прошивки программатора в PICkit2 реализована программа бутлоадер.

Примеры атак

При проведении реальных HID-атак можно начать с быстрого создания локального пользователя. Демонстрирую это на примере Windows 10 сборки 1607.

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

Глянем чуть глубже и немного усложним. Подготовим FTP-сервер и загрузим на него боевую нагрузку. И вот так будет выглядеть загрузка файла и его запуск. Благодаря самой загрузке это займет чуть больше времени, но, к примеру, админская сессия того стоит.

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

Наверняка ты обращал внимание, что USB-клавиатура определяется BIOS еще до загрузки ОС. В UEFI вообще интегрирована расширенная поддержка USB-портов разных версий с готовыми профилями для HID-девайсов и USB-накопителей

Большой объем флеш-памяти современных материнок и унифицированная структура UEFI позволяют загрузить низкоуровневый бэкдор, просто вставив копеечный хакерский девайс из ардуины.

Графический пользовательский интерфейс

Этим термином чаще обозначаются UI мобильных и веб-приложений, а также игр и сервисов для развлечений.

Мобильные интерфейсыВыделяется в отдельную группу SIMP (Screen, Icon, Menu, Pointer). Подход к дизайну мобильных интерфейсов отличается от подхода к дизайну настольных приложений. Поведение пользователей при взаимодействии со смартфонами отличается от работы на компьютере из-за размера экрана и отсутствия отдельной клавиатуры с мышью/тачпадом. Элементы здесь заполняют экран полностью, а блоки и системы зависят от требований операционной системы.

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

Преимущество таких приложений в том, что их не нужно устанавливать на компьютер — все функции доступны в браузере. Создают такие приложения с помощью JavaScript, HTML и CSS.

Игровой и материальныйСвязан с механикой геймплея. Именно в нем лучше всего раскрывается сопровождающая роль интерфейса, так как игрок лучше ощущает, что движется к какой-то цели (например, победить босса и пройти уровень). Интерфейс зависит от игры: кнопки, жесты, движения мыши или взаимодействие с сенсором на экране или 3D интерфейс в VR, нажатие клавиш на джойстике.

Компьютер не включается

Вероятно, это проблема № 1, с которой сталкиваются многие из нас. Чтобы понять эту проблему, вы можете сравнить ее с нашим человеческим телом.

Когда мы болеем, у нас часто поднимается температура. Это механизм организма для борьбы с инфекцией. Точно так же, когда компьютер сталкивается с какой-либо проблемой, он обычно не включается, пока вы не исправите это.

Существуют сотни причин, по которым ПК не загружается. Проблемы могут варьироваться от сбоя питания до заражения вирусом. Обычно, следуя инструкциям, приведенным ниже, ваш компьютер должен запускаться.

1. Проверьте блок питания

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

2. Убедитесь, что монитор или дисплей работает

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

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

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

3. Устраните проблемы с внешним оборудованием

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

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

4. Переустановите систему

Если ни один из шагов не работает, последнее, что вам нужно сделать, это переустановить Windows. Потому что до этого момента вы можете быть уверены, что это проблема программного, а не аппаратного обеспечения.

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

Интерфейс Universal Serial Bus (USB) заменил последовательные и параллельные порты, PS/2 игровые порты и зарядные устройства. Этот порт может применяться для передачи данных, выступать в качестве интерфейса для подключения периферийных устройств и даже использоваться в качестве источника питания. Сейчас существует четыре вида USB: Type-A, Type-B, Type-C, micro-USB и mini-USB. С помощью любого из них может быть выполнено подключение внешних устройств к компьютеру.

USB Type-A

Порт USB Type-A имеет 4-контактный разъем. Существует три различных, совместимых версии — USB 1.1, USB 2.0 и USB 3.0. Последний является общим стандартом и поддерживает скорость передачи данных до 400 Мбит/сек.

Позже был выпущен стандарт USB 3.1, который поддерживает скорость до 10 Гбит/сек. Черный цвет обозначает USB 2.0, а USB 3.0 — помечена синим. Вы можете видеть это на изображении:

Схема подключения контактов:

USB Type-C

Type-C — это последняя спецификация USB и в этот разъем можно вставлять коннектор любой стороной. Планируется, что со временем она заменит Type-A и Type-B.

Интерфейс мозг-компьютер (имк) Интерфейсы: терминология, разновидности, особенности otus Компьютерный жаргон: словарик некоторых терминов и их разбор Компьютерные термины It-диктант 13 сентября 2021 года ответы на вопросы Профили bluetooth — что это и зачем они нужны? | androidlime 10 самых важных терминов, связанных с компьютерными вирусами »webnots - my road Создание usb дескрипторов для класса custom hid. Что такое устройство с интерфейсом пользователя (hid)? - cpab Что такое устройство интерфейса пользователя (hid)?

Порт Type-C состоит из 24 контактов и может пропускать ток до 3А. Эта особенность используется для современной технологии быстрой зарядки.

Типы устройств с человеческим интерфейсом

Как упоминалось ранее, USB-устройства являются наиболее распространенными устройствами с интерфейсом пользователя, которые вы увидите, но есть и другие типы.

USB-устройства относятся к классу «USB-HID». Сюда входят обычные предметы, такие как клавиатуры, мыши, веб-камеры, трекпады и игровые контроллеры. К другим устройствам USB-HID относятся термометры, аудиоинструменты, медицинское оборудование, телефоны и тренажеры.

Другой распространенный тип — Bluetooth-HID. Это тот же протокол USB-HID с небольшими изменениями для Bluetooth. Как и следовало ожидать, сюда входят устройства, похожие на USB-HID, но они подключаются через Bluetooth. Мышь Bluetooth будет работать независимо от того, подключена она к ПК с Windows, Mac или Chromebook.

Устройства с интерфейсом пользователя — одни из самых распространенных устройств, которые мы используем с компьютерами. Нам не очень нравится, насколько они просты в использовании. Было время, когда все было не так просто.

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

В истории компьютеров было много достижений, но стандарт Human Interface Device оказался очень успешным.

ПК становится медленным

Я знаю, что вы чувствуете, когда требуется всего 5 минут, чтобы открыть только приложение. Ну, это еще одна распространенная проблема, с которой люди сталкиваются в своей повседневной жизни.

Основная причина обычно связана с продолжительностью работы компьютера. Компьютер старше 2 лет будет испытывать это независимо от их технических характеристик.

1. Найти ресурсоёмкую программу

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

Чтобы узнать, откройте диспетчер задач. Вы можете щелкнуть правой кнопкой мыши на панели задач и выбрать опцию «Диспетчер задач» или нажать Ctrl + Shift + Escape, чтобы открыть ее. В Windows 8, 8.1 и 10.

Щелкните заголовки «CPU», «Memory» и «Disk», чтобы отсортировать список по приложениям, использующим наибольшее количество ресурсов. Если какое-либо приложение использует слишком много ресурсов, вы можете закрыть его как обычно — если вы не можете, выберите его здесь и нажмите «Завершить задачу», чтобы принудительно закрыть его.

2. Отключить запуск программы

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

В Windows 8, 8.1 и 10 теперь есть диспетчер запуска в диспетчере задач, который вы можете использовать для управления программами запуска.

Щелкните правой кнопкой мыши панель задач и выберите «Диспетчер задач» или нажмите Ctrl + Shift + Escape, чтобы запустить его. Перейдите на вкладку «Автозагрузка» и отключите автозапуск приложений, которые вам не нужны.

Windows подскажет вам, какие приложения больше всего замедляют процесс запуска.

3. Сканирование на наличие вредоносного и рекламного ПО.

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

Обычно это небольшие вредоносные программы, которые вылавливаются из Интернета, когда мы что-то просматриваем или скачиваем.

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

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

Делаем хакерский девайс за пять долларов

Приступим к практической части на примере платы Arduino micro Pro и переходника mini-USB USB Type A. В качестве основной ОС используется Kali Linux (4.14.0-kali3-amd64), но на других сборках Linux и в Windows проблем возникнуть не должно. Arduino IDE v. 1.8.6 скачана с официального сайта. В качестве жертвы выбран тот же компьютер.

Готовим софт

Скачиваем дистрибутив, распаковываем. В каталоге лежит файл с символичным названием install.sh. Его и запустим на исполнение:

Минуту-две смотрим на надпись Adding desktop shortcut, menu item and file associations for Arduino IDE. и вуаля! На рабочем столе появляется ярлык для запуска.

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

Командой lsusb можно проверить, что устройство определено верно и все идет по плану (Arduino Micro Pro определяется как Leonardo).

Следующая команда покажет порт, на котором повис наш Leonardo:

Теперь можно открыть саму IDE. Сразу после запуска идем в меню «Инструменты» и в разделе «Платы» выбираем Arduino Leonardo. Там же в «Инструментах» выбираем нужный порт (он там, скорее всего, будет один) из списка tty.

После этих действий связь платы с компьютером установлена, программное обеспечение настроено, можно переходить к написанию скетча (так называют код для Arduino-совместимых макетных плат).

После запуска Arduino IDE картинка будет следующая.

Есть еще один вариант запустить подобие Arduino IDE. На сайте представлен Arduino Web Editor. На мой взгляд, он менее удобен, но тут уже кому как по вкусу. Для его использования будет необходимо зарегистрироваться на сайте либо авторизоваться через Google-аккаунт. Также для связи браузера с устройством потребуется установить плагин (он есть для Chrome и Firefox). Его удобство в том, что все написанные скетчи будут онлайн (с любой точки земли можно получить доступ к ним), но я в таких тонких деталях предпочитаю локальную работу.

Что такое устройство для человека (hid)? - thefastcode Устройство интерфейса человека Что такое пользовательский интерфейс Что такое интерфейс пользователя? Внешние интерфейсы компьютера для подключения устройств Интерфейс мозг-компьютер (имк) Интерфейсы: терминология, разновидности, особенности Компьютерные термины It диктант 2021 для студентов вузов и учреждений спо — ответы

В остальном редакторы похожи.

Изначально присутствует заготовка из void setup() и void loop() . Напомню, что код, написанный в функции setup(), будет исполняться сразу при подаче питания на плату, причем он исполнится один раз. Функция loop() отреагирует на питание таким же образом, вот только повторяться действие будет постоянно (цикл с бесконечным счетчиком и неизменным кодом на каждый проход).

Типы устройств интерфейса пользователя

Как упоминалось ранее, USB-периферийные устройства являются наиболее распространенными устройствами с интерфейсом пользователя, которые вы увидите, но есть и другие типы.

USB-устройства относятся к классу «USB-HID». Это включает в себя обычные вещи, такие как клавиатуры, мыши, веб-камеры, трекпады и игровые контроллеры. Другие устройства USB-HID включают термометры, аудио инструменты, медицинское оборудование, телефоны и тренажеры.

Другой распространенный тип — Bluetooth-HID. Это тот же протокол USB-HID с небольшими изменениями для Bluetooth. Как и следовало ожидать, сюда входят устройства, аналогичные USB-HID, но они подключаются через Bluetooth. Мышь Bluetooth будет работать независимо от того, подключена ли она к ПК с Windows, Mac или Chromebook.

Устройства интерфейса пользователя — одни из наиболее распространенных устройств, которые мы используем с компьютерами. Мы не очень ценим, насколько легко ими пользоваться. Было время, когда это было не так просто.

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

В истории компьютеров было много достижений, но стандарт Human Interface Device имел оглушительный успех.

Заключение

  • HID или Human Interface Devices — основные устройства, которые используются для работы с персональным компьютером (например мышь, клавиатура).
  • Отключать без необходимости не стоит.

HID button drivers

Use the Microsoft-provided button driver for GPIO buttons; otherwise, implement your driver that injects HID data to the operating system.

Buttons (Power, Windows, volume and rotation lock) are typically used for tasks that occur while the physical keyboard is not available to the user, on form factors such as convertibles or slates. Buttons declare themselves to the operating system as HID devices by supplying HID button report descriptors. This allows the system to interpret the purpose and events of those buttons in a standardized way. When a button state changes, that event is mapped to a HID Usages. A HID transport minidriver reports those events to upper-level drivers that then send details to HID clients in user mode or kernel mode.

For physical general-purpose I/O (GPIO) buttons, the HID transport minidriver is a Microsoft-provided in-box driver that reports the events based on the interrupts that are received on the defined GPIO hardware resources.

The in-box driver cannot service a button that is not wired to an interrupt line. For such buttons, you need to write a driver that exposes the button as a HID button and reports state changes to the HID class driver (Microsoft-provided). Your driver could be a HID source driver or a HID transport driver.

Профили Bluetooth: что это такое и для чего они нужны

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

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

профили bluetooth

Профили Bluetooth, для чего они нужны и для чего они нужны?

Please enable JavaScript

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

Расширенный профиль распространения аудио (A2DP)

Профиль A2DP является наиболее используемым аудиоустройствами, как следует из его названия. Характеризуется определением как передается мультимедийное аудио с одного устройства на другое, например, со смартфона на беспроводные наушники, связанные с ним.

Профиля Bluetooth

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

Протокол передачи файлов (FTP)

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

Логически, если вы хотите просто передать файлы, вы должны выбрать этот профиль для правильной работы.

Разделить профиль ID (DIP)

Этот профиль Bluetooth идентифицирует устройство за пределами ранее определенного типа устройства, с которым оно совместимо. Этот профиль позволяет одному устройству «видеть» другое, идентифицировать его.

Perfil идентификатор устройства Bluetooth

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

Профиль громкой связи (HFP)

Это один из наиболее часто используемых профилей. Как мы указывали ранее, если у вас есть автомобиль, который позволяет подключить смартфон через Bluetooth, в дополнение к профилю A2DP для музыки, вам потребуется профиль HFP, чтобы можно было принимать и совершать звонки с автомобильной аудиосистемы.

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

Профиль интерфейса пользователя (HID)

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

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

Профиль доступа к локальной сети (LAP)

Наконец, это профиль Bluetooth, который обычно есть почти на всех совместимых устройствах. Необходимо иметь возможность доступа к глобальной сети, локальной сети или Интернету, который имеет физическое подключение к сети. Другими словами, это тот, который используется, например, для совместного использования Интернета между устройствами.

В некоторых случаях вы сможете проверить, что устройство не имеет этого профиля, и вместо этого вы найдете другой называется Bluetooth PAN , более современная версия профиля LAP, который заменяет его.

STM32 и USB-HID — это просто

На дворе 2014 год, а для связи микроконтроллеров с ПК самым популярным средством является обычный последовательный порт. С ним легко начать работать, он до примитивности прост в понимании — просто поток байт.
Однако все современные стандарты исключили COM порт из состава ПК и приходится использовать USB-UART переходники, чтобы получить доступ к своему проекту на МК. Не всегда он есть под рукой. Не всегда такой переходник работает стабильно из-за проблем с драйверами. Есть и другие недостатки.
Но каждый раз, когда заходит разговор о том, применять USB или последовательный порт, находится множество поклонников логической простоты UART. И у них есть на то основания. Однако, хорошо ведь иметь альтернативу?

Меня давно просили рассказать как организовать пакетный обмен данными между ПК и МК на примере STM32F103. Я дам готовый рабочий проект и расскажу как его адаптировать для своих нужд. А уж вы сами решите — нужно оно вам или нет.

У нас есть плата с современным недорогим микроконтроллером STM32F103C8 со встроенной аппаратной поддержкой USB, я рассказывал о ней ранее

Я сказал, что у последовательного порта есть и другие недостатки:
-часто COM порт отсутствует в ПК или ноутбуке
-питание устройству нужно подавать отдельно
-даже при наличии COM порта в ПК необходимо согласовывать уровни сигналов: ПК использует интерфейс RS232 с дифференциальными уровнями сигналов +15В и -15В, а микроконтроллеры — TTL уровни (+5В, +3.3В, униполярные).
-часто в системе образуются десятки виртуальных COM портов и найти тот порт, что соответствует вашему устройству может оказаться непросто.
В свою очередь USB с нами уже многие годы и имеет свои преимущества:
-Возможность подачи питания от HOST устройства
-Удобная реализация пакетного обмена
-Возможность одновременного подключения к устройству несколькими программами
-Возможность однозначной идентификации подключенного устройства
-Аппаратная поддержка во многих современных МК, что исключает необходимость переходников
Функционал USB чрезвычайно богатый, но это порождает проблему — разобраться не так просто, как с последовательным интерфейсом. Есть отдельный класс устройств — USB-HID, которые не требуют установки драйверов, специально предназначены для взаимодействия с человеком и различными устройствами ввода-вывода. Идеально для организации обмена данными с МК. Лично мне нравится пакетный режим обмена. Это удобная абстракция. К тому же разбирать пакетные сообщения несколько проще и удобнее, чем работать с простым потоком байт.

Выбор профиля HID

USB-HID — довольно обширный класс устройств, поэтому прежде всего придется выбрать какое именно устройство мы будем создавать.
Мы можем создать эмуляцию клавиатуры, мыши, джойстика и других устройств ввода, а можем создать свое устройство, чтобы не зависеть от довольно жестких рамок стандарта и свободно обмениваться данными с ПК.
Я расскажу как cделать Custom HID device. Это дает максимальную свободу. Чтобы не затягивать статью, постараюсь рассказать максимально кратко — описаний стандарта в сети и без меня много, но лично мне они слабо помогли, когда понадобилось решить конкретную задачу.

Структура проекта
  • Папка USB-FS с библиотекой «STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver» версии 4.0.0.
  • В папках Inc и Src файлы:
    platform_config.h — здесь собраны определения, касающиеся конкретной платы и семейства МК
    stm32_it.h, stm32_it.c — здесь определены обработчики прерываний
    usb_conf.h, usb_endp.c — здесь определяются конечные точки (Endpoint), размеры и адреса их буферов, функции-обработчики
    usb_desc.h, usb_desc.c — здесь собрана информаци о самом устройстве — как оно будет определяться при подключении к ПК и определены размеры и формат пакетов данных
    hw_config.c — здесь собрана вся работа с отправкой данных на ПК
    hw_config.h, usb_istr.h, usb_prop.h, usb_pwr.h
    usb_istr.c, usb_prop.c, usb_pwr.c — нужны для работы USB-FS библиотеки, но лезть в них необязательно
Инициализация USB

В функции Set_System() производится настройка пина подтяжки линии D+ к питанию для программного подключения/отключения устройства от ПК (в нашей плате не используется), настраивается прерывание и инициализируются светодиоды и кнопки для демонстрационного проекта.
В USB_Interrupts_Config() настраиваются прерывания в зависимости от семейства МК (поддерживаются F10x, F37x, L1x).
Функция USB_Init() запускает работу USB модуля. Если временно нужно отключить для отладки работу с USB, просто закомментируйте эту строку.
Далее в бесконечном цикле проверяется, удалось ли сконфигурировать USB модуль при подключении к ПК. Если все сработало верно и устройство успешно подключилось, ПК включен и не находится в режиме энергосбережения, то состояние будет CONFIGURED.
Далее проверяется, была ли закончена предыдущая передача данных в ПК и если да, то готовится к отправке новый пакет в функции RHIDCheckState()

Размер пакета и частота передачи

В комментариях все довольно прозрачно. Обратите внимание на DEVICE_VER_L, DEVICE_VER_H — это константы из usb_desc.h, которые вы можете изменить для идентификации версии своего устройства.

Здесь стоит обратить внимание на константу wMaxPacketSize — она определяет максимальный размер пакета, которым мы будем обмениваться с ПК. Проект так настроен, чтобы при ее изменении менялись и размеры буферов. Но не забывайте, что больше 0x40 по стандарту указывать не стоит. С этой константой будьте осторожны — если передаваемый пакет будет отличаться по размеру — будут проблемы!
Следующая за ним константа с комментарием bInterval — это период опроса устройства в миллисекундах. Для нашего устройства задано 32мс.

Это самый важный дескриптор — он описывает протокол обмена и функционал устройства. Его формирование — не самая простая задача. Если допустить ошибку при формировании дескриптора — устройство перестанет работать. Формат дескриптора очень жесткий. Есть даже специальная утилита HID Descriptor tool. А в корне проекта лежит файл «RHID.hid» с описанным выше дескриптором для редактирования в этой утилите. Но если вы не понимаете, что делаете, лучше не лезть.
Для простоты я сделал две константы:
RPT3_COUNT — размер OUTPUT буфера в байтах для передачи пакета в МК (в примере — 1 байт)
RPT4_COUNT — размер INPUT буфера в байтах для передачи пакета в ПК (в примере — 4 байта)
Размер любого из этих буферов не должен превышать wMaxPacketSize. Меньше — можно.
Кстати, превратить Custom HID в другой HID девайс, например, клавиатуру или джойстик можно фактически только переписав ReportDescriptor и изменив класс и подкласс устройства в дескрипторе конфигурации.

Что такое Report
  • REPORT_ID = 1 и 2 — команда МК включить/выключить LED1/LED2. Содержит поле размером 1 бит с желаемым состоянием светодиода и поддерживает отправку как методом SET_REPORT так и методом SET_FEATURE (об этом чуть позже).
  • REPORT_ID = 3 — передает один байт в МК. Просто, чтобы показать, как передать данные МК. Мы будем передавать положение ползунка.
  • REPORT_ID = 4 — это репорт для передачи данных ПК. Возвращает информацию о текущем состоянии светодиодов, кнопок (если они есть) и возвращает переданный в репорте с байт, чтобы показать, что данные приняты.
Цикл обмена

Массив uint8_t Buffer[RPT4_COUNT+1] определен как размер полезных данных входящего (рассматривается всегда с точки зрения хоста) пакета + байт ID. Это важно — если размер буфера будет отличаться — будут проблемы. Поэтому для изменения размеров буфера редактируйте значение константы в usb_desc.h.
В функции мы собираем данные в пакет, устанавливаем флаг PrevXferComplete = 0, говорящий о том, что данные отправляются и вызываем функциии библиотеки USB_SIL_Write и SetEPTxValid для отправки данных хосту.
Все, на этом передача данных хосту закончена.

С приемом данных немного сложнее — есть два способа послать данные девайсу — один из них заключается в использовании описанных в дескрипторе репорта возможностей устройства (Features), с соответствующими параметрами посредством функции SET_FEAUTRE. Это некоторая абстракция, для красивого управления устройством с кучей функций, чтобы можно было вызывать осмысленные функции, а не просто слать поток байт.
Второй способ — это работа с устройством как с файлом — просто записываем в него пакет как в файл. Этот метод называется SET_REPORT. На деле работает чуть-чуть медленнее.
Наше устройство поддерживает оба метода, о чем мы и сказали хосту в дескрипторе репортов.

Обработка SET_FEATURE

Данные, отправленные методом SET_FEAUTRE обрабатываются в usb_prop.c

Здесь мы проверяем первый байт в репорте и в соответствии с ним обрабатываем остаток пакета — управляем светодиодами или просто берем байт, отправленный нам хостом и кладем в пакет для последующей отправки обратно в функции RHIDCheckState.
Под Report_Buf зарезервировано wMaxPacketSize байт, чтобы влез любой пакет, который нам отправит хост.

Данные, отправленные методом SET_REPORT обрабатываются в usb_endp.c

Здесь почти то же самое, только нужно самостоятельно забрать данные вызовом USB_SIL_Read(EP1_OUT, Receive_Buffer) и в конце сообщить, что мы закончили вызовом SetEPRxStatus(ENDP1, EP_RX_VALID);

Настраивать устройство, передавать и принимать данные в пакетах нужного размера с нужной нам периодичностью мы научились.
Собираем проект и прошиваем в устройство.
Работать, это будет примерно так:

Проект поддерживает взаимодействие с утилитой USB HID Demonstrator от ST Microelectronics.
Страница Device capabilities отображает возможности, описанные в Report Descriptor.
Input/Output transfer позволяет вручную поотправлять данные девайсу и посмотреть пакет, который от него приходит.
Graphic view позволяет управлять светодиодами, чекбоксами Led 1, Led 2, настроив соответствующий им Report ID, а также передавать байт ползунком (ReportID=3)

Также я написал маленькую демо-софтинку, которая автоматически определяет подключение к компу и отключение нашего девайса по его VID и PID, отображает статус — подключено/отключено индикатором рядом с чекбоксом Auto Connect

Радиокнока Send using позволяет выбрать метод отправки данных девайсу.
Report: отображает полученный от девайса пакет побайтно, начиная с ReportID.
Щелкая по светодиодам ниже — управляем светодиодами девайса. Их состояние отображает текущее состояние девайса. Считывается из репорта от девайса.
Перемещая ползунок, мы отправляем Report с и значением, соответствующим позиции ползунка. Девайс вернет это значение в 4 байте репорта.
В выпадающем комбобоксе отображаются HID девайсы, найденные в системе и если найден наш девайс, то отображается его название.

Скачать все, что необходимо, можно на GitHub. В составе:
DT — HID Descriptor tool
tstHID-STM32F103 — проект для EmBlocks
USB HID Demonstrator — утилита от ST Microelectronics
HIDSTM32.exe — моя демо-софтинка на Delphi аналогичного фукнционала, но не требующая настройки

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

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

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