İçindekiler:

Arduino İle Sabit Radar (LIDAR) Dizisi: 10 Adım (Resimli)
Arduino İle Sabit Radar (LIDAR) Dizisi: 10 Adım (Resimli)

Video: Arduino İle Sabit Radar (LIDAR) Dizisi: 10 Adım (Resimli)

Video: Arduino İle Sabit Radar (LIDAR) Dizisi: 10 Adım (Resimli)
Video: SİNYAL İŞLEME ve FPGA | İZMİR EKONOMİ ÜNİVERSİTESİ IEEE SIGNAL PROCESSING TOPLULUĞU WEBINAR 2024, Kasım
Anonim
Arduino ile Sabit Radar (LIDAR) Dizisi
Arduino ile Sabit Radar (LIDAR) Dizisi
Arduino ile Sabit Radar (LIDAR) Dizisi
Arduino ile Sabit Radar (LIDAR) Dizisi
Arduino ile Sabit Radar (LIDAR) Dizisi
Arduino ile Sabit Radar (LIDAR) Dizisi

İki ayaklı bir robot yaparken, her zaman rakibimin izini sürebilecek ve onunla saldırı hareketleri yapabilen bir çeşit havalı alete sahip olmayı düşünüyordum. Bir sürü radar/lidar projesi burada zaten var. Ancak, amacım için bazı sınırlamalar var:

  • Ultrasonik dalga sensör modülleri oldukça büyüktür. Her robot WALL-E gibi görünürdü.
  • Mevcut radar projelerinin tümü, bir sensör (ultrasonik dalgalar, IR, lazer,…) ve ortada bir servo motor içerir. Ortamın taranması, servonun yan yana hareket etmesini gerektirir. Eşyaları ileri geri hareket ettirmek, iki ayaklı dengeleme ve yürüme için kötü olan momentum değişiklikleri yaratır.
  • Tarama frekansı servo hızı ile sınırlıdır. Muhtemelen sadece birkaç hertz elde edilebilir. Tarama frekansı bazı süper servolar tarafından artırılabilse bile, bu ağır titreşime neden olur.
  • [Merkezi servo motor - sensör] düzenlemesi de montaj ve tasarımın konumunu sınırlar. Böyle bir şeyi kafadan başka bir yere monte etmek zordur. Bu da iki ayağımı her seferinde sallanan bir WALL-E gibi gösteriyor. Hiç hoş değil!
  • [Servo-sensör] düzeni, [motor-sensör] stili olarak da oluşturulabilir. Sensör (veya sensörler) bir motor ekseni boyunca sürekli olarak dönüyor. Bu, momentum sarsıntılarını ve düşük tarama frekansı sorunlarını ortadan kaldırabilir, ancak gövde tasarımı sınırlamasını ortadan kaldıramaz. Kablolama zorluğu da önemli ölçüde artacaktır.

Aradıktan sonra, ST'den gelen bu küçük sensör VL53L0X gözlerime sıçradı. "Dünyanın En Küçük" uçuş süresi değişen sensörünü talep ederek, boyut sadece 4,4 x 2,4 x 1,0 mm'dir. özellik

  • Çip üzerinde IR lazer yayıcı ve dedektör
  • 2 m'ye kadar menzil (hızlı modda 1,2 m)
  • Programlanabilir I2C adresi
  • Bir GPIO kesme çıkış pini
  • Göz güvenli

Tüm bu özel özellikler bir araya geldiğinde, bir dizi VL53L0X sensörü çalışabiliyorsa, yukarıdaki sorunların üstesinden gelmemi sağladı. İlk başta bu radarın katı hal radarı olarak adlandırılacağını düşünmüştüm ama bu terimin başka bir şey için kullanıldığını öğrendim. Bu nedenle başlıktaki "Sabit" kelimesi, bu radar aygıtında hareketli parça olmadığı anlamına gelir. Ayrıca, LIDAR (ışık algılama ve menzil) bu çip için teknik olarak doğru terim iken, RADAR burada daha genel bir terim olarak anılır.

Programlanabilir I2C adresi ve GPIO çıkış pininin bu proje için kritik olmasının nedeni daha sonra açıklanacaktır.

Adım 1: Araçlar ve Parçalar

Araçlar ve Parçalar
Araçlar ve Parçalar
Araçlar ve Parçalar
Araçlar ve Parçalar

Aletler

Bu projede aşağıdaki araçlar gereklidir:

  • Havya
  • Lehimleme yardımcı eller
  • Dupont sıkma aracı
  • 1.5 mm altıgen sürücü
  • Tel kaplama temizleme aracı
  • Tel makası
  • Sıcak yapıştırıcı tabancası
  • Cımbız
  • Büyüteç (telefonunuzdaki fiziksel veya uygulamalar)
  • Düz burunlu pense

Parçalar

Bu projede aşağıdaki parçalar kullanılmaktadır:

  • 10x VL53L0X GY-530 koparma panoları
  • Arduino (Uno, Nano, Mega, Zero, Mini, …vs)
  • Bir breadboard ve bazı breadboard telleri
  • Farklı renklerde AWG #26 teller
  • AWG #30 tek damarlı tel
  • 5x Dupont erkek konnektör
  • 5x Tek pimli Dupont muhafazaları
  • 10x 3D baskılı koparma tahtası tutucuları
  • 1x 3D baskılı dairesel çerçeve
  • 10x M2x10 düz başlı vidalar
  • 10x 0804 LED(Mavi önerilir)
  • 10x SOT-23 AO3400 N-Kanal MOSFET
  • Küçük bir kapasitör (10~100uF)

koparma panosu

Kullandığım VL53L0X devre kartı GY-530. Adafruit versiyonu ve Pololu versiyonu da mevcuttur. Mümkünse, harika ürünler, harika öğreticiler ve harika yazılım kitaplıkları oluşturdukları için Adafruit veya Pololu'nun ürününü kullanmanızı öneririm. Adafruit'in VL53L0X kitaplığında test ettim ve Pololu'nun VL53L0X kitaplığının değiştirilmiş bir versiyonunu kullandım.

Dupont konektörleri

Breadboard için dupont konektörler kullanılır. Elinizde bulunan diğer bağlantı türlerini kullanabilirsiniz.

Vidalar ve 3D Baskılı Parçalar

Sensörleri dairesel bir düzende yerleştirmek için M2 vidalar, tutucular ve dairesel çerçeve kullanılır. Mukavva, maket ahşap, kil ve hatta bir kutuya sıcak tutkal kullanmak gibi başka yöntemler de kullanabilirsiniz.

2. Adım: Breadout Board'u Hacklemek

Breadout Board'u Hacklemek
Breadout Board'u Hacklemek
Breadout Board'u Hacklemek
Breadout Board'u Hacklemek
Breadout Board'u Hacklemek
Breadout Board'u Hacklemek
Breadout Board'u Hacklemek
Breadout Board'u Hacklemek

Algılama Konisi

Algılama konisini çizmek için tek bir modül kullandım. Hedef olarak çoğunlukla 3D baskılı bir robot kullanmak. Mesafe led ekranda gösterilir ve kabaca ölçülür. Ölçülen veriler bir Microsoft Excel dosyasına kaydedilir ve eğri uydurma işlevi kullanılır. En iyi uyum, 3 cm'den yaklaşık 100 cm'ye kadar etkili mesafeye sahip doğal bir logaritma eğrisidir.

60 cm'de, tek bir sensör için algılama eğrisi yaklaşık 22 cm'dir. 20 cm genişliğinde bir hedefle, radar dizisi için 10~15 derecelik dairesel bir ayrım kabul edilebilir bir tarama çözünürlüğü sağlamalıdır.

I2C Adresi

VL53L0X I2C cihaz adresi programlanabilirken, XSHUT pininin mikro denetleyici tarafından tam kontrolü gereklidir. Bunu yapmak için sıra:

  1. AVDD'ye güç uygulanır.
  2. Tüm VL53L0X yongaları, TÜM XSHUT pinlerini DÜŞÜK konumuna getirerek Hw Bekleme (sıfırlama) durumuna getirilir.
  3. Her çip, birer birer sıfırlama durumundan çıkarılır. Önyüklemeden sonra varsayılan I2C adresi 0x52'dir.
  4. Çip adresi, bir I2C komutu ile yeni bir adrese değiştirilir. Örneğin, 0x52, 0x53 olarak değiştirildi.
  5. Tüm çipler için 3. ve 4. adımları tekrarlayın.

Teorik olarak, 7 bit adres aralığı için aynı veri yolunda maksimum 126 birim sürülebilir. Bununla birlikte, pratikte, mikro denetleyicinin veri yolu kapasitansı ve batan akım sınırlaması, maksimum cihaz sayısını sınırlayabilir/sınırlamalıdır.

Yeni I2C adresi, gücün kesilmesine veya sıfırlanmasına karşı VL53L0X yongasında saklanmaz. Bu nedenle bu işlem her açılışta bir kez yapılmalıdır. Bu, radar dizisindeki her birim için bir değerli pimin gerekli olduğu anlamına gelir. Bu, 10+ veya 20+ üniteli bir radar kayışı için kablolama ve pin tüketimi için çok dostça değil.

ADIM1'de bahsedildiği gibi, VL53L0X yongasında orijinal olarak kesme için kullanılan bir GPIO1 pininin bu işi yapabilmesi şanstır.

GPIO-XSHUTN papatya zinciri

GPIO çıkışı, önyükleme sırasında yüksek empedans durumundadır ve etkinken tahliyeyi düşük seviyeye açar. GPIO ve XSHUT pinleri, veri sayfasında önerildiği gibi GY-530 koparma kartında AVDD'ye doğru çekilir. Tüm VL53L0X çiplerini Hw Bekleme durumuna (XSHUT düşük sürüş) güvenilir bir şekilde koymak için, her XSHUT pini için bir mantık NOT kapısına (inverter) ihtiyacımız var. Ardından, bir çipin (N. çip) GPIO çıkışını, alt çipin (N+1 çip) XSHUTN'ına (XSHUT-NOT) bağlarız.

Güç açıldığında, tüm GPIO pinleri (etkin değil) yukarı çekilir, sonraki tüm XSHUT pinleri NOT geçidi tarafından aşağı sürülür (XSHUTN pininin mikro denetleyiciye bağlı olduğu çok yumruk çip hariç). Aşağı akış çipinin I2C adres değişikliği ve XSHUT sürümü, yazılımda birer birer yapılır.

Farklı devre kartları kullanıyorsanız, çekme dirençlerinin yerinde olup olmadığından emin olmanız ve uygun ayarları yapmanız gerekir.

LED ekleme

Bir sonraki adımda, XSHUT pedinden bitişik bir kapasitörün GND terminaline bağlı olan ara panosuna küçük bir 0805 SMD LED eklenecektir. LED'in kendisi modülün çalışmasını etkilemese de, XSHUT mantık seviyesinde bize iyi bir görsel gösterge sağlar.

LED'i çekme direnciyle (benim durumumda 10k) seri olarak XSHUT pimine takmak voltaj düşüşüne neden olur. 3,3v'lik yüksek mantık seviyesi yerine, kırmızı bir 0805 LED için ileri voltaj düşüşü 1,6v olarak ölçülür. Bu voltaj veri sayfasındaki yüksek mantık seviyesinden (1.12v) daha yüksek olmasına rağmen, mavi LED bu hack için daha iyidir. Mavi LED için ileri voltaj düşüşü, çipin mantık seviyesinin güvenli bir şekilde üzerinde olan yaklaşık 2.4v olarak ölçülür.

N-MOS Çeviriciyi Ekleme (Logic NOT Gate)

Eklediğimiz ledin üzerine küçük bir SOT-23 N-kanallı MOSFET yığılmıştır. İki terminalin (D, S) devre kartına lehimlenmesi gerekir ve kalan terminal (G), #26 tel kullanılarak yukarı akış kartı GPIO pinine bağlanır.

SMD Bileşenleri Eklemeyle İlgili Notlar

SMD bileşenlerini, bunun için tasarlanmamış bir devre kartına lehimlemek kolay bir iş değildir. 0805, SMD, SOT-23'ü henüz duymadıysanız, bu küçük bileşenleri daha önce lehimlememiş olmanız ihtimali vardır. Bu küçük bileşenleri elle tutarken, aşağıdakiler çok yaygındır:

  • Küçük şey öylece düştü ve sonsuza dek ortadan kayboldu,
  • Küçük şeyin üzerindeki minik pedler soyuldu.
  • Küçücük şeyin minik bacakları kırıldı.
  • Lehimleme tenekesi bir blok halinde toplandı ve ayrılamadı.
  • Ve dahası…

Hala bu radarı yapmak istiyorsanız, şunları yapabilirsiniz:

  • Bileşenleri DIP stili gibi daha büyük paketlerle değiştirin.
  • Uygulama ve tüketim için gereken minimumdan daha fazla bileşen alın.

Adım 3: 0805 LED'i lehimleme

0805 LED'i lehimleme
0805 LED'i lehimleme
0805 LED'i lehimleme
0805 LED'i lehimleme
0805 LED'i lehimleme
0805 LED'i lehimleme
0805 LED'i lehimleme
0805 LED'i lehimleme

0805 SMD LED'i lehimleme

Bir 0805 LED'i SMD için tasarlanmamış bir devre kartı üzerinde elle lehimlemek hiç de kolay bir iş değildir. Aşağıdaki adımlar, LED'i lehimleme tavsiyemdir.

  1. Koparma tahtanızı tutmak için yardımcı elinizi kullanın.
  2. SMD kondansatörünün ve "XSHUT" pedinin kenarına biraz lehim pastası koyun.
  3. Kondansatör kenarına bir miktar ek lehim koymak için havya kullanın.
  4. 0805 LED'in her iki ucuna biraz lehim pastası koyun.
  5. 0805 LED'in her iki ucuna biraz kalay koymak için havya kullanın.
  6. LED'i fotoğrafta gösterildiği gibi yerleştirmek için cımbızı kullanın. Katot ucunda normalde işaretli bir çizgi vardır. Örneğimde, katot ucunda yeşil bir çizgi var. Katot ucunu kapasitör ucuna yerleştirin.
  7. Kondansatöre doğru LED'e hafif basınç eklemek için cımbız kullanın ve aynı anda kondansatör ucuna ısı ekleyerek LED'i kondansatör ucuna lehimleyin. LED'e sertçe basmayın. Kapağı ısı ve aşırı basınç altında kırılabilir. Lehimlemeden sonra, LED'in yerinde lehimlenip lehimlenmediğini test etmek için LED'e yanlamasına hafif bir baskı uygulayın.
  8. Şimdi LED'i XSHUT dip pedinde lehimleyin. Bu adım daha kolay olmalı.

Not: Resimde gösterilen kapasitör ucu, bu devre kartındaki toprak terminalidir. Ve XSHUT dip pedi bir direnç tarafından yukarı çekilir.

LED'i test etme

Devre kartına güç (örn. 5V) ve topraklama uyguladığınızda LED yanmalıdır.

Adım 4: N-Kanal MOSFET'in Lehimlenmesi

N-Kanal MOSFET'in Lehimlenmesi
N-Kanal MOSFET'in Lehimlenmesi
N-Kanal MOSFET'in Lehimlenmesi
N-Kanal MOSFET'in Lehimlenmesi
N-Kanal MOSFET'in Lehimlenmesi
N-Kanal MOSFET'in Lehimlenmesi
N-Kanal MOSFET'in Lehimlenmesi
N-Kanal MOSFET'in Lehimlenmesi

AO3400 N-Kanal MOSFET'in Lehimlenmesi

Bu MOSFET, SOT-23 paketindedir. LED'e "istiflememiz" ve ayrıca bir kablo eklememiz gerekiyor:

  1. Biraz lehim pastası koyun ve üç terminali de kalaylayın.
  2. MOSFET'i 0805 LED'inin üzerine yerleştirmek için cımbız kullanın. S terminali kapasitörün tepesine dokunmalıdır.
  3. Fotoğrafta gösterildiği gibi S terminalini kapasitör ucuyla lehimleyin.
  4. Küçük bir kesitli AWG #30 tek damarlı tel kesin ve kaplamayı yaklaşık 1 cm çıkarın.
  5. XSHUT deliğinde lehimi aşağıdan eritmek için havya kullanın ve fotoğrafta gösterildiği gibi 30 numaralı teli yukarıdan yerleştirin.
  6. Telin üst ucunu MOSFET D terminaline lehimlemek.
  7. Fazla teli kesin.

Not: MOSFET S terminali, resimde gösterildiği gibi kapasitör ucuna bağlanır. Bu uç toprak terminalidir. MOSFET D terminali orijinal XSHUT pinine bağlanır.

Terminal G şu anda bağlı değil. Konumu, bazı pull-up dirençlerinin hemen üzerindedir. Aralarında boşluk olduğundan (N-MOS ve direnç) ve birbirine temas etmediğinden emin olun.

Adım 5: Sensör Dizisini Kablolama

Sensör Dizisini Kablolama
Sensör Dizisini Kablolama
Sensör Dizisini Kablolama
Sensör Dizisini Kablolama
Sensör Dizisini Kablolama
Sensör Dizisini Kablolama

Ortak Otobüs Kablolaması

Ortak otobüs şunları içerir:

  • Vcc gücü. Fotoğrafta kırmızı. 5v mantığı ile arduino nano kullanıyorum. Breakout panosunda LDO ve seviye değiştirici bulunur. Bu yüzden Vin olarak 5v kullanmak güvenlidir.
  • Zemin. Fotoğrafta siyah.
  • SDA. Fotoğrafta yeşil.
  • SCL. Fotoğrafta sarı.

Bu dört çizgi ortak çizgilerdir. Uygun uzunlukta kabloları kesin ve tüm sensör modüllerine paralel olarak lehimleyin. Arduino'dan ilk sensöre 20 cm, daha sonra her biri 5 cm kullandım.

XSHUTN ve GPIO Kablolaması

20 cm beyaz kablo, arduino kontrol pininden ilk sensörün XSHUTN pinine kadardır. Bu, ilk VL53L0X yongasını sıfırlamadan çıkarmak ve I2C adresini değiştirmek için gereken kontrol hattıdır.

Her modül arasındaki 5 cm'lik beyaz kablo, papatya zinciri kontrol hattıdır. Yukarı akış yongası (örneğin, çip #3) GPIO pedi, aşağı akışa (örneğin, çip #4) XSHUTN bacağına (N-Kanal MOSFET G terminali) bağlanır.

G terminalini aşağıdaki dirençle temas ettirmemeye dikkat edin. Boşluğa bir yalıtım bandı ekleyebilirsiniz. Genellikle VL53L0X çipi ile sağlanan koruma astarı burada kullanılabilir.

Kontrol kablosunu yapıştırmak için ısı tabancasını kullanın.

Sıcak tutkal

Fotoğrafta görebileceğiniz gibi, beyaz kontrol telinde N-MOS G terminalinin yanında bir sıcak tutkal damlası var. Bu adım çok önemli ve kesinlikle gereklidir. Doğrudan SMD bileşeninin bacağına yüzen bir lehimleme çok zayıftır. Tel üzerindeki küçük bir baskı bile bacağı kırabilir. Bu adımı nazikçe yapın.

LED'i test etme

Sensör dizisine güç (örn. 3.3v-5v) ve toprak uyguladığınızda, ilk modüldeki LED, XSHUTN kablo mantık düzeyiyle yanıt vermelidir. XSHUTN'ı yüksek mantığa bağlarsanız (ör. 3.3v-5v), LED kapalı olmalıdır. XSHUTN kablosunu düşük (toprak) konumuna bağlarsanız, ilk modüldeki LED yanmalıdır.

Sonraki tüm modüller için LED kapalı olmalıdır.

Bu test arduinoya bağlanmadan önce yapılır.

Adım 6: Sensör Dizisini Tamamlama

Image
Image
Sensör Dizisini Tamamlama
Sensör Dizisini Tamamlama
Sensör Dizisini Tamamlama
Sensör Dizisini Tamamlama
Sensör Dizisini Tamamlama
Sensör Dizisini Tamamlama

Papatya Zinciri Testi

Şimdi I2C adres değişikliğinin dizideki tüm sensörler için işe yarayıp yaramadığını test etmek istiyoruz. Belirtildiği gibi, ilk çip arduino tarafından kontrol edilir. İkinci çip, birinci çip tarafından kontrol edilir ve bu böyle devam eder.

  1. Ekmek tahtasını kurun. 5V ve Toprak rayı, adriano 5V ve topraktan doğrudan bağlanır. Her sensör için akım tüketimi, veri sayfasında 19ma olarak derecelendirilmiştir.
  2. Vin'i stabilize etmeye yardımcı olmak için güç rayına bir kapasitör ekleyin.
  3. Sensör dizisinden Vin ve Ground'u güç rayına bağlayın.
  4. SDA'yı arduino Nano pin A4'e bağlayın (diğer mikro denetleyiciler için farklı olabilir).
  5. SCL'yi arduino Nano pin A5'e bağlayın (diğer mikro denetleyiciler için farklı olabilir).
  6. XSHUTN kablosunu arduino Nano pin D2'ye bağlayın. (Bu, çizimde değiştirilebilir).
  7. Github https://github.com/FuzzyNoodle/Fuzzy-Radar adresine gidin ve kütüphaneyi indirin.
  8. "Daisy_Chain_Testing" örneğini açın ve çizimi yükleyin.

Her şey çalışıyorsa, yukarıdaki video klibe benzer şekilde durum LED'lerinin birer birer yandığını görmelisiniz.

Ayrıca Seri Penceresini açabilir ve başlatma ilerlemesini görebilirsiniz. Çıktı şöyle görünecektir:

PortPort açılıyor Başlangıç çizimi. Çip 0'ı sıfırlama moduna ayarlayın. Tüm durum LED'leri kapalı olmalıdır. Şimdi sensörleri yapılandırıyoruz. LED tek tek yanmalıdır. Çip 0'ı yapılandırma - I2C adresini 83'e sıfırlayın - Sensörü başlatın. Çip 1'i yapılandırma - I2C adresini 84'e sıfırlayın - Sensörü başlatın. Yonga 2'yi yapılandırma - I2C adresini 85'e sıfırlayın - Sensörü başlatın. Radar dizisi yapılandırması tamamlandı.

Tutucuyu ve Çerçeveyi Birleştirin

  1. Her GY-530 modülünü M2x10 vidayla tutucuya dikkatlice yerleştirin. MOSFET'e basmayın veya XSHUTN kablolarını çekmeyin.
  2. Her tutucuyu dairesel çerçeveye yerleştirin. Parçaları yapıştırmak için biraz sıcak tutkal kullanın.

Yine sensörleri dairesel bir düzende yerleştirmek için M2 vidalar, tutucular ve dairesel çerçeve kullanılmıştır. Mukavva, maket ahşap, kil ve hatta bir kutuya sıcak tutkal kullanmak gibi başka yöntemler de kullanabilirsiniz.

Kullandığım 3D baskılı dosyalar aşağıda verilmiştir. Dairesel çerçeve 9 modüle sahiptir ve her biri 10 derece ile ayrılmıştır. Keskin bir gözünüz varsa önceki fotoğraflarda 10 modül vardı. Sebep? Aşağıda açıklanmıştır…

Koruyucu Astarı Çıkarın

Adımları baştan takip ettiyseniz, şimdi VL53L0X yongasındaki koruyucu astarı çıkarmanın tam zamanı. Önceki fotoğraflarımda, bunlar zaten kaldırıldı çünkü modülleri test etmem ve bu talimatları göndermeden önce konseptin çalıştığından emin olmam gerekiyor.

Koruyucu astar hakkında, veri sayfası şunları belirtir: "Müşteri, kapak camını monte etmeden hemen önce çıkarılmalıdır". VL53L0X yongasındaki iki küçük delik (verici ve alıcı), toz, yağ, sıcak tutkal vb. gibi kirliliğe karşı savunmasızdır.

Kirlendiğinde, menzil azalabilir ve okumalar bariz bir miktarda bozulabilir. Test modülümden biri yanlışlıkla yapışkan kil ile kirlendi, menzil 40 cm'ye düşürüldü ve mesafe okuması hatalı bir şekilde %50 büyütüldü. Yani dikkatli ol!

7. Adım: Veri Alma

Image
Image
Lazer Tracer (Gösteri)
Lazer Tracer (Gösteri)

Raw_Data_Serial_Output örneğini kullanma

Şimdi sensör dizimizden verileri görmeyi gerçekten seviyoruz. GitHub'daki arduino kitaplığında:

https://github.com/FuzzyNoodle/Fuzzy-Radar

Raw_Data_Serial_Output adında bir örnek var. Bu örnek, sensör dizisinden ham veri çıkışını gösterir. Çıkış değerleri milimetre cinsindendir.

Sensörler başlatıldıktan sonra, elinizi sensörler arasında salladığınızda seri pencerede şöyle bir şey görmelisiniz:

Canlı bir gösteri için video klibe bakın.

Fuzzy_Radar_Serial_Output örneğini kullanma

Bir sonraki adım, bu mesafe okumalarından faydalı veriler elde etmektir. Bir RADAR'dan istediğimiz hedef nesnenin mesafesi ve açısıdır.

  • Mesafe, sensör yüzeyi ile ilgili olarak milimetre cinsindendir. 0 döndürmek, hedefin aralık dışında olduğu anlamına gelir.
  • Açı, yatay düzlemde derece cinsindendir. Şu anda beklenen kod, sensörlerin eşit aralıklarla yerleştirilmesidir. 0 derece döndürmek, hedefin dizinin orta konumunda olduğu anlamına gelir.

Kütüphanede bazı filtreleme algoritmaları uygulanmaktadır:

  • Gürültü giderme:

    • Kısa (örnek sayısı açısından) okumalar gürültü olarak kabul edilir ve kaldırılır.
    • Ortalama değerden uzak olan okumalar kaldırılır.
  • Ağırlık açısı hesaplaması (yukarıdaki resme bakın)

    • Hedef nesnenin düz bir yüzey olduğu varsayılır
    • Nesneyi aynı anda birden fazla sensör algılamışsa, her sensör için bir ağırlık hesaplanır.
    • Her sensörün ağırlığı, mesafesiyle ters orantılıdır.
    • Sonuç meleği, her sensörün ağırlıklı açısından hesaplanır.
  • Birincil hedef seçimi:

    • Birden fazla okuma grubu varsa, en geniş (daha fazla sensör okuma sayısı olan) grup kalır.
    • Örneğin, sensör dizisinin önüne iki el koyarsanız, daha fazla sensör tarafından algılanan el kalır.
  • En yakın hedef seçimi:

    • Aynı genişlikte birden fazla tespit edilen grup varsa, en yakın mesafedeki grup kalır.
    • Örneğin, sensör dizisinin önüne iki el koyarsanız ve algılanan iki grup aynı sensör sayısına sahipse, sensöre daha yakın olan grup kalır.

Alçak geçiren filtre sayesinde çıkış mesafesi ve açısı düzeltilir

Raw_Data_Serial_Output'ta ham mesafe okumaları mesafe ve açı değerine dönüştürülür. Çizimi yükledikten sonra, aşağıdakine benzer sonucu görmek için seri penceresini açabilirsiniz:

Nesne algılanmadı. Nesne algılanmadı. Hiçbir nesne algılanmadı. Mesafe = 0056 Açı = 017 Mesafe = 0066 Açı = 014 Mesafe = 0077 Açı = 011 Mesafe = 0083 Açı = 010 Mesafe = 0081 Açı = 004 Mesafe = 0082 Açı = 000 Mesafe = 0092 Açı = 002 Mesafe = 0097 Açı = 001 Mesafe = 0096 Açı = 001 Mesafe = 0099 Açı = 000 Mesafe = 0101 Açı = -002 Mesafe = 0092 Açı = -004 Mesafe = 0095 Açı = -007 Mesafe = 0101 Açı = -008 Mesafe = 0112 Açı = -014 Mesafe = 0118 Açı = -017 Mesafe = 0122 Açı = -019 Mesafe = 0125 Açı = -019 Mesafe = 0126 Açı = -020 Mesafe = 0125 Açı = -022 Mesafe = 0124 Açı = -024 Mesafe = 0133 Açı = -027 Mesafe = 0138 Açı = - 031 Mesafe = 0140 Açı = -033 Mesafe = 0136 Açı = -033 Mesafe = 0125 Açı = -037 Mesafe = 0120 Açı = -038 Mesafe = 0141 Açı = -039 Hiçbir nesne algılanmadı. Hiçbir nesne algılanmadı. Hiçbir nesne algılanmadı.

Artık bir RADAR'ınız (LIDAR) var:

  • Ultrasonik sensör modüllerinden daha küçük
  • Hareketli parça yok
  • 40 Hz'de tarar.
  • Kemer şeklindedir, dairesel bir çerçeveye monte edilebilir
  • Yalnızca üç kontrol kablosu, artı güç ve toprak kullanın.
  • 30 milimetreden 1000 milimetreye kadar bir aralığa sahiptir.

Aşağıdaki adımlarda size bazı harika gösteriler göstereceğiz!

Adım 8: Laser Tracer (Gösteri)

Image
Image
Lazer Tracer (Gösteri)
Lazer Tracer (Gösteri)

Bu, önceki adımlardan oluşturduğumuz Sabit Radar kullanımına bir örnektir. Bu adım, Radar'ın bir göstergesi olduğu için ayrıntılı olarak yazılmamıştır. Genel olarak, bu tanıtım projesini oluşturmak için şu ek öğelere ihtiyacınız vardır:

  • iki servo
  • Bir lazer kalem yayan kafa
  • Lazer kafası çıkışını kontrol etmek için bir MOSFET veya NPN Transistör
  • Servolar için bir güç kaynağı. Mikro denetleyiciden ayrılmalıdır.

Kod buradan indirilebilir.

Lütfen sağlanan videoya bakın.

Adım 9: Poopeyes'e Bakmak (Gösteri)

Image
Image

Nesne konumunu ve mesafesini izlemek için uzakta radar kullanmanın gösterilmesi.

Önerilen: