Sadržaj:

Izrada daljinomera pomoću lasera i kamere: 6 koraka
Izrada daljinomera pomoću lasera i kamere: 6 koraka

Video: Izrada daljinomera pomoću lasera i kamere: 6 koraka

Video: Izrada daljinomera pomoću lasera i kamere: 6 koraka
Video: Laserski daljinomjer do 150m Bosch GLM 150-27 C Professional. Mjerenja bez prepreka 2024, Novembar
Anonim
Izrada daljinomera pomoću lasera i kamere
Izrada daljinomera pomoću lasera i kamere

Trenutno planiram neke unutrašnje radove za sljedeće proljeće, ali kako sam tek kupio staru kuću, nemam nikakav plan kuće. Počeo sam mjeriti udaljenosti od zida do zida pomoću ravnala, ali to je sporo i sklono greškama. Razmišljao sam o kupovini daljinomera kako bih olakšao proces, ali onda sam pronašao stari članak o izgradnji vlastitog daljinomera pomoću lasera i kamere. Kako se ispostavilo, te komponente imam u svojoj radionici.

Projekt se temelji na ovom članku:

Jedina razlika je u tome što ću daljinomer graditi pomoću Raspberry Pi Zero W, LCD -a i modula Raspberry Pi Camera. Takođe ću koristiti OpenCV za praćenje lasera.

Pretpostavljam da ste tehnički potkovani i da vam je ugodno koristiti Python i naredbenu liniju. U ovom projektu koristim Pi u modu bez glave.

Počnimo!

Korak 1: Lista materijala

Za ovaj projekat trebat će vam:

  • jeftin laser od 6 mm 5mW
  • otpornik od 220 Ω
  • tranzistor 2N2222A ili nešto slično
  • a Raspberry Pi Zero W
  • Raspberry Pi Camera v2
  • Nokia 5110 LCD ekran ili ekvivalent
  • nekoliko kratkospojnih žica i mala ploča

Koristio sam svoj 3D štampač da odštampam šablon koji mi je pomogao tokom eksperimenata. Također planiram koristiti 3D pisač za izgradnju kompletnog kućišta za daljinomer. Možete potpuno bez toga.

Korak 2: Izrada laserskog i kamerišta

Izrada laserskog i kamerišta
Izrada laserskog i kamerišta
Izrada laserskog i kamerišta
Izrada laserskog i kamerišta
Izrada laserskog i kamerišta
Izrada laserskog i kamerišta

Sistem pretpostavlja fiksnu udaljenost između objektiva kamere i laserskog izlaza. Da bih olakšao testove, odštampao sam šablon u koji mogu da ugradim kameru, laser i mali pogonski krug za laser.

Koristio sam dimenzije modula kamere za izradu nosača za kameru. Za mjerenja sam uglavnom koristio digitalnu čeljust i precizno ravnalo. Za laser sam stvorio rupu od 6 mm s malo pojačanja kako bih osigurao da se laser neće pomaknuti. Pokušao sam zadržati dovoljno prostora za postavljanje male ploče na stražnjoj strani šablone.

Koristio sam Tinkercad za izradu, model možete pronaći ovdje:

Udaljenost između središta laserskog objektiva i središta objektiva fotoaparata je 3,75 cm.

Korak 3: Vožnja laserom i LCD -om

Vožnja laserom i LCD -om
Vožnja laserom i LCD -om
Vožnja laserom i LCD -om
Vožnja laserom i LCD -om

Slijedio sam ovaj vodič https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi za vožnju LCD ekrana s Raspberry Pi Zero. Umjesto uređivanja /boot/config.txt datoteke, možete omogućiti SPI sučelje pomoću sudo raspi-config putem naredbenog retka.

Koristim Raspberry Pi Zero u modu bez glave koristeći najnoviji, do sada, Raspbian Stretch. Neću pokrivati instalaciju u ovom Instructable-u, ali možete slijediti ovaj vodič: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- command-line-or-using-the-network-97f065af722e

Da bih imao svijetlu lasersku tačku, koristim 5V šinu Pi -a. Za to ću koristiti tranzistor (2N2222a ili ekvivalent) za pogon lasera pomoću GPIO -a. Otpornik od 220 Ω na dnu tranzistora propušta dovoljno struje kroz laser. Koristim RPi. GPIO za manipulaciju Pi GPIO -om. Spojio sam bazu tranzistora na pin GPIO22 (15. pin), emiter na masu, a kolektor na lasersku diodu.

Ne zaboravite omogućiti sučelje kamere pomoću sudo raspi-config putem komandne linije.

Ovaj kôd možete koristiti za testiranje vašeg postavljanja:

Ako je sve prošlo dobro, trebali biste imati datoteku dot-j.webp

U kodu postavljamo kameru i GPIO, zatim omogućujemo laser, snimamo sliku i onemogućujemo laser. Pošto pokrećem Pi u režimu bez glave, moram da kopiram slike sa svog Pi -a na računar pre nego što ih prikažem.

U ovom trenutku vaš hardver bi trebao biti konfiguriran.

Korak 4: Otkrivanje lasera pomoću OpenCV -a

Prvo moramo instalirati OpenCV na Pi. U osnovi imate tri načina da to učinite. Možete instalirati staru upakovanu verziju sa apt. Možete sastaviti željenu verziju, ali u ovom slučaju vrijeme instalacije može potrajati do 15 sati, a većina za stvarnu kompilaciju. Ili, moj preferirani pristup, možete koristiti unaprijed sastavljenu verziju za Pi Zero koju pruža treća strana.

Budući da je jednostavniji i brži, koristio sam paket treće strane. Korake za instalaciju možete pronaći u ovom članku: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Isprobao sam mnoge druge izvore, ali njihovi paketi nisu bili ažurirani.

Da bih pratio laserski pokazivač, ažurirao sam kôd sa https://github.com/bradmontgomery/python-laser-tracker da koristim modul kamere Pi umjesto USB uređaja. Kôd možete koristiti izravno ako nemate modul Pi kamere i želite koristiti USB kameru.

Kompletan kôd možete pronaći ovdje:

Da biste pokrenuli ovaj kôd, morate instalirati Python pakete: jastuk i pikamera (sudo pip3 instalirati jastučnicu pikamera).

Korak 5: Kalibracija daljinomera

Kalibracija daljinomera
Kalibracija daljinomera
Kalibracija daljinomera
Kalibracija daljinomera
Kalibracija daljinomera
Kalibracija daljinomera

U originalnom članku autor je osmislio postupak kalibracije kako bi dobio potrebne parametre za transformaciju y koordinata na stvarnu udaljenost. Koristio sam svoj stol u dnevnoj sobi za kalibracije i stari komad krafta. Otprilike svakih 10 cm bilježio sam koordinate x i y u proračunsku tablicu: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Kako bih osigurao da sve radi ispravno, na svakom koraku sam provjeravao snimljene slike kako bih provjerio jesu li laser je ispravno praćen. Ako koristite zeleni laser ili ako vaš laser nije pravilno praćen, morat ćete u skladu s tim prilagoditi nijansu, zasićenost i prag vrijednosti programa.

Nakon što je faza mjerenja završena, vrijeme je za stvarno izračunavanje parametara. Kao i autor, koristio sam linearnu regresiju; zapravo je Google proračunska tablica obavila posao umjesto mene. Zatim sam ponovno upotrijebio te parametre kako bih izračunao procijenjenu udaljenost i provjerio je li stvarna udaljenost.

Sada je vrijeme za ubrizgavanje parametara u program daljinomera za mjerenje udaljenosti.

Korak 6: Mjerenje udaljenosti

Mjerenje udaljenosti
Mjerenje udaljenosti

U kodu: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c ažurirao sam varijable HEIGHT, GAIN i OFFSET prema kalibracijskim mjerenjima. Koristio sam formulu udaljenosti u originalnom članku za procjenu udaljenosti i odštampao sam udaljenost pomoću LCD ekrana.

Kod će prvo postaviti kameru i GPIO, a zatim želimo osvijetliti pozadinsko osvjetljenje LCD -a kako bismo bolje vidjeli mjerenja. LCD ulaz je priključen na GPIO14. Svakih 5 sekundi ćemo:

  1. omogućiti lasersku diodu
  2. snimite sliku u memoriju
  3. onemogućite lasersku diodu
  4. pratite laser pomoću filtera raspona HSV
  5. zapišite rezultirajuću sliku na disk radi otklanjanja grešaka
  6. izračunajte udaljenost na osnovu y koordinate
  7. zapisati udaljenost na LCD ekranu.

U svakom slučaju, mjere su vrlo precizne i dovoljno precizne za moj slučaj upotrebe, ima mnogo prostora za poboljšanja. Na primjer, laserska točka je vrlo loše kvalitete i laserska linija nije zaista centrirana. S laserom bolje kvalitete, koraci kalibracije bit će precizniji. Čak ni kamera nije dobro pozicionirana u mom šavovu, naginje se prema dnu.

Mogu i povećati rezoluciju daljinomera okretanjem kamere za 90º koristeći punu tipku sa i povećati rezoluciju na maksimalnu podršku koju fotoaparat podržava. S trenutnom implementacijom ograničeni smo na raspon od 0 do 384 piksela, mogli bismo povećati gornju granicu na 1640, 4 puta veću od trenutne rezolucije. Udaljenost će biti još preciznija.

Kao nastavak, morat ću poraditi na poboljšanjima preciznosti koje sam gore spomenuo i izgraditi kućište za daljinomer. Kućište mora biti precizne dubine kako bi se olakšalo mjerenje od zida do zida.

Sve u svemu, trenutni sistem mi je dovoljan i uštedjet će mi neke novce za izradu plana kuće!

Preporučuje se: