INHOUDSOPGAWE:
- Stap 1: Lys van materiaal
- Stap 2: Bou 'n laser- en kamera -jig
- Stap 3: Bestuur die laser en die LCD
- Stap 4: Ontdek die laser met behulp van OpenCV
- Stap 5: Kalibrasie van die Range Finder
- Stap 6: Afstande meet
Video: Afstandsmeter met behulp van 'n laser en 'n kamera: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
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
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
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
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
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:
- maak die laserdiode moontlik
- neem die beeld in die geheue
- skakel die laserdiode uit
- volg die laser met behulp van die HSV -reeksfilters
- skryf die resulterende prent op die skyf vir ontfoutingsdoeleindes
- bereken die afstand op grond van die y -koördinaat
- 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:
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Monitor versnelling met behulp van Raspberry Pi en AIS328DQTR met behulp van Python: 6 stappe
Monitering van versnelling met behulp van Raspberry Pi en AIS328DQTR Gebruik van Python: Versnelling is eindig, volgens ek volgens sommige wette van die fisika.- Terry Riley 'n Jagluiperd gebruik ongelooflike versnelling en vinnige spoedveranderinge wanneer hy jaag. Die vinnigste wesens aan wal gebruik af en toe sy hoogste tempo om prooi te vang. Die
Afstandsmeter vir parkeergarage met Arduino: 4 stappe (met foto's)
Afstandsmeter vir parkeerplek in die motorhuis met Arduino: hierdie eenvoudige projek sal u help om u motor in die motorhuis te parkeer deur die afstand van voorwerpe voor die buffer van u motor te wys. 'N' Stop' -boodskap sal u vertel wanneer dit tyd is om te stop. Die projek is gebaseer op die gewone HC-SR04 of Parallax Ping))))
Ultrasoniese afstandsmeter met deure: 7 stappe (met foto's)
Ultrasoniese afstandsmeter met deure: Die ultrasoniese afstandsmeter ontdek of daar iets in sy pad is deur 'n hoëfrekwensie -klankgolf uit te stuur. Die fokus van hierdie instruksies sal wees hoe deure en ultraklankafstandzoekers kan saamwerk, spesifiek hoe hulle gebruik kan word om op te spoor wanneer
Hoe om van 0 tot 99 te tel met behulp van 8051 mikrobeheerder met 7 segmentweergawe: 5 stappe (met foto's)
Hoe om van 0 tot 99 te tel Met behulp van 8051 mikrobeheerder met 7 -segmentweergawe: Hallo almal, in hierdie tutoriaal gaan ons u vertel hoe om van 0 tot 99 te tel met twee 7 -segment -skerms