Obsah:

Výroba dálkoměru pomocí laseru a fotoaparátu: 6 kroků
Výroba dálkoměru pomocí laseru a fotoaparátu: 6 kroků

Video: Výroba dálkoměru pomocí laseru a fotoaparátu: 6 kroků

Video: Výroba dálkoměru pomocí laseru a fotoaparátu: 6 kroků
Video: EVPU video 2016 - CZ 2024, Červen
Anonim
Výroba dálkoměru pomocí laseru a fotoaparátu
Výroba dálkoměru pomocí laseru a fotoaparátu

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

Stavba laserového a kamerového přípravku
Stavba laserového a kamerového přípravku
Stavba laserového a kamerového přípravku
Stavba laserového a kamerového přípravku
Stavba laserového a kamerového přípravku
Stavba 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

Řízení laseru a LCD
Řízení laseru a LCD
Řízení laseru a LCD
Řízení laseru a 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

Kalibrace dálkoměru
Kalibrace dálkoměru
Kalibrace dálkoměru
Kalibrace dálkoměru
Kalibrace dálkoměru
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í

Měření vzdáleností
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:

  1. povolte laserovou diodu
  2. zachytit obrázek do paměti
  3. deaktivujte laserovou diodu
  4. sledujte laser pomocí filtrů rozsahu HSV
  5. zapište výsledný obrázek na disk pro účely ladění
  6. vypočítat vzdálenost na základě souřadnice y
  7. 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: