Spisu treści:
- Krok 1: Lista materiałów
- Krok 2: Budowa przyrządu laserowego i aparatu fotograficznego
- Krok 3: Prowadzenie lasera i wyświetlacza LCD
- Krok 4: Wykrywanie lasera za pomocą OpenCV
- Krok 5: Kalibracja dalmierza
- Krok 6: Pomiar odległości
Wideo: Tworzenie dalmierza za pomocą lasera i aparatu: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Obecnie planuję prace wykończeniowe na wiosnę przyszłego roku, ale ponieważ właśnie nabyłem stary dom, nie mam żadnego planu. Zacząłem mierzyć odległości od ściany do ściany za pomocą linijki, ale jest to powolne i podatne na błędy. Myślałem o zakupie dalmierza, aby ułatwić ten proces, ale potem znalazłem stary artykuł o budowaniu własnego dalmierza za pomocą lasera i aparatu. Jak się okazuje, te podzespoły mam w swoim warsztacie.
Projekt oparty jest na tym artykule:
Jedyną różnicą jest to, że będę budować dalmierz za pomocą Raspberry Pi Zero W, LCD i modułu Raspberry Pi Camera. Użyję również OpenCV do śledzenia lasera.
Przypuszczam, że jesteś obeznany w technologii i swobodnie korzystasz z Pythona i wiersza poleceń. W tym projekcie używam Pi w trybie bezgłowym.
Zaczynajmy!
Krok 1: Lista materiałów
Do tego projektu będziesz potrzebować:
- tani laser 6mm 5mW
- rezystor 220 Ω
- tranzystor 2N2222A lub coś równoważnego
- Raspberry Pi Zero W
- kamera Raspberry Pi v2
- wyświetlacz LCD Nokia 5110 lub odpowiednik
- kilka przewodów połączeniowych i mała płytka stykowa
Użyłem drukarki 3d do wydrukowania przyrządu, który pomógł mi podczas eksperymentów. Planuję też wykorzystać drukarkę 3d do zbudowania kompletnej obudowy dalmierza. Możesz się całkowicie obejść.
Krok 2: Budowa przyrządu laserowego i aparatu fotograficznego
System zakłada stałą odległość między obiektywem kamery a wyjściem lasera. Aby ułatwić testy, wydrukowałem przyrząd, w którym mogę zamontować kamerę, laser i mały obwód napędowy lasera.
Wykorzystałem wymiary modułu kamery do zbudowania mocowania do kamery. Do pomiarów używałem głównie suwmiarki cyfrowej i precyzyjnej linijki. W przypadku lasera stworzyłem otwór o średnicy 6 mm z niewielkim wzmocnieniem, aby zapewnić, że laser się nie poruszy. Starałem się zachować wystarczająco dużo miejsca, aby zamocować małą płytkę stykową z tyłu przyrządu.
Do budowy użyłem Tinkercada, model można znaleźć tutaj:
Odległość między środkiem soczewki lasera a środkiem soczewki aparatu wynosi 3,75 cm.
Krok 3: Prowadzenie lasera i wyświetlacza LCD
Śledziłem ten samouczek https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi, aby sterować wyświetlaczem LCD za pomocą Raspberry Pi Zero. Zamiast edytować plik /boot/config.txt, możesz włączyć interfejs SPI za pomocą sudo raspi-config za pomocą wiersza poleceń.
Używam Raspberry Pi Zero w trybie bezgłowym, korzystając z najnowszego Raspbian Stretch. Nie omówię instalacji w tym Instructable, ale możesz postępować zgodnie z tym przewodnikiem: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- linia-polecenia-lub-korzystanie-sieci-97f065af722e
Aby mieć jasną kropkę laserową, używam szyny 5V Pi. W tym celu będę używał tranzystora (2N2222a lub odpowiednika) do napędzania lasera za pomocą GPIO. Rezystor 220 Ω na podstawie tranzystora przepuszcza wystarczający prąd przez laser. Używam RPi. GPIO do manipulowania Pi GPIO. Podłączyłem bazę tranzystora do pinu GPIO22 (15. pin), emiter do masy, a kolektor do diody laserowej.
Nie zapomnij włączyć interfejsu kamery za pomocą sudo raspi-config z wiersza poleceń.
Możesz użyć tego kodu, aby przetestować swoją konfigurację:
Jeśli wszystko poszło dobrze, powinieneś mieć plik dot.jpg, w którym zobaczysz tło i kropkę laserową.
W kodzie konfigurujemy kamerę i GPIO, następnie włączamy laser, przechwytujemy obraz i wyłączamy laser. Ponieważ uruchamiam Pi w trybie bezgłowym, muszę skopiować obrazy z mojego Pi na komputer przed ich wyświetleniem.
W tym momencie twój sprzęt powinien zostać skonfigurowany.
Krok 4: Wykrywanie lasera za pomocą OpenCV
Najpierw musimy zainstalować OpenCV na Pi. Zasadniczo masz na to trzy sposoby. Możesz zainstalować starą wersję spakowaną za pomocą apt. Możesz skompilować wybraną wersję, ale w tym przypadku czas instalacji może wynieść do 15 godzin, z czego większość na samą kompilację. Lub, moim preferowanym podejściem, możesz użyć wstępnie skompilowanej wersji Pi Zero dostarczonej przez stronę trzecią.
Ponieważ jest prostszy i szybszy, skorzystałem z pakietu innej firmy. Kroki instalacji znajdziesz w tym artykule: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Próbowałem wielu innych źródeł, ale ich pakiety nie były aktualne.
Aby śledzić wskaźnik laserowy, zaktualizowałem kod z https://github.com/bradmontgomery/python-laser-tracker, aby używać modułu kamery Pi zamiast urządzenia USB. Możesz bezpośrednio użyć kodu, jeśli nie masz modułu kamery Pi i chcesz użyć kamery USB.
Pełny kod można znaleźć tutaj:
Aby uruchomić ten kod, musisz zainstalować pakiety Pythona: pillow i picamera (sudo pip3 install pillow picamera).
Krok 5: Kalibracja dalmierza
W oryginalnym artykule autor zaprojektował procedurę kalibracji w celu uzyskania wymaganych parametrów do przekształcenia współrzędnych y na rzeczywistą odległość. Do kalibracji użyłem mojego stołu w salonie i starego krafta. Co około 10 cm zapisywałem współrzędne x i y w arkuszu kalkulacyjnym: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Aby upewnić się, że wszystko działa poprawnie, na każdym kroku sprawdzałem przechwycone obrazy, aby sprawdzić, czy laser był prawidłowo śledzony. Jeśli używasz zielonego lasera lub jeśli laser nie jest prawidłowo śledzony, musisz odpowiednio dostosować odcień, nasycenie i próg wartości programu.
Po zakończeniu fazy pomiaru nadszedł czas na obliczenie parametrów. Podobnie jak autor zastosowałem regresję liniową; właściwie arkusz kalkulacyjny Google wykonał za mnie pracę. Następnie ponownie wykorzystałem te parametry, aby obliczyć szacunkową odległość i porównać ją z rzeczywistą odległością.
Teraz nadszedł czas, aby wprowadzić parametry do programu dalmierza w celu pomiaru odległości.
Krok 6: Pomiar odległości
W kodzie: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c zaktualizowałem zmienne HEIGHT, GAIN i OFFSET zgodnie z pomiarami kalibracyjnymi. Użyłem wzoru na odległość w oryginalnym artykule, aby oszacować odległość i wydrukowałem odległość za pomocą wyświetlacza LCD.
Kod najpierw skonfiguruje kamerę i GPIO, następnie chcemy podświetlić podświetlenie LCD, aby lepiej widzieć pomiary. Wejście LCD jest podłączone do GPIO14. Co około 5 sekund:
- włącz diodę laserową;
- uchwycić obraz w pamięci
- wyłącz diodę laserową;
- śledzenie lasera za pomocą filtrów z zakresu HSV
- zapisz wynikowy obraz na dysku w celu debugowania
- obliczyć odległość na podstawie współrzędnej y
- napisz odległość na wyświetlaczu LCD.
Mimo to, miary są bardzo precyzyjne i wystarczająco dokładne dla mojego przypadku użycia, jest dużo miejsca na ulepszenia. Na przykład kropka lasera jest bardzo słabej jakości, a linia lasera nie jest naprawdę wyśrodkowana. Dzięki laserowi o lepszej jakości etapy kalibracji będą bardziej precyzyjne. Nawet kamera nie jest zbyt dobrze ustawiona w moim przyrządzie, przechyla się w dół.
Rozdzielczość dalmierza mogę też zwiększyć obracając kamerę o 90º korzystając z pełnego zakresu i zwiększyć rozdzielczość do maksymalnej obsługiwanej przez kamerę. Przy obecnej implementacji jesteśmy ograniczeni do zakresu od 0 do 384 pikseli, możemy zwiększyć górny limit do 1640, czyli 4-krotności obecnej rozdzielczości. Odległość będzie jeszcze dokładniejsza.
Jako kontynuację będę musiał popracować nad ulepszeniami precyzji, o których wspomniałem powyżej i zbudować obudowę dla dalmierza. Obudowa będzie musiała mieć dokładną głębokość, aby ułatwić pomiary od ściany do ściany.
W sumie obecny system jest dla mnie wystarczający i zaoszczędzi mi trochę dolców przy planowaniu domu!
Zalecana:
Kontroluj swój komputer za pomocą LASERA!: 5 kroków (ze zdjęciami)
Kontroluj swój komputer… za pomocą LASERA!: Czy kiedykolwiek byłeś zirytowany tym, że musisz podejść blisko komputera, gdy go używasz? Czy kiedykolwiek marzyłeś o myszy bezprzewodowej, ale nigdy jej nie kupiłeś? Cóż, oto tymczasowe rozwiązanie dla Ciebie! Pozwala to kontrolować ruch myszy
Sterowanie radiowe RF 433MHZ za pomocą HT12D HT12E - Tworzenie pilota RF za pomocą HT12E i HT12D z 433mhz: 5 kroków
Sterowanie radiowe RF 433MHZ za pomocą HT12D HT12E | Tworzenie pilota RF za pomocą HT12E i HT12D z 433mhz: W tej instrukcji pokażę ci, jak zrobić pilota RADIO za pomocą modułu odbiornika nadajnika 433mhz z kodowaniem HT12E i amp; Dekoder HT12D IC. W tej instrukcji możesz wysyłać i odbierać dane za pomocą bardzo, bardzo tanich KOMPONENTÓW, TAKICH JAK: HT
Tworzenie adaptera Bluetooth Pt.2 (tworzenie kompatybilnego głośnika): 16 kroków
Tworzenie adaptera Bluetooth Pt.2 (Tworzenie kompatybilnego głośnika): W tej instrukcji pokażę ci, jak wykorzystać mój adapter Bluetooth, aby stary głośnik był kompatybilny z Bluetooth. * Jeśli nie przeczytałeś mojej pierwszej instrukcji na temat tworzenia adapter Bluetooth” Proponuję to zrobić przed kontynuowaniem.C
Zmierz stężenie azotanów w wodzie za pomocą aparatu EOS 1: 13 kroków
Pomiar stężenia azotanów w wodzie za pomocą EOS 1: Jest to krótka instrukcja krok po kroku, jak używać aparatu EOS1 do pomiaru stężenia azotanów w wodzie. Podobne kroki można zastosować do pomiaru fosforanów (wymagany jest inny tester)
Samouczek dotyczący dalmierza ultradźwiękowego z Arduino i wyświetlaczem LCD: 5 kroków
Samouczek dotyczący dalmierza ultradźwiękowego z Arduino i LCD: Wiele osób stworzyło instrukcje korzystania z Arduino Uno z czujnikiem ultradźwiękowym, a czasami także z ekranem LCD. Zawsze jednak uważałem, że te inne instrukcje często pomijają kroki, które nie są oczywiste, aby rozpocząć