Talaan ng mga Nilalaman:

Paggawa ng Rangefinder Gamit ang isang Laser at isang Camera: 6 Mga Hakbang
Paggawa ng Rangefinder Gamit ang isang Laser at isang Camera: 6 Mga Hakbang

Video: Paggawa ng Rangefinder Gamit ang isang Laser at isang Camera: 6 Mga Hakbang

Video: Paggawa ng Rangefinder Gamit ang isang Laser at isang Camera: 6 Mga Hakbang
Video: Штукатурка санузла от А до Я. Все этапы. Угол 90 градусов. 2024, Hunyo
Anonim
Paggawa ng Rangefinder Gamit ang isang Laser at isang Camera
Paggawa ng Rangefinder Gamit ang isang Laser at isang Camera

Kasalukuyan akong nagpaplano ng ilang panloob na gawain para sa susunod na Spring ngunit sa pagkuha ko lamang ng isang lumang bahay wala akong anumang plano sa bahay. Sinimulan kong sukatin ang mga distansya ng dingding sa dingding gamit ang isang pinuno ngunit mabagal ito at madaling kapitan ng error. Naisip ko ang tungkol sa pagbili ng isang rangefinder upang magaan ang proseso ngunit pagkatapos ay nakakita ako ng isang lumang artikulo tungkol sa pagbuo ng sarili nitong rangefinder gamit ang isang laser at isang camera. Bilang paglabas nito, mayroon akong mga sangkap sa aking pagawaan.

Ang proyekto ay batay sa artikulong ito:

Ang kaibahan lamang ay itatayo ko ang rangefinder gamit ang isang Raspberry Pi Zero W, isang LCD, at ang module ng Raspberry Pi Camera. Gagamitin ko rin ang OpenCV upang subaybayan ang laser.

Ipagpalagay ko na ikaw ay isang tech savvy at komportable ka sa paggamit ng Python at ng command line. Sa proyektong ito ginagamit ko ang Pi sa mode na walang ulo.

Magsimula na tayo!

Hakbang 1: Listahan ng Mga Materyales

Para sa proyektong ito, kakailanganin mo ang:

  • isang murang 6mm 5mW laser
  • isang resistor na 220
  • isang 2N2222A transistor o isang bagay na katumbas
  • isang Raspberry Pi Zero W
  • isang Raspberry Pi Camera v2
  • isang display na Nokia 5110 LCD o katumbas
  • ilang mga jumper wires at isang maliit na breadboard

Ginamit ko ang aking 3d printer upang mag-print ng isang jig na makakatulong sa akin sa panahon ng mga eksperimento. Plano ko ring gamitin ang 3d printer upang bumuo ng isang kumpletong enclosure para sa tagahanap ng saklaw. Maaari mong ganap na gawin nang wala.

Hakbang 2: Pagbuo ng isang Laser at Camera Jig

Pagbuo ng Laser at Camera Jig
Pagbuo ng Laser at Camera Jig
Pagbuo ng Laser at Camera Jig
Pagbuo ng Laser at Camera Jig
Pagbuo ng Laser at Camera Jig
Pagbuo ng Laser at Camera Jig

Ipinapalagay ng system ang isang nakapirming distansya sa pagitan ng lens ng camera at ng output ng laser. Upang mapagaan ang mga pagsubok, naglimbag ako ng isang jig kung saan maaari kong mai-mount ang camera, ang laser, at isang maliit na circuit ng pagmamaneho para sa laser.

Ginamit ko ang mga sukat ng module ng camera upang maitayo ang mount para sa camera. Pangunahin kong ginamit ang isang digital caliper at isang eksaktong pinuno upang kunin ang mga sukat. Para sa laser, lumikha ako ng isang 6mm hole na may kaunting pampalakas upang matiyak na hindi gagalaw ang laser. Sinubukan kong panatilihin ang sapat na silid upang maayos ang isang maliit na tinapay sa likuran ng jig.

Ginamit ko ang Tinkercad para sa pagbuo, mahahanap mo ang modelo dito:

Mayroong 3.75 cm na distansya sa pagitan ng gitna ng laser lens at ng gitna ng lens ng camera.

Hakbang 3: Pagmamaneho ng Laser at LCD

Pagmamaneho ng Laser at LCD
Pagmamaneho ng Laser at LCD
Pagmamaneho ng Laser at LCD
Pagmamaneho ng Laser at LCD

Sinundan ko ang tutorial na ito https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi upang himukin ang LCD display kasama ang Raspberry Pi Zero. Sa halip na i-edit ang /boot/config.txt file maaari mong paganahin ang interface ng SPI gamit ang sudo raspi-config sa pamamagitan ng linya ng utos.

Gumagamit ako ng Raspberry Pi Zero sa mode na walang ulo gamit ang pinakabagong, sa petsa, Raspbian Stretch. Hindi ko sasakupin ang pag-install sa Instructable na ito ngunit maaari mong sundin ang gabay na ito: https:// Medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- command-line-o-using-the-network-97f065af722e

Upang magkaroon ng isang maliwanag na tuldok ng laser, gumagamit ako ng 5V rail ng Pi. Para doon, gagamit ako ng isang transistor (2N2222a o katumbas) upang himukin ang laser gamit ang GPIO. Ang isang resistor na 220 Ω sa base ng transistor ay nagbibigay-daan sa sapat na kasalukuyang sa pamamagitan ng laser. Gumagamit ako ng RPi. GPIO upang manipulahin ang Pi GPIO. Ikinonekta ko ang base ng transistor sa GPIO22 pin (ang ika-15 na pin), ang emitter sa lupa, at ang kolektor sa laser diode.

Huwag kalimutan na paganahin ang interface ng camera gamit ang sudo raspi-config sa pamamagitan ng linya ng utos.

Maaari mong gamitin ang code na ito upang subukan ang iyong pag-set up:

Kung naging maayos ang lahat dapat kang magkaroon ng isang dot-j.webp

Sa code, na-set up namin ang camera at ang GPIO, pagkatapos ay pinapagana namin ang laser, nakukuha namin ang imahe, at hindi namin pinagana ang laser. Habang pinapatakbo ko ang Pi sa mode na walang ulo, kailangan kong kopyahin ang mga imahe mula sa aking Pi sa aking computer bago ipakita ang mga ito.

Sa puntong ito, dapat na-configure ang iyong hardware.

Hakbang 4: Pagtuklas ng Laser Gamit ang OpenCV

Una, kailangan naming i-install ang OpenCV sa Pi. Karaniwan kang may tatlong paraan ng paggawa nito. Maaari mong i-install ang dating naka-package na bersyon nang may apt. Maaari mong ipunin ang bersyon na gusto mo ngunit sa kasong ito ang oras ng pag-install ay maaaring umabot sa 15 oras at karamihan sa mga ito para sa aktwal na pagtitipon. O, ang aking ginustong diskarte, maaari kang gumamit ng isang paunang naipon na bersyon para sa Pi Zero na ibinibigay ng isang third party.

Dahil mas simple at mas mabilis ito, gumamit ako ng isang third party na pakete. Maaari mong makita ang mga hakbang sa pag-install sa artikulong ito: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Sinubukan ko ang maraming iba pang mga mapagkukunan ngunit ang kanilang mga pakete ay hindi napapanahon.

Upang subaybayan ang isang laser pointer, na-update ko ang code mula sa https://github.com/bradmontgomery/python-laser-tracker upang magamit ang module ng Pi camera sa halip na isang USB device. Maaari mong direktang gamitin ang code kung wala kang isang module ng Pi camera at nais mong gumamit ng isang USB camera.

Mahahanap mo ang kumpletong code dito:

Upang patakbuhin ang code na ito kakailanganin mong i-install ang mga pakete ng Python: unan at picamera (sudo pip3 i-install ang pillow picamera).

Hakbang 5: Pagkakalibrate ng Finder ng Saklaw

Pagkakalibrate ng Finder ng Saklaw
Pagkakalibrate ng Finder ng Saklaw
Pagkakalibrate ng Range Finder
Pagkakalibrate ng Range Finder
Pagkakalibrate ng Range Finder
Pagkakalibrate ng Range Finder

Sa orihinal na artikulo, ang may-akda ay nagdisenyo ng isang pamamaraan ng pagkakalibrate upang makuha ang kinakailangang mga parameter upang ibahin ang mga y coordinate sa isang aktwal na distansya. Ginamit ko ang aking mesa sa sala para sa mga pagkakalibrate at isang lumang piraso ng kraft. Tuwing 10 cm o higit pa ay nabanggit ko ang x at y na mga coordinate sa isang spreadsheet: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Upang matiyak na ang lahat ay gumagana nang tama, sa bawat hakbang, sinuri ko ang mga nakuhang imahe upang makita kung wastong nasubaybayan ang laser. Kung gumagamit ka ng isang berdeng laser o kung ang iyong laser ay hindi nasusubaybayan nang tama, kakailanganin mong ayusin ang kulay, saturation, at halaga ng threshold ng programa nang naaayon.

Kapag tapos na ang yugto ng pagsukat, oras na upang talagang makalkula ang mga parameter. Tulad ng may-akda gumamit ako ng isang linear regression; talagang ang Google Spreadsheet ang gumawa sa akin. Ginamit ko muli ang mga parameter na iyon upang makalkula ang isang tinatayang distansya at suriin ito laban sa aktwal na distansya.

Panahon na ngayon upang mag-iniksyon ng mga parameter sa programang rangefinder upang masukat ang distansya.

Hakbang 6: Pagsukat sa Mga Distansya

Pagsukat sa Mga Distansya
Pagsukat sa Mga Distansya

Sa code: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c In-update ko ang mga variable na HEIGHT, GAIN, at OFFSET alinsunod sa mga pagsukat ng pagkakalibrate. Ginamit ko ang pormula ng distansya sa orihinal na artikulo upang matantya ang distansya at nai-print ko ang distansya gamit ang LCD display.

Ang code ay unang i-set up ang camera at ang GPIO, pagkatapos ay nais naming sindihan ang LCD backlight upang mas mahusay na makita ang mga sukat. Ang input ng LCD ay naka-plug sa GPIO14. Tuwing 5 segundo o higit pa, gagawin namin:

  1. paganahin ang laser diode
  2. makuha ang imahe sa memorya
  3. huwag paganahin ang laser diode
  4. subaybayan ang laser gamit ang mga filter ng saklaw na HSV
  5. isulat ang nagresultang imahe sa disk para sa layunin ng pag-debug
  6. kalkulahin ang distansya batay sa y coordinate
  7. isulat ang distansya sa LCD display.

Gayunpaman, ang kaganapan, ang mga hakbang ay lubos na tumpak at tumpak na sapat para sa aking kaso ng paggamit, maraming puwang para sa mga pagpapabuti. Halimbawa, ang laser tuldok ay napaka mahinang kalidad at ang linya ng laser ay hindi talagang nakasentro. Sa isang laser na may mas mahusay na kalidad, ang mga hakbang sa pagkakalibrate ay magiging mas tumpak. Kahit na ang camera ay hindi talaga nakaposisyon nang maayos sa aking jig, dumikit ito sa ilalim.

Maaari ko ring dagdagan ang resolusyon ng rangefinder sa pamamagitan ng pag-ikot ng camera ng 90º gamit ang buong gamit at taasan ang resolusyon sa maximum na suportado ng camera. Sa kasalukuyang pagpapatupad limitado kami sa isang 0 hanggang 384 mga saklaw na pixel, maaari naming taasan ang itaas na limitasyon sa 1640, 4 na beses sa kasalukuyang resolusyon. Ang distansya ay magiging mas tumpak.

Bilang mga follow-up, kakailanganin kong magtrabaho sa mga pagpapabuti ng katumpakan na nabanggit ko sa itaas at bumuo ng isang enclosure para sa rangefinder. Ang enclosure ay kailangang maging tumpak na lalim upang mapagaan ang pagsukat ng pader sa dingding.

Lahat sa lahat ng kasalukuyang sistema ay sapat na para sa akin at mai-save ako ng ilang mga pera sa paggawa ng aking plano sa bahay!

Inirerekumendang: