Оглавление:
- Шаг 1: Список материалов
- Шаг 2: Создание приспособления для лазера и камеры
- Шаг 3: Управление лазером и ЖК-дисплеем
- Шаг 4: Обнаружение лазера с помощью OpenCV
- Шаг 5: Калибровка дальномера
- Шаг 6: Измерение расстояний
Видео: Изготовление дальномера с помощью лазера и камеры: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
В настоящее время я планирую некоторые внутренние работы на следующую весну, но поскольку я только что приобрел старый дом, у меня нет плана дома. Я начал измерять расстояние от стены до стены с помощью линейки, но это медленно и подвержено ошибкам. Я подумал о покупке дальномера, чтобы упростить процесс, но потом я нашел старую статью о создании собственного дальномера с использованием лазера и камеры. Как оказалось, эти компоненты есть у меня в мастерской.
Проект основан на этой статье:
Единственная разница в том, что я буду строить дальномер, используя Raspberry Pi Zero W, ЖК-дисплей и модуль камеры Raspberry Pi. Я также буду использовать OpenCV для отслеживания лазера.
Я предполагаю, что вы разбираетесь в технологиях и комфортно используете Python и командную строку. В этом проекте я использую Pi в безголовом режиме.
Давайте начнем!
Шаг 1: Список материалов
Для этого проекта вам понадобятся:
- дешевый лазер 6 мм 5 мВт
- резистор 220 Ом
- транзистор 2N2222A или аналогичный
- Raspberry Pi Zero W
- Камера Raspberry Pi v2
- ЖК-дисплей Nokia 5110 или аналогичный
- несколько перемычек и небольшой макет
Я использовал свой 3d-принтер, чтобы напечатать приспособление, которое помогло мне во время экспериментов. Я также планирую использовать 3D-принтер для создания полноценного корпуса для дальномера. Вы можете полностью обойтись без него.
Шаг 2: Создание приспособления для лазера и камеры
Система предполагает фиксированное расстояние между объективом камеры и выходом лазера. Чтобы облегчить испытания, я напечатал приспособление, в которое я могу установить камеру, лазер и небольшую схему управления лазером.
Я использовал размеры модуля камеры, чтобы построить крепление для камеры. В основном для измерений я использовал цифровой штангенциркуль и прецизионную линейку. Для лазера я сделал 6-миллиметровое отверстие с небольшим усилением, чтобы лазер не двигался. Я постарался оставить достаточно места, чтобы прикрепить небольшую макетную плату к задней части приспособления.
Я использовал Tinkercad для сборки, вы можете найти модель здесь:
Расстояние между центром линзы лазера и центром линзы камеры составляет 3,75 см.
Шаг 3: Управление лазером и ЖК-дисплеем
Я последовал этому руководству https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi, чтобы управлять ЖК-дисплеем с помощью Raspberry Pi Zero. Вместо редактирования файла /boot/config.txt вы можете включить интерфейс SPI с помощью sudo raspi-config через командную строку.
Я использую Raspberry Pi Zero в безголовом режиме, используя последнюю на сегодняшний день версию Raspbian Stretch. Я не буду описывать установку в этом руководстве, но вы можете следовать этому руководству: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- командная строка или использование сети 97f065af722e
Чтобы получить яркую лазерную точку, я использую шину 5V Pi. Для этого я буду использовать транзистор (2N2222a или аналогичный) для управления лазером через GPIO. Резистор 220 Ом на базе транзистора пропускает достаточный ток через лазер. Я использую RPi. GPIO для управления Pi GPIO. Я подключил базу транзистора к выводу GPIO22 (15 вывод), эмиттер к земле, а коллектор к лазерному диоду.
Не забудьте включить интерфейс камеры с помощью sudo raspi-config через командную строку.
Вы можете использовать этот код для проверки своей настройки:
Если все прошло хорошо, у вас должен быть файл dot.jpg, в котором вы увидите фон и лазерную точку.
В коде мы настраиваем камеру и GPIO, затем включаем лазер, делаем снимок и отключаем лазер. Поскольку я запускаю Pi в режиме без головы, мне нужно скопировать изображения с моего Pi на мой компьютер, прежде чем показывать их.
На этом этапе ваше оборудование должно быть настроено.
Шаг 4: Обнаружение лазера с помощью OpenCV
Во-первых, нам нужно установить OpenCV на Pi. У вас есть три способа сделать это. Вы можете установить старую упакованную версию с помощью apt. Вы можете скомпилировать нужную вам версию, но в этом случае время установки может достигать 15 часов, и большую часть этого времени занимает сама компиляция. Или, как я предпочитаю, вы можете использовать предварительно скомпилированную версию для Pi Zero, предоставленную третьей стороной.
Поскольку это проще и быстрее, я использовал сторонний пакет. Вы можете найти шаги по установке в этой статье: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Я пробовал много других источников, но их пакеты не были обновлены.
Чтобы отслеживать лазерную указку, я обновил код с https://github.com/bradmontgomery/python-laser-tracker, чтобы использовать модуль камеры Pi вместо USB-устройства. Вы можете напрямую использовать код, если у вас нет модуля камеры Pi и вы хотите использовать камеру USB.
Вы можете найти полный код здесь:
Чтобы запустить этот код, вам необходимо установить пакеты Python: Pillow и Picamera (sudo pip3 install Pillow Picamera).
Шаг 5: Калибровка дальномера
В оригинальной статье автор разработал процедуру калибровки, чтобы получить необходимые параметры для преобразования координат y в фактическое расстояние. Я использовал стол в гостиной для калибровки и старый кусок крафт-бумаги. Каждые 10 см или около того я записывал координаты x и y в электронную таблицу: https://docs.google.com/spreadsheets/d/1OTGu09GLAt … Чтобы убедиться, что все работает правильно, на каждом этапе я проверял захваченные изображения, чтобы убедиться, что лазер был правильно отслежен. Если вы используете зеленый лазер или ваш лазер неправильно отслеживается, вам нужно будет соответствующим образом настроить оттенок, насыщенность и пороговое значение программы.
После завершения этапа измерения пора фактически вычислить параметры. Как и автор, я использовал линейную регрессию; на самом деле Google Spreadsheet сделал всю работу за меня. Затем я повторно использовал эти параметры, чтобы вычислить приблизительное расстояние и сравнить его с фактическим расстоянием.
Пришло время ввести параметры в программу дальномера для измерения расстояний.
Шаг 6: Измерение расстояний
В коде: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c Я обновил переменные HEIGHT, GAIN и OFFSET в соответствии с калибровочными измерениями. Я использовал формулу расстояния из оригинальной статьи, чтобы оценить расстояние, и распечатал расстояние с помощью ЖК-дисплея.
Код сначала настроит камеру и GPIO, затем мы хотим включить подсветку ЖК-дисплея, чтобы лучше видеть измерения. Вход ЖК-дисплея подключен к GPIO14. Примерно каждые 5 секунд мы будем:
- включить лазерный диод
- захватить изображение в память
- отключить лазерный диод
- отслеживать лазер с помощью фильтров диапазона HSV
- записать полученный образ на диск для отладки
- вычислить расстояние на основе координаты y
- запишите расстояние на ЖК-дисплее.
Хотя, конечно, измерения очень точны и достаточно точны для моего случая использования, есть много возможностей для улучшений. Например, лазерная точка очень низкого качества, а лазерная линия на самом деле не отцентрирована. С лазером лучшего качества этапы калибровки будут более точными. Даже камера в моей приманке не очень удачно расположена, наклоняется вниз.
Я также могу увеличить разрешение дальномера, повернув камеру на 90º, используя полный с, и увеличить разрешение до максимального, поддерживаемого камерой. В текущей реализации мы ограничены диапазоном от 0 до 384 пикселей, мы можем увеличить верхний предел до 1640, что в 4 раза превышает текущее разрешение. Расстояние будет еще точнее.
В качестве продолжения мне нужно будет поработать над улучшениями точности, о которых я упоминал выше, и построить корпус для дальномера. Корпус должен иметь точную глубину, чтобы облегчить измерения от стены до стены.
В общем, нынешней системы мне достаточно, и я сэкономлю немного денег на планировании дома!
Рекомендуемые:
Управляйте своим компьютером с помощью ЛАЗЕРА !: 5 шагов (с изображениями)
Управляйте своим компьютером … с помощью ЛАЗЕРА!: Вас когда-нибудь раздражало то, что вам нужно приближаться к компьютеру, когда вы его используете? Вы когда-нибудь мечтали о беспроводной мыши, но так и не купили ее? Что ж, вот временное решение для вас! Это позволяет вам управлять движением мыши
Измерение расстояния с помощью лазера: 5 шагов
Измерение расстояния с помощью лазеров: в этом проекте я сделал простое устройство, которое может измерять расстояние между собой и любым физическим объектом. Устройство лучше всего работает на расстоянии около 2-4 метров и является довольно точным
Изготовление печатных плат с помощью лазера: 4 шага (с изображениями)
Изготовление печатных плат с помощью лазеров: самодельная печатная плата настолько хороша, насколько хороша маска, которую вы на нее надеваете. Независимо от того, какой метод вы используете для травления, вам все равно нужно наклеить изображение вашей схемы на плату и убедиться, что оно оставляет четкие, чистые, сплошные следы
Визуальная музыка (с помощью лазера!): 5 шагов
Визуальная музыка (с лазером!): Вы когда-нибудь задумывались, как глухому человеку нравится музыка? Ну, они не могут, потому что вам нужно слушать музыку, а большинство людей знают, что глухие люди не слышат. В любом случае, я создал способ "смотреть" музыку, отразив лазер
Делайте потрясающие макро-снимки с помощью любой камеры телефона, камеры телефона особенно iPhone: 6 шагов
Делайте потрясающие макро-снимки с помощью любой камеры телефона Камера … Особенно iPhone: Всегда хотел сделать одну из этих потрясающих фотографий крупным планом … ту, которая гласит … ВАУ!? … с камерой телефона не меньше !? По сути, это дополнение для любой камеры телефона с камерой, позволяющее увеличить объектив существующей камеры, чтобы снимать