Sommario:
- Passaggio 1: elenco dei materiali
- Passaggio 2: creazione di una maschera per laser e fotocamera
- Passaggio 3: guidare il laser e il display LCD
- Passaggio 4: rilevamento del laser utilizzando OpenCV
- Passaggio 5: calibrazione del telemetro
- Passaggio 6: misurazione delle distanze
Video: Realizzare un telemetro usando un laser e una fotocamera: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
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
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
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
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
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:
- abilitare il diodo laser
- catturare l'immagine in memoria
- disattivare il diodo laser
- traccia il laser utilizzando i filtri della gamma HSV
- scrivi l'immagine risultante sul disco per scopi di debug
- calcolare la distanza in base alla coordinata y
- 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:
COME REALIZZARE UNA FOTOCAMERA A INFRAROSSI CON UNA LUCE LED IR: 5 passaggi (con immagini)
COME REALIZZARE UNA TELECAMERA A INFRAROSSI CON UNA LUCE LED IR: Ho realizzato una telecamera a infrarossi per poterla utilizzare in un sistema di motion capture. Con esso puoi anche ottenere questo tipo di immagini fantastiche: oggetti lucidi nella visione della fotocamera che sono normali nella realtà. Puoi ottenere risultati piuttosto buoni a un prezzo conveniente. Lui
FOTOCAMERA UNICORN - Costruzione della fotocamera Raspberry Pi Zero W NoIR da 8 MP: 7 passaggi (con immagini)
UNICORN CAMERA - Fotocamera Raspberry Pi Zero W NoIR 8MP Build: Pi Zero W NoIR 8MP Camera BuildQuesto Instructable è stato creato per aiutare chiunque desideri una fotocamera a infrarossi o una fotocamera portatile davvero fantastica o una fotocamera portatile Raspberry Pi o vuole solo divertirsi, heheh . Questo è il più conveniente e configurabile
Crea una torcia a LED o una luce notturna Joule Thief riciclando una fotocamera usa e getta Kodak.: 11 passaggi (con immagini)
Crea una torcia LED o una luce notturna Joule Thief riciclando una fotocamera usa e getta Kodak.: Dopo aver visto le informazioni sui driver LED Joule Thief su Internet, ho deciso di provare a realizzarli. Dopo aver ottenuto alcune unità funzionanti, ho iniziato a sperimentare (come faccio di solito) con diverse fonti di parti da oggetti che posso riciclare. Ho scoperto che t
Stabilizzatore per fotocamera per ENV2 o altri telefoni con fotocamera: 6 passaggi
Stabilizzatore per fotocamera per ENV2 o altri telefoni con fotocamera: hai mai desiderato fare un video ma hai solo un telefono con fotocamera? Hai mai fatto un video con un cellulare con fotocamera ma non riesci a tenerlo fermo? Bene, questo è l'istruibile per te
Aggiungi un jack per la sincronizzazione del PC a un cavo Ttl Nikon Sc-28 (usa le impostazioni automatiche per il flash della fotocamera e i flash della fotocamera con trigger disattivato!!): 4 passaggi
Aggiungi un jack per la sincronizzazione del PC a un cavo Ttl Nikon Sc-28 (usa le impostazioni automatiche per un flash della fotocamera e flash della fotocamera Trigger Off!!): in questo tutorial ti mostrerò come rimuovere uno di quei fastidiosi connettori TTL proprietari a 3 pin su il lato di un cavo TTL esterno Nikon SC-28 e sostituirlo con un connettore di sincronizzazione PC standard. questo ti permetterà di usare un flash dedicato, s