Isi kandungan:

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

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

Video: Boe-Bot Dengan Pengesan Inframerah: 12 Langkah (dengan Gambar)
Video: SnowRunner Pacific P512 PF review: Specifically good? 2024, Julai
Anonim
Boe-Bot Dengan Pengesan Inframerah
Boe-Bot Dengan Pengesan Inframerah

Instruksional ini akan menunjukkan cara membina dan membuat kod Boe-Bot yang dapat menavigasi labirin menggunakan pengesan inframerah untuk mengelakkan halangan. Ini adalah panduan mudah diikuti yang memungkinkan pengubahsuaian mudah sesuai dengan keperluan anda. Ini memerlukan pemahaman asas mengenai litar dan pengaturcaraan. Anda perlu mempunyai perisian BASIC Stamp IDE untuk projek ini. Percuma untuk dimuat turun di sini. Serta Robot Boe-Bot

Langkah 1: Sumber

Komponen elektronik

Boe-Bot dengan kabel penyambung Parallax Store - BoeBot Kit

5 Parallax Store Infrared LED - Kit Pemasangan Pemancar IR

5 Majlis Perisai Inframerah

Kedai Parallax 5 Detector inframerah - Penerima IR BoeBot

Perintang

  • (2) 4.7 kΩ ABRA Elektronik - 4.7 kΩ
  • (5) 220 Ω ABRA Electronics - 220 Ω
  • (2) 1 kΩ ABRA Elektronik - 1 kΩ
  • (5) 2 k ABRA Elektronik - 2 kΩ

Pendawaian pelbagai ABRA Electronics - 22 Gauge Wire

3 LED ABRA Electronics - LED Merah 5mm

Sokongan

Komputer

Penyunting Setem BASIC - (perisian percuma)

Alat

Wire Cutter ABRA Electronics - Pemotong Kawat (Pilihan)

Wire Stripper ABRA Electronics - Wire Stripper

Pelbagai

Dinding (untuk membina labirin)

Langkah 2: Memahami Bagaimana Pengesanan Inframerah Berfungsi (Pilihan)

Memahami Bagaimana Pengesanan Inframerah Berfungsi (Pilihan)
Memahami Bagaimana Pengesanan Inframerah Berfungsi (Pilihan)

Lampu Depan Inframerah

Sistem pengesanan objek inframerah yang akan kita bangun di Boe-Bot adalah seperti lampu depan kereta dalam beberapa aspek. Apabila cahaya dari lampu depan kereta memantulkan rintangan, mata anda mengesan halangan dan otak anda memprosesnya dan menjadikan badan anda memandu kereta dengan sewajarnya. Boe-Bot akan menggunakan LED inframerah untuk lampu depan. Mereka memancarkan inframerah, dan dalam beberapa kes, inframerah memantulkan objek dan memantul kembali ke arah Boe-Bot. Mata Boe-Bot adalah pengesan inframerah. Pengesan inframerah menghantar isyarat yang menunjukkan sama ada mereka mengesan inframerah yang dipantulkan dari suatu objek. Otak Boe-Bot, Cap ASAS, membuat keputusan dan mengendalikan motor servo berdasarkan input sensor ini. Gambar 7-1 Pengesanan Objek dengan Lampu Depan IR Pengesan IR mempunyai penapis optik bawaan yang membenarkan cahaya sangat sedikit kecuali inframerah 980 nm yang ingin kita kesan dengan sensor fotodiod dalamannya. Pengesan inframerah juga mempunyai penapis elektronik yang hanya membenarkan isyarat sekitar 38.5 kHz melaluinya. Dengan kata lain, pengesan hanya mencari inframerah yang menyala dan mati 38, 500 kali sesaat. Ini menghalang gangguan IR dari sumber umum seperti cahaya matahari dan pencahayaan dalaman. Cahaya matahari adalah gangguan DC (0 Hz), dan pencahayaan dalaman cenderung menyala dan mati pada 100 atau 120 Hz, bergantung pada sumber kuasa utama di rantau ini. Oleh kerana 120 Hz berada di luar frekuensi jalur jalur 38.5 kHz penapis elektronik, ia tidak diendahkan sepenuhnya oleh pengesan IR.

-Panduan Pelajar Paralax

Langkah 3: Memasang LED IR

Memasang LED IR
Memasang LED IR

Masukkan LED IR ke bahagian selongsong yang lebih besar

Lekatkan bahagian LED yang jelas dengan bahagian selongsong yang lebih kecil

Langkah 4: Menguji Pasangan Inframerah - Litar

Menguji Pasangan Inframerah - Litar
Menguji Pasangan Inframerah - Litar
Menguji Pasangan Inframerah - Litar
Menguji Pasangan Inframerah - Litar

Sebelum kita masuk ke dalam sesuatu perkara, kita akan menguji untuk memastikan bahawa pasangan IR berfungsi (Satu LED inframerah dan satu pengesan inframerah).

Mulakan dengan membina litar di atas di papan roti yang dipasang di atas Boe-Bot anda

Langkah 5: Menguji Pasangan Inframerah - Kod Asas

Sudah tentu, kita perlu menulis kod 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 jarak inframerah. Untuk ujian ini, kami akan menggunakan arahan:

FREQOUT 8, 1, 38500

ini akan menghantar frekuensi 38.5 kHz yang berlangsung selama 1 ms ke P8. Litar LED inframerah yang disambungkan ke P8 akan menyiarkan frekuensi ini. Sekiranya cahaya inframerah dipantulkan kembali ke Boe-Bot oleh objek yang berada di jalurnya, pengesan inframerah akan menghantar isyarat BASIC Stamp untuk memberitahukan bahawa cahaya inframerah yang dipantulkan telah dikesan.

Kunci untuk membuat pasangan IR berfungsi adalah dengan mengirim 1 ms 38.5 kHz FREQOUT dan segera menyimpan output pengesan IR dalam pemboleh ubah.

Contoh ini menunjukkan menyimpan nilai IR Detector dalam pemboleh ubah bit bernama irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

Keadaan output pengesan IR apabila tidak melihat isyarat IR tinggi. Apabila pengesan IR melihat harmonik 38500 Hz yang dipantulkan oleh objek, outputnya rendah. Output pengesan IR hanya kekal rendah untuk sepersekian milisaat setelah arahan FREQOUT selesai menghantar harmonik, jadi penting untuk menyimpan output pengesan IR dalam pemboleh ubah sebaik sahaja menghantar perintah FREQOUT. Nilai yang disimpan oleh pemboleh ubah kemudian dapat ditampilkan di Terminal Debug atau digunakan untuk keputusan navigasi oleh Boe-Bot.

Langkah 6: Menguji Pasangan Inframerah - Perkakasan + Perisian

Menguji Pasangan Inframerah - Perkakasan + Perisian
Menguji Pasangan Inframerah - Perkakasan + Perisian

Setelah anda mengetahui asasnya, kami dapat mengumpulkan perkakasan dan Perisian untuk menguji pasangan dan mendapatkan maklum balas masa nyata dari apa yang dikesan oleh IR Pair

Anda boleh mencuba sendiri dan membuat kodnya, atau menggunakan kod di bawah

'{$ STAMP BS2}

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

  1. Biarkan Boe-Bot tersambung ke kabel bersiri, kerana anda akan menggunakan Terminal DEBUG untuk menguji pasangan IR anda.
  2. Letakkan objek, seperti tangan atau selembar kertas, kira-kira satu inci dari pasangan IR kiri
  3. Sahkan bahawa apabila anda meletakkan objek di depan pasangan IR Terminal Debug memaparkan 0, dan apabila anda mengeluarkan objek dari depan pasangan IR, ia akan memaparkan 1.
  4. Sekiranya Terminal Debug tidak menampilkan nilai yang diharapkan, cubalah langkah-langkah dalam Langkah Menembak Masalah.

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

Terminal DEBUG memaparkan nilai yang tidak dijangka

Periksa litar untuk seluar pendek, penyambung yang salah tempat atau hilang, komponen yang rosak, perintang yang salah, atau masalah lain yang dapat dilihat

Periksa program dari ralat logik atau sintaks - Sekiranya anda menggunakan kod anda sendiri untuk langkah terakhir, pertimbangkan untuk menggunakan kod yang disediakan

Selalu mendapat 0, walaupun tidak ada objek diletakkan di hadapan Boe-Bot

Periksa sama ada terdapat objek berdekatan yang memantulkan isyarat inframerah. Meja di depan Boe-Bot boleh menjadi penyebabnya. Pindahkan Boe-Bot ke ruang terbuka sehingga LED IR dan pengesan tidak dapat memantulkan objek berdekatan.

Bacaan adalah 1 waktu ketika tidak ada objek di hadapan Boe-Bot, tetapi berkedip ke 0 sekali-sekala

Mungkin terdapat gangguan dari lampu pendarfluor yang berdekatan; Matikan lampu pendarfluor yang berdekatan dan ulangi ujian anda. Sekiranya masalah itu berlanjutan, langkah 9 dapat mendedahkan masalahnya

Langkah 8: Pasangan IR Kedua

Pasangan IR Kedua
Pasangan IR Kedua

Sekarang anda mempunyai program untuk IR kiri, giliran anda untuk membuat litar dan memprogram IR Pair yang betul

  1. Tukar pernyataan, tajuk dan komen DEBUG untuk merujuk kepada pasangan IR yang betul.
  2. Tukar nama pemboleh ubah dari irDetectLeft kepada irDetectRight. Anda perlu melakukan ini di empat tempat dalam program ini.
  3. Ubah argumen Pin perintah FREQOUT dari 8 hingga 2.
  4. Tukar daftar input yang dipantau oleh pemboleh ubah irDetectRight dari IN9 ke IN0.
  5. Ulangi langkah pengujian dalam aktiviti ini untuk pasangan IR yang betul; dengan litar LED IR disambungkan ke P2 dan pengesan disambungkan ke P0.

Langkah 9: Mengesan Gangguan Inframerah (Pilihan)

Mengesan Gangguan Inframerah (Pilihan)
Mengesan Gangguan Inframerah (Pilihan)

Sama ada anda mengalami masalah dengan isyarat pengesanan yang tidak seharusnya dikesan atau anda merancang untuk menunjukkan pengesanan IR anda di lokasi alternatif, anda mungkin ingin menguji gangguan.

Konsep program ujian ini cukup mudah, anda mengesan isyarat inframerah tanpa menghantar keluar.

Anda boleh menggunakan litar yang sama tetapi anda mesti mengubah kodnya. anda boleh memilih untuk menulis kod anda sendiri, tetapi anda boleh menggunakan kod yang disediakan di bawah:

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 JIKA IN9 = 0 ATAU IN0 = 0 KEMUDIAN DEBUG "Gangguan dikesan" Jeda 100 LOOP

Sekiranya anda mengalami gangguan, tentukan sumber yang mungkin dan matikan / hapus atau pindahkan tempat anda mengendalikan Boe-Bot anda.

Langkah 10: Menambah Lebih Banyak Pasangan IR

Menambah Lebih Banyak Pasangan IR
Menambah Lebih Banyak Pasangan IR

Sekiranya anda mahukan lebih tepat dalam pergerakan Boe-Bot anda, anda mungkin ingin menambahkan lebih banyak Pasangan IR. 3 Meningkatkan prestasi berbanding dua; anda boleh menggunakan pasangan tengah untuk mencari halangan langsung, dan menggunakan dua sisi IR untuk menentukan berapa banyak yang perlu dipusingkan. Namun, kejatuhan reka bentuk pasangan IR 3 adalah yang mungkin anda ketahui ketika meluncur ke dinding, kerana pasangan IR tengah digunakan untuk mengesan rintangan. Untuk menyelesaikan masalah ini, anda boleh menambahkan pasangan IR ke setiap sisi dengan nilai rintangan tinggi-oleh itu dan isyarat inframerah hanya akan dapat dikesan jika Boe-Bot dekat dengan sisi atau dinding pada sudut lembut.

Langkah 11: Lima Pasangan IR - Litar

Lima Pasangan IR - Litar
Lima Pasangan IR - Litar

Berhati-hati semasa mengarahkan dua LED IR di sisi kerana memutarnya boleh menyebabkan penyentuh menyentuh dan menyebabkan litar pintas.

Langkah 12: Lima Pasangan IR - Kod

Lima Pasangan IR - Kod
Lima Pasangan IR - Kod

Anda mungkin mahu mencuba memprogram Boe-Bot anda sebelum menggunakan kod ini:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'Five IR Pair Deatection Code' Matthew Shaw '8 Mei 2019 (Versi 7)' Pengesanan objek dan pemprosesan logik asas untuk menyelesaikan maze

irDetectLeft VAR Bit 'Pemboleh ubah untuk kiri

irDetectCentre VAR Bit 'Variable for center irDetectRight VAR Bit' Variable for right irDetectLSide VAR Bit 'Variable for the side side irDetectRSide VAR Bit' Variable for the side side irDetectLSideFar VAR Bit 'Variabel untuk rintangan rendah sebelah kiri irDetectRSideFar VAR Bit rintangan' Variabel untuk rintangan rendah sisi kanan

Word VAR mLoop

Lmotor PIN 15 'Motor kiri disambungkan ke pin 14, denyutan melalui sini

Rmotor PIN 14 'kanan = 15

'kelajuan adalah -> 650-750-850

LFast CON 850 'Conastant untuk motor kiri pada kelajuan penuh RFast CON 650' Conastant untuk motor kanan pada kelajuan penuh

LStop CON 750 'Conastant untuk motor kiri pada kelajuan penuh

RStop CON 650 'Conastant untuk motor kanan pada kelajuan penuh

LMid CON 830 'Conastant untuk motor kiri pada kelajuan sederhana

RMid CON 700 'Conastant untuk motor kanan pada kelajuan sederhana

LSlow CON 770 'Conastant untuk motor kiri pada kelajuan minimum

RSlow CON 730 'Conastant untuk motor kanan pada kelajuan minimum

LRev CON 650 'Conastant untuk motor kiri pada kelajuan penuh secara terbalik

RRev CON 850 'Conastant untuk motor kiri pada kelajuan penuh secara terbalik

Bahagian kiri FREQOUT 7, 1, 38500 '

irDetectLeft = IN8

Pusat FREQOUT 6, 1, 38500 '

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'sebelah kanan

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Tutup Kiri

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'kanan Tutup

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'sebelah kanan

irDetectRSideFar = IN0

JIKA irDetectLSide = 0 DAN irDetectRSide = 0 KEMUDIAN 'PERINTAH MULAI utama melambaikan tangan anda melewati dua pengesan sisi untuk memulakan program

Utama:

Jeda 1000 DO

PULSOUT Lmotor, motor kiri LFast berjalan dengan kelajuan penuh

PULSOUT Rmotor, RFast 'Motor kanan berjalan pada kelajuan penuh

Pusat FREQOUT 6, 1, 38500 '

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Tutup Kiri

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'sebelah kanan

irDetectRSide = IN0

JIKA irDetectLSide = 0 DAN irDetectRSide = 1 KEMUDIAN

LAKUKAN Lmotor, LFast

Pusat FREQOUT 6, 1, 38500 '

irDetectCentre = IN5 JIKA irDetectCentre = 0 SETIAP KALI

FREQOUT 10, 1, 38500 'Tutup Kiri

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'sebelah kanan

irDetectRight = IN2

LOOP SEHINGGA irDetectLSide = 1 ATAU irDetectRSide = 0

ELSEIF irDetectLSide = 1 DAN irDetectRSide = 0 KEMUDIAN

LAKUKAN Rmotor, RFast

Pusat FREQOUT 6, 1, 38500 '

irDetectCentre = IN5 JIKA irDetectCentre = 0 SETIAP KALI

FREQOUT 10, 1, 38500 'Tutup Kiri

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'sebelah kanan

irDetectRight = IN2

LOOP SEHINGGA irDetectLSide = 0 ATAU irDetectRSide = 1

'ENDIF

JIKA irDetectCentre = 0 KEMUDIAN MULAI

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

Pusat FREQOUT 6, 1, 38500 '

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

Jeda Jeda 1000 'untuk menunjukkan isyarat yang dikesan

JIKA (irDetectLeft = 1 DAN irDetectRight = 0) KEMUDIAN 'menilai tempoh

GOSUB turnLeft

ELSEIF (irDetectLeft = 0 DAN irDetectRight = 1) KEMUDIAN

GOSUB turnRight

ELSEIF (irDetectLeft = 1 DAN irDetectRight = 1) KEMUDIAN

Keputusan GOSUB

LAIN

GOSUB giliran Berbalik

ENDIF

ENDIF 'TAMAT

PINJAMAN

TAMAT

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 SEHINGGA IN0 = 1 KEMBALI

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 SEHINGGA IN9 = 1

KEMBALI

putarbalikkan:

UNTUK mLoop = 0 HINGGA 50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev PAUSE 20 PULSOUT Lmotor, LRev PAUSE 20 SETERUSNYA LAKUKAN Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, FREROUT 5, 1, FREFRD 4, 1, 384, 38500 irDetectRight = LOOP IN0 SEHINGGA IN9 = 1

KEMBALI

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

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'sebelah kanan

irDetectRSideFar = IN0

JIKA (irDetectLSideFar = 1 DAN irDetectRSideFar = 0) KEMUDIAN 'menilai tempoh

GOSUB turnLeft

ELSEIF (irDetectLSideFar = 0 DAN irDetectRSideFar = 1) KEMUDIAN

GOSUB turnRight

ELSEIF (irDetectLSideFar = 1 DAN irDetectRSideFar = 1) KEMUDIAN

GOSUB turnLeft

LAIN

GOSUB giliran Berbalik

ENDIF

KEMBALI

Disyorkan: