Cuprins:
- Pasul 1: Lista materialelor
- Pasul 2: Construirea unui aparat laser și aparat de fotografiat
- Pasul 3: Conducerea laserului și a ecranului LCD
- Pasul 4: Detectarea laserului folosind OpenCV
- Pasul 5: Calibrarea telemetrului
- Pasul 6: Măsurarea distanțelor
Video: Realizarea telemetrului folosind un laser și o cameră: 6 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
În prezent, planific câteva lucrări de interior pentru primăvara viitoare, însă, deoarece tocmai am achiziționat o casă veche, nu am niciun plan de casă. Am început să măsoară distanțele de la perete la perete folosind o riglă, dar este lentă și predispusă la erori. M-am gândit să cumpăr un telemetru pentru a ușura procesul, dar apoi am găsit un articol vechi despre construirea propriului telemetru folosind un laser și o cameră. După cum se dovedește, am aceste componente în atelierul meu.
Proiectul se bazează pe acest articol:
Singura diferență este că voi construi telemetrul folosind un Raspberry Pi Zero W, un LCD și modulul Raspberry Pi Camera. De asemenea, voi folosi OpenCV pentru a urmări laserul.
Voi presupune că sunteți un expert în tehnologie și că vă simțiți confortabil folosind Python și linia de comandă. În acest proiect, folosesc Pi în modul fără cap.
Să începem!
Pasul 1: Lista materialelor
Pentru acest proiect, veți avea nevoie de:
- un laser ieftin de 6mm 5mW
- un rezistor de 220 Ω
- un tranzistor 2N2222A sau ceva echivalent
- un Raspberry Pi Zero W
- o cameră Raspberry Pi v2
- un ecran LCD Nokia 5110 sau echivalent
- niște fire jumper și o mică placă de măsurare
Am folosit imprimanta 3D pentru a imprima un jig care m-a ajutat în timpul experimentelor. De asemenea, intenționez să folosesc imprimanta 3d pentru a construi o carcasă completă pentru telemetru. Poți să te descurci total.
Pasul 2: Construirea unui aparat laser și aparat de fotografiat
Sistemul presupune o distanță fixă între obiectivul camerei și ieșirea laser. Pentru a ușura testele, am imprimat un jig în care pot monta camera, laserul și un mic circuit de conducere pentru laser.
Am folosit dimensiunile modulului camerei pentru a construi suportul pentru cameră. Am folosit în principal un etrier digital și o riglă de precizie pentru a lua măsurătorile. Pentru laser, am creat o gaură de 6 mm cu un pic de armare pentru a mă asigura că laserul nu se va mișca. Am încercat să păstrez suficient spațiu pentru a avea o mică placă fixată în spatele jigului.
Am folosit Tinkercad pentru construcție, puteți găsi modelul aici:
Există o distanță de 3,75 cm între centrul obiectivului laser și centrul obiectivului camerei.
Pasul 3: Conducerea laserului și a ecranului LCD
Am urmat acest tutorial https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi pentru a conduce afișajul LCD cu Raspberry Pi Zero. În loc să editați fișierul /boot/config.txt, puteți activa interfața SPI utilizând sudo raspi-config prin linia de comandă.
Folosesc Raspberry Pi Zero în modul fără cap folosind cea mai recentă, la data respectivă, Raspbian Stretch. Nu voi acoperi instalarea în acest instructabil, dar puteți urma acest ghid: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- linia de comandă sau folosind rețeaua-97f065af722e
Pentru a avea un punct laser luminos, folosesc șina de 5V a Pi. Pentru asta, voi folosi un tranzistor (2N2222a sau echivalent) pentru a conduce laserul folosind GPIO. Un rezistor de 220 Ω la baza tranzistorului permite suficient curent prin laser. Folosesc RPi. GPIO pentru a manipula Pi GPIO. Am conectat baza tranzistorului la pinul GPIO22 (pinul 15), emițătorul la sol și colectorul la dioda laser.
Nu uitați să activați interfața camerei utilizând sudo raspi-config prin linia de comandă.
Puteți utiliza acest cod pentru a testa configurarea:
Dacă totul a mers bine, ar trebui să aveți un fișier dot-j.webp
În cod, configurăm camera și GPIO, apoi activăm laserul, captăm imaginea și dezactivăm laserul. În timp ce rulez Pi în modul fără cap, trebuie să copiez imaginile din Pi pe computer înainte de a le arăta.
În acest moment, hardware-ul dvs. ar trebui să fie configurat.
Pasul 4: Detectarea laserului folosind OpenCV
Mai întâi, trebuie să instalăm OpenCV pe Pi. Practic aveți trei moduri de a o face. Puteți instala versiunea veche ambalată cu apt. Puteți compila versiunea dorită, dar în acest caz timpul de instalare poate ajunge până la 15 ore și cea mai mare parte pentru compilarea propriu-zisă. Sau, abordarea mea preferată, puteți utiliza o versiune precompilată pentru Pi Zero furnizată de o terță parte.
Deoarece este mai simplu și mai rapid, am folosit un pachet terță parte. Puteți găsi pașii de instalare în acest articol: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Am încercat multe alte surse, dar pachetele lor nu erau actualizate.
Pentru a urmări un indicator laser, am actualizat codul de la https://github.com/bradmontgomery/python-laser-tracker pentru a utiliza modulul camerei Pi în locul unui dispozitiv USB. Puteți utiliza direct codul dacă nu aveți un modul de cameră Pi și doriți să utilizați o cameră USB.
Puteți găsi codul complet aici:
Pentru a rula acest cod, va trebui să instalați pachetele Python: pernă și picamera (sudo pip3 instalați perna picamera).
Pasul 5: Calibrarea telemetrului
În articolul original, autorul a proiectat o procedură de calibrare pentru a obține parametrii necesari pentru a transforma coordonatele y la o distanță reală. Mi-am folosit masa din sufragerie pentru calibrări și o bucată veche de kraft. La fiecare 10 cm sau cam așa am notat coordonatele x și y într-o foaie de calcul: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Pentru a vă asigura că totul funcționează corect, la fiecare pas, am verificat imaginile capturate pentru a vedea dacă laserul a fost urmărit corect. Dacă utilizați un laser verde sau dacă laserul dvs. nu este urmărit corect, va trebui să ajustați în mod corespunzător nuanța, saturația și valoarea pragului programului.
Odată finalizată faza de măsurare, este timpul să calculăm efectiv parametrii. La fel ca autorul, am folosit o regresie liniară; de fapt, Foaia de calcul Google a făcut treaba pentru mine. Apoi am refolosit acei parametri pentru a calcula o distanță estimată și a o compara cu distanța reală.
Este timpul să injectați parametrii în programul telemetru pentru a măsura distanțele.
Pasul 6: Măsurarea distanțelor
În cod: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c Am actualizat variabilele HEIGHT, GAIN și OFFSET conform măsurătorilor de calibrare. Am folosit formula distanței din articolul original pentru a estima distanța și am imprimat distanța folosind afișajul LCD.
Codul va configura mai întâi camera și GPIO, apoi vrem să aprindem lumina de fundal LCD pentru a vedea mai bine măsurătorile. Intrarea LCD este conectată la GPIO14. La fiecare 5 secunde aproximativ, vom:
- activați dioda laser
- captează imaginea în memorie
- dezactivați dioda laser
- urmăriți laserul utilizând filtrele de gamă HSV
- scrieți imaginea rezultată pe disc în scopul depanării
- calculați distanța pe baza coordonatei y
- scrieți distanța pe afișajul LCD.
Cu toate acestea, măsurile sunt extrem de precise și suficient de precise pentru cazul meu de utilizare, există mult spațiu pentru îmbunătățiri. De exemplu, punctul laser este de o calitate foarte slabă, iar linia laser nu este cu adevărat centrată. Cu un laser de o calitate mai bună, etapele de calibrare vor fi mai precise. Chiar și camera nu este chiar bine poziționată în jigul meu, se înclină în partea de jos.
De asemenea, pot crește rezoluția telemetrului prin rotirea camerei cu 90º folosind full cu și măresc rezoluția la maximul acceptat de cameră. Odată cu implementarea curentă, suntem limitați la un interval de la 0 la 384 pixeli, am putea crește limita superioară la 1640, de 4 ori rezoluția actuală. Distanța va fi și mai precisă.
Ca urmări, va trebui să lucrez la îmbunătățirile de precizie menționate mai sus și să construiesc o carcasă pentru telemetru. Carcasa va trebui să aibă o adâncime precisă pentru a ușura măsurătorile de la perete la perete.
În ansamblu, sistemul actual îmi este suficient și îmi va economisi niște bani pentru planificarea casei mele!
Recomandat:
Realizarea unui DashCam folosind Raspberry Pi Zero (pt.1): 3 pași
Realizarea unui DashCam folosind Raspberry Pi Zero (pt.1): Acesta este începutul unei noi serii în care învățăm cum să construim o cameră de bord folosind Raspberry Pi Zero. Acest proiect este de fapt un înregistrator video continuu și poate fi utilizat pentru alte aplicații, inclusiv monitorizarea faunei sălbatice. În prima parte, abordăm
Realizarea unui calculator folosind codul C: 14 pași
Efectuarea unui calculator folosind codul C: Bine ați venit la ceea ce probabil va fi primul dvs. cod vreodată, veți scrie un program ușor care creează un calculator simplu folosind limbajul de programare „C”. Notă: Dacă imaginile sunt până la distanță sau se închid, faceți clic pe ele pentru a vizualiza imaginea completă
Control radio RF 433MHZ folosind HT12D HT12E - Realizarea unei telecomenzi RF folosind HT12E și HT12D cu 433mhz: 5 pași
Control radio RF 433MHZ folosind HT12D HT12E | Efectuarea unei telecomenzi RF Utilizarea HT12E și HT12D Cu 433mhz: În acest instructiv vă voi arăta cum să realizați o telecomandă RADIO folosind modulul receptor 433mhz transmițător cu codare HT12E & IC decodificator HT12D. În acest instructable veți putea trimite și primi date folosind COMPONENTE foarte ieftine CA: HT
Realizarea unui ceas cu M5stick C folosind Arduino IDE - Ceas RTC în timp real cu M5stack M5stick-C: 4 pași
Realizarea unui ceas cu M5stick C folosind Arduino IDE | Ceas RTC în timp real cu M5stack M5stick-C: Bună băieți, în acest instructables vom învăța cum să facem un ceas cu placa de dezvoltare m5stick-C a m5stack folosind Arduino IDE. Deci, m5stick va afișa data, ora și amp; săptămână a lunii pe ecran
Realizarea unui adaptor Bluetooth Pt.2 (Realizarea unui difuzor compatibil): 16 pași
Realizarea unui adaptor Bluetooth Pt.2 (Realizarea unui difuzor compatibil): În acest instructiv, vă voi arăta cum să utilizați adaptorul meu Bluetooth pentru a face compatibil un difuzor vechi Bluetooth. * Dacă nu ați citit primul meu instructable la „Realizarea un adaptor Bluetooth " Vă sugerez să faceți acest lucru înainte de a continua.C