Tabla de contenido:

Hacer un telémetro usando un láser y una cámara: 6 pasos
Hacer un telémetro usando un láser y una cámara: 6 pasos

Video: Hacer un telémetro usando un láser y una cámara: 6 pasos

Video: Hacer un telémetro usando un láser y una cámara: 6 pasos
Video: Medidor de distancia láser con cámara objetivo 2024, Noviembre
Anonim
Hacer un telémetro usando un láser y una cámara
Hacer un telémetro usando un láser y una cámara

Actualmente estoy planeando algunos trabajos de interior para la próxima primavera, pero como acabo de adquirir una casa antigua, no tengo ningún plano de la casa. Empecé a medir distancias de pared a pared con una regla, pero es lento y propenso a errores. Pensé en comprar un telémetro para facilitar el proceso, pero luego encontré un artículo antiguo sobre cómo construir su propio telémetro usando un láser y una cámara. Resulta que tengo esos componentes en mi taller.

El proyecto se basa en este artículo:

La única diferencia es que construiré el telémetro usando una Raspberry Pi Zero W, una pantalla LCD y el módulo de cámara Raspberry Pi. También usaré OpenCV para rastrear el láser.

Supongo que eres un experto en tecnología y que te sientes cómodo usando Python y la línea de comandos. En este proyecto, estoy usando Pi en modo sin cabeza.

¡Empecemos!

Paso 1: Lista de materiales

Para este proyecto, necesitará:

  • un láser barato de 6 mm y 5 mW
  • una resistencia de 220 Ω
  • un transistor 2N2222A o algo equivalente
  • una Raspberry Pi Zero W
  • una cámara Raspberry Pi v2
  • una pantalla LCD Nokia 5110 o equivalente
  • algunos cables de puente y una pequeña placa de pruebas

Usé mi impresora 3D para imprimir una plantilla que me ayudó durante los experimentos. También planeo usar la impresora 3D para construir un gabinete completo para el telémetro. Puedes prescindir totalmente.

Paso 2: Creación de una plantilla de cámara y láser

Creación de una plantilla de cámara y láser
Creación de una plantilla de cámara y láser
Creación de una plantilla de cámara y láser
Creación de una plantilla de cámara y láser
Creación de una plantilla de láser y cámara
Creación de una plantilla de láser y cámara

El sistema asume una distancia fija entre la lente de la cámara y la salida del láser. Para facilitar las pruebas imprimí una plantilla en la que puedo montar la cámara, el láser y un pequeño circuito de conducción para el láser.

Usé las dimensiones del módulo de la cámara para construir el soporte para la cámara. Usé principalmente un calibre digital y una regla de precisión para tomar las medidas. Para el láser, creé un orificio de 6 mm con un poco de refuerzo para asegurar que el láser no se mueva. Traté de mantener suficiente espacio para tener una pequeña placa de pruebas fijada en la parte posterior de la plantilla.

Usé Tinkercad para la compilación, puedes encontrar el modelo aquí:

Hay una distancia de 3,75 cm entre el centro de la lente láser y el centro de la lente de la cámara.

Paso 3: Manejo del láser y la pantalla LCD

Manejo del láser y la pantalla LCD
Manejo del láser y la pantalla LCD
Manejo del láser y la pantalla LCD
Manejo del láser y la pantalla LCD

Seguí este tutorial https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi para manejar la pantalla LCD con la Raspberry Pi Zero. En lugar de editar el archivo /boot/config.txt, puede habilitar la interfaz SPI usando sudo raspi-config a través de la línea de comando.

Estoy usando Raspberry Pi Zero en modo sin cabeza usando el último, en la fecha, Raspbian Stretch. No cubriré la instalación en este Instructable, pero puede seguir esta guía: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- línea-de-comandos-o-usando-la-red-97f065af722e

Para tener un punto láser brillante, estoy usando el riel de 5V del Pi. Para eso, usaré un transistor (2N2222a o equivalente) para impulsar el láser usando el GPIO. Una resistencia de 220 Ω en la base del transistor permite suficiente corriente a través del láser. Estoy usando RPi. GPIO para manipular el Pi GPIO. Conecté la base del transistor al pin GPIO22 (el pin 15), el emisor al suelo y el colector al diodo láser.

No olvide habilitar la interfaz de la cámara usando sudo raspi-config a través de la línea de comando.

Puede usar este código para probar su configuración:

Si todo salió bien deberías tener un archivo dot-j.webp

En el código, configuramos la cámara y el GPIO, luego habilitamos el láser, capturamos la imagen y deshabilitamos el láser. Como ejecuto el Pi en modo sin cabeza, necesito copiar las imágenes de mi Pi a mi computadora antes de mostrarlas.

En este punto, su hardware debe estar configurado.

Paso 4: Detectar el láser usando OpenCV

Primero, necesitamos instalar OpenCV en la Pi. Básicamente tienes tres formas de hacerlo. Puede instalar la versión anterior empaquetada con apt. Puede compilar la versión que desee, pero en este caso el tiempo de instalación puede ser de hasta 15 horas y la mayor parte para la compilación real. O, mi enfoque preferido, puede usar una versión precompilada para Pi Zero proporcionada por un tercero.

Debido a que es más simple y rápido, utilicé un paquete de terceros. Puede encontrar los pasos de instalación en este artículo: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Probé muchas otras fuentes pero sus paquetes no estaban actualizados.

Para rastrear un puntero láser, actualicé el código de https://github.com/bradmontgomery/python-laser-tracker para usar el módulo de cámara Pi en lugar de un dispositivo USB. Puede usar el código directamente si no tiene un módulo de cámara Pi y desea usar una cámara USB.

Puede encontrar el código completo aquí:

Para ejecutar este código, deberá instalar los paquetes de Python: pillow y picamera (sudo pip3 install pillow picamera).

Paso 5: Calibración del telémetro

Calibración del telémetro
Calibración del telémetro
Calibración del telémetro
Calibración del telémetro
Calibración del telémetro
Calibración del telémetro

En el artículo original, el autor diseñó un procedimiento de calibración para obtener los parámetros necesarios para transformar las coordenadas y en una distancia real. Usé la mesa de mi sala para las calibraciones y una vieja pieza de papel kraft. Cada 10 cm más o menos anoté las coordenadas xey en una hoja de cálculo: https://docs.google.com/spreadsheets/d/1OTGu09GLAt … Para asegurarme de que todo funcionaba correctamente, en cada paso, verifiqué las imágenes capturadas para ver si el láser se rastreó correctamente. Si utiliza un láser verde o si su láser no se rastrea correctamente, deberá ajustar el tono, la saturación y el umbral de valor del programa en consecuencia.

Una vez finalizada la fase de medición, es el momento de calcular los parámetros. Como el autor, utilicé una regresión lineal; de hecho, Google Spreadsheet hizo el trabajo por mí. Luego reutilicé esos parámetros para calcular una distancia estimada y compararla con la distancia real.

Ahora es el momento de inyectar los parámetros en el programa del telémetro para medir distancias.

Paso 6: Medir distancias

Medir distancias
Medir distancias

En el código: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c actualicé las variables HEIGHT, GAIN y OFFSET según las medidas de calibración. Usé la fórmula de la distancia en el artículo original para estimar la distancia e imprimí la distancia usando la pantalla LCD.

El código primero configurará la cámara y el GPIO, luego queremos encender la luz de fondo de la pantalla LCD para ver mejor las medidas. La entrada LCD está conectada al GPIO14. Cada 5 segundos aproximadamente, haremos lo siguiente:

  1. habilitar el diodo láser
  2. capturar la imagen en la memoria
  3. desactivar el diodo láser
  4. rastrear el láser usando los filtros de rango HSV
  5. escribir la imagen resultante en el disco con fines de depuración
  6. calcular la distancia basándose en la coordenada y
  7. escriba la distancia en la pantalla LCD.

Sin embargo, las medidas son muy precisas y lo suficientemente precisas para mi caso de uso, hay mucho margen de mejora. Por ejemplo, el punto láser es de muy mala calidad y la línea láser no está realmente centrada. Con un láser de mejor calidad, los pasos de calibración serán más precisos. Incluso la cámara no está realmente bien colocada en mi plantilla, se inclina hacia el fondo.

También puedo aumentar la resolución del telémetro girando la cámara en 90º usando el full con y aumentar la resolución al máximo admitido por la cámara. Con la implementación actual estamos limitados a un rango de 0 a 384 píxeles, podríamos aumentar el límite superior a 1640, 4 veces la resolución actual. La distancia será aún más precisa.

Como seguimiento, tendré que trabajar en las mejoras de precisión que mencioné anteriormente y construir un recinto para el telémetro. El cerramiento deberá tener una profundidad precisa para facilitar las mediciones de pared a pared.

¡En general, el sistema actual es suficiente para mí y me ahorrará algo de dinero haciendo el plan de mi casa!

Recomendado: