İçindekiler:

Lazer ve Kamera Kullanarak Telemetre Yapma: 6 Adım
Lazer ve Kamera Kullanarak Telemetre Yapma: 6 Adım

Video: Lazer ve Kamera Kullanarak Telemetre Yapma: 6 Adım

Video: Lazer ve Kamera Kullanarak Telemetre Yapma: 6 Adım
Video: Popoman 60 metre Bluetooth lazer telemetre - Popoman LMBT60 - JOYPLAN Uygulaması - USB Tip C 2024, Haziran
Anonim
Lazer ve Kamera Kullanarak Telemetre Yapma
Lazer ve Kamera Kullanarak Telemetre Yapma

Şu anda önümüzdeki bahar için bazı iç işleri planlıyorum ama eski bir ev aldığım için herhangi bir ev planım yok. Bir cetvel kullanarak duvardan duvara mesafeleri ölçmeye başladım ama bu yavaş ve hataya açık. İşlemi kolaylaştırmak için bir telemetre almayı düşündüm ama sonra lazer ve kamera kullanarak kendi telemetresini oluşturmakla ilgili eski bir makale buldum. Görünüşe göre, bu bileşenler atölyemde var.

Proje şu makaleye dayanmaktadır:

Tek fark, telemetreyi bir Raspberry Pi Zero W, bir LCD ve Raspberry Pi Kamera modülü kullanarak oluşturacağım. Ayrıca lazeri izlemek için OpenCV kullanacağım.

Teknoloji konusunda bilgili olduğunuzu ve Python ve komut satırını kullanmakta rahat olduğunuzu varsayacağım. Bu projede Pi'yi başsız modda kullanıyorum.

Hadi başlayalım!

Adım 1: Malzeme Listesi

Bu proje için ihtiyacınız olacak:

  • ucuz bir 6mm 5mW lazer
  • 220 Ω direnç
  • 2N2222A transistör veya eşdeğeri
  • bir Ahududu Pi Sıfır W
  • bir Ahududu Pi Kamera v2
  • Nokia 5110 LCD ekran veya eşdeğeri
  • bazı atlama telleri ve küçük bir devre tahtası

Deneyler sırasında bana yardımcı olan bir aparatı basmak için 3d yazıcımı kullandım. Ayrıca telemetre için eksiksiz bir muhafaza oluşturmak için 3d yazıcıyı kullanmayı planlıyorum. Tamamen onsuz yapabilirsiniz.

2. Adım: Bir Lazer ve Kamera Cihazı Oluşturma

Lazer ve Kamera Jig Oluşturma
Lazer ve Kamera Jig Oluşturma
Lazer ve Kamera Cihazı Oluşturma
Lazer ve Kamera Cihazı Oluşturma
Lazer ve Kamera Jig Oluşturma
Lazer ve Kamera Jig Oluşturma

Sistem, kamera merceği ile lazer çıkışı arasında sabit bir mesafe olduğunu varsayar. Testleri kolaylaştırmak için kamerayı, lazeri ve lazer için küçük bir sürüş devresini monte edebileceğim bir şablon yazdırdım.

Kameranın montajını oluşturmak için kamera modülü boyutlarını kullandım. Ölçümleri yapmak için çoğunlukla dijital bir kumpas ve hassas bir cetvel kullandım. Lazer için, lazerin hareket etmemesini sağlamak için biraz takviyeli 6 mm'lik bir delik oluşturdum. Jigin arkasına sabitlenmiş küçük bir devre tahtasına sahip olmak için yeterli alan tutmaya çalıştım.

Yapı için Tinkercad kullandım, modeli burada bulabilirsiniz:

Lazer merceğinin merkezi ile kamera merceğinin merkezi arasında 3,75 cm mesafe vardır.

Adım 3: Lazeri ve LCD'yi Sürmek

Lazeri ve LCD'yi Kullanmak
Lazeri ve LCD'yi Kullanmak
Lazeri ve LCD'yi Kullanmak
Lazeri ve LCD'yi Kullanmak

Raspberry Pi Zero ile LCD ekranı sürmek için https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi bu öğreticiyi takip ettim. /boot/config.txt dosyasını düzenlemek yerine komut satırı üzerinden sudo raspi-config kullanarak SPI arayüzünü etkinleştirebilirsiniz.

Raspberry Pi Zero'yu, tarihteki en son Raspbian Stretch'i kullanarak başsız modda kullanıyorum. Kurulumu bu Eğitilebilir Kitapta ele almayacağım, ancak bu kılavuzu takip edebilirsiniz: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- komut satırı veya ağı kullanma-97f065af722e

Parlak bir lazer noktasına sahip olmak için Pi'nin 5V rayını kullanıyorum. Bunun için GPIO kullanarak lazeri sürmek için bir transistör (2N2222a veya eşdeğeri) kullanacağım. Transistörün tabanındaki 220 Ω'luk bir direnç, lazer boyunca yeterli akıma izin verir. Pi GPIO'yu değiştirmek için RPi. GPIO kullanıyorum. Transistörün tabanını GPIO22 pinine (15. pin), emitörü toprağa ve kollektörü lazer diyotuna bağladım.

Komut satırı üzerinden sudo raspi-config kullanarak kamera arayüzünü etkinleştirmeyi unutmayın.

Kurulumunuzu test etmek için bu kodu kullanabilirsiniz:

Her şey yolunda gittiyse, arka planı ve lazer noktasını göreceğiniz bir dot-j.webp

Kodda kamerayı ve GPIO'yu kuruyoruz, ardından lazeri etkinleştiriyoruz, görüntüyü yakalıyoruz ve lazeri devre dışı bırakıyoruz. Pi'yi başsız modda çalıştırdığım için, görüntüleri göstermeden önce Pi'mden bilgisayarıma kopyalamam gerekiyor.

Bu noktada, donanımınızın yapılandırılması gerekir.

Adım 4: OpenCV Kullanarak Lazeri Tespit Etme

İlk olarak, OpenCV'yi Pi'ye kurmamız gerekiyor. Temelde bunu yapmanın üç yolu var. Eski paketlenmiş sürümü apt ile yükleyebilirsiniz. İstediğiniz sürümü derleyebilirsiniz ancak bu durumda kurulum süresi 15 saate kadar çıkabilir ve çoğu gerçek derleme için. Veya benim tercih ettiğim yaklaşım, Pi Zero için üçüncü bir tarafça sağlanan önceden derlenmiş bir sürüm kullanabilirsiniz.

Daha basit ve daha hızlı olduğu için üçüncü taraf bir paket kullandım. Kurulum adımlarını bu yazıda bulabilirsiniz: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Başka birçok kaynak denedim ama paketleri güncel değildi.

Bir lazer işaretçiyi izlemek için https://github.com/bradmontgomery/python-laser-tracker adresindeki kodu bir USB cihazı yerine Pi kamera modülünü kullanacak şekilde güncelledim. Pi kamera modülünüz yoksa ve bir USB kamera kullanmak istiyorsanız, kodu doğrudan kullanabilirsiniz.

Kodun tamamını burada bulabilirsiniz:

Bu kodu çalıştırmak için Python paketlerini kurmanız gerekecek: yastık ve picamera (sudo pip3 install yastık picamera).

Adım 5: Mesafe Bulucunun Kalibrasyonu

Mesafe Bulucu Kalibrasyonu
Mesafe Bulucu Kalibrasyonu
Mesafe Bulucu Kalibrasyonu
Mesafe Bulucu Kalibrasyonu
Mesafe Bulucu Kalibrasyonu
Mesafe Bulucu Kalibrasyonu

Orijinal makalede yazar, y koordinatlarını gerçek bir mesafeye dönüştürmek için gerekli parametreleri elde etmek için bir kalibrasyon prosedürü tasarladı. Kalibrasyonlar için oturma odamı ve eski bir kraft parçasını kullandım. Her 10 cm'de bir x ve y koordinatlarını bir elektronik tabloya kaydettim: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Her şeyin doğru çalıştığından emin olmak için, her adımda, yakalanan görüntüleri kontrol edip kontrol ettim. lazer doğru izlendi. Yeşil lazer kullanıyorsanız veya lazeriniz doğru takip edilmemişse, programın renk tonunu, doygunluğunu ve değer eşiğini buna göre ayarlamanız gerekecektir.

Ölçüm aşaması tamamlandıktan sonra, parametreleri fiilen hesaplamanın zamanı gelmiştir. Yazar gibi ben de doğrusal bir regresyon kullandım; aslında Google E-Tablo benim için işi yaptı. Daha sonra tahmini bir mesafeyi hesaplamak ve gerçek mesafeye göre kontrol etmek için bu parametreleri yeniden kullandım.

Artık mesafeleri ölçmek için parametreleri telemetre programına enjekte etme zamanı.

Adım 6: Mesafeleri Ölçme

Mesafeleri Ölçme
Mesafeleri Ölçme

Kodda: https://Gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c HEIGHT, GAIN ve OFFSET değişkenlerini kalibrasyon ölçümlerine göre güncelledim. Mesafeyi tahmin etmek için orijinal makaledeki mesafe formülünü kullandım ve LCD ekranı kullanarak mesafeyi yazdırdım.

Kod önce kamerayı ve GPIO'yu kuracak, ardından ölçümleri daha iyi görmek için LCD arka ışığını yakmak istiyoruz. LCD girişi GPIO14'e takılı. Her 5 saniyede bir şunları yapacağız:

  1. lazer diyotu etkinleştir
  2. görüntüyü bellekte yakala
  3. lazer diyotu devre dışı bırak
  4. HSV menzil filtrelerini kullanarak lazeri takip edin
  5. ortaya çıkan görüntüyü hata ayıklama amacıyla diske yazın
  6. y koordinatına göre mesafeyi hesapla
  7. mesafeyi LCD ekrana yazın.

Yine de, önlemler benim kullanım durumum için yeterince hassas ve doğru olsa da, iyileştirmeler için çok yer var. Örneğin, lazer noktası çok düşük kalitededir ve lazer çizgisi tam olarak ortalanmamıştır. Daha kaliteli bir lazer ile kalibrasyon adımları daha kesin olacaktır. Kamera benim aletimde pek iyi konumlandırılmamış olsa bile, aşağıya doğru eğiliyor.

Ayrıca, tam ile kullanarak kamerayı 90º döndürerek telemetre çözünürlüğünü artırabilir ve çözünürlüğü kamera tarafından desteklenen maksimum değere yükseltebilirim. Mevcut uygulama ile 0 ila 384 piksel aralığı ile sınırlıyız, üst sınırı mevcut çözünürlüğün 4 katı olan 1640'a yükseltebiliriz. Mesafe daha da kesin olacaktır.

Takip olarak, yukarıda bahsettiğim hassas iyileştirmeler üzerinde çalışmam ve telemetre için bir muhafaza oluşturmam gerekecek. Duvardan duvara ölçümleri kolaylaştırmak için muhafazanın kesin derinliğe sahip olması gerekir.

Sonuçta mevcut sistem benim için yeterli ve ev planımı yaparken bana biraz para kazandıracak!

Önerilen: