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, Lipanj
Anonim
Izrada daljinomera pomoću lasera i kamere
Izrada daljinomera pomoću lasera i kamere

Trenutno planiram neke unutarnje 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 pogreškama. Razmišljao sam o kupnji daljinomjera 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đer ću koristiti OpenCV za praćenje lasera.

Pretpostavit ću da ste tehnološki potkovani i da vam je ugodno koristiti Python i naredbeni redak. U ovom projektu koristim Pi u modu bez glave.

Počnimo!

Korak 1: Popis materijala

Za ovaj projekt trebat će vam:

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

Koristio sam svoj 3D printer za ispis šablona koje su mi pomogle tijekom 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 kamerskog žiga
Izrada laserskog i kamerskog žiga
Izrada laserskog i kamerskog žiga
Izrada laserskog i kamerskog žiga

Sustav pretpostavlja fiksnu udaljenost između objektiva kamere i laserskog izlaza. Kako bih olakšao testove, ispisao sam šablon u koji mogu ugraditi kameru, laser i mali krug pogona za laser.

Koristio sam dimenzije modula kamere za izradu nosača za kameru. Za mjerenje 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 mjesta za postavljanje male ploče na stražnjoj strani šablone.

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

Između središta laserskog objektiva i središta objektiva fotoaparata udaljeno 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 kako bih upravljao LCD zaslonom s Raspberry Pi Zero. Umjesto uređivanja datoteke /boot/config.txt, možete omogućiti SPI sučelje pomoću sudo raspi-config putem naredbenog retka.

Koristim Raspberry Pi Zero u načinu rada 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 točku, koristim 5V tračnicu Pi. Za to ću koristiti tranzistor (2N2222a ili ekvivalent) za pogon lasera pomoću GPIO -a. Otpornik 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), odašiljač na uzemljenje, a kolektor na lasersku diodu.

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

Pomoću ovog koda možete testirati svoje postavljanje:

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. Budući da pokrećem Pi u načinu rada bez glave, moram kopirati slike sa svog Pi na računalo prije 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 zapakiranu verziju s 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 instalacije 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.

Za praćenje laserskog pokazivača ažurirao sam kôd s https://github.com/bradmontgomery/python-laser-tracker da koristim modul kamere Pi umjesto USB uređaja. Kôd možete izravno koristiti ako nemate modul Pi kamere i želite koristiti USB kameru.

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

Za pokretanje ovog koda morate instalirati Python pakete: jastuk i pikamera (sudo pip3 install pillow picamera).

Korak 5: Kalibracija daljinomera

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

U izvornom č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 provjeravao sam 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ćenje i prag vrijednosti programa.

Nakon što je faza mjerenja završena, vrijeme je za stvarno izračunavanje parametara. Poput autora 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.

Vrijeme je 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 izvornom članku za procjenu udaljenosti i ispisao sam udaljenost pomoću LCD zaslona.

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

  1. omogućiti lasersku diodu
  2. snimiti sliku u memoriju
  3. onemogućite lasersku diodu
  4. pratite laser pomoću filtera raspona HSV
  5. dobivenu sliku zapisati na disk radi otklanjanja pogrešaka
  6. izračunajte udaljenost na temelju y koordinate
  7. zapisati udaljenost na LCD zaslonu.

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

Također mogu povećati razlučivost daljinomera zakretanjem fotoaparata 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 razlučivosti. 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 sustav mi je dovoljan i uštedjet će mi neke novce za izradu plana kuće!

Preporučeni: