Turinys:

Nuotolio ieškiklis naudojant lazerį ir fotoaparatą: 6 žingsniai
Nuotolio ieškiklis naudojant lazerį ir fotoaparatą: 6 žingsniai

Video: Nuotolio ieškiklis naudojant lazerį ir fotoaparatą: 6 žingsniai

Video: Nuotolio ieškiklis naudojant lazerį ir fotoaparatą: 6 žingsniai
Video: Here's Why the F-15 Is Such a Badass Fighter Jet 2024, Birželis
Anonim
Nuotolio ieškiklis naudojant lazerį ir fotoaparatą
Nuotolio ieškiklis naudojant lazerį ir fotoaparatą

Šiuo metu planuoju atlikti vidaus darbus ateinantį pavasarį, bet ką tik įsigijau seną namą, neturiu jokio namo plano. Aš pradėjau matuoti atstumus nuo sienos iki sienos, naudodami liniuotę, tačiau ji yra lėta ir linkusi į klaidas. Aš galvojau nusipirkti nuotolio ieškiklį, kad palengvintų procesą, bet tada radau seną straipsnį apie savo nuotolio ieškiklio kūrimą naudojant lazerį ir fotoaparatą. Kaip paaiškėja, tuos komponentus turiu savo dirbtuvėse.

Projektas pagrįstas šiuo straipsniu:

Vienintelis skirtumas yra tas, kad tolumo ieškiklį kursiu naudodamas „Raspberry Pi Zero W“, skystųjų kristalų ekraną ir „Raspberry Pi“kameros modulį. Lazeriui sekti taip pat naudosiu „OpenCV“.

Manau, kad esate išmanantis technologijas ir jums patogu naudotis „Python“ir komandine eilute. Šiame projekte aš naudoju „Pi“be galvos režimu.

Pradėkime!

1 žingsnis: medžiagų sąrašas

Šiam projektui jums reikės:

  • pigus 6 mm 5 mW lazeris
  • 220 Ω rezistorius
  • 2N2222A tranzistorius arba kažkas panašaus
  • „Raspberry Pi Zero W“
  • „Raspberry Pi“kamera v2
  • „Nokia 5110“LCD ekranas arba lygiavertis
  • keletas trumpiklių laidų ir maža duonos lenta

Aš naudoju savo 3D spausdintuvą, norėdamas atspausdinti stendą, kuris man padėjo eksperimentų metu. Taip pat planuoju naudoti 3D spausdintuvą, kad galėčiau sukurti pilną diapazono ieškiklio korpusą. Galite visiškai apsieiti be.

2 žingsnis: lazerio ir fotoaparato įrenginio kūrimas

Lazerio ir fotoaparato kūrimas
Lazerio ir fotoaparato kūrimas
Lazerio ir fotoaparato kūrimas
Lazerio ir fotoaparato kūrimas
Lazerio ir fotoaparato kūrimas
Lazerio ir fotoaparato kūrimas

Sistema prisiima fiksuotą atstumą tarp fotoaparato objektyvo ir lazerio išvesties. Norėdami palengvinti bandymus, atspausdinau stendą, kuriame galiu sumontuoti fotoaparatą, lazerį ir mažą lazerio važiavimo grandinę.

Aš naudoju fotoaparato modulio matmenis, kad galėčiau pastatyti fotoaparato laikiklį. Matavimams daugiausia naudoju skaitmeninį apkabos ir tikslią liniuotę. Lazeriui sukūriau 6 mm skylę su trupučiu sutvirtinimo, kad lazeris nejudėtų. Stengiausi išlaikyti pakankamai vietos, kad galinėje mašinos pusėje būtų pritvirtinta maža duonos lenta.

Statybai naudojau „Tinkercad“, modelį rasite čia:

Tarp lazerio lęšio centro ir fotoaparato objektyvo centro yra 3,75 cm atstumas.

3 žingsnis: vairuokite lazerį ir LCD ekraną

Važiavimas lazeriu ir LCD
Važiavimas lazeriu ir LCD
Važiavimas lazeriu ir LCD
Važiavimas lazeriu ir LCD

Aš vadovavausi šia pamoka https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi, kad vairuočiau LCD ekraną su „Raspberry Pi Zero“. Užuot redagavę /boot/config.txt failą, galite įjungti SPI sąsają naudodami sudo raspi-config per komandų eilutę.

Aš naudoju „Raspberry Pi Zero“režimu be galvos, naudodamas naujausią „Raspbian Stretch“. Aš neuždėsiu diegimo šioje instrukcijoje, bet galite vadovautis šiuo vadovu: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- komandų eilutės arba naudojant tinklą-97f065af722e

Norėdami turėti ryškų lazerio tašką, naudoju 5V „Pi“bėgelį. Tam aš naudosiu tranzistorių (2N2222a arba lygiavertį), kad vairuočiau lazerį naudojant GPIO. 220 Ω rezistorius tranzistoriaus pagrinde leidžia pakankamai srovės per lazerį. Aš naudoju RPi. GPIO manipuliuoti Pi GPIO. Tranzistoriaus pagrindą prijungiau prie GPIO22 kaiščio (15 -ojo kaiščio), emiterio - prie žemės, o kolektoriaus - prie lazerinio diodo.

Nepamirškite įjungti fotoaparato sąsajos naudodami komandinę eilutę naudodami sudo raspi-config.

Šį kodą galite naudoti norėdami išbandyti savo sąranką:

Jei viskas pavyko gerai, turėtumėte turėti failą dot.jpg, kuriame matysite foną ir lazerinį tašką.

Kode nustatome fotoaparatą ir GPIO, tada įjungiame lazerį, fiksuojame vaizdą ir išjungiame lazerį. Kadangi naudoju „Pi“režimu be galvos, prieš rodydamas turiu nukopijuoti vaizdus iš „Pi“į kompiuterį.

Šiuo metu jūsų aparatinė įranga turėtų būti sukonfigūruota.

4 žingsnis: Lazerio aptikimas naudojant „OpenCV“

Pirma, „PiC“turime įdiegti „OpenCV“. Iš esmės turite tris būdus, kaip tai padaryti. Galite įdiegti seną supakuotą versiją naudodami apt. Galite sudaryti norimą versiją, tačiau šiuo atveju diegimo laikas gali užtrukti iki 15 valandų, o didžioji dalis - tikrajai kompiliacijai. Arba, mano pageidaujamas požiūris, galite naudoti iš anksto sudarytą „Pi Zero“versiją, kurią pateikia trečioji šalis.

Kadangi tai yra paprasčiau ir greičiau, aš naudoju trečiosios šalies paketą. Diegimo veiksmus rasite šiame straipsnyje: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Išbandžiau daug kitų šaltinių, tačiau jų paketai nebuvo atnaujinti.

Norėdami sekti lazerinį žymeklį, atnaujinau kodą iš https://github.com/bradmontgomery/python-laser-tracker, kad vietoj USB įrenginio būtų naudojamas „Pi“kameros modulis. Galite tiesiogiai naudoti kodą, jei neturite „Pi“kameros modulio ir norite naudoti USB kamerą.

Visą kodą galite rasti čia:

Norėdami paleisti šį kodą, turėsite įdiegti „Python“paketus: pagalvę ir picamera (sudo pip3 install pillow picamera).

5 veiksmas: diapazono ieškiklio kalibravimas

Diapazono ieškiklio kalibravimas
Diapazono ieškiklio kalibravimas
Diapazono ieškiklio kalibravimas
Diapazono ieškiklio kalibravimas
Diapazono ieškiklio kalibravimas
Diapazono ieškiklio kalibravimas

Pradiniame straipsnyje autorius sukūrė kalibravimo procedūrą, kad gautų reikiamus parametrus, kad y koordinates paverstų tikru atstumu. Kalibravimui naudojau savo svetainės stalą ir seną kraftą. Maždaug kas 10 cm užrašiau x ir y koordinates į skaičiuoklę: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Norėdami užtikrinti, kad viskas veiktų teisingai, kiekviename žingsnyje patikrinau užfiksuotus vaizdus, ar lazeris buvo teisingai sekamas. Jei naudojate žalią lazerį arba jei jūsų lazeris nėra tinkamai sekamas, turėsite atitinkamai koreguoti programos atspalvį, sodrumą ir vertės slenkstį.

Kai matavimo etapas yra baigtas, laikas iš tikrųjų apskaičiuoti parametrus. Kaip ir autorius, aš naudoju tiesinę regresiją; iš tikrųjų „Google“skaičiuoklė atliko darbą už mane. Tada aš pakartotinai panaudojau tuos parametrus apskaičiuodamas apskaičiuotą atstumą ir patikrinau jį pagal faktinį atstumą.

Atėjo laikas įvesti parametrus į atstumo matuoklio programą atstumams matuoti.

6 žingsnis: atstumų matavimas

Atstumų matavimas
Atstumų matavimas

Kode: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c atnaujinau kintamuosius HEIGHT, GAIN ir OFFSET pagal kalibravimo matavimus. Atstumui apskaičiuoti naudojau pradinio straipsnio atstumo formulę, o atstumą atspausdinau naudodamas LCD ekraną.

Kodas pirmiausia nustatys fotoaparatą ir GPIO, tada norime įjungti LCD apšvietimą, kad geriau matytume matavimus. LCD įvestis prijungta prie GPIO14. Maždaug kas 5 sekundes mes:

  1. įjungti lazerinį diodą
  2. užfiksuoti vaizdą atmintyje
  3. išjunkite lazerinį diodą
  4. stebėkite lazerį naudodami HSV diapazono filtrus
  5. įrašykite gautą vaizdą į diską derinimo tikslais
  6. apskaičiuokite atstumą pagal y koordinatę
  7. LCD ekrane užrašykite atstumą.

Nepaisant to, priemonės yra labai tikslios ir pakankamai tikslios mano atvejui, yra daug galimybių tobulėti. Pavyzdžiui, lazerio taškas yra labai prastos kokybės ir lazerio linija tikrai nėra centre. Naudojant geresnės kokybės lazerį, kalibravimo žingsniai bus tikslesni. Net fotoaparatas nėra labai gerai išdėstytas mano džigoje, jis pakreipiamas į apačią.

Taip pat galiu padidinti nuotolio ieškiklio skiriamąją gebą, pasukdamas fotoaparatą 90 laipsnių kampu, naudodami visą režimą, ir padidinti skiriamąją gebą iki didžiausios, kurią palaiko fotoaparatas. Esant dabartiniam įgyvendinimui, mes ribojame nuo 0 iki 384 pikselių diapazoną, galime padidinti viršutinę ribą iki 1640, 4 kartus didesnę už dabartinę skiriamąją gebą. Atstumas bus dar tikslesnis.

Kaip tolesni veiksmai, turėsiu patobulinti aukščiau minėtus tikslumo patobulinimus ir sukurti diapazono ieškiklio korpusą. Norint palengvinti matavimus nuo sienos iki sienos, korpusas turi būti tikslaus gylio.

Apskritai man užtenka dabartinės sistemos ir sutaupysiu šiek tiek pinigų, kad sudaryčiau savo namo planą!

Rekomenduojamas: