Mündəricat:

Lazer və Kameradan İstifadəçi Tapmaq: 6 addım
Lazer və Kameradan İstifadəçi Tapmaq: 6 addım

Video: Lazer və Kameradan İstifadəçi Tapmaq: 6 addım

Video: Lazer və Kameradan İstifadəçi Tapmaq: 6 addım
Video: Kim nə başa düşdü ❓ 2024, Iyun
Anonim
Lazer və Kameradan İstifadə Edəcək
Lazer və Kameradan İstifadə Edəcək

Hal -hazırda gələn Bahar üçün bəzi daxili işlər planlaşdırıram, ancaq köhnə bir ev əldə etdiyim üçün heç bir ev planım yoxdur. Bir hökmdar istifadə edərək divardan divara olan məsafəni ölçməyə başladım, amma yavaş və səhvlərə meyllidir. Prosesi asanlaşdırmaq üçün bir məsafəölçən satın almağı düşündüm, amma sonra lazer və kamera istifadə edərək öz məsafəölçən qurmaq haqqında köhnə bir məqalə tapdım. Göründüyü kimi, mənim emalatxanamda həmin komponentlər var.

Layihə bu məqaləyə əsaslanır:

Yeganə fərq, Raspberry Pi Zero W, LCD və Raspberry Pi Camera modulundan istifadə edərək məsafəölçən quracağam. Lazeri izləmək üçün OpenCV -dən də istifadə edəcəyəm.

Güman edərəm ki, bir texnoloji biliyiniz var və Python və əmr satırından rahat istifadə edirsiniz. Bu layihədə Pi -ni başsız rejimdə istifadə edirəm.

Gəlin başlayaq!

Addım 1: Materialların siyahısı

Bu layihə üçün sizə lazım olacaq:

  • ucuz 6mm 5mW lazer
  • 220 Ω rezistor
  • 2N2222A tranzistoru və ya ekvivalent bir şey
  • a Raspberry Pi Zero W
  • a Raspberry Pi Kamera v2
  • Nokia 5110 LCD ekranı və ya buna bərabərdir
  • bəzi tullanan tellər və kiçik bir çörək taxtası

Təcrübələr zamanı mənə kömək edən bir printeri çap etmək üçün 3d printerimi istifadə etdim. Mən də 3D printerdən istifadə edərək məsafə tapan üçün tam bir korpus qurmağı planlaşdırıram. Onsuz tamamilə edə bilərsiniz.

Addım 2: Lazer və Kamera Jiginin qurulması

Lazer və Kamera Jig qurmaq
Lazer və Kamera Jig qurmaq
Lazer və Kamera Jiginin qurulması
Lazer və Kamera Jiginin qurulması
Lazer və Kamera Jiginin qurulması
Lazer və Kamera Jiginin qurulması

Sistem, kamera lensi ilə lazer çıxışı arasında sabit bir məsafə götürür. Testləri asanlaşdırmaq üçün kameranı, lazeri və lazer üçün kiçik bir sürücülük sxemini quraşdıra biləcəyim bir cihaz çap etdim.

Kamera üçün montaj qurmaq üçün kamera modul ölçülərindən istifadə etdim. Ölçmələri aparmaq üçün əsasən rəqəmsal bir kaliper və dəqiq bir hökmdar istifadə etdim. Lazer üçün lazerin hərəkət etməməsini təmin etmək üçün bir az möhkəmləndirilmiş 6 mm -lik bir çuxur yaratdım. Kiçik bir çörək taxtasının qurğunun arxasına bərkidilməsi üçün kifayət qədər yer saxlamağa çalışdım.

Tinkercad-ı qurmaq üçün istifadə etdim, modeli burada tapa bilərsiniz:

Lazer lensin mərkəzi ilə kamera lensinin mərkəzi arasında 3,75 sm məsafə var.

Addım 3: Lazer və LCD sürücülük

Lazer və LCD sürücülük
Lazer və LCD sürücülük
Lazer və LCD sürücülük
Lazer və LCD sürücülük

LCD ekranı Raspberry Pi Zero ilə idarə etmək üçün https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi təlimatını izlədim. /Boot/config.txt faylını redaktə etmək əvəzinə komanda xətti vasitəsilə sudo raspi-config istifadə edərək SPI interfeysini aktivləşdirə bilərsiniz.

Ən son Raspbian Stretch istifadə edərək başsız rejimdə Raspberry Pi Zero istifadə edirəm. Quraşdırmanı bu Təlimat kitabında əhatə etməyəcəyəm, ancaq bu təlimatı izləyə bilərsiniz: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- komanda xətti və ya şəbəkədən istifadə edərək-97f065af722e

Parlaq bir lazer nöqtəsinə sahib olmaq üçün Pi -nin 5V rayından istifadə edirəm. Bunun üçün GPIO istifadə edərək lazeri idarə etmək üçün bir tranzistor (2N2222a və ya ekvivalent) istifadə edəcəyəm. Transistorun bazasındakı 220 Ω rezistor lazerdən kifayət qədər cərəyan keçir. Pi GPIO -nu idarə etmək üçün RPi. GPIO -dan istifadə edirəm. Transistorun əsasını GPIO22 pininə (15 -ci pin), yayıcıyı yerə və kollektoru lazer dioduna bağladım.

Komanda xətti vasitəsilə sudo raspi-config istifadə edərək kamera interfeysini aktiv etməyi unutmayın.

Quraşdırmanı sınamaq üçün bu kodu istifadə edə bilərsiniz:

Hər şey yaxşı gedirsə, arxa planı və lazer nöqtəsini görəcəyiniz bir dot-j.webp

Kodda kamera və GPIO qururuq, sonra lazeri işə salırıq, şəkil çəkirik və lazeri deaktiv edirik. Pi -ni başsız rejimdə işlədiyim üçün şəkilləri göstərmədən əvvəl Pi -dən kompüterimə kopyalamalıyam.

Bu nöqtədə, donanımınız konfiqurasiya edilməlidir.

Addım 4: OpenCV istifadə edərək lazerin aşkarlanması

Əvvəlcə Pi -də OpenCV quraşdırmalıyıq. Əsasən bunu etmək üçün üç yolunuz var. Köhnə paket versiyasını apt ilə yükləyə bilərsiniz. İstədiyiniz versiyanı tərtib edə bilərsiniz, lakin bu halda quraşdırma müddəti 15 saata qədər gedə bilər və əksəriyyəti həqiqi kompilyasiya üçün. Və ya üstünlük verdiyim yanaşma, Pi Zero üçün üçüncü tərəf tərəfindən təmin edilmiş əvvəlcədən tərtib edilmiş bir versiyadan istifadə edə bilərsiniz.

Daha sadə və daha sürətli olduğu üçün üçüncü tərəf paketindən istifadə etdim. Quraşdırma addımlarını bu yazıda tapa bilərsiniz: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Bir çox başqa mənbəni sınadım, amma paketləri yenilənmədi.

Lazer göstəricisini izləmək üçün, https://github.com/bradmontgomery/python-laser-tracker ünvanındakı kodu USB cihazı yerinə Pi kamera modulundan istifadə etmək üçün yenilədim. Pi kamera modulunuz yoxdursa və USB kamera istifadə etmək istəyirsinizsə kodu birbaşa istifadə edə bilərsiniz.

Tam kodu burada tapa bilərsiniz:

Bu kodu işə salmaq üçün Python paketlərini qurmalısınız: yastıq və pikamera (sudo pip3 yastıq pikamerasını quraşdırın).

Addım 5: Range Finder -in kalibrlənməsi

Range Finder -in kalibrlənməsi
Range Finder -in kalibrlənməsi
Range Finder -in kalibrlənməsi
Range Finder -in kalibrlənməsi
Range Finder -in kalibrlənməsi
Range Finder -in kalibrlənməsi

Orijinal məqalədə müəllif, y koordinatlarını həqiqi bir məsafəyə çevirmək üçün lazım olan parametrləri əldə etmək üçün bir kalibrləmə proseduru hazırladı. Yaşayış otağımdakı masanı kalibrləmə və köhnə bir kraft parçası üçün istifadə etdim. Hər 10 sm -də x və y koordinatlarını bir elektron tabloda qeyd etdim: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Hər şeyin düzgün işləməsini təmin etmək üçün hər addımda çəkilmiş şəkilləri yoxladım. lazer düzgün izlənildi. Yaşıl bir lazer istifadə edirsinizsə və ya lazeriniz düzgün izlənilmirsə, proqramın rəngini, doyma və dəyər həddini buna uyğun olaraq tənzimləməlisiniz.

Ölçmə mərhələsi bitdikdən sonra parametrləri əslində hesablamağın vaxtıdır. Müəllif kimi xətti bir reqressiyadan istifadə etdim; əslində Google elektron cədvəli mənim üçün iş gördü. Daha sonra təxmin edilən məsafəni hesablamaq və faktiki məsafə ilə yoxlamaq üçün həmin parametrləri yenidən istifadə etdim.

Məsafələri ölçmək üçün parametrləri diapazon proqramına daxil etməyin vaxtıdır.

Addım 6: Məsafələri ölçmək

Məsafələrin Ölçülməsi
Məsafələrin Ölçülməsi

Kodda: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c HEIGHT, GAIN və OFFSET dəyişənlərini kalibrləmə ölçülərinə uyğun olaraq yenilədim. Məsafəni təxmin etmək üçün orijinal məqalədəki məsafə formulundan istifadə etdim və LCD ekrandan istifadə edərək məsafəni çap etdim.

Kod əvvəlcə kameranı və GPIO -nu quracaq, sonra ölçüləri daha yaxşı görmək üçün LCD arxa işığı yandırmaq istəyirik. LCD girişi GPIO14 -ə qoşulmuşdur. Hər 5 saniyədə bir:

  1. lazer diodunu işə salın
  2. yaddaşda şəkil çəkmək
  3. lazer diodunu söndürün
  4. HSV diapazonlu filtrlərdən istifadə edərək lazeri izləyin
  5. ayıklama məqsədi ilə ortaya çıxan görüntünü diske yazın
  6. y koordinatına əsaslanaraq məsafəni hesablayın
  7. məsafəni LCD ekrana yazın.

Hadisə olsa da, ölçülər mənim istifadə vəziyyətim üçün kifayət qədər dəqiq və dəqiqdir, təkmilləşdirmələr üçün çox yer var. Məsələn, lazer nöqtəsi çox keyfiyyətsizdir və lazer xətti əslində mərkəzləşdirilməmişdir. Daha keyfiyyətli bir lazerlə kalibrləmə addımları daha dəqiq olacaq. Hətta kamera mənim cihazımda yaxşı yerləşdirilməyib, aşağıya doğru əyilir.

Tam istifadə edərək kameranı 90º döndərərək məsafə tapanın qətnaməsini artıra bilərəm və kamera tərəfindən dəstəklənən maksimuma qədər artıra bilərəm. Mövcud tətbiqetmə ilə 0 ilə 384 piksel aralığında məhdudlaşırıq, üst həddi 1640 -a qədər artıra bilərik, mövcud qətnaməni 4 dəfə. Məsafə daha dəqiq olacaq.

Ardıcıllıq olaraq yuxarıda qeyd etdiyim dəqiqlik təkmilləşdirmələri üzərində işləməli və məsafə tapan üçün bir korpus qurmalıyam. Divardan divara ölçmələri asanlaşdırmaq üçün korpusun dərinliyi dəqiq olmalıdır.

Ümumiyyətlə, mövcud sistem mənim üçün kifayətdir və ev planımı tərtib edərkən mənə bir neçə dollar qənaət edəcək!

Tövsiyə: