Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Создание дешевого лазерного дальномера для Arduino

Компоненты и расходные материалы

Arduino Nano R3
× 1
Elecrow OLED 0.96 '' 128x64
× 1
лазерная рулетка X-40
× 1
Модуль DC-DC LM2596
× 1

Необходимые инструменты и машины

Паяльник (общий)
программист ST-LINK

Приложения и онлайн-сервисы

Утилита STMicroelectronics ST-LINK

Об этом проекте

Нужен быстрый и дешевый модуль лазерного дальномера для вашего проекта Arduino?

Конечно, для этой задачи можно использовать специализированные модули, но большинство из них имеют большую цену. Модули VL53L0X / VL53L1X дешевы, но имеют очень большое поле зрения.

Так что я нашел решение:использовать дешевую лазерную рулетку «Х-40» в качестве лазерного дальномера. Эти устройства стоят 20 долларов и меньше, и они могут измерять расстояние до 40 м с точностью ~ 3 мм. Но есть две проблемы - нет возможности снять показания с ленты и измерения идут медленно - менее 1 Гц.

Чтобы решить эту проблему, я сделал реверс-инжиниринг этой лазерной рулетки и написал свою собственную прошивку для микроконтроллера STM32 модуля лазерного дальномера. Для меня была важна скорость измерения, и я могу достичь ~ 60 Гц, но максимально стабильное расстояние уменьшилось до ~ 6 м (полный максимальный диапазон составляет 37 м, но я не тестировал его).

Точность измерения расстояния может варьироваться от 1 мм до 10 мм в зависимости от цвета объекта и расстояния.

Размеры модуля:25x13x50 мм.

ВАЖНОЕ ЗАМЕЧАНИЕ:ВЫ ПОТЕРЯЕТЕ ОРИГИНАЛЬНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ, ПОЭТОМУ, УСТРОЙСТВО НЕ МОЖЕТ ИСПОЛЬЗОВАТЬСЯ В КАЧЕСТВЕ ЛЕНТОЧНОГО ИЗМЕРЕНИЯ ПОЗЖЕ!

Обратите внимание, что лазерные рулетки "X-40" могут иметь разные версии модуля лазерного дальномера, и моя прошивка поддерживает только некоторые из них!

«X-40» - не единственное название для лазерных рулеток с такими модулями - я знаю, что существует несколько различных китайских лазерных рулеток с подходящими модулями.

Шаг 1. Разборка лазерной рулетки

Разберем лазерную рулетку, чтобы достать из нее модуль лазерного дальномера.

Из корпуса нужно открутить 7 саморезов:

Лазерная рулетка в разобранном виде:

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

Обратите внимание, что модуль обозначен как «701A». Моя прошивка поддерживает только версии модулей "512A" и "701A". Несколько пользователей подтвердили, что модули "703A" тоже работают (я не тестировал).

UPD 11/2019:
Внимание:обнаружено, что новые лазерные рулетки «x-40» поставляются с модулями «M88B». Маркировка «88B» на печатной плате рядом с MCU. Эти модули основаны на микроконтроллере STM32F0 (имеет пакет QFN-32). Эти модули не поддерживаются моей прошивкой!

UPD 10/2021:
Внимание: добавлена ​​поддержка модулей U85B :см. ссылку! Они используются в современных типах лазерных рулеток.


Если ваш модуль поддерживается, вам необходимо отпаять силовые линии от модуля.

Шаг 2:Программирование модуля лазерного дальномера

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

1. Для начала нужно припаять несколько проводов для программирования микроконтроллера. Распиновка показана на картинке:

Подключите контакты 7-8 разъема клавиатуры - он нужен для включения.

Линии «GND» и «Vbat» должны быть подключены к источнику питания. Диапазон напряжения питания +2,7 ... + 3,3 В. При подаче питания на модуль на линии "Vdd" должно быть +3,5 В.

Линии «GND», «SWDIO», «SWCLK», «NRST» должны быть подключены к программатору ST-LINK. Строка «NRST» очень важна - оригинальная прошивка MCU заблокирована, поэтому эта строка нужна для входа MCU в режим программирования.

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

Кроме того, некоторым программистам (например, оригинальному "ST-LINK / V2") требуется, чтобы линия "Vbat" была соединена с линией "VCC / TVCC" программатора.

Пример подключений (у этого программатора нет строки "NRST"):

2. Установить на ПК «Утилиту ST-LINK». Если у вас нет опыта использования этого программного обеспечения, в Интернете есть множество учебных пособий.

Вам необходимо настроить утилиту (Цель -> Настройки):

Если у вашего программатора есть выход «NRST», вы можете просто включить питание и нажать «Target -> Connect» в утилите.

Если такой строки нет, выполните следующие действия:

  • Включите питание.
  • Подключите линию "NRST" модуля к GND.
  • Нажмите "Target -> Connect" в утилите.
  • Быстро отсоедините линию "NRST" от GND.
  • Утилита должна отображать соединение

У вас должна получиться такая картина:

3. Флэш-память MCU заблокирована для чтения, поэтому вам необходимо отключить «Защиту от чтения». На этом этапе вы потеряете оригинальную прошивку!

Откройте меню Target -> Option Bytes. Должны быть такие настройки:

Переключите «Защита от чтения» на «Отключено» и нажмите кнопку «Снять выделение», затем нажмите кнопку «Применить». Попробуйте перезапустить модуль (отключив питание).

Нажмите Target -> Connect. В окне журнала должна быть информация об успешном подключении, и вы должны увидеть содержимое памяти - заполненное 0xFF. Теперь вы можете загрузить кастомную прошивку в MCU.

4. Нужная прошивка находится здесь:https://github.com/iliasam/Laser_tape_reverse_engineering/tree/master/Code/Firmware_dist_calculation_fast

Выберите подходящий HEX-файл для вашего модуля и загрузите его во Flash MCU с помощью «Утилиты ST-LINK».

Шаг 3. Подключение модуля лазерного дальномера к Arduino

Вам нужно припаять провод или какой-нибудь разъем к контактной площадке TX на плате:

См. Схему подключения ниже.

Во-первых, вам нужно убедиться, что модуль дальномера исправен. На этом этапе вам не нужно подключать OLED-дисплей к Arduino - просто подключите линию TX модуля лазерного дальномера к линии TX Arduino, а линии питания модуля к источнику питания + 3 В.

Создайте пустой скетч и загрузите его в Arduino. Откройте «Serial Monitor» в среде Arduino IDE. Выберите скорость передачи:250000

Если модуль дальномера работает нормально, вы получите те же данные:

На самом деле, для этого теста лучше использовать специализированный преобразователь USB-UART. Выберите в его утилите скорость 256000 бод (это реальная скорость для микроконтроллера x-40).

Во-вторых, вам нужно собрать полную схему с дисплеем.

Подключите линию TX модуля лазерного дальномера к линии RX Arduino (вам необходимо отключить этот провод во время загрузки программы в Arduino).

Если все работает нормально, вы получите тот же результат:

Вы можете увидеть дисплей с 3 цифрами:

  • «COUNT» - счетчик полученных значений
  • «AMPL» - амплитуда сигнала. Символическая полоса («<--->») ниже показывает амплитуду графически (в логарифмической шкале).
  • Самая большая величина - расстояние в метрах и миллиметрах.

Шаг 4. Калибровка нуля

После первого запуска модуль лазерного дальномера необходимо откалибровать.

Вам нужно разместить какой-нибудь белый объект на определенном расстоянии от модуля. Расстояние до этого объекта станет нулевым расстоянием для модуля дальномера. Чтобы начать процесс калибровки, вам необходимо подключить клавиатуру к лазерной рулетке и нажать нижнюю кнопку. Модуль издаст два звуковых сигнала - в начале калибровки и в конце (продолжительность калибровки около 10 секунд).

Теперь вы можете использовать этот модуль лазерного дальномера.

Ссылки:

1. Github - результаты обратного проектирования и исходный код.

2. Habr.com - Гугл перевод статьи о процессе реверс-инжиниринга лазерной рулетки.

Извините за мой английский - я из неанглоязычной страны.

Код

  • Эскиз Arduino
Эскиз Arduino Arduino
 Нет предварительного просмотра (только загрузка). 
Github
Код для лазерной ленты https://github.com/iliasam/Laser_tape_reverse_engineering

Схема

Схема сборки макета

Производственный процесс

  1. Как измерить качество воздуха на OpenSensors
  2. Для чего используется лазерный резак?
  3. Мониторинг температуры SMART для школ
  4. 8-битная библиотека портов ввода-вывода для Arduino
  5. 64-клавишная матрица клавиатуры для прототипирования для Arduino
  6. TFT Shield для Arduino Nano - запуск
  7. Изолированный аналоговый вход для Arduino
  8. Контроллер дыхания Arduino для дешевых (USB-MIDI)
  9. Робот для супер-крутой навигации внутри помещений
  10. Обоснование использования 5G в производстве