Obsah:
- Krok 1: Seznam materiálů
- Krok 2: Sestavení laserového a kamerového přípravku
- Krok 3: Řízení laseru a displeje LCD
- Krok 4: Detekce laseru pomocí OpenCV
- Krok 5: Kalibrace dálkoměru
- Krok 6: Měření vzdáleností
Video: Výroba dálkoměru pomocí laseru a fotoaparátu: 6 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
V současné době plánuji nějaké vnitřní práce na příští jaro, ale když jsem právě získal starý dům, nemám žádný plán domu. Začal jsem měřit vzdálenosti od zdi ke zdi pomocí pravítka, ale je to pomalé a náchylné k chybám. Přemýšlel jsem o koupi dálkoměru pro usnadnění postupu, ale pak jsem našel starý článek o stavbě vlastního dálkoměru pomocí laseru a fotoaparátu. Jak se ukazuje, mám ty komponenty ve své dílně.
Projekt je založen na tomto článku:
Jediným rozdílem je, že budu dálkoměr stavět pomocí Raspberry Pi Zero W, LCD a modulu Raspberry Pi Camera. Ke sledování laseru použiji také OpenCV.
Budu předpokládat, že jste technicky zdatní a že vám vyhovuje používání Pythonu a příkazového řádku. V tomto projektu používám Pi v bezhlavém režimu.
Začněme!
Krok 1: Seznam materiálů
Pro tento projekt budete potřebovat:
- levný 6mm 5mW laser
- odpor 220 Ω
- tranzistor 2N2222A nebo něco podobného
- Raspberry Pi Zero W
- fotoaparát Raspberry Pi Camera v2
- LCD displej Nokia 5110 nebo ekvivalent
- propojovací vodiče a malé prkénko
Pomocí své 3d tiskárny jsem vytiskl přípravek, který mi pomohl během experimentů. Plánuji také použít 3D tiskárnu k vybudování kompletního krytu pro dálkoměr. Můžete se zcela obejít bez.
Krok 2: Sestavení laserového a kamerového přípravku
Systém předpokládá pevnou vzdálenost mezi objektivem fotoaparátu a laserovým výstupem. Pro usnadnění testů jsem vytiskl přípravek, do kterého mohu namontovat kameru, laser a malý hnací obvod pro laser.
Rozměry modulu kamery jsem použil k sestavení držáku pro kameru. K měření jsem používal hlavně digitální posuvné měřítko a přesné pravítko. Pro laser jsem vytvořil 6 mm otvor s trochou výztuže, aby bylo zajištěno, že se laser nebude hýbat. Snažil jsem se ponechat dost místa na to, abych měl vzadu na přípravku upevněné malé prkénko.
K sestavení jsem použil Tinkercad, model najdete zde:
Mezi středem laserového objektivu a středem objektivu fotoaparátu je vzdálenost 3,75 cm.
Krok 3: Řízení laseru a displeje LCD
Sledoval jsem tento tutoriál https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi a poháněl LCD displej s Raspberry Pi Zero. Místo úpravy souboru /boot/config.txt můžete povolit rozhraní SPI pomocí sudo raspi-config prostřednictvím příkazového řádku.
Používám Raspberry Pi Zero v bezhlavém režimu pomocí nejnovějšího k datu Raspbian Stretch. Nebudu popisovat instalaci v tomto Instructable, ale můžete postupovat podle tohoto průvodce: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- příkazového řádku nebo pomocí sítě 97f065af722e
Abych měl jasný laserový bod, používám 5V lištu Pi. K tomu budu používat tranzistor (2N2222a nebo ekvivalent) k pohonu laseru pomocí GPIO. Rezistor 220 Ω na bázi tranzistoru umožňuje dostatek proudu laserem. K manipulaci s Pi GPIO používám RPi. GPIO. Základnu tranzistoru jsem připojil na pin GPIO22 (15. pin), emitor na zem a kolektor na laserovou diodu.
Nezapomeňte povolit rozhraní kamery pomocí sudo raspi-config prostřednictvím příkazového řádku.
Tento kód můžete použít k otestování vašeho nastavení:
Pokud vše proběhlo dobře, měli byste mít soubor dot.jpg, ve kterém uvidíte pozadí a laserovou tečku.
V kódu nastavíme kameru a GPIO, poté povolíme laser, zachytíme obraz a vypneme laser. Protože provozuji Pi v bezhlavém režimu, musím před zobrazením zkopírovat obrázky z mého Pi do počítače.
V tomto okamžiku by měl být nakonfigurován váš hardware.
Krok 4: Detekce laseru pomocí OpenCV
Nejprve musíme na Pi nainstalovat OpenCV. V zásadě máte tři způsoby, jak to udělat. Starou zabalenou verzi můžete buď nainstalovat pomocí apt. Můžete zkompilovat požadovanou verzi, ale v tomto případě může doba instalace trvat až 15 hodin a většina z nich pro skutečnou kompilaci. Nebo, můj preferovaný přístup, můžete použít předem zkompilovanou verzi pro Pi Zero, kterou poskytuje třetí strana.
Protože je to jednodušší a rychlejší, použil jsem balíček třetí strany. Kroky instalace najdete v tomto článku: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Zkoušel jsem mnoho dalších zdrojů, ale jejich balíčky nebyly aktuální.
Abych mohl sledovat laserové ukazovátko, aktualizoval jsem kód z https://github.com/bradmontgomery/python-laser-tracker, abych místo USB zařízení použil kamerový modul Pi. Pokud nemáte kamerový modul Pi a chcete použít USB kameru, můžete kód přímo použít.
Kompletní kód najdete zde:
Ke spuštění tohoto kódu budete muset nainstalovat balíčky Pythonu: polštář a picamera (sudo pip3 install polštář picamera).
Krok 5: Kalibrace dálkoměru
V původním článku autor navrhl postup kalibrace, aby získal požadované parametry pro transformaci souřadnic y na skutečnou vzdálenost. Ke kalibracím jsem použil svůj stůl v obývacím pokoji a starý kus kraftu. Každých asi 10 cm jsem zaznamenal souřadnice xay do tabulky: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Aby vše fungovalo správně, v každém kroku jsem zkontroloval zachycené obrázky, abych zjistil, zda laser byl správně sledován. Pokud používáte zelený laser nebo pokud váš laser není správně sledován, budete muset podle toho upravit odstín, sytost a prahovou hodnotu programu.
Jakmile je fáze měření hotová, je čas skutečně vypočítat parametry. Stejně jako autor jsem použil lineární regresi; ve skutečnosti to za mě udělala tabulka Google. Poté jsem znovu použil tyto parametry k výpočtu odhadované vzdálenosti a zkontroloval ji podle skutečné vzdálenosti.
Nyní je čas vložit parametry do programu dálkoměru pro měření vzdáleností.
Krok 6: Měření vzdáleností
V kódu: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c jsem aktualizoval proměnné HEIGHT, GAIN a OFFSET podle kalibračních měření. Pro odhad vzdálenosti jsem použil vzorec vzdálenosti v původním článku a vzdálenost jsem vytiskl pomocí LCD displeje.
Kód nejprve nastaví kameru a GPIO, poté chceme rozsvítit podsvícení LCD, abychom lépe viděli měření. Vstup LCD je zapojen do GPIO14. Každých zhruba 5 sekund budeme:
- povolte laserovou diodu
- zachytit obrázek do paměti
- deaktivujte laserovou diodu
- sledujte laser pomocí filtrů rozsahu HSV
- zapište výsledný obrázek na disk pro účely ladění
- vypočítat vzdálenost na základě souřadnice y
- zapište vzdálenost na LCD displej.
Opatření jsou však velmi přesná a dostatečně přesná pro můj případ použití, existuje velký prostor pro vylepšení. Například laserový bod má velmi špatnou kvalitu a laserová čára není ve skutečnosti vystředěna. S laserem lepší kvality budou kroky kalibrace přesnější. Ani kamera není v mém přípravku opravdu dobře umístěná, naklání se ke dnu.
Můžu také zvýšit rozlišení dálkoměru otočením fotoaparátu o 90 ° pomocí plného a zvýšit rozlišení na maximum podporované fotoaparátem. Při současné implementaci jsme omezeni na rozsah 0 až 384 pixelů, mohli bychom horní limit zvýšit na 1640, tedy 4násobek aktuálního rozlišení. Vzdálenost bude ještě přesnější.
V návaznosti na to budu muset zapracovat na vylepšení přesnosti, které jsem zmínil výše, a vybudovat kryt pro dálkoměr. Pro usnadnění měření od zdi ke zdi bude muset mít skříň přesnou hloubku.
Celkově mi současný systém stačí a ušetří mi pár peněz při plánování mého domu!
Doporučuje:
Porovnání dálkoměrů sonaru LV-MaxSonar-EZ a HC-SR04 s Arduino: 20 kroků (s obrázky)
Srovnání LV-MaxSonar-EZ a HC-SR04 Sonar Range Finders With Arduino: Zjistil jsem, že mnoho projektů (zejména robotů) vyžaduje nebo může mít prospěch z měření vzdálenosti k objektu v reálném čase. Hledače dosahu sonaru jsou relativně levné a lze je snadno propojit s mikrořadičem, jako je Arduino. Toto v
Výroba hodin pomocí M5stick C pomocí Arduino IDE - Hodiny RTC v reálném čase s M5stack M5stick-C: 4 kroky
Výroba hodin pomocí M5stick C pomocí Arduino IDE | Hodiny RTC v reálném čase s M5stack M5stick-C: Ahoj, v tomto návodu se naučíme, jak vyrobit hodiny s vývojovou deskou m5stick-C z m5stack pomocí Arduino IDE. Takže m5stick zobrazí datum, čas & týden v měsíci na displeji
Měření vzdálenosti pomocí laserů: 5 kroků
Měření vzdálenosti pomocí laserů: V tomto projektu jsem vytvořil jednoduché zařízení, které dokáže měřit vzdálenost mezi sebou a jakýmkoli fyzickým objektem. Zařízení funguje nejlépe na vzdálenost přibližně 2–4 metry a je poměrně přesné
Od kapesního phaseru k kapesnímu laseru: 6 kroků
Z kapesního phaseru na kapesní laser: V tomto projektu budeme převádět malou hračku Star Trek Phaser, kterou jsem našel v Barnes & Ušlechtilý pro laserové ukazovátko. Mám dva tyto phasery a jednomu došla baterie pro rozsvícení, takže jsem se rozhodl jej převést na dobíjecí laserový p
Přidejte konektor synchronizace počítače ke kabelu Nikon Sc-28 Ttl (použijte automatické nastavení pro blesk na fotoaparátu a spouštění blesků fotoaparátu !!): 4 kroky
Přidejte konektor synchronizace počítače ke kabelu Nikon Sc-28 Ttl (použijte automatické nastavení pro blesk na fotoaparátu a spouštění blesků fotoaparátu !!): v tomto návodu vám ukážu, jak odstranit jeden z těchto otravných proprietárních 3pinových konektorů TTL na straně kabelu TTL fotoaparátu Nikon SC-28 a nahraďte jej standardním synchronizačním konektorem pro PC. to vám umožní používat vyhrazený blesk