Эта статья – продолжение истории о возникновении мобильной клавиатуры Октодон.
Начало истории: Октодон: Какой должна быть удобная клавиатура для смартфонов.
В этой части я расскажу, как идея создания этой клавиатуры подвигла меня к двум новым и нетипичным для меня занятиям – программированию микроконтроллеров и конструированию миниатюрных элементов ввода.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/b8c/c67/11e/b8cc6711e487c7a22cecced667f7589d.jpg)
Но сначала мне придется заполнить пробел в истории компании, вернее, написать, как она появилась. Желающие могут сразу перейти к деталям, пропустив следующую часть.
В 2010 году сложилось воедино несколько обстоятельств. Во-первых, интерес к удобному вводу на смартфоне проявил мой товарищ по матмеху УрГУ, Леонид Волков, который тогда начинал заниматься инвестициями в IT. Во-вторых, мы провели тестирование технологии на уже существовавшем фанерном прототипе, и определили, что стартовая скорость набора пользователей, впервые держащих в руках новую клавиатуру, сравнима с их скоростью набора на цифровой клавиатуре сотового телефона (без Т9). Это было обнадеживающим стартом. В-третьих, я подал заявку на патент. В-четвертых, по совету Леонида, я подал документы на грант Инновационного Центра Свердловской области и получил его. По-моему, клавиатура произвела сильное впечатление на жюри. Этот грант позволил превратить хобби в настоящий проект.
Стоит добавить, что к тому времени я уже убедился, что некоторые мои изобретения, сделанные для личного пользования, могут быть интересны гораздо более широкому кругу людей. Самые яркие примеры – это тривиальное устройство для обучения детей катанию на велосипеде и простейший рассеиватель для встроенной вспышки зеркалки. Я решил, что раз такие простые вещи не были ещё сделаны никем, то с более сложными вещами, как новая клавиатура, есть шанс быть первым. Образцом для подражания для меня был многомудрый китайский основатель компании Inventist, благодаря которому мир увидел кучу новых и диких вещей, таких как AquaSkipper и Solowheel.
Итак, со вводной частью покончено, и я с облегчением приступаю к техническим описаниям.
А, нет! Я же ничего не написал про название нашей компании. Поскольку для получения гранта требовалось в сжатые сроки зарегистрировать юр. лицо, то вопрос «названия яхты» возник неожиданно и в полный рост. Мы перебрали кучу сокращений, и уже были близки к тому, чтобы назваться «НИМКО» (уже не помню, как это должно было расшифровываться, что-то связанное с новыми методами ввода), но в последний день я придумал название «Октодон», в честь славного зверька Octodon Degus.
А ещё это слово звучит гордо и величественно, как имя древнего динозавра, а по факту обозначает милейшего и маленького пушистого зверька, что перекликается с образом нового компактного устройства ввода, претендующего на захват мира. Часть «окто» может восприниматься как намек на количество джойстиков на задней стороне новой клавиатуры.
Вот теперь точно всё. Ниже – только технические вызовы.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/868/b32/ffa/868b32ffabab33add1e5fbea2eaea359.jpg)
Как я уже писал, от фанерного прототипа требовалось перейти к полнофункциональному, с анимированным экранным интерфейсом. Для начала был выбран телефон, к которому мы решили присоединяться. Это был Android-флагман того времени Samsung Galaxy S.
Android привлекал возможностью сделать клавиатуру, которая работала бы в любом приложении, а флагманская модель была выбрана из-за своей малой толщины, чтобы добавление клавиатуры не превратило телефон в слишком явный кирпич.
Тут надо сказать несколько слов про толщину. На тот момент бюджетные Windows-КПК имели толщину около 2 см, а сверхтонкие флагманы нового поколения – около 10 мм. Поэтому я решил, что раз люди таскают 2 см в кармане, то добавление к флагману клавиатуры толщиной 10 мм не будет катастрофой для пользователя. Естественно, по факту это оказалось не так, флагманы стали стремительно худеть, загоняя былые «сверхтонкие» устройства в класс кирпичей. И уже через полгода устройство толщиной в 2 см было ярким образцом кирпичестроения. Но всё же, речь шла о прототипе, доказывающем концепцию, а не о массовом производстве.
Одним из ключевых преимуществ новой клавиатуры должно было стать удобство работы с элементами ввода. Они должны были быть отзывчивыми и удобными к нажатию во всех направлениях.
Долгое время мы шли по пути использования фабричных джойстиков для сотовых телефонов. Эти джойстики предназначались для воздействия на них большого пальца, поэтому, чтобы удобно шевелить их слабым мизинцем, требовался дополнительный рычаг в виде высокой шляпки. Это увеличивало ход отклонения джойстика и делало устройство толще.
Вдобавок, для того, чтобы джойстик было удобно отклонять и к себе, и от себя, внешняя часть крышки джойстика должна была быть выше, чем внутренняя.
На фото показаны джойстики, использовавшиеся в первых прототипах:
Джойстик с рычагом и «чашечкой» для пальца, тот же джойстик без придатков и ещё один похожий джойстик.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/e80/98d/796/e8098d796a6576e2d36d6a507b8db96b.jpg)
Рельеф крышки элемента ввода добавляет ещё толщины устройству. Наша попытка уменьшить толщину первого прототипа, сэкономив на величине рычага и глубине «чашечки» для пальца, привела к тому, что первый прототип для смартфона получился не слишком удобным для ввода текста. Джойстики были туги в нажатии, и палец постоянно соскальзывал с элемента ввода при попытках разогнаться:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/35c/06b/d73/35c06bd731fd4466b6bc31c9bc6ab20f.jpg)
Механика раздвижения створок этого прототипа была тоже далека от идеальной: сворки раздвигались неохотно, перекашивались в процессе и порывались перетереть провода, идущие к лицевым джойстикам из корпуса. Вдобавок ширина раздвижения створок также оказалась недостаточной, поэтому большим пальцам при работе было тесно, и они постоянно задевали за корпус телефона.
Электронной начинкой прототипа стали внутренности дешевой китайской Bluetooth-клавиатуры, ведь Galaxy S не поддерживал USB-host. Ядром клавиатуры был чип Broadcom BCM2042KFBG. Информации по его перепрошивке мы не нашли, поэтому прицепили джойстики к уже запрограммированной в нём клавиатурной матрице.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/6a3/d4b/244/6a3d4b244feef438c2c5a779414ba727.jpg)
При нажатиях на джойстики теперь сыпались достаточно произвольные символы — требовалось перекодировать их соотвественно нашей раскладке.
Благодаря таланту и усердию Eltaron была собрана модифицированная системная библиотека работы с клавиатурой, которая позволяла направлять поток с Bluetooth-клавиатуры в наше приложение, перекодировать приходящие символы и печатать их в любое поле ввода произвольного приложения.
Таким образом, несмотря на эргономические просчеты, главная задача этапа была выполнена – прототип позволял увидеть концепцию во всех деталях. Хотя печать на нём была гораздо медленнее, чем на предыдущем прототипе.
Интересным решением стало исполнение клавиатуры в виде сменной задней крышки для телефона. Это позволило не только решить проблему с присоединением аксессуара, но также сэкономить габариты на размещении аккумулятора, забирая питание для Bluetooth напрямую от аккумулятора телефона. Кстати, исполнение аксессуара в виде задней крышки позже реализовала Samsung в одном из чехлов для Galaxy Note, а ещё позже инновационная компания-производитель смартфонов Jolla сделала упор на концепцию «умных» задних крышек, которые могут получать питание и общаться с телефоном по I2C. В общем, в этом вопросе мы оказались «в тренде» даже с некоторым опережением, хоть и не по поводу клавиатуры.
Кстати, никто случайно не знает, для чего вот эти
Реализация прототипа из распотрошённой Bluetooth-клавиатуры была неудобна не только конструкторски, но также требовала перепрошивки телефона. К счастью, в новых флагманах стала нормой поддержка USB-host, что значительно упростило создание более поздних прототипов.
И следующим моим открытием стало понимание того, что сделать своё устройство ввода (по крайней мере, прототип) можно, даже не будучи специалистом в электронике. Да, пусть и с большим отставанием от прогрессивного мира, я открыл для себя Open Hardware. Сложно переоценить роль, которую сыграли миниатюрные Arduino-совместимые платы Teensy 1.0, а позже Teensy 2.0 в развитии проекта. Запрограммировать свою USB-клавиатуру на их базе, используя библиотечный класс Keyboard, оказалось тривиальной задачей. Что тут писать, наверное, многие программисты, не соприкасавшиеся до этого с микроконтроллерами, испытывают от первого знакомства с Arduino подобный восторг, ощутив, какие горизонты творчества вдруг открываются…
Следующий наш прототип был для планшета, соединялся по USB и не требовал пересборки ядра Android. Из-за небольшого числа поддерживаемых Android 2.3 USB-устройств мы прикидывались обычной клавиатурой. Однако приходилось изворачиваться, чтобы нажатия кнопок обрабатывались не операционной системой, а нашим приложением. К счастью, оказалось, что Android 2.3 почему-то игнорирует всю цифровую клавиатуру.
Разработав простейший протокол, мы стали передавать информацию об отклонениях джойстиков Октодона через отправку сканкодов этих «непечатных» символов. Система их игнорировала, для нас же отлавливать нажатия не составляло никакого труда: Андроид — это линукс, и сырые клавиатурные потоки всегда доступны для чтения через /dev/input/*.
Прототип был выполнен в виде двух брутальных рукояток-струбцин.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/df0/229/49e/df022949eeb089bc3ae1d3e8acb20431.jpg)
В нём я пробовал использовать модифицированные фабричные джойстики, с которых был снят защитный кожух, что давало возможность закрепить «чашечки» джойстиков ниже.
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/5e6/78f/926/5e678f926e93060e6b55e6d89d30b5dd.jpg)
Опыт оказался отрицательным. Джойстики вели себя совсем не идеально, символы не пропечатывались, усилия нажатия были различными. Поэтому основным результатом этого шага стало приближение устройства к нормальной реализации с точки зрения рядового пользователя. Ведь теперь для его использования не требовались «гиковские» манипуляции с прошивкой телефона.
Моей мечтой стало продемонстрировать умопомрачительно быструю (для мобильного устройства) печать на рабочем прототипе. Однако отвесной стеной на пути к этой мечте стала проблема элементов ввода. Наша клавиатура оказалась столь капризным устройством в плане выбора элементов ввода, что создавалось чёткое ощущение, что готового, устраивающего нас решения, на рынке просто нет.
Новые
В основе всех недорогих элементов ввода, распотрошённых мной, лежали миниатюрные металлические купола или изогнутые пластинки, которые создавали необходимое тактильное ощущение от нажатия:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/6ca/7f9/1ee/6ca7f91ee0a2ab582b6ac0e071ef1f5e.jpg)
При воздействии на них рычага джойстика они сначала сопротивлялись, а потом с щелчком выворачивались, резко и без дребезга замыкая контакты под ними. Так достигалось то ощущение, которого все ожидают от механических элементов ввода – чёткий порог усилия срабатывания и чёткое замыкание контактов при превышении этого порога.
Но жёсткость металлических куполов фабричных джойстиков, разработанных для больших пальцев, была велика для реализации низкопрофильных элементов ввода, на которые было бы удобно воздействовать безымянными пальцами и мизинцами. Производство своих деталей подобного размера было нерационально, т.к. требовало бы существенного тиража, а проблема точной сборки фактически ставила бы нас перед вопросом производства собственного микроджойстика, что совсем не укладывалось в наш бюджет на той стадии. И всё же нам нужны были свои элементы ввода, легкие в срабатывании, чёткие и миниатютные.
Попытки решить эту проблему оказались ненапрасными, ибо количество зайцев, убитых в результате этого решения, превзошло в итоге все ожидания.
Я стал думать о концепции джойстика, исполненного прямо на печатной плате, состоявшего бы из четырех контактных площадок, каждая из которых могла бы замыкаться с общим якорем при нажатии на джойстик в одном из направлений.
В голове рисовалась следующая схема:
Над платой «висит» четырехугольная пластинка, соединенная с якорем джойстика. При нажатии на один из её концов она замыкает якорь с одним из направлений. Вопрос был в том, каким образом пластинка должна быть закреплена. Закрепив её с помощью пружины, мы получим систему, которая будет выполнять функцию переключателя.
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/3ce/5fd/2c1/3ce5fd2c1f5a28ec12252ddfceb6d099.png)
Однако такая система будет существенно проигрывать хорошим джойстикам по причине отсутствия ощущения «клика». Ведь «клик» возникает в результате того, что при малых усилиях элемент ввода фактически неподвижен, а после какого-то порога он резко срывается вниз, замыкая контакты, и остановить его движение в этом процессе практически невозможно. В случае использования пружины возрастание усилия приводило бы к постепенному наклону джойстика. Усилие было бы максимальным при замыкании контактов, и микроколебания пальца в этой точке приводили бы к дребезгу контакта, момента клика не происходило бы, он мог быть бы вызван только ударом пальца. Ещё использование пружины не даёт чёткой дискретизации направления нажатия – пластина будет одинаково легко отклоняться в любую сторону, что может привести к ошибкам выбора направления.
Поиски решения быстро привели к мысли о магнитах. Действительно, сила притяжения детали к магниту стремительно ослабевает при удалении детали от магнита, что может быть использовано для создания правильного ощущения «клика». Дело оставалось за малым – придумать несложную в реализации конструкцию для проверки этой гипотезы, используя части, которые могут быть куплены или легко изготовлены.
Получившаяся конструкция выглядела следующим образом:
![](https://habrastorage.org/r/w1560/getpro/habr/post_images/358/932/6d1/3589326d1269e3c1166dc40eb804e3df.png)
Рисунок на плате состоит из центральной площадки-контакта, диаметром примерно 6 мм, вокруг которого расположены четыре площадки-контакты направлений. В центре центральной площадки находится отверстие с резьбой под маленький винт.
В центре конструкции, удерживаемый на плате винтом, возвышается гриб, состоящий из ножки – проводящей алюминиевой шайбы, диаметром 4.5 мм и высотой 1.5 мм, на которую надет кольцевой неодимовый магнит D10 d5 h1, поверх которого расположена квадратная стальная пластинка со стороной 5 мм.
В нормальном состоянии магнит висит над платой, примагниченный к квадратной пластинке. При нажатии на одну из сторон магнита он сначала сопротивляется, не желая отрываться от пластины, а потом эта сторона отрывается и достигает контакта направления, замыкая центральный контакт на контакт направления. Палец, развивший давление усилия отрыва, обладает достаточной инерцией, усилие же притяжения магнита к пластине резко ослабевает по мере удаления пластины. В итоге происходит чёткий клик магнита о контакт направления, что и требовалось получить.
Эта конструкция позволяет также отлично дискретизировать нажатия на произвольную часть джойстика до отклонения в одно из четырёх направлений. Действительно, поворот магнита при частичном отрыве от площадки будет с большой вероятностью происходить вдоль одной из сторон квадрата, задавая наклон элемента ввода.
Добавив к конструкции крышку, приклеенную к магниту, с квадратным отверстием под пластину, получаем джойстик с чудесным кликом, намного меньшей высоты, чем все использованные до этого фабричные. Дополнительная толщина экономится на отсутствии корпуса джойстика. Сборка и монтаж также очень легки:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/990/2af/371/9902af37167cdb93624a21a1021adf59.jpg)
Отдельным важным преимуществом при экспериментах с новым методом ввода стала также возможность тонкой настройки основных тактильных параметров нового джойстика – усилие срабатывания регулируется размером квадратной пластины, а величина хода джойстика – высотой проводящей шайбы.
Выигрыш от использования новых джойстиков с позиции уменьшения толщины клавиатуры был совершенно очевиден:
![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/513/8c2/ece/5138c2ecee49ddc92071860a57b7ffec.jpg)
Использование магнита в джойстике привело в дальнейшем к идее о произвольном расположении джойстиков на магнитной пластине, которое в итоге было реализовано в нашем текущем прототипе. Для этого потребовалось, конечно, изменить конструкцию джойстика, чтобы магнит находился в его неподвижной части, но принцип действия остался тем же. Такое решение позволило располагать джойстики на задней стороне в соответствии с размером руки пользователя и его стилем работы и стало одним из ключевых отличий нашего решения от всех мобильных клавиатур, присутствующих сейчас на рынке.
Так неожиданно настойчивые попытки решить одну проблему привели ещё и к появлению неожиданного конкурентного преимущества.
![](https://habrastorage.org/getpro/habr/post_images/644/7bb/604/6447bb604b38af7aca1f5272b17af015.gif)
Про новые вызовы октодоностроения читайте в следующих выпусках.
Спасибо за внимание!
Начало истории: Октодон: Какой должна быть удобная клавиатура для смартфонов.
В этой части я расскажу, как идея создания этой клавиатуры подвигла меня к двум новым и нетипичным для меня занятиям – программированию микроконтроллеров и конструированию миниатюрных элементов ввода.
![](https://habrastorage.org/getpro/habr/post_images/b8c/c67/11e/b8cc6711e487c7a22cecced667f7589d.jpg)
Но сначала мне придется заполнить пробел в истории компании, вернее, написать, как она появилась. Желающие могут сразу перейти к деталям, пропустив следующую часть.
Немного лирики и истории
В 2010 году сложилось воедино несколько обстоятельств. Во-первых, интерес к удобному вводу на смартфоне проявил мой товарищ по матмеху УрГУ, Леонид Волков, который тогда начинал заниматься инвестициями в IT. Во-вторых, мы провели тестирование технологии на уже существовавшем фанерном прототипе, и определили, что стартовая скорость набора пользователей, впервые держащих в руках новую клавиатуру, сравнима с их скоростью набора на цифровой клавиатуре сотового телефона (без Т9). Это было обнадеживающим стартом. В-третьих, я подал заявку на патент. В-четвертых, по совету Леонида, я подал документы на грант Инновационного Центра Свердловской области и получил его. По-моему, клавиатура произвела сильное впечатление на жюри. Этот грант позволил превратить хобби в настоящий проект.
Стоит добавить, что к тому времени я уже убедился, что некоторые мои изобретения, сделанные для личного пользования, могут быть интересны гораздо более широкому кругу людей. Самые яркие примеры – это тривиальное устройство для обучения детей катанию на велосипеде и простейший рассеиватель для встроенной вспышки зеркалки. Я решил, что раз такие простые вещи не были ещё сделаны никем, то с более сложными вещами, как новая клавиатура, есть шанс быть первым. Образцом для подражания для меня был многомудрый китайский основатель компании Inventist, благодаря которому мир увидел кучу новых и диких вещей, таких как AquaSkipper и Solowheel.
Итак, со вводной частью покончено, и я с облегчением приступаю к техническим описаниям.
А, нет! Я же ничего не написал про название нашей компании. Поскольку для получения гранта требовалось в сжатые сроки зарегистрировать юр. лицо, то вопрос «названия яхты» возник неожиданно и в полный рост. Мы перебрали кучу сокращений, и уже были близки к тому, чтобы назваться «НИМКО» (уже не помню, как это должно было расшифровываться, что-то связанное с новыми методами ввода), но в последний день я придумал название «Октодон», в честь славного зверька Octodon Degus.
Дегу, он же чилийская белка, он же карликовая шиншилла – лучший из грызунов, с которыми мне приходилось иметь дело.![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/5f3/da8/90e/5f3da890e8b8127898bd6cf6f177fc81.jpg)
![](https://habrastorage.org/getpro/habr/post_images/5f3/da8/90e/5f3da890e8b8127898bd6cf6f177fc81.jpg)
А ещё это слово звучит гордо и величественно, как имя древнего динозавра, а по факту обозначает милейшего и маленького пушистого зверька, что перекликается с образом нового компактного устройства ввода, претендующего на захват мира. Часть «окто» может восприниматься как намек на количество джойстиков на задней стороне новой клавиатуры.
Вот теперь точно всё. Ниже – только технические вызовы.
Bluetooth-прототип для Galaxy S
![](https://habrastorage.org/getpro/habr/post_images/868/b32/ffa/868b32ffabab33add1e5fbea2eaea359.jpg)
Как я уже писал, от фанерного прототипа требовалось перейти к полнофункциональному, с анимированным экранным интерфейсом. Для начала был выбран телефон, к которому мы решили присоединяться. Это был Android-флагман того времени Samsung Galaxy S.
Android привлекал возможностью сделать клавиатуру, которая работала бы в любом приложении, а флагманская модель была выбрана из-за своей малой толщины, чтобы добавление клавиатуры не превратило телефон в слишком явный кирпич.
Тут надо сказать несколько слов про толщину. На тот момент бюджетные Windows-КПК имели толщину около 2 см, а сверхтонкие флагманы нового поколения – около 10 мм. Поэтому я решил, что раз люди таскают 2 см в кармане, то добавление к флагману клавиатуры толщиной 10 мм не будет катастрофой для пользователя. Естественно, по факту это оказалось не так, флагманы стали стремительно худеть, загоняя былые «сверхтонкие» устройства в класс кирпичей. И уже через полгода устройство толщиной в 2 см было ярким образцом кирпичестроения. Но всё же, речь шла о прототипе, доказывающем концепцию, а не о массовом производстве.
Одним из ключевых преимуществ новой клавиатуры должно было стать удобство работы с элементами ввода. Они должны были быть отзывчивыми и удобными к нажатию во всех направлениях.
Долгое время мы шли по пути использования фабричных джойстиков для сотовых телефонов. Эти джойстики предназначались для воздействия на них большого пальца, поэтому, чтобы удобно шевелить их слабым мизинцем, требовался дополнительный рычаг в виде высокой шляпки. Это увеличивало ход отклонения джойстика и делало устройство толще.
Вдобавок, для того, чтобы джойстик было удобно отклонять и к себе, и от себя, внешняя часть крышки джойстика должна была быть выше, чем внутренняя.
На фото показаны джойстики, использовавшиеся в первых прототипах:
Джойстик с рычагом и «чашечкой» для пальца, тот же джойстик без придатков и ещё один похожий джойстик.
![](https://habrastorage.org/getpro/habr/post_images/e80/98d/796/e8098d796a6576e2d36d6a507b8db96b.jpg)
Рельеф крышки элемента ввода добавляет ещё толщины устройству. Наша попытка уменьшить толщину первого прототипа, сэкономив на величине рычага и глубине «чашечки» для пальца, привела к тому, что первый прототип для смартфона получился не слишком удобным для ввода текста. Джойстики были туги в нажатии, и палец постоянно соскальзывал с элемента ввода при попытках разогнаться:
![](https://habrastorage.org/getpro/habr/post_images/35c/06b/d73/35c06bd731fd4466b6bc31c9bc6ab20f.jpg)
Механика раздвижения створок этого прототипа была тоже далека от идеальной: сворки раздвигались неохотно, перекашивались в процессе и порывались перетереть провода, идущие к лицевым джойстикам из корпуса. Вдобавок ширина раздвижения створок также оказалась недостаточной, поэтому большим пальцам при работе было тесно, и они постоянно задевали за корпус телефона.
Электронной начинкой прототипа стали внутренности дешевой китайской Bluetooth-клавиатуры, ведь Galaxy S не поддерживал USB-host. Ядром клавиатуры был чип Broadcom BCM2042KFBG. Информации по его перепрошивке мы не нашли, поэтому прицепили джойстики к уже запрограммированной в нём клавиатурной матрице.
![](https://habrastorage.org/getpro/habr/post_images/6a3/d4b/244/6a3d4b244feef438c2c5a779414ba727.jpg)
При нажатиях на джойстики теперь сыпались достаточно произвольные символы — требовалось перекодировать их соотвественно нашей раскладке.
Благодаря таланту и усердию Eltaron была собрана модифицированная системная библиотека работы с клавиатурой, которая позволяла направлять поток с Bluetooth-клавиатуры в наше приложение, перекодировать приходящие символы и печатать их в любое поле ввода произвольного приложения.
Таким образом, несмотря на эргономические просчеты, главная задача этапа была выполнена – прототип позволял увидеть концепцию во всех деталях. Хотя печать на нём была гораздо медленнее, чем на предыдущем прототипе.
Интересным решением стало исполнение клавиатуры в виде сменной задней крышки для телефона. Это позволило не только решить проблему с присоединением аксессуара, но также сэкономить габариты на размещении аккумулятора, забирая питание для Bluetooth напрямую от аккумулятора телефона. Кстати, исполнение аксессуара в виде задней крышки позже реализовала Samsung в одном из чехлов для Galaxy Note, а ещё позже инновационная компания-производитель смартфонов Jolla сделала упор на концепцию «умных» задних крышек, которые могут получать питание и общаться с телефоном по I2C. В общем, в этом вопросе мы оказались «в тренде» даже с некоторым опережением, хоть и не по поводу клавиатуры.
Кстати, никто случайно не знает, для чего вот эти
симпатичные позолоченные контакты под крышкой Galaxy S4?![](https://habrastorage.org/r/w780q1/getpro/habr/post_images/0fe/bc2/7a0/0febc27a00dcea53bb1ed537654bcfaa.jpg)
Я не нашел информации по ним в сети и не слышал ничего об умных аксессуарах, которые могли бы использовать их, но контакты явственно на что-то намекают.
UPD: В комментариях подсказали — это контакты для крышки-беспроводной зарядки.
![](https://habrastorage.org/getpro/habr/post_images/0fe/bc2/7a0/0febc27a00dcea53bb1ed537654bcfaa.jpg)
Я не нашел информации по ним в сети и не слышал ничего об умных аксессуарах, которые могли бы использовать их, но контакты явственно на что-то намекают.
UPD: В комментариях подсказали — это контакты для крышки-беспроводной зарядки.
Первый USB-прототип
Реализация прототипа из распотрошённой Bluetooth-клавиатуры была неудобна не только конструкторски, но также требовала перепрошивки телефона. К счастью, в новых флагманах стала нормой поддержка USB-host, что значительно упростило создание более поздних прототипов.
И следующим моим открытием стало понимание того, что сделать своё устройство ввода (по крайней мере, прототип) можно, даже не будучи специалистом в электронике. Да, пусть и с большим отставанием от прогрессивного мира, я открыл для себя Open Hardware. Сложно переоценить роль, которую сыграли миниатюрные Arduino-совместимые платы Teensy 1.0, а позже Teensy 2.0 в развитии проекта. Запрограммировать свою USB-клавиатуру на их базе, используя библиотечный класс Keyboard, оказалось тривиальной задачей. Что тут писать, наверное, многие программисты, не соприкасавшиеся до этого с микроконтроллерами, испытывают от первого знакомства с Arduino подобный восторг, ощутив, какие горизонты творчества вдруг открываются…
Следующий наш прототип был для планшета, соединялся по USB и не требовал пересборки ядра Android. Из-за небольшого числа поддерживаемых Android 2.3 USB-устройств мы прикидывались обычной клавиатурой. Однако приходилось изворачиваться, чтобы нажатия кнопок обрабатывались не операционной системой, а нашим приложением. К счастью, оказалось, что Android 2.3 почему-то игнорирует всю цифровую клавиатуру.
Разработав простейший протокол, мы стали передавать информацию об отклонениях джойстиков Октодона через отправку сканкодов этих «непечатных» символов. Система их игнорировала, для нас же отлавливать нажатия не составляло никакого труда: Андроид — это линукс, и сырые клавиатурные потоки всегда доступны для чтения через /dev/input/*.
Прототип был выполнен в виде двух брутальных рукояток-струбцин.
![](https://habrastorage.org/getpro/habr/post_images/df0/229/49e/df022949eeb089bc3ae1d3e8acb20431.jpg)
В нём я пробовал использовать модифицированные фабричные джойстики, с которых был снят защитный кожух, что давало возможность закрепить «чашечки» джойстиков ниже.
![](https://habrastorage.org/getpro/habr/post_images/5e6/78f/926/5e678f926e93060e6b55e6d89d30b5dd.jpg)
Опыт оказался отрицательным. Джойстики вели себя совсем не идеально, символы не пропечатывались, усилия нажатия были различными. Поэтому основным результатом этого шага стало приближение устройства к нормальной реализации с точки зрения рядового пользователя. Ведь теперь для его использования не требовались «гиковские» манипуляции с прошивкой телефона.
Моей мечтой стало продемонстрировать умопомрачительно быструю (для мобильного устройства) печать на рабочем прототипе. Однако отвесной стеной на пути к этой мечте стала проблема элементов ввода. Наша клавиатура оказалась столь капризным устройством в плане выбора элементов ввода, что создавалось чёткое ощущение, что готового, устраивающего нас решения, на рынке просто нет.
Новые наномикро-джойстики
В основе всех недорогих элементов ввода, распотрошённых мной, лежали миниатюрные металлические купола или изогнутые пластинки, которые создавали необходимое тактильное ощущение от нажатия:
![](https://habrastorage.org/getpro/habr/post_images/6ca/7f9/1ee/6ca7f91ee0a2ab582b6ac0e071ef1f5e.jpg)
При воздействии на них рычага джойстика они сначала сопротивлялись, а потом с щелчком выворачивались, резко и без дребезга замыкая контакты под ними. Так достигалось то ощущение, которого все ожидают от механических элементов ввода – чёткий порог усилия срабатывания и чёткое замыкание контактов при превышении этого порога.
Но жёсткость металлических куполов фабричных джойстиков, разработанных для больших пальцев, была велика для реализации низкопрофильных элементов ввода, на которые было бы удобно воздействовать безымянными пальцами и мизинцами. Производство своих деталей подобного размера было нерационально, т.к. требовало бы существенного тиража, а проблема точной сборки фактически ставила бы нас перед вопросом производства собственного микроджойстика, что совсем не укладывалось в наш бюджет на той стадии. И всё же нам нужны были свои элементы ввода, легкие в срабатывании, чёткие и миниатютные.
Попытки решить эту проблему оказались ненапрасными, ибо количество зайцев, убитых в результате этого решения, превзошло в итоге все ожидания.
Я стал думать о концепции джойстика, исполненного прямо на печатной плате, состоявшего бы из четырех контактных площадок, каждая из которых могла бы замыкаться с общим якорем при нажатии на джойстик в одном из направлений.
В голове рисовалась следующая схема:
Над платой «висит» четырехугольная пластинка, соединенная с якорем джойстика. При нажатии на один из её концов она замыкает якорь с одним из направлений. Вопрос был в том, каким образом пластинка должна быть закреплена. Закрепив её с помощью пружины, мы получим систему, которая будет выполнять функцию переключателя.
![](https://habrastorage.org/getpro/habr/post_images/3ce/5fd/2c1/3ce5fd2c1f5a28ec12252ddfceb6d099.png)
Однако такая система будет существенно проигрывать хорошим джойстикам по причине отсутствия ощущения «клика». Ведь «клик» возникает в результате того, что при малых усилиях элемент ввода фактически неподвижен, а после какого-то порога он резко срывается вниз, замыкая контакты, и остановить его движение в этом процессе практически невозможно. В случае использования пружины возрастание усилия приводило бы к постепенному наклону джойстика. Усилие было бы максимальным при замыкании контактов, и микроколебания пальца в этой точке приводили бы к дребезгу контакта, момента клика не происходило бы, он мог быть бы вызван только ударом пальца. Ещё использование пружины не даёт чёткой дискретизации направления нажатия – пластина будет одинаково легко отклоняться в любую сторону, что может привести к ошибкам выбора направления.
Поиски решения быстро привели к мысли о магнитах. Действительно, сила притяжения детали к магниту стремительно ослабевает при удалении детали от магнита, что может быть использовано для создания правильного ощущения «клика». Дело оставалось за малым – придумать несложную в реализации конструкцию для проверки этой гипотезы, используя части, которые могут быть куплены или легко изготовлены.
Получившаяся конструкция выглядела следующим образом:
![](https://habrastorage.org/getpro/habr/post_images/358/932/6d1/3589326d1269e3c1166dc40eb804e3df.png)
Рисунок на плате состоит из центральной площадки-контакта, диаметром примерно 6 мм, вокруг которого расположены четыре площадки-контакты направлений. В центре центральной площадки находится отверстие с резьбой под маленький винт.
В центре конструкции, удерживаемый на плате винтом, возвышается гриб, состоящий из ножки – проводящей алюминиевой шайбы, диаметром 4.5 мм и высотой 1.5 мм, на которую надет кольцевой неодимовый магнит D10 d5 h1, поверх которого расположена квадратная стальная пластинка со стороной 5 мм.
В нормальном состоянии магнит висит над платой, примагниченный к квадратной пластинке. При нажатии на одну из сторон магнита он сначала сопротивляется, не желая отрываться от пластины, а потом эта сторона отрывается и достигает контакта направления, замыкая центральный контакт на контакт направления. Палец, развивший давление усилия отрыва, обладает достаточной инерцией, усилие же притяжения магнита к пластине резко ослабевает по мере удаления пластины. В итоге происходит чёткий клик магнита о контакт направления, что и требовалось получить.
Эта конструкция позволяет также отлично дискретизировать нажатия на произвольную часть джойстика до отклонения в одно из четырёх направлений. Действительно, поворот магнита при частичном отрыве от площадки будет с большой вероятностью происходить вдоль одной из сторон квадрата, задавая наклон элемента ввода.
Добавив к конструкции крышку, приклеенную к магниту, с квадратным отверстием под пластину, получаем джойстик с чудесным кликом, намного меньшей высоты, чем все использованные до этого фабричные. Дополнительная толщина экономится на отсутствии корпуса джойстика. Сборка и монтаж также очень легки:
![](https://habrastorage.org/getpro/habr/post_images/990/2af/371/9902af37167cdb93624a21a1021adf59.jpg)
Видео с джойстиками
Отдельным важным преимуществом при экспериментах с новым методом ввода стала также возможность тонкой настройки основных тактильных параметров нового джойстика – усилие срабатывания регулируется размером квадратной пластины, а величина хода джойстика – высотой проводящей шайбы.
Выигрыш от использования новых джойстиков с позиции уменьшения толщины клавиатуры был совершенно очевиден:
![](https://habrastorage.org/getpro/habr/post_images/513/8c2/ece/5138c2ecee49ddc92071860a57b7ffec.jpg)
Использование магнита в джойстике привело в дальнейшем к идее о произвольном расположении джойстиков на магнитной пластине, которое в итоге было реализовано в нашем текущем прототипе. Для этого потребовалось, конечно, изменить конструкцию джойстика, чтобы магнит находился в его неподвижной части, но принцип действия остался тем же. Такое решение позволило располагать джойстики на задней стороне в соответствии с размером руки пользователя и его стилем работы и стало одним из ключевых отличий нашего решения от всех мобильных клавиатур, присутствующих сейчас на рынке.
Так неожиданно настойчивые попытки решить одну проблему привели ещё и к появлению неожиданного конкурентного преимущества.
![](https://habrastorage.org/getpro/habr/post_images/644/7bb/604/6447bb604b38af7aca1f5272b17af015.gif)
Про новые вызовы октодоностроения читайте в следующих выпусках.
Спасибо за внимание!