Съдържание:

Създаване на далекомер с помощта на лазер и камера: 6 стъпки
Създаване на далекомер с помощта на лазер и камера: 6 стъпки

Видео: Създаване на далекомер с помощта на лазер и камера: 6 стъпки

Видео: Създаване на далекомер с помощта на лазер и камера: 6 стъпки
Видео: По следам древней цивилизации? 🗿 Что, если мы ошиблись в своем прошлом? 2024, Юни
Anonim
Създаване на далекомер с помощта на лазер и камера
Създаване на далекомер с помощта на лазер и камера

В момента планирам вътрешни работи за следващата пролет, но тъй като току -що придобих стара къща, нямам никакъв план за къща. Започнах да измервам разстоянията от стена до стена с помощта на линийка, но тя е бавна и склонна към грешки. Мислех да си купя далекомер, за да улесня процеса, но след това намерих стара статия за изграждането на собствен далекомер с помощта на лазер и камера. Оказа се, че имам тези компоненти в работилницата си.

Проектът се основава на тази статия:

Единствената разлика е, че ще изграждам далекомера, използвайки Raspberry Pi Zero W, LCD дисплей и модула Raspberry Pi Camera. Ще използвам и OpenCV за проследяване на лазера.

Предполагам, че сте технически разбиращи и че се чувствате удобно да използвате Python и командния ред. В този проект използвам Pi в режим без глава.

Да започваме!

Стъпка 1: Списък на материалите

За този проект ще ви трябва:

  • евтин 6 мм 5mW лазер
  • 220 Ω резистор
  • транзистор 2N2222A или нещо подобно
  • a Raspberry Pi Zero W
  • Raspberry Pi Camera v2
  • LCD дисплей Nokia 5110 или еквивалент
  • няколко джъмперни проводници и малка дъска

Използвах моя 3D принтер, за да отпечатам джиг, който ми помогна по време на експериментите. Планирам също да използвам 3D принтера за изграждане на цялостно заграждение за далекомера. Можете напълно без.

Стъпка 2: Изграждане на лазер и камера

Изграждане на лазер и камера Джиг
Изграждане на лазер и камера Джиг
Изграждане на лазер и камера Джиг
Изграждане на лазер и камера Джиг
Изграждане на лазер и камера Джиг
Изграждане на лазер и камера Джиг

Системата приема фиксирано разстояние между обектива на камерата и лазерния изход. За да улесня тестовете, отпечатах джиг, в който мога да монтирам камерата, лазера и малка верига за задвижване на лазера.

Използвах размерите на модула на камерата за изграждане на стойката за камерата. Използвах главно цифров шублер и прецизен владетел, за да направя измерванията. За лазера създадох 6 мм отвор с малко подсилване, за да гарантирам, че лазерът няма да се движи. Опитах се да запазя достатъчно място, за да има фиксирана малка дъска в задната част на джига.

Използвах Tinkercad за изграждането, можете да намерите модела тук:

Между центъра на лазерния обектив и центъра на обектива на камерата има 3,75 см разстояние.

Стъпка 3: Управление на лазера и LCD дисплея

Шофиране на лазер и LCD
Шофиране на лазер и LCD
Шофиране на лазер и LCD
Шофиране на лазер и LCD

Следвах този урок https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi, за да управлявам LCD дисплея с 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- command-line-or-using-the-network-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: възглавница и пикамера (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 според измерванията за калибриране. Използвах формулата за разстояние в оригиналната статия, за да преценя разстоянието и отпечатах разстоянието с помощта на LCD дисплея.

Кодът първо ще настрои камерата и GPIO, след това искаме да светнем LCD подсветката, за да видим по -добре измерванията. LCD входът е включен към GPIO14. На всеки 5 секунди или повече ще:

  1. активирайте лазерния диод
  2. заснемете изображението в паметта
  3. деактивирайте лазерния диод
  4. проследявайте лазера с помощта на филтрите за обхват на HSV
  5. запишете полученото изображение на диска за отстраняване на грешки
  6. изчислете разстоянието въз основа на координатата y
  7. запишете разстоянието на LCD дисплея.

Въпреки това, мерките са много прецизни и достатъчно точни за моя случай на използване, има много място за подобрения. Например, лазерната точка е с много лошо качество и лазерната линия всъщност не е центрирана. С лазер с по -добро качество стъпките на калибриране ще бъдат по -прецизни. Дори камерата не е много добре позиционирана в джига ми, тя се накланя към дъното.

Мога също така да увелича разделителната способност на далекомера чрез завъртане на камерата с 90º с помощта на пълната с и да увелича разделителната способност до максималната поддържана от камерата. С настоящата реализация сме ограничени до 0 до 384 пиксела, можем да увеличим горната граница до 1640, 4 пъти над текущата разделителна способност. Разстоянието ще бъде още по -точно.

Като последващи действия ще трябва да работя върху подобренията на прецизността, които споменах по-горе, и да изградя заграждение за далекомера. Корпусът ще трябва да бъде с прецизна дълбочина, за да улесни измерванията от стена до стена.

Като цяло сегашната система ми е достатъчна и ще ми спести някои пари, за да направя моя дом план!

Препоръчано: