| сохранено

H Очки дополненной реальности из старого советского калькулятора


Очки дополненной реальности это нереально крутая штука! Правда до сих трудно сказать, такая ли это необходимая вещь как смартфон, или же просто дорогая игрушка. Рассмотрим интересный проект умных очков для профессионального применения, которые облегчают работу электрика/электронщика. Сделаем его в стиле старого доброго DIY с ардуинами и 3d принтерами.

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

Alain Mauer подумал, а почему бы не показывать результат измерений мультиметра прямо перед глазами, используя технологии дополненной реальности наподобие того, как это делается в Google Glass.


Он разработал свой собственный проект умных очков, в основе которого лежит контроллер Arduino Pro Micro, маленький дисплей диагональю 0.66 дюймов (1.68 см), а также bluetooth модуль.



Корпус устройства распечатывается на 3-d принтере и все детали доступны к скачиванию на странице проекта.

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


В принципе китайские товарищи продают такие экранчики совсем недорого, но проходящий в это время цирк с черной пятницей давал понять что ждать придется очень долго.

Потому покопавшись в хламе я нашел старый советский калькулятор Электроника Б3-21 с неплохими миниатюрными восьмисегментными индикаторами.



Стоп! Придержите свой праведный гнев и уберите руки от клавиатуры. Я бы не стал ломать подобный раритет ради индикаторов. Пару лет назад я спас три таких экземпляра фактически с помойки. Два из них были более-менее целыми, их я отдал коллекционерам. Последний представлял собой лишь жалкие остатки в виде платы с индикаторами, в то время как сами «мозги» калькулятора располагались на другой части, которую варвары вместе с корпусом куда-то дели.



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



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



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



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

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

Наглядный пример для сегментов индикатора


В качестве контроллера я использовал китайскую Arduino Nano. Она немногим более версии Micro и тоже отлично влазит в оригинальный корпус.

Подключаем к ардуинке и проверяем работу индикаторов.



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

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



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



Реверс-инжинирим этот прибор и видим, что интерфейс сделан на отдельной плате, которая оптически развязана от остальной схемы. Причем здесь применили не пресловутые оптроны, а самые настоящие инфракрасные пары из свето- и фотодиодов. Зазор между ними такой, что наверняка можно мерить вплоть до киловольта без опасения сжечь свой компьютер. На плате виднеется чип CP2102, который является конвертером UART → USB, что является большой удачей, так как протокол UART любая ардуинка знает с пелёнок.



Принцип работы прост и банален, на чип CP2102 подается питание от USB, одновременно загорается ИК-светодиод, который дает мультиметру знать о том, что он подключен к компьютеру, после чего последний начинает весело мигать своим светодиодом в ответ, таким образом отправляя данные об измерениях. Подключаем сей мультик к компьютеру и с помощью ComPort Toolkit смотрим что же он отправляет:



Да, похоже на полный бред. Очевидно, что китайские товарищи не стали использовать стандартную скорость в 9600. Вооружимся логическим анализатором (Saleae-logic совместимым) и посмотрим на сигнал подробнее. ПО от Saleae настолько крутое, что может автоматически определять скорость UART по длине стартового бита.



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



Ну что же, уже появилась какая-то закономерность, хотя все еще непонятно, что же он отправляет.

подсказка
Обращаем внимание на старшие разряды чисел, которые составляют последовательность 123456789ABCDE. Они не меняются даже при переключении режимов прибора, а значит носят чисто контрольный характер. Остальное — данные в каком то виде.

Я измерил несколько различных сопротивлений, составив таблицу для сопоставления.

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


Подсказка есть в первой части статьи, так как в мультиметре используются все те же сегментные символы для обозначения цифр, то и шлет он байты, описывающие какие сегменты активированы в шестнадцатиричной форме. Старшие разряды не несут информации, потому смотрим на младшие и одинаковые цифры в результатах измерения. Из этой таблицы становится ясно, что 0 например это 7D, а 2 это 5B. Таким образом, задача передачи еще более упрощается. Достаточно прочитать значения индикаторов мультиметра и зажечь наши в соответствии.

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


Для связи мультиметра с очками я использовал дешевые радиомодули на 433МГц. Увы, это самое плохое решение, которое только можно придумать, но это единственное что было под рукой.



Собираем дисплей, контроллер, приемник и аккумулятор в напечатанный корпус



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



На данном этапе советую вернуться к началу статьи и освежить в памяти конструкцию устройства. Линза здесь играет огромную роль — она фокусирует на глазу изображение от дисплея. От ее типа и положения зависит при какой фокусировке глаза будут четко видны цифры. Разумеется такой же линзы я не нашел, потому использовал обычную пластиковую из дешевого монокуляра. В моем случае я разместил ее между зеркалом и индикаторами, найдя наилучшее положение с точки зрения фокуса. Чтобы сделать отражатель, я расслоил CD-диск, стер с него данные тряпкой и просто вырезал подходящий кусок. После сборки, получаем заветный девайс.



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



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



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



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

Итоги


Устройство в моем исполнении конечно вышло довольно колхозное, но даже в таком виде его использование приводит в восторг. Увы, индикаторы от старого калькулятора как оказалось, средненький вариант, так как при нормальном освещении цифр практически не видно. Радиомодули также не советую: батарейку передатчик посадит быстро, а связь будет все равно так себе. Ну и самый главный недостаток, наверное, любых очков дополненной реальности — это фокус. Чтобы был эффект того, что изображение накладывается поверх объекта куда направлен взгляд, должна соблюдаться соответствующая фокусировка. А проблема заключается в том, что глаз постоянно ее меняет, от чего вся «магия» теряется. Надеюсь что производители подобных девайсов работают над решением данной проблемы и когда-нибудь мы полностью насладимся преимуществами дополненной реальности в профессиональной деятельности.
+77
~27400

комментарии (42)

0
tormozedison ,  
А если китайцы выпустят часы дополненной реальности, легко устанавливаемые на любые очки? Просто часы, чтобы всегда перед глазами были. Вещь обещает быть совсем недорогой.
+1
+3 –2
3aicheg ,  
«Слушай, а давай знаки препинания придумаем! — Зачем? — Не знаю пока.»
0
custos ,  
мультиметры в режиме прозвонки/измерения сопротивления выдают на щупы достаточно напряжения чтобы заставить слабенько светиться светодиоды

В мультиметрах есть ещё специальный режим для этого, обозначен значком диода. Он предназначен для измерения падение напряжение на p-n переходе, т.е. буквально Vпр у светодиода. При этом светодиод светится как ему положено, и нет опасности его спалить, как при выборе режима измерения малых сопротивлений. К сожалению большинство мультиметров зашкаливает если Vпр больше 1V, но светодиод всё равно хорошо светится.
0
Schrodinger_Kater ,  
В мультиметрах есть ещё специальный режим для этого, обозначен значком диода.

Этот режим нужен лишь для того чтобы обеспечить достаточный ток для открытия p-n перехода. Так как в режиме измерения сопротивлений, КМОП не требуется хоть сколько-то значимых величин тока для получения результата.
0
kdekaluga ,  
Не ток, а напряжение.

В обычном режиме измерения сопротивлений мультиметр подает на щупы напряжение до 0.5В. Сделано это специально, чтобы (теоретически) можно было измерять сопротивление резисторов не выпаивая их из схемы (чтобы кремниевые p-n переходы не открывались). На практике резисторы соединяются друг с другом, с питающими выводами, есть индуктивности и т.п., т.е. лучше все равно резистор выпаивать.
В режиме прозвонки наоборот, мультиметр подает около 2.5В, чтобы p-n переход мог открыться (и показывает он при этом падение напряжение в милливольтах, хотя это и умалчивает). 2.5В достаточно для открытия кремниевого p-n перехода, двух таких переходов (составной транзистор), красного и желтого светодиода (1.8В), но недостаточно для, например, белых светодиодов. При этом белый светодиод может начать очень слабо светиться, а может и нет (зависит от многих факторов).

А что касается тока, в любом режиме измерений он ограничен и не превышает 1мА. Так что вероятность испортить любой p-n переход любым режимом (без внешнего питания) полностью отсутствует.
+4
Leo7777 ,  
Это очень здорово придумано
+1
spc ,  
Жаль, что не до конца получилось, но штука вышла потрясающая!
0
iShrimp ,  
> что же будет этот дисплей показывать

Как что? При превышении предела измерений он должен показывать ЕГГОГ.
0
AllexIn ,  
А почему не использовать экранчик типа такого:
https://ru.aliexpress.com/item/1pcs-0-96-white-0-96-inch-OLED-module-New-128X64-OLED-LCD-LED-Display-Module/32640136921.html?spm=2114.13010608.0.0.h4ckI8&detailNewVersion=&categoryId=400401
?
Ведь гораздо проще контролировать выводимую информацию и она не ограничивается только цифрами.
+2
alexkunin ,  
В принципе китайские товарищи продают такие экранчики совсем недорого, но проходящий в это время цирк с черной пятницей давал понять что ждать придется очень долго.
–1
abstractbug ,  
Вы видимо совсем не понимаете что такое дополнительная реальность — это не очки vr. То что вы предложили, это будет просто мониторчик перед глазом, потому что проецировать его на линзу он вряд-ли сможет из за низкой яркости. Соответственно сфокусироваться одним глазом на монитор с пятирублевую монету в 2 см от глаза — не реально.
+3
AllexIn ,   * (был изменён)
У OLED низкая яркость??
У них высокая яркость и контрастность — как раз то что нужно для проецирования.
Вы, кстати, плохо понимаете конструкцию. Изображение не проецируется на линзу, оно проецируется на отражатель.
0
Chamie ,  
Оно вообще никуда не проецируется, кроме сетчатки, на которую его проецирует хрусталик в глазу. Линзы нужны только чтобы оптически «отдалить» картинку от глаза, помочь хрусталику сфокусироваться на ней.
0
QDeathNick ,  
Для меня настолько разные слова, «дополнительная» и «дополненная», что я удивляюсь тому, что вы их путаете.

У автора тоже не понимаю почему применено понятие «дополненная реальность». По-моему дополнить реальность можно только совместив какую-то информацию в 3D программными методами с реальностью.
А вот просто вывести информацию на экран, не привязывая, это совсем другое. Это как раз что-то просто «дополнительное», но никак не «дополненное».
Когда во время соревнований по плаванию выводят движущуюся полоску мирового рекорда, это и то больше относится к дополненной реальности, чем этот самодельный виртуальный экран.
0
SandroSmith ,  
Для того, что бы дополнить реальность не обязательно привязывать дополнительную информацию к реальным объектам. С помощью такого прибора уже видно что-то, чего в обычной реальности нет. Соответственно, можно с чистой совестью назвать его AR.
+1
QDeathNick ,  
Жаль, что смешались понятия, так скоро вообще потеряется смысл выражения.
https://en.wikipedia.org/wiki/Reality%E2%80%93virtuality_continuum

Так можно любой прозрачный дисплей назвать дополненной реальностью, а можно и даже не прозрачный. Вот я смотрю одним глазом в монитор, а вторым на улицу.
Где связь картинки с реальностью? По моему мнению было бы лучше чтобы термином «AR» не называли вывод изображения без отслеживания положения реальности относительно изображения.

Но спорить дальше не буду :)
0
SandroSmith ,  
Не совсем верно. Естественно, если картинка совсем никак не соотносится с реальностью, то это не будет AR (как и в случае с монитором и окном). Однако в данном случае то, что выводится напрямую зависит от происходящего в реальном мире.
Если уж начали ссылаться на вики, то там, в статье про, собственно, AR есть фраза о том, что табличка со счётом при просмотре футбола — это уже тоже AR.
0
Alexeyslav ,  
ИМХО, для этого нужно оптику с большим ГРИП, на одной линзе это трудно получить нужна целая система линз. С другой стороны, обычное положение глаз при использовании мультиметра — 30-50см до измеряемых цепей, на которых он фокусируется — вроде бы и не нужен широкий диапазон фокусных расстояний.

Чтобы цифры влезли в камеру, нужно её поднести поближе к линзе, где размер пучка меньше размера зрачка камеры. У человека-то он как правило от 5мм и больше, поэтому проблемы нет, а вот камеры на мобильном…
0
melchermax ,  
Забавная штуковина! А если поставить ЖК-Индикатор без подложки («на просвет»)?
+2
iliasam ,  
Такой индикатор нельзя установить напрямую перед глазом (глаз на него не сможет сфокусироваться), то есть все равно потребуется полупрозрачная пластинка и компилирующая линза. А еще у таких индикаторов не самый высокий контраст.
0
Chamie ,   * (был изменён)
Тут интереснее было бы использовать внутреннюю (ближнюю к глазу) поверхность стёкол очков как увеличивающее полупрозрачное зеркало. Но нужно подбирать стёкла подходящей формы и, возможно, устанавливать их под небольшим наклоном.
0
alex1603 ,  
Можно попробовать использовать такой индикатор как матрицу проектора. Поставить сзади светодиодов пару, а далее по предложенной схеме.
и Так как никакой документации на данные индикаторы днем с огнем не сыскать......??? В свое время были такие большие дома с книгами назывались библиотеки. Гугл отдыхает по сравнению с тем что там есть! Правда Ctrl+F там медленно работает. Но нам ведь важен результат.....
+1
jar_ohty ,  

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

0
marenkov ,   * (был изменён)
Прикольно. Но хотелось бы полноценную дополнительную реальность. Смотришь на плату, а очки поверх нее накладывают картинку со схемой и обозначением элементов. А когда тыкаешь в элемент указкой, показывают справочную информацию о нем. Как-то так. Ну и данные с мультиметра и осциллографа конечно же.
0
Zulus-Imba ,  
Мне как рыбаку, хочется не громоздкий девайсик, который будет сообщать; температуру, давление, глубину под лодкой и тд. ;)
0
atmega644 ,  
HP QDSP-6064 — инжикаторы, близкие по конструкции
0
Rumlin ,  
С DL1416B можно показывать 64 ASCII символа. Размер только может не подойти.
https://hackaday.io/project/17983-dl1416smarterm-led-computerterminal
0
FisHlaBsoMAN ,   * (был изменён)
О, у меня как раз есть аналоги, только они привет из 90х. Отец где то добыл в те годы
https://www.youtube.com/watch?v=-rwdt02j-tQ
Только я так и не нашел им приминение, только с распиновкой разобрался, сложил в коробок и убрал до лучших времён.
0
Phil_itch ,  
Прекрасная новость. Думал о подобном девайсе в парашютном спорте для контроля скорости и положения в пространстве, там проблема в том, что высотомер на руке, а они находятся вне зоны видимости (при полете вниз головой), а видеть отклонения по осям — бесценно. И мотоциклисты думаю оценят.
0
SvSh123 ,  
Мотошлемы с индикаторами точно есть, вот для парашютистов — не слышал.
0
norlin ,  
В качестве эксперимента / proof-of-concept очень круто!

Но… не поймите меня неправильно, понятное дело, что любая технология начинается с прототипов…
> Очки дополненной реальности это нереально крутая штука! Правда до сих трудно сказать, такая ли это необходимая вещь как смартфон, или же просто дорогая игрушка.

Да, это действительно крутая штука. Только вот, их ещё не существует на практике. Максимум, что есть – девайсы на уровне прототипов или те же proof-of-concept. Поэтому и «трудно сказать».

Но если (когда?) появятся реальные работающие девайсы с нормальными характеристиками (покрытие всего поля зрения и нормальное разрешение, всё это при адекватном для повседневного ношения внешнем дизайне) – тогда это будет must have, намного круче всех сегодняшних смарт-часов, фитнес-браслетов и прочей носимой электроники.

Пока что, из публично доступной информации, надежда только на Magic Leap.
+1
LynXzp ,  
Важно не покрытие всего поля зрения и разрешение, а важность выводимой информации при удовлетворительном удобстве и цене. (Мобильные телефоны стали must have не с 7 диймовым экраном, QHD и ОС, а как только смогли звонить. Популярными как только цена упала.)

Информация выводимая на google glass не особо то и нужна (при том что есть телефон), не так чтобы удобно, и высокая цена делают прикольным устройством, не более.

А если в каком-то министерстве или профсоюзе посчитают [статистику...] что электрикам нужны такие очки то они будут must have по ТБ. (Хотя это конечно не тот массовый рынок.)
0
norlin ,  
> а важность выводимой информации

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

Но в этом случае речь вообще не о дополненой реальности, а просто о некоем носимом дисплее.

А весь смысл «дополненой реальности» именно в наложении какой-либо информации на объекты реального мира. И этого можно достичь лишь при перекрытии дисплеем большей части поля зрения. Либо, как минимум, центральной части поля зрения. Но никак не «в углу».

Если вы приводите в качестве аналогии мобильные телефоны, то, с моей точки зрения, Googla Glass и подобные девайсы – это мобильные телефоны, а то, о чём говорю я, это смартфоны. Но все аналогии ложны, поэтому предлагаю не углубляться.
0
EminH ,  
Можно еще вместо HUD использовать — текущую скорость выводить.
0
chabapok ,  
а оно эти циферки фокусирует на бесконечность, или на линзу очков? Есть ли проблемы с тем, что картинка напряжения изображена «слишком близко» к глазам?
0
HardWrMan ,  
А разве старший ниббл не показывает номер ряда, для которого нужно применять состояние младшего ниббла? Это однозначная синхронизация. К тому же, у многих матричный цифровых индикаторов код не ABCDEFG а матрица EF — ADG — BCG, т.е. сегмент разбит на матрицу 3х3.
0
HardWrMan ,  
BCH, конечно.
+2
dmitryrf ,  
Индикатор называется АЛС311
+1
dlinyj ,  
Это божественно!
0
tamaz1987 ,  
А какой материал можно использовать вместо пластика CD диска?
0
Astrei ,  
Автор например использует пластик от коробки из-под CD, он более прозрачен. А вообще здесь можно проявить фантазию — вокруг полным полно прозрачного пластика.
0
Leo5700 ,  
Интересный девайс у Вас вышел )
Ещё можно на подобных индикаторах сделать «наручные часы» с показаниями мультиметра.