Sommario:

Realizzare un telemetro usando un laser e una fotocamera: 6 passaggi
Realizzare un telemetro usando un laser e una fotocamera: 6 passaggi

Video: Realizzare un telemetro usando un laser e una fotocamera: 6 passaggi

Video: Realizzare un telemetro usando un laser e una fotocamera: 6 passaggi
Video: Telemetro laser fino a 900Y. Tachimetro, misuratore di pendenza, metro laser GOGOGO SPORT GS03 GS24 2024, Dicembre
Anonim
Realizzare un telemetro usando un laser e una fotocamera
Realizzare un telemetro usando un laser e una fotocamera

Attualmente sto pianificando alcuni lavori interni per la prossima primavera, ma poiché ho appena acquistato una vecchia casa, non ho alcun progetto per la casa. Ho iniziato a misurare le distanze da un muro all'altro usando un righello, ma è lento e soggetto a errori. Ho pensato di acquistare un telemetro per facilitare il processo, ma poi ho trovato un vecchio articolo sulla costruzione del proprio telemetro utilizzando un laser e una fotocamera. A quanto pare, ho quei componenti nel mio laboratorio.

Il progetto si basa su questo articolo:

L'unica differenza è che costruirò il telemetro utilizzando un Raspberry Pi Zero W, un LCD e il modulo Raspberry Pi Camera. Userò anche OpenCV per tracciare il laser.

Suppongo che tu sia un esperto di tecnologia e che ti senti a tuo agio nell'usare Python e la riga di comando. In questo progetto sto usando il Pi in modalità headless.

Iniziamo!

Passaggio 1: elenco dei materiali

Per questo progetto avrai bisogno di:

  • un economico laser da 6 mm 5 mW
  • un resistore da 220
  • un transistor 2N2222A o qualcosa di equivalente
  • un Raspberry Pi Zero W
  • una fotocamera Raspberry Pi v2
  • un display LCD Nokia 5110 o equivalente
  • alcuni ponticelli e una piccola breadboard

Ho usato la mia stampante 3D per stampare una dima che mi ha aiutato durante gli esperimenti. Ho anche intenzione di utilizzare la stampante 3D per costruire un involucro completo per il telemetro. Puoi farne a meno.

Passaggio 2: creazione di una maschera per laser e fotocamera

Costruire una maschera per laser e fotocamera
Costruire una maschera per laser e fotocamera
Costruire una maschera per laser e fotocamera
Costruire una maschera per laser e fotocamera
Costruire una maschera per laser e fotocamera
Costruire una maschera per laser e fotocamera

Il sistema presuppone una distanza fissa tra l'obiettivo della telecamera e l'uscita laser. Per facilitare le prove ho stampato una dima in cui posso montare la camera, il laser e un piccolo circuito di pilotaggio per il laser.

Ho usato le dimensioni del modulo della fotocamera per costruire il supporto per la fotocamera. Ho usato principalmente un calibro digitale e un righello di precisione per prendere le misure. Per il laser, ho creato un foro di 6 mm con un po' di rinforzo per garantire che il laser non si muova. Ho cercato di mantenere abbastanza spazio per fissare una piccola breadboard sul retro del jig.

Ho usato Tinkercad per la build, puoi trovare il modello qui:

C'è una distanza di 3,75 cm tra il centro dell'obiettivo laser e il centro dell'obiettivo della fotocamera.

Passaggio 3: guidare il laser e il display LCD

Guidare il laser e l'LCD
Guidare il laser e l'LCD
Guidare il laser e l'LCD
Guidare il laser e l'LCD

Ho seguito questo tutorial https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi per pilotare il display LCD con il Raspberry Pi Zero. Invece di modificare il file /boot/config.txt, puoi abilitare l'interfaccia SPI usando sudo raspi-config tramite la riga di comando.

Sto usando il Raspberry Pi Zero in modalità headless utilizzando l'ultimo, alla data, Raspbian Stretch. Non tratterò l'installazione in questo Instructable ma puoi seguire questa guida: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-senza-accesso-a- riga di comando-o-utilizzo-della-rete-97f065af722e

Per avere un punto laser luminoso, sto usando il binario 5V del Pi. Per questo, userò un transistor (2N2222a o equivalente) per pilotare il laser usando il GPIO. Un resistore da 220 alla base del transistor consente una corrente sufficiente attraverso il laser. Sto usando RPi. GPIO per manipolare il Pi GPIO. Ho collegato la base del transistor al pin GPIO22 (il 15° pin), l'emettitore a terra e il collettore al diodo laser.

Non dimenticare di abilitare l'interfaccia della fotocamera utilizzando sudo raspi-config tramite la riga di comando.

Puoi usare questo codice per testare la tua configurazione:

Se tutto è andato bene dovresti avere un file dot-j.webp

Nel codice, impostiamo la fotocamera e il GPIO, quindi abilitiamo il laser, acquisiamo l'immagine e disabilitiamo il laser. Poiché sto eseguendo il Pi in modalità senza testa, ho bisogno di copiare le immagini dal mio Pi al mio computer prima di mostrarle.

A questo punto, il tuo hardware dovrebbe essere configurato.

Passaggio 4: rilevamento del laser utilizzando OpenCV

Per prima cosa, dobbiamo installare OpenCV sul Pi. Fondamentalmente hai tre modi per farlo. Puoi installare la vecchia versione del pacchetto con apt. Puoi compilare la versione che desideri ma in questo caso il tempo di installazione può arrivare fino a 15 ore e la maggior parte per la compilazione vera e propria. Oppure, il mio approccio preferito, puoi utilizzare una versione precompilata per il Pi Zero fornita da una terza parte.

Poiché è più semplice e veloce, ho utilizzato un pacchetto di terze parti. Puoi trovare i passaggi di installazione in questo articolo: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Ho provato molte altre fonti ma i loro pacchetti non erano aggiornati.

Per tracciare un puntatore laser, ho aggiornato il codice da https://github.com/bradmontgomery/python-laser-tracker per utilizzare il modulo fotocamera Pi invece di un dispositivo USB. Puoi utilizzare direttamente il codice se non disponi di un modulo fotocamera Pi e desideri utilizzare una fotocamera USB.

Puoi trovare il codice completo qui:

Per eseguire questo codice dovrai installare i pacchetti Python: pillow e picamera (sudo pip3 install pillow picamera).

Passaggio 5: calibrazione del telemetro

Calibrazione del telemetro
Calibrazione del telemetro
Calibrazione del telemetro
Calibrazione del telemetro
Calibrazione del telemetro
Calibrazione del telemetro

Nell'articolo originale, l'autore ha progettato una procedura di calibrazione per ottenere i parametri richiesti per trasformare le coordinate y in una distanza effettiva. Ho usato il mio tavolo da soggiorno per le calibrazioni e un vecchio pezzo di kraft. Ogni 10 cm circa ho annotato le coordinate x e y in un foglio di calcolo: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Per assicurarmi che tutto funzionasse correttamente, ad ogni passaggio, ho controllato le immagini catturate per vedere se il laser è stato inseguito correttamente. Se utilizzi un laser verde o se il tuo laser non viene tracciato correttamente, dovrai regolare di conseguenza la tonalità, la saturazione e la soglia del valore del programma.

Una volta terminata la fase di misurazione, è il momento di calcolare effettivamente i parametri. Come l'autore ho usato una regressione lineare; in realtà Google Spreadsheet ha fatto il lavoro per me. Ho quindi riutilizzato quei parametri per calcolare una distanza stimata e confrontarla con la distanza effettiva.

Ora è il momento di iniettare i parametri nel programma del telemetro per misurare le distanze.

Passaggio 6: misurazione delle distanze

Misurare le distanze
Misurare le distanze

Nel codice: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c ho aggiornato le variabili HEIGHT, GAIN e OFFSET in base alle misurazioni di calibrazione. Ho usato la formula della distanza nell'articolo originale per stimare la distanza e ho stampato la distanza utilizzando il display LCD.

Il codice configurerà prima la fotocamera e il GPIO, quindi vogliamo accendere la retroilluminazione dell'LCD per vedere meglio le misurazioni. L'ingresso LCD è collegato al GPIO14. Ogni 5 secondi circa, noi:

  1. abilitare il diodo laser
  2. catturare l'immagine in memoria
  3. disattivare il diodo laser
  4. traccia il laser utilizzando i filtri della gamma HSV
  5. scrivi l'immagine risultante sul disco per scopi di debug
  6. calcolare la distanza in base alla coordinata y
  7. scrivere la distanza sul display LCD.

Tuttavia, le misure sono molto precise e sufficientemente accurate per il mio caso d'uso, ci sono molti margini di miglioramento. Ad esempio, il punto laser è di qualità molto scadente e la linea laser non è realmente centrata. Con un laser di migliore qualità, i passaggi di calibrazione saranno più precisi. Anche la fotocamera non è proprio ben posizionata nel mio jig, si inclina verso il basso.

Posso anche aumentare la risoluzione del telemetro ruotando la fotocamera di 90º utilizzando il massimo con e aumentare la risoluzione al massimo supportato dalla fotocamera. Con l'attuale implementazione siamo limitati a un intervallo da 0 a 384 pixel, potremmo aumentare il limite superiore a 1640, 4 volte la risoluzione attuale. La distanza sarà ancora più precisa.

Come follow-up, dovrò lavorare sui miglioramenti di precisione che ho menzionato sopra e costruire un involucro per il telemetro. L'involucro dovrà essere di una profondità precisa per facilitare le misurazioni da parete a parete.

Tutto sommato il sistema attuale è abbastanza per me e mi farà risparmiare qualche soldo facendo il mio piano casa!

Consigliato: