Поворотна клавіатура

У мене є колега, який любить згадувати старі добрі часи, коли в його бабусі й дідуся на стіні був поворотний телефон, який вони орендували в телефонній компанії. Поєднайте це з його відданістю десятиклавішній клавіатурі на повнорозмірній клавіатурі та тим фактом, що в моєму кошику для запчастин був старий поворотний циферблат, і шлях до цьогорічної першоквітневої витівки був очевидним. /p>

Звичайно, я маю на увазі, що купити дешеву механічну клавіатуру за 13 доларів на eBay і зламати поворотний диск було найрозумнішим рішенням.

Прошивка

Хоча найпростіший шлях із подібним проектом виготовлення лише для естетичної повноти, я вважав вкрай важливим, щоб циферблат справді працював для цифрового введення – тим більше, що я також планував видалити рядок цифр, таким чином змусивши використання поворотного диска для введення цифр або символів.

Мій поворотний диск має дві основні пари контактів. Один відкривається, коли циферблат переміщується за положення 1, а інший створює характерну серію імпульсів після відпускання (один імпульс на цифрове положення). Незважаючи на те, що можна використовувати переривання зміни контакту, часовий масштаб настільки великий, що очікування зайнятості є прийнятним. Для цього я використав DFRobot Beetle, оскільки його вбудований ATMega32u4 забезпечує власну функцію USB HID.

while (digitalRead(ACTIVE)) // Active-low { ціле число = 0; while (!digitalRead(ACTIVE)) { if (numericRead(PULSE)) { рахунок += 1; затримка (50); } } якщо (рахунок >= 2) { кількість /= 2; кількість = (рахунок == 10) ? 0: підрахунок; Keyboard.print(count); } }

Через проблеми з усуненням дребезгу здається, що кожен імпульс зчитується двічі. У якийсь момент я мав би поглянути на нього, щоб переконатися, у чому проблема, але він працює досить добре, як є. (Моя перша спроба мала затримку лише 10 мс, що емпірично призвело до семикратного зчитування кожного імпульсу…)

Електричний

Для живлення цієї клавіатури мені, здається, потрібні два кабелі, один для Arduino, а інший для оригінального контролера клавіатури. Однак це дещо незручно. Найбільш доцільною для мене була топологія — вставити USB-концентратор у клавіатуру, припаявши Arduino та контролер клавіатури до входів пристрою концентратора.

Це дозволило мені припаяти вбудований порт USB клавіатури до вихідного з’єднання концентратора. Отже, коли я підключаю фізичну клавіатуру до комп’ютера, я підключаю USB-концентратор, який дозволяє з’єднувати обидва пристрої, зберігаючи ілюзію USB-пристрою з одним кабелем. Найдешевший хаб із корисним форм-фактором, який я міг знайти, — це дивний трипортовий звір.

Надзвичайно дріжджовий USB-концентратор

Як цікаво, верхній тригерний порт цього концентратора справді сумісний зі SuperSpeed: пари SSRX+/- і SSTX+/- є повністю незалежним інтерфейсом до пари D+/-, яка використовується для Full-Speed ​​​​або Висока швидкість. Швидкість​​USB, тому її можна направляти безпосередньо до порту без проміжного концентратора.

Чіп, який виконує всю важку роботу в цьому концентраторі, — це монолітний HS8836A, який нібито розроблений для високошвидкісного трафіку USB і має неймовірно низьку кількість допоміжних компонентів.

Довідкова схема HS8836A

У моєму випадку мені довелося відпаяти наявні порти досить чисто, щоб уникнути розплавлення мікросхеми концентратора (я точно не розплавив перший, який замовив), і підключити сигнали USB від клавіатури та Arduino. Зверніть увагу, наскільки ця плата компактна завдяки HS8836A:

USB Hub PCB

Я використовував екрановані диференціальні лінії від джгута дисплея LVDS iMac для підключення даних до Arduino, тому що вони сиділи в моїй купі сміття та не втікали досить швидко. Я підозрюю, що імпеданс зовсім вимкнений, але USB 1.1 надзвичайно надійний.

Клавіатура

Щоб замінити клавішу на поворотний циферблат, мені довелося видалити всі перемикачі з цифрової клавіатури, що було відносно легко через те, що ця клавіатура має односторонню друковану плату, а мій паяльний присосок добре піднесений вгору.

Клавіші цифрової клавіатури видалено з клавіатури

Заміна основи циферблата на друковану плату була б...

Поворотна клавіатура

У мене є колега, який любить згадувати старі добрі часи, коли в його бабусі й дідуся на стіні був поворотний телефон, який вони орендували в телефонній компанії. Поєднайте це з його відданістю десятиклавішній клавіатурі на повнорозмірній клавіатурі та тим фактом, що в моєму кошику для запчастин був старий поворотний циферблат, і шлях до цьогорічної першоквітневої витівки був очевидним. /p>

Звичайно, я маю на увазі, що купити дешеву механічну клавіатуру за 13 доларів на eBay і зламати поворотний диск було найрозумнішим рішенням.

Прошивка

Хоча найпростіший шлях із подібним проектом виготовлення лише для естетичної повноти, я вважав вкрай важливим, щоб циферблат справді працював для цифрового введення – тим більше, що я також планував видалити рядок цифр, таким чином змусивши використання поворотного диска для введення цифр або символів.

Мій поворотний диск має дві основні пари контактів. Один відкривається, коли циферблат переміщується за положення 1, а інший створює характерну серію імпульсів після відпускання (один імпульс на цифрове положення). Незважаючи на те, що можна використовувати переривання зміни контакту, часовий масштаб настільки великий, що очікування зайнятості є прийнятним. Для цього я використав DFRobot Beetle, оскільки його вбудований ATMega32u4 забезпечує власну функцію USB HID.

while (digitalRead(ACTIVE)) // Active-low { ціле число = 0; while (!digitalRead(ACTIVE)) { if (numericRead(PULSE)) { рахунок += 1; затримка (50); } } якщо (рахунок >= 2) { кількість /= 2; кількість = (рахунок == 10) ? 0: підрахунок; Keyboard.print(count); } }

Через проблеми з усуненням дребезгу здається, що кожен імпульс зчитується двічі. У якийсь момент я мав би поглянути на нього, щоб переконатися, у чому проблема, але він працює досить добре, як є. (Моя перша спроба мала затримку лише 10 мс, що емпірично призвело до семикратного зчитування кожного імпульсу…)

Електричний

Для живлення цієї клавіатури мені, здається, потрібні два кабелі, один для Arduino, а інший для оригінального контролера клавіатури. Однак це дещо незручно. Найбільш доцільною для мене була топологія — вставити USB-концентратор у клавіатуру, припаявши Arduino та контролер клавіатури до входів пристрою концентратора.

Це дозволило мені припаяти вбудований порт USB клавіатури до вихідного з’єднання концентратора. Отже, коли я підключаю фізичну клавіатуру до комп’ютера, я підключаю USB-концентратор, який дозволяє з’єднувати обидва пристрої, зберігаючи ілюзію USB-пристрою з одним кабелем. Найдешевший хаб із корисним форм-фактором, який я міг знайти, — це дивний трипортовий звір.

Надзвичайно дріжджовий USB-концентратор

Як цікаво, верхній тригерний порт цього концентратора справді сумісний зі SuperSpeed: пари SSRX+/- і SSTX+/- є повністю незалежним інтерфейсом до пари D+/-, яка використовується для Full-Speed ​​​​або Висока швидкість. Швидкість​​USB, тому її можна направляти безпосередньо до порту без проміжного концентратора.

Чіп, який виконує всю важку роботу в цьому концентраторі, — це монолітний HS8836A, який нібито розроблений для високошвидкісного трафіку USB і має неймовірно низьку кількість допоміжних компонентів.

Довідкова схема HS8836A

У моєму випадку мені довелося відпаяти наявні порти досить чисто, щоб уникнути розплавлення мікросхеми концентратора (я точно не розплавив перший, який замовив), і підключити сигнали USB від клавіатури та Arduino. Зверніть увагу, наскільки ця плата компактна завдяки HS8836A:

USB Hub PCB

Я використовував екрановані диференціальні лінії від джгута дисплея LVDS iMac для підключення даних до Arduino, тому що вони сиділи в моїй купі сміття та не втікали досить швидко. Я підозрюю, що імпеданс зовсім вимкнений, але USB 1.1 надзвичайно надійний.

Клавіатура

Щоб замінити клавішу на поворотний циферблат, мені довелося видалити всі перемикачі з цифрової клавіатури, що було відносно легко через те, що ця клавіатура має односторонню друковану плату, а мій паяльний присосок добре піднесений вгору.

Клавіші цифрової клавіатури видалено з клавіатури

Заміна основи циферблата на друковану плату була б...

What's Your Reaction?

like

dislike

love

funny

angry

sad

wow