İçindekiler:

Kızılötesi Dedektörlü Boe-Bot: 12 Adım (Resimlerle)
Kızılötesi Dedektörlü Boe-Bot: 12 Adım (Resimlerle)

Video: Kızılötesi Dedektörlü Boe-Bot: 12 Adım (Resimlerle)

Video: Kızılötesi Dedektörlü Boe-Bot: 12 Adım (Resimlerle)
Video: Hain Saldırı Anı, Güvenlik Korucusu, Saldırı 2024, Temmuz
Anonim
Kızılötesi Dedektörlü Boe-Bot
Kızılötesi Dedektörlü Boe-Bot

Bu talimat, engellerden kaçınmak için kızılötesi dedektörler kullanarak bir labirentte dolaşabilen bir Boe-Bot'un nasıl oluşturulacağını ve kodlanacağını gösterecektir. Bu, ihtiyaçlarınıza uygun kolay değişikliklere izin veren, takip edilmesi kolay bir kılavuzdur. Bu, temel bir devre ve programlama anlayışı gerektirir. Bu proje için BASIC Stamp IDE yazılımına ihtiyacınız olacak. Buradan indirmek için ücretsiz. Boe-Bot Robot'un yanı sıra

1. Adım: Kaynaklar

Elektronik parçalar

Bağlantı kablosu Parallax Store ile Boe-Bot - BoeBot Kit

5 Kızılötesi LED'in Paralaks Deposu - IR Verici Montaj Kiti

5 Kızılötesi Kalkan Grubu

5 kızılötesi Dedektör Paralaks Mağazası - BoeBot IR Alıcı

dirençler

  • (2) 4,7 kΩ ABRA Elektronik - 4,7 kΩ
  • (5) 220 Ω ABRA Elektronik - 220 Ω
  • (2) 1 kΩ ABRA Elektronik - 1 kΩ
  • (5) 2 k ABRA Elektronik - 2 kΩ

Çeşitli kablolama ABRA Electronics - 22 Ayar Tel

3 LED ABRA Electronics - 5mm Kırmızı LED

Destek

Bilgisayar

TEMEL Pul Düzenleyici - (Ücretsiz Yazılım)

Aletler

Tel Kesici ABRA Electronics - Tel Kesici (Opsiyonel)

Tel Sıyırıcı ABRA Electronics - Tel Sıyırıcı

Çeşitli

Duvarlar (labirent inşa etmek için)

2. Adım: Kızılötesi Algılamanın Nasıl Çalıştığını Anlama (İsteğe Bağlı)

Kızılötesi Algılamanın Nasıl Çalıştığını Anlama (İsteğe Bağlı)
Kızılötesi Algılamanın Nasıl Çalıştığını Anlama (İsteğe Bağlı)

Kızılötesi Farlar

Boe-Bot üzerine kuracağımız kızılötesi nesne algılama sistemi, birçok açıdan bir arabanın farı gibidir. Bir arabanın farlarından gelen ışık engellerden yansıdığında, gözleriniz engelleri algılar ve beyniniz bunları işler ve vücudunuzun arabayı buna göre yönlendirmesini sağlar. Boe-Bot, farlar için kızılötesi LED'ler kullanacak. Kızılötesi yayarlar ve bazı durumlarda kızılötesi nesnelerden yansır ve Boe-Bot yönünde geri döner. Boe-Bot'un gözleri kızılötesi dedektörlerdir. Kızılötesi dedektörler, bir nesneden yansıyan kızılötesini algılayıp algılamadıklarını gösteren sinyaller gönderir. BASIC Stamp olan Boe-Bot'un beyni, bu sensör girişine göre servo motorları çalıştırır ve kararlar verir. Şekil 7-1 IR Farlarla Nesne Algılama IR dedektörleri, dahili fotodiyot sensörü ile algılamak istediğimiz 980 nm kızılötesi dışında çok az ışığa izin veren dahili optik filtrelere sahiptir. Kızılötesi dedektör ayrıca yalnızca 38,5 kHz civarındaki sinyallerin geçmesine izin veren bir elektronik filtreye sahiptir. Başka bir deyişle, dedektör yalnızca saniyede 38.500 kez yanıp sönen kızılötesini arar. Bu, güneş ışığı ve iç mekan aydınlatması gibi yaygın kaynaklardan gelen IR girişimini önler. Güneş ışığı DC parazitidir (0 Hz) ve iç mekan aydınlatması, bölgedeki ana güç kaynağına bağlı olarak 100 veya 120 Hz'de yanıp sönme eğilimindedir. 120 Hz elektronik filtrenin 38,5 kHz bant geçiş frekansının dışında olduğu için IR dedektörleri tarafından tamamen yok sayılır.

-Paralax Öğrenci Rehberi

Adım 3: IR LED'lerin Montajı

IR LED'lerin montajı
IR LED'lerin montajı

IR LED'i kasanın daha büyük kısmına yerleştirin

LED'in şeffaf kısmını kasanın daha küçük kısmı ile kapatın

Adım 4: Kızılötesi Çiftleri Test Etme - Devre

Kızılötesi Çiftleri Test Etme - Devre
Kızılötesi Çiftleri Test Etme - Devre
Kızılötesi Çiftleri Test Etme - Devre
Kızılötesi Çiftleri Test Etme - Devre

Herhangi bir şeye fazla derinlemesine girmeden önce, IR çiftinin çalıştığından emin olmak için test edeceğiz (Bir kızılötesi LED ve bir kızılötesi dedektör).

Boe-Bot'unuzun üstüne monte edilmiş devre tahtasına yukarıdaki devreyi kurarak başlayın.

Adım 5: Kızılötesi Çiftleri Test Etme - Temel Kod

Tabii ki IR çiftlerimizin çalışması için kod yazmamız gerekecek.

Bunu yapmak için FREQOUT komutunu kullanacaktır. Bu komut ses tonları için tasarlanmıştır, ancak kızılötesi aralığında frekanslar üretmek için kullanılabilir. Bu test için şu komutu kullanacağız:

SIKLIK 8, 1, 38500

bu, P8'e 1 ms süren 38,5 kHz'lik bir frekans gönderir. P8'e bağlanan kızılötesi LED devresi bu frekansı yayınlayacaktır. Kızılötesi ışık, yolundaki bir nesne tarafından Boe-Bot'a geri yansıtılırsa, kızılötesi dedektör, BASIC Damgasına yansıyan kızılötesi ışığın algılandığını bildirmek için bir sinyal gönderir.

Bir IR çiftinin çalışmasını sağlamanın anahtarı, 1 ms'lik 38.5 kHz FREQOUT göndermek ve IR dedektörünün çıkışını hemen bir değişkende saklamaktır.

Bu örnek, IR Detector değerinin irDectectLeft adlı bir bit değişkeninde depolanmasını gösterir.

SIKLIK 8, 1, 38500

irDetectLeft = IN9

IR dedektörünün IR sinyali görmediğinde çıkış durumu yüksektir. IR dedektörü bir nesneden yansıyan 38500 Hz harmoniği gördüğünde çıkışı düşüktür. IR dedektörünün çıkışı, FREQOUT komutu harmoniği gönderdikten sonra sadece bir milisaniyenin kesri kadar düşük kalır, bu nedenle FREKOUT komutunu gönderdikten hemen sonra IR dedektörünün çıktısını bir değişkende saklamak esastır. Değişken tarafından depolanan değer daha sonra Hata Ayıklama Terminalinde görüntülenebilir veya Boe-Bot tarafından navigasyon kararları için kullanılabilir.

6. Adım: Kızılötesi Çiftleri Test Etme - Donanım + Yazılım

Kızılötesi Çiftleri Test Etme - Donanım + Yazılım
Kızılötesi Çiftleri Test Etme - Donanım + Yazılım

Artık temel bilgileri bildiğinize göre, bir çifti birlikte test etmek ve IR Çiftinin algıladıklarından gerçek zamanlı geri bildirim almak için donanımı ve Yazılımı bir araya getirebiliriz.

Kodu kendiniz deneyebilir veya aşağıdaki kodu kullanabilirsiniz.

' {$DAMGA BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO FREQOUT 8, 1, 38500 irDetectLeft = IN9 DEBUG HOME, "irDetectLeft = ", BIN1 irDetectLeft PAUSE 100 LOOP

  1. IR çiftinizi test etmek için DEBUG Terminalini kullanacağınız için Boe-Bot'u seri kabloya bağlı bırakın.
  2. Eliniz veya kağıt yaprağı gibi bir nesneyi sol IR çiftinden yaklaşık bir inç uzağa yerleştirin.
  3. IR çiftinin önüne bir nesne yerleştirdiğinizde Hata Ayıklama Terminalinin 0 gösterdiğini ve nesneyi IR çiftinin önünden kaldırdığınızda 1 görüntülediğini doğrulayın.
  4. Hata Ayıklama Terminali beklenen değerleri göstermiyorsa, Sorun Giderme Adımındaki adımları deneyin.

7. Adım: Sorun Giderme (Son Adımdaki Sorunlar İçin)

DEBUG Terminali beklenmeyen değerler gösteriyor

Devrede kısa devre, yanlış yerleştirilmiş veya eksik konektörler, hasarlı bileşenler, yanlış dirençler veya diğer herhangi bir görünür sorun olup olmadığını kontrol edin.

Programı mantıksal veya sözdizimi hatalarından kontrol edin - Son adım için kendi kodunuzu kullandıysanız, sağlanan kodu kullanmayı düşünün

Boe-Bot'un önüne hiçbir nesne yerleştirilmese bile her zaman 0 alıyor

Yakınlarda kızılötesi sinyali yansıtan herhangi bir nesne olup olmadığını kontrol edin. Boe-Bot'un önündeki masa sebep olabilir. Boe-Bot'u IR LED'inin ve dedektörün yakındaki herhangi bir nesneyi yansıtmaması için açık alana taşıyın.

Boe-Bot'un önünde hiçbir nesne olmadığında okuma çoğu zaman 1'dir, ancak bazen 0'a yanıp söner

Yakındaki bir floresan ışığından parazit olabilir; Yakındaki tüm floresan lambaları kapatın ve testlerinizi tekrarlayın. Sorun devam ederse, 9. adım sorunu ortaya çıkarabilir

Adım 8: İkinci IR Çifti

İkinci IR Çifti
İkinci IR Çifti

Artık sol IR için programa sahip olduğunuza göre, devreyi yapma ve doğru IR Çiftini programlama sırası sizde

  1. Doğru IR çiftine atıfta bulunmak için DEBUG deyimini, başlığını ve açıklamalarını değiştirin.
  2. Değişken adını irDetectLeft'ten irDetectRight'a değiştirin. Bunu programda dört yerde yapmanız gerekecek.
  3. FREQOUT komutunun Pin argümanını 8'den 2'ye değiştirin.
  4. irDetectRight değişkeni tarafından izlenen giriş kaydını IN9'dan IN0'a değiştirin.
  5. Doğru IR çifti için bu aktivitedeki test adımlarını tekrarlayın; P2'ye bağlı IR LED devresi ve P0'a bağlı dedektör ile.

9. Adım: Kızılötesi Girişimi Algılama (Opsiyonel)

Kızılötesi Girişimi Algılama (Opsiyonel)
Kızılötesi Girişimi Algılama (Opsiyonel)

Algılanmaması gereken sinyalleri algılamayla ilgili sorunlar yaşıyorsanız veya IR algılamanızı alternatif bir konumda göstermeyi planlıyorsanız, parazit testi yapmak isteyebilirsiniz.

Bu test programının konsepti oldukça basittir, herhangi bir gönderme yapmadan kızılötesi sinyalleri algılarsınız.

Aynı devreyi kullanabilirsiniz ancak kodu değiştirmeniz gerekecektir. kendi kodunuzu yazmayı seçebilirsiniz, ancak aşağıda verilen kodu kullanabilirsiniz:

' {$DAMGA BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 IF IN9 = 0 VEYA IN0 = 0 SONRA HATA AYIKLAMA "Girişim algılandı" DURAKLAT 100 LOOP

Girişim yaşarsanız, olası kaynağı belirleyin ve onu kapatın/kaldırın veya Boe-Bot'unuzu çalıştırdığınız yeri değiştirin.

Adım 10: Daha Fazla IR Çifti Ekleme

Daha Fazla IR Çifti Ekleme
Daha Fazla IR Çifti Ekleme

Boe-Bot'unuzun hareketinde daha fazla doğruluk istiyorsanız, daha fazla IR Çifti eklemek isteyebilirsiniz. 3 İkiye kıyasla performansı büyük ölçüde artırır; Doğrudan bir engeli taramak için bir merkez çifti kullanabilir ve ne kadar döneceğinizi belirlemek için iki yan IR kullanabilirsiniz. Bununla birlikte, 3 IR çifti tasarımının dezavantajı, bir duvara karşı kayarken bunu bilebilmenizdir, çünkü merkez IR çifti engelleri algılamak için kullanılır. Bu sorunu çözmek için, her iki tarafa yüksek direnç değerine sahip bir IR çifti ekleyebilirsiniz - bu nedenle kızılötesi sinyal yalnızca Boe-Bot yana yakınsa veya hafif bir açıda bir duvara yakınsa algılanır.

Adım 11: Beş IR Çifti - Devre

Beş IR Çifti - Devre
Beş IR Çifti - Devre

İki IR LED'i yana doğru yönlendirirken dikkatli olun, çünkü onları çevirmek kabloların temas etmesine ve kısa devreye neden olabilir.

Adım 12: Beş IR Çifti - Kod

Beş IR Çifti - Kod
Beş IR Çifti - Kod

Bu kodu kullanmadan önce Boe-Bot'unuzu programlamayı denemek isteyebilirsiniz:

' {$STAMP BS2}' {$PBASIC 2.5} 'Beş IR Çifti Deatection Kodu 'Matthew Shaw 'Mayıs 8 2019 (Sürüm 7) 'Labirentleri çözmek için nesneler için algılama ve temel mantıksal işleme

irDetectLeft VAR Bit 'Sol için değişken

irDetectCentre VAR Bit 'merkezi için değişken irDetectRight VAR Bit 'Değişken for right irDetectLSide VAR Bit 'Sol taraf için değişken irDetectRSide VAR Bit 'Sağ taraf için değişken irDetectLSideFar VAR Bit 'Sol taraf için değişken düşük direnç irDetectRSideFar VAR Bit 'Sağ taraf için düşük direnç için değişken

mLoop VAR Word

Lmotor PIN 15 'Sol motor pim 14'e bağlanır, darbeler buradan geçer

Rmotor PIN 14' sağ = 15

'hızlar -> 650-750-850

LFast CON 850 'Sol motor için tam hızda sabitleyici RFast CON 650 'Tam hızda sağ motor için sabit

LStop CON 750 'Tam hızda sol motor için sabit

RStop CON 650 'Tam hızda doğru motor için sabit

LMid CON 830 'Orta hızda sol motor için sabit

RMid CON 700 'Orta hızda doğru motor için sabit

LSlow CON 770 'Minimum hızda sol motor için sabit

RSlow CON 730 'Minimum hızda doğru motor için sabit

LRev CON 650 'Geri viteste tam hızda sol motor için sabit

RRev CON 850 'Geri viteste tam hızda sol motor için sabit

SIKLIK 7, 1, 38500' sol taraf

irDetectLeft = IN8

SIKLIK 6, 1, 38500' merkez

irDetectCentre = IN5

SIKLIK 3, 1, 38500' sağ taraf

irDetectRight = IN2

SIKLIK 10, 1, 38500' Sol Kapat

irDetectLSide = IN11

SIKLIK 1, 1, 38500 'sağ Kapat

irDetectRSide = IN0

SIKLIK 9, 1, 38500

irDetectLSideFar = IN11

SIKLIK 4, 1, 38500' sağ taraf

irDetectRSideFar = IN0

EĞER irDetectLSide = 0 VE irDetectRSide = 0 SONRA ana 'BAŞLANGIÇ KOMUTU, programı başlatmak için ellerinizi iki yan dedektörün yanından sallayın

Ana:

DURAKLAT 1000 YAP

PULSOUT Lmotor, LFast 'sol motor tam hızda çalışır

PULSOUT Rmotor, RFast 'Sağ motor tam hızda çalışır

SIKLIK 6, 1, 38500' merkez

irDetectCentre = IN5

SIKLIK 10, 1, 38500' Sol Kapat

irDetectLSide = IN11

SIKLIK 1, 1, 38500' sağ taraf

irDetectRSide = IN0

EĞER irDetectLSide = 0 VE irDetectRSide = 1 SONRA

DO PULSOUT Lmotor, LFast

SIKLIK 6, 1, 38500' merkez

irDetectCentre = IN5 IF irDetectCentre = 0 SONRA cent

SIKLIK 10, 1, 38500' Sol Kapat

irDetectLSide = IN11

SIKLIK 3, 1, 38500' sağ taraf

irDetectRight = IN2

irDetectLSide = 1 VEYA irDetectRSide = 0 KADAR DÖNGÜ

ELSEIF irDetectLSide = 1 VE irDetectRSide = 0 SONRA

PULSOUT Rmotor, RFast

SIKLIK 6, 1, 38500' merkez

irDetectCentre = IN5 IF irDetectCentre = 0 SONRA cent

SIKLIK 10, 1, 38500' Sol Kapat

irDetectLSide = IN11

SIKLIK 3, 1, 38500' sağ taraf

irDetectRight = IN2

irDetectLSide = 0 VEYA irDetectRSide = 1 KADAR DÖNGÜ

'ENDIF

EĞER irDetectCentre = 0 SONRA 'BAŞLAYIN

SIKLIK 7, 1, 38500 'sol taraf irDetectLeft = IN8

SIKLIK 6, 1, 38500' merkez

irDetectCentre = IN5

SIKLIK 3, 1, 38500

irDetectRight = IN2

DURAKLAT 1000 'algılanan sinyali göstermek için duraklat

IF (irDetectLeft = 1 AND irDetectRight = 0) THEN ' süreyi değerlendir

GOSUB dönüşSol

ELSEIF (irDetectLeft = 0 VE irDetectRight = 1) SONRA

GOSUB sağa dön

ELSEIF (irDetectLeft = 1 VE irDetectRight = 1) SONRA

GOSUB dönüşKarar

BAŞKA

GOSUB dönüşTers

ENDIF

ENDIF 'END

DÖNGÜ

SON

Sola çevirin:

DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 DÖNGÜ IN0'A KADAR = 1 DÖNÜŞ

Sağa dönün:

DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP IN9'A KADAR = 1

DÖNÜŞ

dönüşTers:

FOR mLoop = 0 - 50 PULSOUT Rmotoru, RRev PULSOUT Lmotoru, LRev PAUSE 20 PULSOUT Lmotoru, LRev PAUSE 20 NEXT DO PULSOUT Rmotoru, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREKOUT 5, 1, 38500 irDetectCentre = IN4 FREKOUT 2,, 38500 irDetectRight = IN0 IN9'A KADAR DÖNGÜ = 1

DÖNÜŞ

turnDecide: 'daha fazlasını görmek için daha düşük direnç kullanır

SIKLIK 9, 1, 38500

irDetectLSideFar = IN11

SIKLIK 4, 1, 38500' sağ taraf

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 AND irDetectRSideFar = 0) THEN ' süreyi değerlendir

GOSUB dönüşSol

ELSEIF (irDetectLSideFar = 0 VE irDetectRSideFar = 1) SONRA

GOSUB sağa dön

ELSEIF (irDetectLSideFar = 1 VE irDetectRSideFar = 1) SONRA

GOSUB dönüşSol

BAŞKA

GOSUB dönüşTers

ENDIF

DÖNÜŞ

Önerilen: