Taula de continguts:

Fer telèfons amb un làser i una càmera: 6 passos
Fer telèfons amb un làser i una càmera: 6 passos

Vídeo: Fer telèfons amb un làser i una càmera: 6 passos

Vídeo: Fer telèfons amb un làser i una càmera: 6 passos
Vídeo: Быстрая укладка плитки на стены в санузле. ПЕРЕДЕЛКА ХРУЩЕВКИ от А до Я #27 2024, De novembre
Anonim
Fer telemetre mitjançant un làser i una càmera
Fer telemetre mitjançant un làser i una càmera

Actualment estic planejant alguns treballs d'interior per a la propera primavera, però com que acabo d'adquirir una casa antiga no tinc cap pla de casa. Vaig començar a mesurar distàncies de paret a paret amb una regla, però és lent i propens a errors. Vaig pensar a comprar un telemetre per facilitar el procés, però després vaig trobar un article antic sobre la construcció del seu propi telemetre mitjançant un làser i una càmera. Resulta que tinc aquests components al meu taller.

El projecte es basa en aquest article:

L’única diferència és que construiré el telemetre amb un Raspberry Pi Zero W, un LCD i el mòdul Raspberry Pi Camera. També utilitzaré OpenCV per fer un seguiment del làser.

Suposo que sou un expert en tecnologia i que esteu còmode utilitzant Python i la línia d'ordres. En aquest projecte estic fent servir el Pi en mode sense cap.

Comencem!

Pas 1: Llista de materials

Per a aquest projecte, necessitareu:

  • un làser econòmic de 5 mm de 6 mm
  • una resistència de 220 Ω
  • un transistor 2N2222A o alguna cosa equivalent
  • un Raspberry Pi Zero W
  • una càmera Raspberry Pi v2
  • una pantalla LCD Nokia 5110 o equivalent
  • alguns cables de pont i una petita tauleta

Vaig utilitzar la meva impressora 3D per imprimir una plantilla que em va ajudar durant els experiments. També tinc previst utilitzar la impressora 3D per construir un recinte complet per al telemetre. Es pot prescindir totalment.

Pas 2: crear un model de làser i càmera

Construint un model de làser i càmera
Construint un model de làser i càmera
Construint un model de làser i càmera
Construint un model de làser i càmera
Construint un model de làser i càmera
Construint un model de làser i càmera

El sistema assumeix una distància fixa entre l'objectiu de la càmera i la sortida del làser. Per facilitar les proves, vaig imprimir una plantilla on podia muntar la càmera, el làser i un petit circuit de conducció per al làser.

He utilitzat les dimensions del mòdul de la càmera per construir el suport per a la càmera. He utilitzat principalment una pinça digital i una regla de precisió per prendre les mesures. Per al làser, he creat un forat de 6 mm amb una mica de reforç per garantir que el làser no es mogui. Vaig intentar mantenir prou espai per fixar una petita tauleta a la part posterior de la plantilla.

He utilitzat Tinkercad per a la construcció; podeu trobar el model aquí:

Hi ha una distància de 3,75 cm entre el centre de la lent làser i el centre de la lent de la càmera.

Pas 3: conduir el làser i la pantalla LCD

Conducció del làser i de la pantalla LCD
Conducció del làser i de la pantalla LCD
Conducció del làser i de la pantalla LCD
Conducció del làser i de la pantalla LCD

He seguit aquest tutorial https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi per conduir la pantalla LCD amb el Raspberry Pi Zero. En lloc d'editar el fitxer /boot/config.txt, podeu habilitar la interfície SPI mitjançant sudo raspi-config mitjançant la línia d'ordres.

Estic fent servir el Raspberry Pi Zero en mode sense cap amb la versió més recent de Raspbian Stretch. No cobriré la instal·lació en aquest instructiu, però podeu seguir aquesta guia: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- línia d'ordres o utilitzant la xarxa-97f065af722e

Per tenir un punt làser brillant, estic fent servir el carril de 5V del Pi. Per a això, utilitzaré un transistor (2N2222a o equivalent) per conduir el làser mitjançant el GPIO. Una resistència de 220 Ω a la base del transistor permet prou corrent a través del làser. Estic fent servir RPi. GPIO per manipular el Pi GPIO. Vaig connectar la base del transistor al pin GPIO22 (el pin 15), l’emissor a terra i el col·lector al díode làser.

No oblideu habilitar la interfície de la càmera mitjançant sudo raspi-config a través de la línia d’ordres.

Podeu utilitzar aquest codi per provar la vostra configuració:

Si tot ha anat bé, hauríeu de tenir un fitxer dot-j.webp

Al codi, configurem la càmera i el GPIO, després activem el làser, capturem la imatge i inhabilitem el làser. Com que estic executant el Pi en mode sense cap, he de copiar les imatges del meu Pi al meu ordinador abans de mostrar-les.

En aquest moment, s’hauria de configurar el maquinari.

Pas 4: Detecció del làser mitjançant OpenCV

En primer lloc, hem d’instal·lar OpenCV al Pi. Bàsicament teniu tres maneres de fer-ho. Podeu instal·lar la versió antiga empaquetada amb apt. Podeu compilar la versió que vulgueu, però en aquest cas el temps d’instal·lació pot arribar fins a 15 hores i la major part per a la compilació real. O, segons el meu enfocament preferit, podeu utilitzar una versió precompilada per al Pi Zero que proporciona un tercer.

Com que és més senzill i ràpid, he utilitzat un paquet de tercers. Podeu trobar els passos d’instal·lació en aquest article: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ He provat moltes altres fonts, però els seus paquets no estaven actualitzats.

Per fer un seguiment d’un punter làser, he actualitzat el codi de https://github.com/bradmontgomery/python-laser-tracker per utilitzar el mòdul de càmera Pi en lloc d’un dispositiu USB. Podeu utilitzar directament el codi si no teniu cap mòdul de càmera Pi i voleu utilitzar una càmera USB.

Podeu trobar el codi complet aquí:

Per executar aquest codi, haureu d’instal·lar els paquets Python: pillow i picamera (sudo pip3 install pillow picamera).

Pas 5: calibració del telemetre

Calibració del telemetre
Calibració del telemetre
Calibració del telemetre
Calibració del telemetre
Calibració del telemetre
Calibració del telemetre

A l'article original, l'autor va dissenyar un procediment de calibratge per obtenir els paràmetres necessaris per transformar les coordenades y a una distància real. Vaig fer servir la taula de la meva sala d’estar per fer els calibratges i una peça antiga de kraft. Cada 10 cm aproximadament vaig assenyalar les coordenades xy en un full de càlcul: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Per assegurar-me que tot funcionés correctament, a cada pas, vaig comprovar les imatges capturades per veure si es va fer un seguiment correcte del làser. Si utilitzeu un làser verd o si el làser no es fa un seguiment correcte, haureu d’ajustar el to, la saturació i el llindar de valor del programa en conseqüència.

Un cop feta la fase de mesura, és hora de calcular els paràmetres. Com l'autor, vaig utilitzar una regressió lineal; de fet, el full de càlcul de Google va fer la feina per mi. A continuació, he reutilitzat aquests paràmetres per calcular una distància estimada i contrastar-la amb la distància real.

Ara és hora d’injectar els paràmetres al programa de telemetre per mesurar distàncies.

Pas 6: mesurar distàncies

Mesura de distàncies
Mesura de distàncies

Al codi: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c he actualitzat les variables HEIGHT, GAIN i OFFSET segons les mesures de calibratge. Vaig utilitzar la fórmula de la distància a l'article original per calcular la distància i vaig imprimir la distància amb la pantalla LCD.

El codi primer configurarà la càmera i el GPIO, i després volem il·luminar la llum de fons LCD per veure millor les mesures. L'entrada LCD està connectada al GPIO14. Cada 5 segons aproximadament, farem:

  1. habilitar el díode làser
  2. captura la imatge a la memòria
  3. desactiveu el díode làser
  4. fer un seguiment del làser mitjançant els filtres de gamma HSV
  5. escriviu la imatge resultant al disc amb la finalitat de depurar
  6. calculeu la distància en funció de la coordenada y
  7. escriviu la distància a la pantalla LCD.

No obstant això, les mesures són molt precises i prou precises per al meu cas d'ús, hi ha molt marge per millorar. Per exemple, el punt làser és de molt baixa qualitat i la línia làser no està realment centrada. Amb un làser de millor qualitat, els passos de calibratge seran més precisos. Fins i tot la càmera no està ben posicionada a la meva plantilla, s’inclina cap a la part inferior.

També puc augmentar la resolució del telemetre mitjançant la rotació de la càmera en 90º fent servir la funció completa amb i augmentar la resolució al màxim admès per la càmera. Amb la implementació actual, ens limitem a un rang de 0 a 384 píxels, podríem augmentar el límit superior a 1640, quatre vegades la resolució actual. La distància serà encara més precisa.

Com a seguiments, hauré de treballar en les millores de precisió que he esmentat anteriorment i construir un recinte per al telemetre. El recinte haurà de tenir una profunditat precisa per facilitar les mesures de paret a paret.

Tot plegat, el sistema actual és suficient per a mi i m’estalviarà una mica de diners per fer el pla de casa.

Recomanat: