Índice:

Fazendo telêmetro usando um laser e uma câmera: 6 etapas
Fazendo telêmetro usando um laser e uma câmera: 6 etapas

Vídeo: Fazendo telêmetro usando um laser e uma câmera: 6 etapas

Vídeo: Fazendo telêmetro usando um laser e uma câmera: 6 etapas
Vídeo: Rangefinder - trena laser - telemetro Artbull 2024, Junho
Anonim
Fazendo telêmetro usando um laser e uma câmera
Fazendo telêmetro usando um laser e uma câmera

No momento, estou planejando alguns trabalhos de interior para a próxima primavera, mas como acabei de adquirir uma casa velha, não tenho nenhuma planta da casa. Comecei a medir distâncias de parede a parede usando uma régua, mas é lento e sujeito a erros. Pensei em comprar um telêmetro para facilitar o processo, mas encontrei um artigo antigo sobre como construir seu próprio telêmetro usando um laser e uma câmera. Acontece que tenho esses componentes em minha oficina.

O projeto é baseado neste artigo:

A única diferença é que estarei construindo o rangefinder usando um Raspberry Pi Zero W, um LCD e o módulo Raspberry Pi Camera. Também vou usar o OpenCV para rastrear o laser.

Suponho que você seja um especialista em tecnologia e que se sinta confortável usando Python e a linha de comando. Neste projeto, estou usando o Pi no modo sem cabeça.

Vamos começar!

Etapa 1: Lista de Materiais

Para este projeto, você precisará de:

  • um laser barato de 6mm 5mW
  • um resistor de 220 Ω
  • um transistor 2N2222A ou algo equivalente
  • um Raspberry Pi Zero W
  • uma câmera Raspberry Pi v2
  • um visor LCD Nokia 5110 ou equivalente
  • alguns fios de ligação e uma pequena placa de ensaio

Usei minha impressora 3D para imprimir um gabarito que me ajudou durante os experimentos. Também pretendo usar a impressora 3D para construir um gabinete completo para o telêmetro. Você pode fazer totalmente sem.

Etapa 2: construir um gabarito de laser e câmera

Construindo um gabarito de laser e câmera
Construindo um gabarito de laser e câmera
Construindo um gabarito de laser e câmera
Construindo um gabarito de laser e câmera
Construindo um gabarito de laser e câmera
Construindo um gabarito de laser e câmera

O sistema assume uma distância fixa entre a lente da câmera e a saída do laser. Para facilitar os testes imprimi um gabarito no qual posso montar a câmera, o laser e um pequeno circuito de acionamento do laser.

Usei as dimensões do módulo da câmera para construir o suporte para a câmera. Usei principalmente um paquímetro digital e uma régua de precisão para fazer as medições. Para o laser, criei um orifício de 6 mm com um pouco de reforço para garantir que o laser não se mova. Tentei manter espaço suficiente para ter uma pequena placa de ensaio fixada na parte de trás do gabarito.

Usei o Tinkercad para a construção, você pode encontrar o modelo aqui:

Há uma distância de 3,75 cm entre o centro da lente do laser e o centro da lente da câmera.

Etapa 3: Conduzindo o laser e o LCD

Dirigindo o laser e o LCD
Dirigindo o laser e o LCD
Dirigindo o laser e o LCD
Dirigindo o laser e o LCD

Eu segui este tutorial https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi para acionar o display LCD com o Raspberry Pi Zero. Em vez de editar o arquivo /boot/config.txt, você pode habilitar a interface SPI usando sudo raspi-config por meio da linha de comando.

Estou usando o Raspberry Pi Zero no modo sem cabeça usando o mais recente, na data, Raspbian Stretch. Não cobrirei a instalação neste Instructable, mas você pode seguir este guia: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- linha de comando ou usando a rede 97f065af722e

Para ter um ponto de laser brilhante, estou usando o trilho 5V do Pi. Para isso, estarei usando um transistor (2N2222a ou equivalente) para acionar o laser usando o GPIO. Um resistor de 220 Ω na base do transistor permite corrente suficiente através do laser. Estou usando RPi. GPIO para manipular o Pi GPIO. Eu conectei a base do transistor ao pino GPIO22 (o 15º pino), o emissor ao solo e o coletor ao diodo laser.

Não se esqueça de habilitar a interface da câmera usando sudo raspi-config através da linha de comando.

Você pode usar este código para testar sua configuração:

Se tudo correr bem, você deve ter um arquivo dot-j.webp

No código, configuramos a câmera e o GPIO, depois habilitamos o laser, capturamos a imagem e desabilitamos o laser. Como estou executando o Pi no modo sem cabeça, preciso copiar as imagens do meu Pi para o computador antes de exibi-las.

Neste ponto, seu hardware deve estar configurado.

Etapa 4: Detectando o laser usando OpenCV

Primeiro, precisamos instalar o OpenCV no Pi. Você basicamente tem três maneiras de fazer isso. Você pode instalar a versão empacotada antiga com o apt. Você pode compilar a versão que quiser, mas neste caso o tempo de instalação pode ir até 15 horas e a maior parte para a compilação real. Ou, na minha abordagem preferida, você pode usar uma versão pré-compilada do Pi Zero que é fornecida por terceiros.

Por ser mais simples e rápido, usei um pacote de terceiros. Você pode encontrar as etapas de instalação neste artigo: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Tentei muitas outras fontes, mas seus pacotes não estavam atualizados.

Para rastrear um apontador laser, atualizei o código de https://github.com/bradmontgomery/python-laser-tracker para usar o módulo da câmera Pi em vez de um dispositivo USB. Você pode usar o código diretamente se não tiver um módulo de câmera Pi e quiser usar uma câmera USB.

Você pode encontrar o código completo aqui:

Para executar este código, você precisará instalar os pacotes Python: pillow e picamera (sudo pip3 install pillow picamera).

Etapa 5: Calibração do Range Finder

Calibração do Range Finder
Calibração do Range Finder
Calibração do Range Finder
Calibração do Range Finder
Calibração do Range Finder
Calibração do Range Finder

No artigo original, o autor projetou um procedimento de calibração para obter os parâmetros necessários para transformar as coordenadas y em uma distância real. Usei minha mesa da sala para as calibrações e uma velha peça de kraft. A cada 10 cm ou mais, anotei as coordenadas xey em uma planilha: https://docs.google.com/spreadsheets/d/1OTGu09GLAt … Para garantir que tudo funcionou corretamente, em cada etapa, verifiquei as imagens capturadas para ver se o laser foi rastreado corretamente. Se você usar um laser verde ou se o seu laser não for rastreado corretamente, será necessário ajustar o matiz, a saturação e o limite de valor do programa de acordo.

Depois de concluída a fase de medição, é hora de realmente calcular os parâmetros. Como o autor, usei uma regressão linear; na verdade, o Google Spreadsheet fez o trabalho para mim. Em seguida, reutilizei esses parâmetros para calcular uma distância estimada e compará-la com a distância real.

Agora é hora de injetar os parâmetros no programa de telêmetro para medir distâncias.

Etapa 6: medindo distâncias

Medindo distâncias
Medindo distâncias

No código: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c Atualizei as variáveis HEIGHT, GAIN e OFFSET de acordo com as medições de calibração. Usei a fórmula da distância no artigo original para estimar a distância e imprimi a distância usando o display LCD.

O código irá primeiro configurar a câmera e o GPIO, então queremos acender a luz de fundo do LCD para ver melhor as medições. A entrada LCD está conectada ao GPIO14. A cada 5 segundos mais ou menos, nós iremos:

  1. habilitar o diodo laser
  2. capturar a imagem na memória
  3. desabilite o diodo laser
  4. rastreie o laser usando os filtros de alcance HSV
  5. gravar a imagem resultante no disco para fins de depuração
  6. calcule a distância com base na coordenada y
  7. escreva a distância no display LCD.

Embora as medidas sejam altamente precisas e precisas o suficiente para o meu caso de uso, há muito espaço para melhorias. Por exemplo, o ponto do laser é de qualidade muito ruim e a linha do laser não está realmente centralizada. Com um laser de melhor qualidade, as etapas de calibração serão mais precisas. Mesmo a câmera não está muito bem posicionada no meu gabarito, ela se inclina para baixo.

Também posso aumentar a resolução do rangefinder girando a câmera em 90º usando o full com e aumentar a resolução para o máximo suportado pela câmera. Com a implementação atual, estamos limitados a uma faixa de 0 a 384 pixels, poderíamos aumentar o limite superior para 1640, 4 vezes a resolução atual. A distância será ainda mais precisa.

Como acompanhamento, vou precisar trabalhar nas melhorias de precisão que mencionei acima e construir um gabinete para o telêmetro. O gabinete precisará ter uma profundidade precisa para facilitar as medições de parede a parede.

Em suma, o sistema atual é suficiente para mim e vai me poupar algum dinheiro fazendo meu plano de casa!

Recomendado: