INHOUDSOPGAWE:

Afstandsmeter met behulp van 'n laser en 'n kamera: 6 stappe
Afstandsmeter met behulp van 'n laser en 'n kamera: 6 stappe

Video: Afstandsmeter met behulp van 'n laser en 'n kamera: 6 stappe

Video: Afstandsmeter met behulp van 'n laser en 'n kamera: 6 stappe
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, November
Anonim
Maak afstandsmeter met behulp van 'n laser en 'n kamera
Maak afstandsmeter met behulp van 'n laser en 'n kamera

Ek beplan tans 'n paar binnenshuise werk vir die volgende lente, maar aangesien ek pas 'n ou huis gekry het, het ek nie 'n huisplan nie. Ek het begin om muur tot muur afstande te meet met behulp van 'n liniaal, maar dit is stadig en is geneig tot foute. Ek het daaraan gedink om 'n afstandsmeter te koop om die proses te vergemaklik, maar toe vind ek 'n ou artikel oor die bou van sy eie afstandsmeter met behulp van 'n laser en 'n kamera. Soos dit blyk, het ek die komponente in my werkswinkel.

Die projek is gebaseer op hierdie artikel:

Die enigste verskil is dat ek die afstandsmeter gaan bou met 'n Raspberry Pi Zero W, 'n LCD en die Raspberry Pi Camera -module. Ek sal ook OpenCV gebruik om die laser op te spoor.

Ek veronderstel dat u tegnies vaardig is en dat u gemaklik is met Python en die opdragreël. In hierdie projek gebruik ek die Pi in 'n koplose modus.

Kom ons begin!

Stap 1: Lys van materiaal

Vir hierdie projek benodig u:

  • 'n goedkoop 6mm 5mW laser
  • 'n weerstand van 220 Ω
  • 'n 2N2222A transistor of iets ekwivalent
  • 'n Framboos Pi Zero W
  • 'n Framboos Pi -kamera v2
  • 'n Nokia 5110 LCD -skerm of ekwivalent
  • 'n paar springdrade en 'n klein broodbord

Ek het my 3d -drukker gebruik om 'n mal te druk wat my gehelp het tydens die eksperimente. Ek is ook van plan om die 3D -drukker te gebruik om 'n volledige omhulsel vir die afstandsmeter te bou. U kan heeltemal sonder.

Stap 2: Bou 'n laser- en kamera -jig

Bou van 'n laser- en kamera -jig
Bou van 'n laser- en kamera -jig
Bou van 'n laser- en kamera -jig
Bou van 'n laser- en kamera -jig
Bou van 'n laser- en kamera -jig
Bou van 'n laser- en kamera -jig

Die stelsel aanvaar 'n vaste afstand tussen die kameralens en die laseruitset. Om die toetse te vergemaklik, het ek 'n mal gedruk waarin ek die kamera, die laser en 'n klein dryfbaan vir die laser kan monteer.

Ek het die afmetings van die kameramodule gebruik om die houer vir die kamera te bou. Ek het hoofsaaklik 'n digitale remklauw en 'n presisie -liniaal gebruik om die metings te neem. Vir die laser het ek 'n 6 mm gat gemaak met 'n bietjie versterking om te verseker dat die laser nie beweeg nie. Ek het probeer om genoeg ruimte te hou om 'n klein broodbord aan die agterkant van die mal te laat vasmaak.

Ek het Tinkercad gebruik vir die bou; u kan die model hier vind:

Daar is 'n afstand van 3,75 cm tussen die middel van die laserlens en die middel van die kameralens.

Stap 3: Bestuur die laser en die LCD

Bestuur die laser en die LCD
Bestuur die laser en die LCD
Bestuur die laser en die LCD
Bestuur die laser en die LCD

Ek het hierdie tutoriaal gevolg https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi om die LCD-skerm met die Raspberry Pi Zero te bestuur. In plaas daarvan om die /boot/config.txt-lêer te wysig, kan u die SPI-koppelvlak aktiveer met behulp van sudo raspi-config via die opdragreël.

Ek gebruik die Raspberry Pi Zero in 'n koplose modus met die nuutste Raspbian Stretch op die datum. Ek sal nie die installasie in hierdie instruksies dek nie, maar u kan hierdie gids volg: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- command-line-or-using-the-network-97f065af722e

Om 'n helder laserpunt te hê, gebruik ek die 5V -rail van die Pi. Hiervoor sal ek 'n transistor (2N2222a of ekwivalent) gebruik om die laser met die GPIO aan te dryf. 'N Weerstand van 220 Ω aan die basis van die transistor laat genoeg stroom deur die laser toe. Ek gebruik RPi. GPIO om die Pi GPIO te manipuleer. Ek het die basis van die transistor gekoppel aan die GPIO22 -pen (die 15de pen), die emitter op die grond en die kollektor aan die laserdiode.

Moenie vergeet om die kamera-koppelvlak met die sudo raspi-config via die opdragreël in te skakel nie.

U kan hierdie kode gebruik om u opstelling te toets:

As alles goed verloop, moet u 'n dot-j.webp

In die kode stel ons die kamera en die GPIO op, dan aktiveer ons die laser, neem ons die beeld en skakel ons die laser uit. Terwyl ek die Pi in koplose modus gebruik, moet ek die beelde van my Pi na my rekenaar kopieer voordat ek dit kan wys.

Op hierdie punt moet u hardeware gekonfigureer word.

Stap 4: Ontdek die laser met behulp van OpenCV

Eerstens moet ons OpenCV op die Pi installeer. U het basies drie maniere om dit te doen. U kan die ou verpakte weergawe met apt installeer. U kan die gewenste weergawe saamstel, maar in hierdie geval kan die installasietyd tot 15 uur duur, en die meeste daarvan vir die werklike samestelling. Of, volgens my voorkeur, kan u 'n vooraf saamgestelde weergawe vir die Pi Zero gebruik wat deur 'n derde party verskaf word.

Omdat dit eenvoudiger en vinniger is, het ek 'n derdeparty -pakket gebruik. U kan die installasie stappe in hierdie artikel vind: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Ek het baie ander bronne probeer, maar hul pakkette was nie op datum nie.

Om 'n laserwyser op te spoor, het ek die kode opgedateer vanaf https://github.com/bradmontgomery/python-laser-tracker om die Pi-kameramodule te gebruik in plaas van 'n USB-toestel. U kan die kode direk gebruik as u nie 'n Pi -kameramodule het nie en 'n USB -kamera wil gebruik.

U kan die volledige kode hier vind:

Om hierdie kode uit te voer, moet u die Python -pakkette installeer: pillow en picamera (sudo pip3 install pillow picamera).

Stap 5: Kalibrasie van die Range Finder

Kalibrasie van die Range Finder
Kalibrasie van die Range Finder
Kalibrasie van die Range Finder
Kalibrasie van die Range Finder
Kalibrasie van die Range Finder
Kalibrasie van die Range Finder

In die oorspronklike artikel het die skrywer 'n kalibrasieprosedure ontwerp om die vereiste parameters te kry om die y -koördinate na 'n werklike afstand te omskep. Ek het my sitkamertafel gebruik vir die kalibrasies en 'n ou stuk kraft. Elke 10 cm het ek die x- en y -koördinate in 'n sigblad aangeteken: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Om te verseker dat alles reg werk, het ek by elke stap die vasgelegde beelde nagegaan om te sien of die laser is korrek opgespoor. As u 'n groen laser gebruik of as u laser nie korrek gevolg word nie, moet u die kleur, versadiging en waardedrempel van die program dienooreenkomstig aanpas.

Sodra die metingsfase voltooi is, is dit tyd om die parameters eintlik te bereken. Net soos die skrywer gebruik ek 'n lineêre regressie; eintlik het Google Spreadsheet die werk vir my gedoen. Ek het die parameters daarna hergebruik om 'n geskatte afstand te bereken en dit aan die werklike afstand te kontroleer.

Dit is nou tyd om die parameters in die afstandsmeterprogram te spuit om afstande te meet.

Stap 6: Afstande meet

Afstande meet
Afstande meet

In die kode: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c het ek die veranderlikes HEIGHT, GAIN en OFFSET opgedateer volgens die kalibreringsmetings. Ek het die afstandformule in die oorspronklike artikel gebruik om die afstand te skat, en ek het die afstand met die LCD -skerm gedruk.

Die kode stel eers die kamera en die GPIO op, dan wil ons die LCD -agtergrond verlig om die metings beter te sien. Die LCD -ingang word aan die GPIO14 gekoppel. Elke 5 sekondes of so, sal ons:

  1. maak die laserdiode moontlik
  2. neem die beeld in die geheue
  3. skakel die laserdiode uit
  4. volg die laser met behulp van die HSV -reeksfilters
  5. skryf die resulterende prent op die skyf vir ontfoutingsdoeleindes
  6. bereken die afstand op grond van die y -koördinaat
  7. skryf die afstand op die LCD -skerm.

Maar as die maatreëls baie akkuraat en akkuraat genoeg is vir my gebruik, is daar baie ruimte vir verbeterings. Die laserpunt is byvoorbeeld van 'n baie swak gehalte en die laserlyn is nie regtig gesentreer nie. Met 'n laser van beter kwaliteit, is die kalibrasie -stappe meer akkuraat. Selfs die kamera is nie regtig goed in my jig geplaas nie, dit kantel na onder.

Ek kan ook die resolusie van die afstandsmeter verhoog deur die kamera met 90º te draai met behulp van die volle met en die resolusie te verhoog tot die maksimum wat deur die kamera ondersteun word. Met die huidige implementering is ons beperk tot 'n bereik van 0 tot 384 pixels, ons kan die boonste limiet verhoog tot 1640, vier keer die huidige resolusie. Die afstand sal selfs meer presies wees.

As opvolgings sal ek moet werk aan die presisieverbeterings wat ek hierbo genoem het en 'n omhulsel vir die afstandsmeter moet bou. Die omhulsel moet van presiese diepte wees om die metings van muur tot muur te vergemaklik.

Al met al is die huidige stelsel vir my genoeg en dit spaar my 'n paar dollar om my huisplan te maak!

Aanbeveel: