Sunday, March 30, 2014

Лазерный дальномер с цифровым интерфейсом из дешевой лазерной рулетки


Понадобилось измерять расстояния лазерным дальномером. Обязательно чтобы с цифровым интерфейсом и точность хотя бы +/- 2 мм при диапазоне измерения 3-4 метров. Хотелось найти максимально готовое и недорогое решение. Изучение рынка выявило печальную картину: есть промышленные дальномеры по промышленным же ценам (> 30 000 рублей или вообще "цена по запросу") и дешевые лазерные "рулетки" для строителей выводящие информацию на  ЖК экран. Причем доходит до того, что продают адаптер, наделяющий подходящую лазерную рулетку цифровым интерфейсом.
Есть ещё интересный проект, в котором автору удалось, отреверсить схему, написать своё ПО для BOSCH DLE50 и оснастить его цифровым выходом.
Готового решения в стиле сонаров от Maxbotix (недорого, разные цифровые выходы, много моделей), основанного на лазерном принципе измерения не нашлось вообще.

И тут на помощь пришла статья, в которой описывается как использовать имеющийся и работающий UART TTL интерфейс в дешевом ($60) дальномере UT390B! Именно этим вариантом я и воспользовался. Собственно вся информация в статье, от себя добавлю пару замечаний.

Во-первых, прибор нужно разбирать очень осторожно. В статье есть пошаговая разборка в картинках и на одном из шагов предлагается открутить 3 винта находящихся под экраном, на которых лазерный модуль крепится к плате. Их откручивать нельзя! Да и сам экран снимать необязательно. Если их открутить, то можно легко нарушить контакт модуля с платой или даже оторвать его от платы, так как без винтов он держится только на припое. Чтобы все прошло безболезненно, нужно вытащить пластмассовую деталь из переднего торца и изъять плату вместе с модулем (естественно предварительно отпаяв контакты для батареек от платы).


Во-вторых, UT390B основан на самом обычном и супер распространенном микроконтроллере STM32F103C8, что довольно необычно, так как обычно в дешевых китайских приборах бывает либо никому не известный чип, либо с затёртой маркировкой, либо вообще нечто в бескорпусном исполнении.

Как оказалось, на контактные площадки выведен USART1 этого микроконтроллера и пин BOOT0, используемый на всех STM32 для запуска заводского загрузчика по USART. Этот факт был подтверждён, когда программа от ST (Flash Loader Demo) соединилась с микроконтроллером (пин BOOT0, перед подачей питания нужно подключить на VCC). Но самое интересное даже не это, а то что в этом серийном устройстве не стоит защиты от чтения и прошивка легко поддаётся считыванию! Так что можно диззасемблировать прошивку, отреверсить схему (правда это будет непросто, так как схемотехника прибора непроста, да и плата многослойная) и написать свою прошивку с шахматами и стюардессами.

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


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

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

No comments:

Post a Comment