Cuprins:

Realizarea telemetrului folosind un laser și o cameră: 6 pași
Realizarea telemetrului folosind un laser și o cameră: 6 pași

Video: Realizarea telemetrului folosind un laser și o cameră: 6 pași

Video: Realizarea telemetrului folosind un laser și o cameră: 6 pași
Video: Mestek S6 de la Bitmi.ro un telemetru cu o funcție pe care nu am văzut-o la alt telemetru. 2024, Iunie
Anonim
Realizarea telemetrului folosind un laser și o cameră
Realizarea telemetrului folosind un laser și o cameră

Î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

Construirea unui aparat laser și aparat de fotografiat
Construirea unui aparat laser și aparat de fotografiat
Construirea unui aparat laser și aparat de fotografiat
Construirea unui aparat laser și aparat de fotografiat
Construirea unui aparat laser și aparat de fotografiat
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

Conducerea laserului și a ecranului LCD
Conducerea laserului și a ecranului LCD
Conducerea laserului și a ecranului LCD
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

Calibrarea telemetrului
Calibrarea telemetrului
Calibrarea telemetrului
Calibrarea telemetrului
Calibrarea telemetrului
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

Măsurarea distanțelor
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:

  1. activați dioda laser
  2. captează imaginea în memorie
  3. dezactivați dioda laser
  4. urmăriți laserul utilizând filtrele de gamă HSV
  5. scrieți imaginea rezultată pe disc în scopul depanării
  6. calculați distanța pe baza coordonatei y
  7. 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: