Daftar Isi:

Boe-Bot Dengan Detektor Inframerah: 12 Langkah (dengan Gambar)
Boe-Bot Dengan Detektor Inframerah: 12 Langkah (dengan Gambar)

Video: Boe-Bot Dengan Detektor Inframerah: 12 Langkah (dengan Gambar)

Video: Boe-Bot Dengan Detektor Inframerah: 12 Langkah (dengan Gambar)
Video: Arduino BOE-Bot: Object Detection with the IR Headlamps 2024, November
Anonim
Boe-Bot Dengan Detektor Inframerah
Boe-Bot Dengan Detektor Inframerah

Instruksi ini akan menunjukkan cara membuat dan membuat kode Boe-Bot yang dapat menavigasi labirin menggunakan detektor inframerah untuk menghindari rintangan. Ini adalah panduan yang mudah diikuti yang memungkinkan modifikasi mudah sesuai dengan kebutuhan Anda. Ini membutuhkan pemahaman dasar tentang sirkuit dan pemrograman. Anda harus memiliki perangkat lunak BASIC Stamp IDE untuk proyek ini. Gratis untuk diunduh di sini. Serta Robot Boe-Bot

Langkah 1: Sumber Daya

Komponen elektronik

Boe-Bot dengan kabel konektor Parallax Store - BoeBot Kit

5 Toko Paralaks LED Inframerah - Kit Perakitan Pemancar IR

5 Rakitan Perisai Inframerah

5 Detektor inframerah Parallax Store - Penerima IR BoeBot

Resistor

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

Aneka kabel ABRA Electronics - 22 Gauge Wire

3 LED ABRA Electronics - LED Merah 5mm

Mendukung

Komputer

Editor Stempel DASAR - (Perangkat Lunak Gratis)

Peralatan

Pemotong Kawat ABRA Electronics - Pemotong Kawat (Opsional)

Kawat Stripper ABRA Electronics - Kawat Stripper

Lain-lain

Dinding (untuk membangun labirin)

Langkah 2: Memahami Cara Kerja Deteksi Inframerah (Opsional)

Memahami Cara Kerja Deteksi Inframerah (Opsional)
Memahami Cara Kerja Deteksi Inframerah (Opsional)

Lampu Depan Inframerah

Sistem deteksi objek inframerah yang akan kami bangun di Boe-Bot seperti lampu depan mobil dalam beberapa hal. Ketika cahaya dari lampu depan mobil memantul dari rintangan, mata Anda mendeteksi rintangan dan otak Anda memprosesnya dan membuat tubuh Anda memandu mobil sesuai dengan itu. Boe-Bot akan menggunakan LED inframerah untuk lampu depan. Mereka memancarkan inframerah, dan dalam beberapa kasus, inframerah memantulkan objek dan memantul kembali ke arah Boe-Bot. Mata Boe-Bot adalah detektor inframerah. Detektor inframerah mengirim sinyal yang menunjukkan apakah mereka mendeteksi pantulan inframerah dari suatu objek atau tidak. Otak Boe-Bot, BASIC Stamp, membuat keputusan dan mengoperasikan motor servo berdasarkan input sensor ini. Gambar 7-1 Deteksi Objek dengan Lampu Depan IR Detektor IR memiliki filter optik internal yang memungkinkan sangat sedikit cahaya kecuali inframerah 980 nm yang ingin kita deteksi dengan sensor fotodioda internal. Detektor inframerah juga memiliki filter elektronik yang hanya memungkinkan sinyal sekitar 38,5 kHz untuk melewatinya. Dengan kata lain, detektor hanya mencari inframerah yang berkedip dan mati 38.500 kali per detik. Ini mencegah interferensi IR dari sumber umum seperti sinar matahari dan pencahayaan dalam ruangan. Sinar matahari adalah interferensi DC (0 Hz), dan pencahayaan dalam ruangan cenderung menyala dan mati pada 100 atau 120 Hz, tergantung pada sumber daya utama di wilayah tersebut. Karena 120 Hz berada di luar frekuensi band pass filter elektronik 38,5 kHz, maka sepenuhnya diabaikan oleh detektor IR.

-Panduan Siswa Paralax

Langkah 3: Merakit IR LED

Merakit IR LED
Merakit IR LED

Masukkan LED IR ke bagian casing yang lebih besar

Lampirkan bagian bening dari LED dengan bagian casing yang lebih kecil

Langkah 4: Menguji Pasangan Inframerah - Sirkuit

Menguji Pasangan Inframerah - Sirkuit
Menguji Pasangan Inframerah - Sirkuit
Menguji Pasangan Inframerah - Sirkuit
Menguji Pasangan Inframerah - Sirkuit

Sebelum kita masuk terlalu jauh ke dalam apa pun, kami akan menguji untuk memastikan bahwa pasangan IR berfungsi (Satu LED inframerah dan satu detektor inframerah).

Mulailah dengan membangun sirkuit di atas pada papan tempat memotong roti yang dipasang di atas Boe-Bot Anda

Langkah 5: Menguji Pasangan Inframerah - Kode Dasar

Tentu saja, kita perlu menulis kode agar pasangan IR kita berfungsi

Untuk melakukan ini, akan menggunakan perintah FREQOUT. Perintah ini dirancang untuk nada audio, namun dapat digunakan untuk menghasilkan frekuensi dalam rentang inframerah. Untuk pengujian ini kita akan menggunakan perintah:

FREQOUT 8, 1, 38500

ini akan mengirimkan frekuensi 38,5 kHz yang berlangsung 1 ms ke P8. Rangkaian LED inframerah yang terhubung ke P8 akan menyiarkan frekuensi ini. Jika cahaya inframerah dipantulkan kembali ke Boe-Bot oleh objek di jalurnya, detektor inframerah akan mengirimkan sinyal BASIC Stamp untuk memberi tahu bahwa cahaya inframerah yang dipantulkan telah terdeteksi.

Kunci untuk membuat pasangan IR berfungsi adalah mengirim 1 ms FREQOUT 38,5 kHz dan segera menyimpan output detektor IR dalam sebuah variabel.

Contoh ini menunjukkan penyimpanan nilai IR Detector dalam variabel bit bernama irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

Status keluaran detektor IR saat tidak melihat sinyal IR adalah tinggi. Ketika detektor IR melihat harmonik 38500 Hz yang dipantulkan oleh suatu objek, outputnya rendah. Output detektor IR hanya tetap rendah selama sepersekian milidetik setelah perintah FREQOUT selesai mengirim harmonik, jadi penting untuk menyimpan output detektor IR dalam variabel segera setelah mengirim perintah FREQOUT. Nilai yang disimpan oleh variabel kemudian dapat ditampilkan di Terminal Debug atau digunakan untuk keputusan navigasi oleh Boe-Bot.

Langkah 6: Menguji Pasangan Inframerah - Perangkat Keras + Perangkat Lunak

Menguji Pasangan Inframerah - Perangkat Keras + Perangkat Lunak
Menguji Pasangan Inframerah - Perangkat Keras + Perangkat Lunak

Sekarang setelah Anda mengetahui dasar-dasarnya, kami dapat menggabungkan perangkat keras dan Perangkat Lunak untuk menguji pasangan bersama-sama dan mendapatkan umpan balik waktu nyata dari apa yang dideteksi oleh Pasangan IR

Anda dapat mencoba dan membuat kode sendiri, atau menggunakan kode di bawah ini

' {$STAMP BS2}

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

  1. Biarkan Boe-Bot terhubung ke kabel serial, karena Anda akan menggunakan Terminal DEBUG untuk menguji pasangan IR Anda.
  2. Tempatkan objek, seperti tangan Anda atau selembar kertas, sekitar satu inci dari pasangan IR kiri
  3. Verifikasi bahwa ketika Anda menempatkan objek di depan pasangan IR, Terminal Debug menampilkan 0, dan saat Anda menghapus objek dari depan pasangan IR, ini akan menampilkan 1.
  4. Jika Terminal Debug tidak menampilkan nilai yang diharapkan, coba langkah-langkah di Langkah Pemecahan Masalah.

Langkah 7: Pemecahan Masalah (Untuk Masalah Dengan Langkah Terakhir)

Terminal DEBUG menampilkan nilai yang tidak terduga

Periksa sirkuit untuk hubungan pendek, konektor yang salah tempat atau hilang, komponen rusak, resistor salah, atau masalah lain yang terlihat

Periksa program dari kesalahan logika atau sintaks - Jika Anda menggunakan kode Anda sendiri untuk langkah terakhir, pertimbangkan untuk menggunakan kode yang disediakan

Selalu mendapatkan 0, bahkan ketika tidak ada benda yang diletakkan di depan Boe-Bot

Periksa apakah ada objek terdekat yang memantulkan sinyal inframerah. Meja di depan Boe-Bot bisa jadi penyebabnya. Pindahkan Boe-Bot ke ruang terbuka sehingga LED IR dan detektor tidak dapat memantulkan objek terdekat.

Membaca adalah 1 sebagian besar waktu ketika tidak ada objek di depan Boe-Bot, tetapi sesekali berkedip ke 0

Mungkin ada gangguan dari lampu neon terdekat; Matikan lampu neon terdekat dan ulangi pengujian Anda. Jika masalah berlanjut, langkah 9 dapat mengungkapkan masalahnya

Langkah 8: Pasangan IR Kedua

Pasangan IR Kedua
Pasangan IR Kedua

Sekarang Anda memiliki program untuk IR kiri, giliran Anda untuk membuat rangkaian dan memprogram Pasangan IR kanan

  1. Ubah pernyataan, judul, dan komentar DEBUG untuk merujuk ke pasangan IR yang tepat.
  2. Ubah nama variabel dari irDetectLeft menjadi irDetectRight. Anda perlu melakukan ini di empat tempat dalam program.
  3. Ubah argumen Pin perintah FREQOUT dari 8 menjadi 2.
  4. Ubah register input yang dipantau oleh variabel irDetectRight dari IN9 menjadi IN0.
  5. Ulangi langkah pengujian dalam aktivitas ini untuk pasangan IR yang tepat; dengan rangkaian LED IR terhubung ke P2 dan detektor terhubung ke P0.

Langkah 9: Mendeteksi Interferensi Inframerah (Opsional)

Mendeteksi Interferensi Inframerah (Opsional)
Mendeteksi Interferensi Inframerah (Opsional)

Apakah Anda mengalami masalah dalam mendeteksi sinyal yang seharusnya tidak terdeteksi atau Anda berencana untuk mendemonstrasikan deteksi IR Anda di lokasi alternatif, Anda mungkin ingin menguji interferensi.

Konsep program pengujian ini cukup sederhana, Anda mendeteksi sinyal inframerah tanpa mengirimkannya.

Anda dapat menggunakan sirkuit yang sama persis tetapi Anda harus mengubah kodenya. Anda dapat memilih untuk menulis kode Anda sendiri, tetapi Anda dapat menggunakan kode yang disediakan di bawah ini:

' {$STAMP BS2}

' {$PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 JIKA IN9 = 0 ATAU IN0 = 0 MAKA DEBUG "Interferensi terdeteksi" PAUSE 100 LOOP

Jika Anda mengalami gangguan, tentukan kemungkinan sumbernya dan matikan/lepaskan atau pindahkan tempat Anda mengoperasikan Boe-Bot Anda.

Langkah 10: Menambahkan Lebih Banyak Pasangan IR

Menambahkan Lebih Banyak Pasangan IR
Menambahkan Lebih Banyak Pasangan IR

Jika Anda menginginkan lebih banyak akurasi dalam pergerakan Boe-Bot Anda, Anda mungkin ingin menambahkan lebih banyak Pasangan IR. 3 Sangat meningkatkan kinerja dibandingkan dengan dua; Anda dapat menggunakan pasangan tengah untuk memindai rintangan langsung, dan menggunakan dua IR samping untuk menentukan berapa banyak yang harus diputar. Namun, kekurangan dari desain 3 pasangan IR adalah bahwa Anda mungkin mengetahui saat Anda meluncur ke dinding, karena pasangan IR tengah digunakan untuk mendeteksi rintangan. Untuk mengatasi masalah ini, Anda dapat menambahkan pasangan IR ke setiap sisi dengan nilai resistansi tinggi-oleh karena itu dan sinyal inframerah hanya akan terdeteksi jika Boe-Bot dekat dengan sisi atau dinding pada sudut yang lembut.

Langkah 11: Lima Pasang IR - Sirkuit

Lima Pasang IR - Sirkuit
Lima Pasang IR - Sirkuit

Hati-hati saat mengarahkan kedua LED IR di samping karena memutarnya dapat menyebabkan kabel bersentuhan dan menyebabkan korsleting.

Langkah 12: Lima Pasangan IR - Kode

Lima Pasangan IR - Kode
Lima Pasangan IR - Kode

Anda mungkin ingin mencoba memprogram Boe-Bot Anda sebelum menggunakan kode ini:

' {$STAMP BS2}' {$PBASIC 2.5} 'Five IR Pair Deatection Code 'Matthew Shaw '8 Mei 2019 (Versi 7) 'Deteksi untuk objek dan pemrosesan logika dasar untuk memecahkan labirin

irDetectLeft VAR Bit 'Variabel untuk kiri

irDetectCentre VAR Bit 'Variabel untuk bagian tengah irDetectRight VAR Bit 'Variabel untuk irDetectLSide VAR Bit kanan 'Variabel untuk sisi kiri irDetectRSide VAR Bit 'Variabel untuk sisi kanan irDetectLSideFar VAR Bit 'Variable untuk sisi kiri VAR VAR untuk resistansi rendah FarDetect

Mloop VAR Word

Lmotor PIN 15 'Motor kiri terhubung ke pin 14, pulsa lewat sini

PIN Rmotor 14' kanan = 15

'kecepatannya adalah -> 650-750-850

LFast CON 850' Konstanta untuk motor kiri pada kecepatan penuh RFast CON 650' Konstanta untuk motor kanan pada kecepatan penuh

LStop CON 750 'Konstanta untuk motor kiri dengan kecepatan penuh

RStop CON 650 'Konstanta untuk motor kanan dengan kecepatan penuh

LMid CON 830 'Konstanta untuk motor kiri pada kecepatan sedang

RMid CON 700 'Konstanta untuk motor kanan pada kecepatan sedang

LSlow CON 770 'Konstanta untuk motor kiri pada kecepatan minimum

RSlow CON 730 'Konstanta untuk motor kanan pada kecepatan minimum

LRev CON 650 'Konstanta untuk motor kiri dengan kecepatan penuh saat mundur

RRev CON 850 'Konstanta untuk motor kiri dengan kecepatan penuh saat mundur

FREQOUT 7, 1, 38500 'sisi kiri

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'pusat

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'sisi kanan

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Kiri Tutup

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'kanan Tutup

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'sisi kanan

irDetectRSideFar = IN0

JIKA irDetectLSide = 0 AND irDetectRSide = 0 THEN main 'MULAI PERINTAH lambaikan tangan Anda melewati dua detektor samping untuk memulai program

Utama:

JEDA 1000 LAKUKAN

PULSOUT Lmotor, LFast 'motor kiri berjalan dengan kecepatan penuh

PULSOUT Rmotor, RFast 'Motor kanan berjalan dengan kecepatan penuh

FREQOUT 6, 1, 38500 'pusat

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Kiri Tutup

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'sisi kanan

irDetectRSide = IN0

JIKA irDetectLSide = 0 DAN irDetectRSide = 1 MAKA

DO PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'pusat

irDetectCentre = IN5 JIKA irDetectCentre = 0 MAKA sen

FREQOUT 10, 1, 38500 'Kiri Tutup

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'sisi kanan

irDetectRight = IN2

LOOP SAMPAI irDetectLSide = 1 ATAU irDetectRSide = 0

ELSEIF irDetectLSide = 1 AND irDetectRSide = 0 THEN

LAKUKAN PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'pusat

irDetectCentre = IN5 JIKA irDetectCentre = 0 MAKA sen

FREQOUT 10, 1, 38500 'Kiri Tutup

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'sisi kanan

irDetectRight = IN2

LOOP SAMPAI irDetectLSide = 0 ATAU irDetectRSide = 1

'BERAKHIR JIKA

JIKA irDetectCentre = 0 MAKA 'MULAI

FREQOUT 7, 1, 38500 'sisi kiri irDetectLeft = IN8

FREQOUT 6, 1, 38500 'pusat

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'jeda untuk menunjukkan sinyal terdeteksi

JIKA (irDetectLeft = 1 AND irDetectRight = 0) THEN ' evaluasi durasi

GOSUB belok Kiri

ELSEIF (irDetectLeft = 0 DAN irDetectRight = 1) THEN

GOSUB belok Kanan

ELSEIF (irDetectLeft = 1 DAN irDetectRight = 1) THEN

Giliran GOSUBPutuskan

LAIN

GOSUB belok Terbalik

BERAKHIR JIKA

ENDIF 'AKHIR

LINGKARAN

AKHIR

belok kiri:

DO PULSOUT Lmotor, LRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT 2, 1, 38500 irDetectRight = IN0 LOOP SAMPAI IN0 = 1 RETURN

belok kanan:

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

KEMBALI

belok Terbalik:

UNTUK mLoop = 0 SAMPAI 50 Rmotor PULSOUT, Lmotor PULSOUT RRev, LRev PAUSE 20 Lmotor PULSOUT, LRev PAUSE 20 NEXT DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 irDetectCentre = IN4 FREQOUT, 38500 irDetectRight = IN0 LOOP SAMPAI IN9 = 1

KEMBALI

turnDecide: 'menggunakan resistensi yang lebih rendah untuk melihat lebih jauh

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'sisi kanan

irDetectRSideFar = IN0

JIKA (irDetectLSideFar = 1 AND irDetectRSideFar = 0) MAKA ' evaluasi durasi

GOSUB belok Kiri

ELSEIF (irDetectLSideFar = 0 DAN irDetectRSideFar = 1) MAKA

GOSUB belok Kanan

ELSEIF (irDetectLSideFar = 1 DAN irDetectRSideFar = 1) MAKA

GOSUB belok Kiri

LAIN

GOSUB belok Terbalik

BERAKHIR JIKA

KEMBALI

Direkomendasikan: