Оглавление:

Использование инфракрасной клавиатуры Palm с устройствами Android: 5 шагов
Использование инфракрасной клавиатуры Palm с устройствами Android: 5 шагов

Видео: Использование инфракрасной клавиатуры Palm с устройствами Android: 5 шагов

Видео: Использование инфракрасной клавиатуры Palm с устройствами Android: 5 шагов
Видео: 8 ПРИЛОЖЕНИЙ на Андроид, которые необходимо УДАЛИТЬ прямо сейчас! 2024, Июль
Anonim
Использование инфракрасной клавиатуры Palm с устройствами Android
Использование инфракрасной клавиатуры Palm с устройствами Android
Использование инфракрасной клавиатуры Palm с устройствами Android
Использование инфракрасной клавиатуры Palm с устройствами Android
Использование инфракрасной клавиатуры Palm с устройствами Android
Использование инфракрасной клавиатуры Palm с устройствами Android

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

Еще у меня было устройство Brainlink. Это довольно симпатичное маленькое устройство для посредничества между разными устройствами. У него есть процессор atxmega16, аккумулятор, несколько датчиков, радио Bluetooth, множество портов, чехол и несколько обновляемых прошивок для управления всем этим. Brainlink больше не выпускается, но у SurplusShed он есть за 39 долларов, и у них есть периодические скидки 30-50% на все. Получил за 20 долларов. Вы также можете использовать свою собственную плату atxmega plus Bluetooth (схемы здесь), но ваши затраты могут быть не ниже.

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

  • Беспроводная клавиатура PalmOne
  • Brainlink
  • 3- или 8-контактный шнур для Brainlink (JST-разъем с шагом 1,25 мм); вы можете использовать 8-контактный шнур, входящий в комплект Brainlink, но вы захотите заказать больше для других проектов.
  • Припой и утюг
  • Электроизоляционная лента
  • Дополнительно: застежка-липучка

Раньше я использовал Brainlink для подключения к гарнитуре Mindflex EEG и Roomba. Это действительно здорово для задач моста между последовательным интерфейсом и Bluetooth. Я просто делаю разные разъемы для разных устройств и могу перемещать Brainlink между ними.

Шаг 1. Справочная информация

Фон
Фон
Фон
Фон
Фон
Фон

Не стесняйтесь пропустить это фоновое описание.

Беспроводная клавиатура PalmOne отправляет свои данные через ИК-светодиод на стебле, используя ИК-порт. Хотя для декодирования данных можно использовать ИК-детектор, есть более простой способ. Если сложить клавиатуру наполовину, обнажатся три медные полоски. Средний - земля, а нижний - линия передачи. При поднесении их к осциллографу проверяется, что сигнал на линии передачи закодирован примерно на 9600 (точнее: 9760) 8 N 2, с высоким уровнем около 1,56 В и с формированием импульса irDA: 1 высокий, а положительные импульсы занимает 3/16 битового времени.

К сожалению, все это означает, что мы не можем просто подключить его к простому модулю Bluetooth (по крайней мере, не сделав для него специальную прошивку), как я это сделал в моем проекте Mindflex. К счастью, atxmega в Brainlink имеет режим irDA для своего UART. Просто добавить немного кода в прошивку Brainlink, позволяющую коду «J1» переключить его в режим IrDA. Я ожидал, что высокого уровня 1,56 В будет недостаточно для atxmega, но я был приятно удивлен, когда подключил медные полоски к GND и UART Receive на Brainlink и просмотрел результаты в Realterm: я получал хорошие шестибайтовые последовательности с клавиатуры..

Оказалось, что шестибайтовая последовательность - это только упаковка для однобайтового скан-кода (с высвобождением старшей битовой маркировки). В частности, последовательность выглядит так: FF C0 xx yy zz C1, где xx - это скан-код, yy - xx xor'ed с FF, а zz - xx xor'ed с 67. (Фактически, скан-код передается три раза: один раз очистить и дважды закодировать. Я предполагаю, что это связано с тем, что irDA склонна к повреждению, и поэтому вы можете использовать декодирование большинства для получения байта.) После этого единственной аппаратной трудностью было найти место для припайки разъема на клавиатуре. И это было несложно.

Что касается программного обеспечения, хотя, возможно, я мог бы переключить модуль Bluetooth RN-42 в Brainlink в режим HID, у него был потенциал блокировки, поскольку, если бы модуль не переключился обратно на SPP, я не смог бы разговаривать с Brainlink по протоколу Bluetooth.

Проще всего было просто взять приложение для клавиатуры BluezIME с открытым исходным кодом, которое позволяет различным геймпадам Bluetooth работать как контроллеры Android, и добавить режим для шестибайтовых последовательностей беспроводной клавиатуры Palm One. В результате получилось бесплатное приложение P1 Keyboard в Google Play (исходный код на github).

Шаг 2. Обновление прошивки Brainklink

Обновление прошивки Brainklink
Обновление прошивки Brainklink
Обновление прошивки Brainklink
Обновление прошивки Brainklink

Чтобы включить поддержку последовательных данных в формате IrDA на Brainlink, вам необходимо загрузить мою специальную прошивку. Это легко с устройством Android и программным обеспечением для загрузки прошивки, которое я написал (кстати, вы можете изменить загрузчик, чтобы он был универсальным загрузчиком флэш-памяти atmega / atxmega AVR109).

  1. Подключите Brainlink (PIN-код 1234) к устройству Android - вам все равно придется это сделать, чтобы подключить клавиатуру.
  2. Загрузите мой загрузчик прошивки Brainlink из Google Play (исходники загрузчика и прошивки на github).
  3. Выключите Brainlink и подключите контакты 8 и 2 (как ни странно, контакт 8 - крайний левый контакт, а контакт 1 - справа) к 8-контактному порту.
  4. Удерживая контакты подключенными, включите Brainlink. Его светодиод должен стать синим.
  5. Выберите желаемую кастомную прошивку (если у вас Roomba, одна из прошивок лучше работает с новыми Roomba, а другая - со старыми) и нажмите «Загрузить».
  6. Так и должно быть, хотя, если у вас возникнут проблемы с подключением, вам, возможно, придется попробовать несколько раз.

Brainlink стал умнее: он не только поддерживает считывание данных с некоторых устройств IrDA (после обнаружения немодулированного сигнала), но также работает как стандартное соединение Roomba с Bluetooth и может захватывать данные с гарнитуры Mindflex EEG. И прошивка обратно совместима.

Шаг 3. Подключение Brainlink к клавиатуре

Подключение Brainlink к клавиатуре
Подключение Brainlink к клавиатуре
Подключение Brainlink к клавиатуре
Подключение Brainlink к клавиатуре
Подключение Brainlink к клавиатуре
Подключение Brainlink к клавиатуре

Вам понадобится соединитель шнурка, который подходит к трем крайним левым контактам 8-контактного порта Brainlink. Это разъемы JST с расстоянием между контактами 1,25 мм. Можно использовать трехконтактный разъем (на мой выбор) или 8-контактный. Вы можете использовать 8-контактный разъем, который поставляется с Brainlink, но тогда вы захотите заказать их больше (я нашел 3- и 8-контактные разъемы дешево на ebay).

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

На 8-контактном порте Brainlink крайнее левое соединение - это земля (крайний левый контакт 8-контактного порта), а третий контакт слева - это последовательный прием. Припаяйте провод заземления на разъеме Brainlink к линии заземления на клавиатуре, а провод приема на Brainlink - к сигнальной линии. Вы можете обнаружить, что в области клавиатуры нет места для паяного соединения и разъема в стиле JST. это было внутри клавиатуры. Если это так, просто удалите соединитель в стиле JST и припаяйте оба трио соответствующих проводов (два провода заземления клавиатуры и один провод заземления Brainlink; два сигнальных провода клавиатуры и один провод приема Brainlink).

Заманчиво отсоединить сторону ИК-светодиода от разъема в стиле JST, чтобы продлить срок службы батареи. Не делай этого. Сигнал развалится, если вы это сделаете. Я проверил с помощью осциллографа.

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

Наконец, когда все будет сделано, либо закройте ненужные контакты на тросе Brainlink, либо просто отключите ненужные провода.

Вы также можете приклеить липучку к Brainlink и клавиатуре, чтобы удерживать Brainlink на месте.

Шаг 4. Использование с устройством Android

Использование с устройством Android
Использование с устройством Android
  1. Подключите Brainlink к своему устройству Android (PIN-код 1234).
  2. Установите приложение My P1 Keyboard.
  3. Запустите настройки клавиатуры P1 (значок для него должен быть в вашей программе запуска).
  4. Включите клавиатуру P1 в настройках метода ввода Android. В более новых версиях Android вы можете включить клавиатуру P1, выбрав «Выбрать IME» в настройках клавиатуры P1 и нажав «Настроить методы ввода». (Вы получите предупреждение о том, что клавиатура видит все ваши пароли и т. Д. Это стандартное предупреждение Android: конечно, драйвер клавиатуры видит все, что вы вводите. Если вам страшно, посмотрите исходный код клавиатуры и создайте твой собственный.)
  5. Нажмите на «Выбрать устройство» и выберите свой Brainlink (мой отображается как RN42-A308).
  6. Нажмите «Выбрать IME» в настройках клавиатуры P1 и выберите «Клавиатура P1».
  7. Подключение может занять некоторое время, но вы должны получить сообщение о подключении, если все пойдет хорошо.

И вы сделали! Не стесняйтесь делать пожертвования автору BluezIME, на котором основана клавиатура P1.

В Android 4.0+, когда в текстовых полях будет отображаться уведомление, позволяющее переключать методы ввода, поэтому вы можете легко вернуться к другому методу ввода.

Драйвер, который я написал для клавиатуры, очень прост. Он поддерживает обычные клавиши, но не поддерживает многие специальные клавиши с диакритическими знаками или другие специальные функции. Я добавил поддержку использования двух кнопок с домом (FN-1 и клавиша слева от пробела) в качестве главного экрана, используя клавишу Windows и FN-2 в качестве меню и FN-3 в качестве поиска. Кроме того, ctrl-a, c, v, x работают должным образом.

Он работает достаточно хорошо, поэтому я написал полный первый черновик этого руководства на своем телефоне Galaxy S2 с клавиатурой.

Шаг 5: другие клавиатуры

Другие клавиатуры
Другие клавиатуры
Другие клавиатуры
Другие клавиатуры

Если вы хотите поэкспериментировать с другими инфракрасными клавиатурами, вам нужно будет выяснить, какие сигналы они отправляют и с какой скоростью передачи. После обновления Brainlink до IrDA-совместимого программного обеспечения вы можете подключиться с помощью RealTerm к Brainlink. Когда вы увидите повторяющийся сигнал «BL», который является сигнатурой Brainlink, введите:

* J1Z

Звездочка требует внимания, J1 переключается на IrDA 9600 бод (просто нужно быстро ввести 1 после J, иначе вы получите сообщение об ошибке). Z означает режим моста последовательного интерфейса Bluetooth.

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

Чтобы выйти из режима последовательного моста, выключите и включите Brainlink.

Я предполагаю, что 9600 бод - правильная скорость. В противном случае вы можете изменить скорость передачи данных Brainlink. Я бы начал с попытки 57600 бод:

* J1u57Z

а затем 1200 бод:

* J1u12Z

Как только вы выясните, как клавиатура отправляет свои данные, просто измените код моего драйвера. Наверное, достаточно просто изменить числа в PalmOneWirelessKeyboard.java.

Рекомендуемые: