Mục lục:

Boe-Bot với đầu dò hồng ngoại: 12 bước (có hình ảnh)
Boe-Bot với đầu dò hồng ngoại: 12 bước (có hình ảnh)

Video: Boe-Bot với đầu dò hồng ngoại: 12 bước (có hình ảnh)

Video: Boe-Bot với đầu dò hồng ngoại: 12 bước (có hình ảnh)
Video: Tìm hiểu về bếp Hồng ngoại 2024, Tháng bảy
Anonim
Boe-Bot với đầu dò hồng ngoại
Boe-Bot với đầu dò hồng ngoại

Tài liệu hướng dẫn này sẽ trình bày cách xây dựng và mã hóa một Boe-Bot có thể điều hướng một mê cung bằng cách sử dụng máy dò hồng ngoại để tránh chướng ngại vật. Đây là một hướng dẫn dễ làm theo cho phép bạn dễ dàng sửa đổi cho phù hợp với nhu cầu của mình. Điều này đòi hỏi sự hiểu biết cơ bản về mạch và lập trình. Bạn sẽ cần phải có phần mềm BASIC Stamp IDE cho dự án này. Tải xuống miễn phí tại đây. Cũng như Robot Boe-Bot

Bước 1: Tài nguyên

Linh kiện điện tử

Boe-Bot với cáp kết nối Parallax Store - BoeBot Kit

5 Cửa hàng thị sai của đèn LED hồng ngoại - Bộ lắp ráp máy phát hồng ngoại

5 cụm lá chắn hồng ngoại

5 đầu dò hồng ngoại Cửa hàng thị sai - BoeBot IR Receiver

Điện trở

  • (2) 4,7 kΩ ABRA Electronics - 4,7 kΩ
  • (5) Điện tử ABRA 220 Ω - 220 Ω
  • (2) 1 kΩ ABRA Electronics - 1 kΩ
  • (5) 2 k ABRA Điện tử - 2 kΩ

Hệ thống dây điện các loại ABRA Electronics - 22 Gauge Wire

3 LED của ABRA Electronics - LED đỏ 5mm

Ủng hộ

Máy vi tính

Trình chỉnh sửa tem CƠ BẢN - (Phần mềm miễn phí)

Công cụ

Máy cắt dây ABRA Electronics - Máy cắt dây (Tùy chọn)

Wire Stripper ABRA Electronics - Máy rút dây

Misc

Tường (để xây dựng mê cung)

Bước 2: Hiểu cách hoạt động của tính năng phát hiện tia hồng ngoại (Tùy chọn)

Hiểu cách hoạt động của tính năng phát hiện tia hồng ngoại (Tùy chọn)
Hiểu cách hoạt động của tính năng phát hiện tia hồng ngoại (Tùy chọn)

Đèn pha hồng ngoại

Hệ thống phát hiện vật thể hồng ngoại mà chúng tôi sẽ xây dựng trên Boe-Bot giống như đèn pha của ô tô ở một số khía cạnh. Khi ánh sáng từ đèn pha ô tô phản chiếu các chướng ngại vật, mắt của bạn sẽ phát hiện chướng ngại vật và bộ não của bạn xử lý chúng và làm cho cơ thể của bạn dẫn đường cho xe theo đó. Boe-Bot sẽ sử dụng đèn LED hồng ngoại cho đèn pha. Chúng phát ra tia hồng ngoại, và trong một số trường hợp, tia hồng ngoại phản xạ lại các vật thể và phản xạ trở lại theo hướng của Boe-Bot. Con mắt của Boe-Bot là thiết bị dò tia hồng ngoại. Các đầu dò hồng ngoại gửi tín hiệu cho biết chúng có phát hiện ra tia hồng ngoại phản xạ từ một vật thể hay không. Bộ não của Boe-Bot, Tem BASIC, đưa ra quyết định và vận hành động cơ servo dựa trên đầu vào cảm biến này. Hình 7-1 Phát hiện vật thể bằng đèn pha IR Các đầu dò IR có bộ lọc quang học tích hợp cho phép rất ít ánh sáng ngoại trừ tia hồng ngoại 980 nm mà chúng tôi muốn phát hiện bằng cảm biến photodiode bên trong của nó. Đầu báo hồng ngoại cũng có một bộ lọc điện tử chỉ cho phép các tín hiệu xung quanh 38,5 kHz đi qua. Nói cách khác, máy dò chỉ tìm kiếm tia hồng ngoại bật và tắt 38, 500 lần mỗi giây. Điều này ngăn cản sự can thiệp của IR từ các nguồn thông thường như ánh sáng mặt trời và ánh sáng trong nhà. Ánh sáng mặt trời là nhiễu DC (0 Hz) và ánh sáng trong nhà có xu hướng bật và tắt ở tần số 100 hoặc 120 Hz, tùy thuộc vào nguồn điện chính trong khu vực. Vì 120 Hz nằm ngoài tần số vượt qua dải tần 38,5 kHz của bộ lọc điện tử, nó hoàn toàn bị bộ phát hiện IR bỏ qua.

-Hướng dẫn Sinh viên Paralax

Bước 3: Lắp ráp đèn LED hồng ngoại

Lắp ráp đèn LED hồng ngoại
Lắp ráp đèn LED hồng ngoại

Chèn đèn LED hồng ngoại vào phần lớn hơn của vỏ

Bao bọc phần trong của đèn LED với phần nhỏ hơn của vỏ

Bước 4: Kiểm tra các cặp hồng ngoại - Mạch

Kiểm tra các cặp hồng ngoại - Mạch
Kiểm tra các cặp hồng ngoại - Mạch
Kiểm tra các cặp hồng ngoại - Mạch
Kiểm tra các cặp hồng ngoại - Mạch

Trước khi đi quá sâu vào bất cứ điều gì, chúng tôi sẽ kiểm tra để đảm bảo rằng cặp IR hoạt động (Một đèn LED hồng ngoại và một đầu dò hồng ngoại).

Bắt đầu bằng cách xây dựng mạch ở trên trên breadboard được gắn trên đầu Boe-Bot của bạn

Bước 5: Kiểm tra các cặp hồng ngoại - Mã cơ bản

Tất nhiên, chúng tôi sẽ cần viết mã để các cặp IR của chúng tôi hoạt động

Để làm điều này, will sẽ sử dụng lệnh FREQOUT. Lệnh này được thiết kế cho âm thanh, tuy nhiên nó có thể được sử dụng để tạo ra các tần số trong phạm vi hồng ngoại. Đối với bài kiểm tra này, chúng tôi sẽ sử dụng lệnh:

FREQOUT 8, 1, 38500

điều này sẽ gửi một tần số 38,5 kHz kéo dài 1 ms đến P8. Mạch LED hồng ngoại kết nối với P8 sẽ phát tần số này. Nếu ánh sáng hồng ngoại bị phản xạ trở lại Boe-Bot bởi một đối tượng trên đường đi của nó, máy dò hồng ngoại sẽ gửi cho Dấu hiệu CƠ BẢN một tín hiệu để cho nó biết rằng ánh sáng hồng ngoại phản xạ đã được phát hiện.

Chìa khóa để làm cho một cặp IR hoạt động là gửi 1 ms của 38,5 kHz FREQOUT và ngay lập tức lưu trữ đầu ra của bộ dò IR trong một biến.

Ví dụ này cho thấy việc lưu trữ giá trị IR Detector trong một biến bit có tên là irDectectLeft

FREQOUT 8, 1, 38500

irDetectLeft = IN9

Trạng thái đầu ra của máy dò IR khi không thấy tín hiệu IR cao. Khi máy dò IR nhìn thấy sóng hài 38500 Hz được phản xạ bởi một đối tượng, đầu ra của nó ở mức thấp. Đầu ra của bộ phát hiện IR chỉ ở mức thấp trong một phần của mili giây sau khi lệnh FREQOUT gửi xong sóng hài, vì vậy điều cần thiết là phải lưu đầu ra của bộ dò IR trong một biến ngay sau khi gửi lệnh FREQOUT. Giá trị được lưu trữ bởi biến sau đó có thể được hiển thị trong Debug Terminal hoặc được sử dụng cho các quyết định điều hướng của Boe-Bot.

Bước 6: Kiểm tra các cặp hồng ngoại - Phần cứng + Phần mềm

Kiểm tra các cặp hồng ngoại - Phần cứng + Phần mềm
Kiểm tra các cặp hồng ngoại - Phần cứng + Phần mềm

Bây giờ bạn đã biết những điều cơ bản, chúng ta có thể đặt phần cứng và Phần mềm lại với nhau để kiểm tra một cặp với nhau và nhận phản hồi theo thời gian thực từ những gì IR Pair đang phát hiện

Bạn có thể thử và tự tạo mã hoặc sử dụng mã bên dưới

'{$ STAMP BS2}

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

  1. Để Boe-Bot được kết nối với cáp nối tiếp, vì bạn sẽ sử dụng Thiết bị đầu cuối GỬI để kiểm tra cặp IR của mình.
  2. Đặt một đối tượng, chẳng hạn như bàn tay của bạn hoặc một tờ giấy, cách cặp IR bên trái khoảng một inch
  3. Xác minh rằng khi bạn đặt một đối tượng trước cặp IR, Thiết bị đầu cuối gỡ lỗi hiển thị số 0 và khi bạn xóa đối tượng khỏi cặp IR, nó sẽ hiển thị số 1.
  4. Nếu Thiết bị đầu cuối gỡ lỗi không hiển thị các giá trị mong đợi, hãy thử các bước trong Bước xử lý sự cố.

Bước 7: Khắc phục sự cố (Đối với các vấn đề ở bước cuối cùng)

DEBUG Terminal hiển thị các giá trị không mong muốn

Kiểm tra mạch điện xem có chập, cắm sai hoặc thiếu kết nối, linh kiện bị hỏng, điện trở không chính xác hoặc bất kỳ vấn đề có thể nhìn thấy nào khác không

Kiểm tra chương trình khỏi lỗi logic hoặc lỗi cú pháp - Nếu bạn đã sử dụng mã của riêng mình cho bước cuối cùng, hãy xem xét sử dụng mã được cung cấp

Luôn nhận được 0, ngay cả khi không có đối tượng nào được đặt trước Boe-Bot

Kiểm tra xem có bất kỳ vật thể nào gần đó đang phản xạ tín hiệu hồng ngoại hay không. Cái bàn phía trước Boe-Bot có thể là nguyên nhân. Di chuyển Boe-Bot vào không gian mở để đèn LED hồng ngoại và máy dò không thể phản chiếu từ bất kỳ vật thể nào gần đó.

Đọc phần lớn thời gian khi không có đối tượng ở phía trước Boe-Bot, nhưng thỉnh thoảng nhấp nháy về 0

Có thể bị nhiễu từ ánh sáng huỳnh quang gần đó; Tắt bất kỳ đèn huỳnh quang nào gần đó và lặp lại các thử nghiệm của bạn. Nếu sự cố vẫn tiếp diễn, bước 9 có thể tiết lộ sự cố

Bước 8: Cặp IR thứ hai

Cặp IR thứ hai
Cặp IR thứ hai

Bây giờ bạn đã có chương trình cho IR bên trái, đến lượt bạn tạo mạch và lập trình cho IR Pair bên phải

  1. Thay đổi câu lệnh DEBUG, tiêu đề và nhận xét để tham chiếu đến cặp IR phù hợp.
  2. Thay đổi tên biến từ irDetectLeft thành irDetectRight. Bạn sẽ cần phải làm điều này ở bốn vị trí trong chương trình.
  3. Thay đổi đối số Ghim của lệnh FREQOUT từ 8 thành 2.
  4. Thay đổi thanh ghi đầu vào được giám sát bởi biến irDetectRight từ IN9 thành IN0.
  5. Lặp lại các bước kiểm tra trong hoạt động này cho cặp IR phù hợp; với mạch IR LED được kết nối với P2 và bộ tách sóng được kết nối với P0.

Bước 9: Phát hiện nhiễu hồng ngoại (Tùy chọn)

Phát hiện nhiễu hồng ngoại (Tùy chọn)
Phát hiện nhiễu hồng ngoại (Tùy chọn)

Cho dù bạn đang gặp sự cố với việc phát hiện các tín hiệu không được phát hiện hay bạn dự định chứng minh khả năng phát hiện IR của mình ở một vị trí thay thế, bạn có thể muốn kiểm tra xem có bị nhiễu hay không.

Khái niệm của chương trình thử nghiệm này khá đơn giản, bạn phát hiện các tín hiệu hồng ngoại mà không cần gửi bất kỳ tín hiệu nào ra ngoài.

Bạn có thể sử dụng cùng một mạch nhưng bạn sẽ phải thay đổi mã. bạn có thể chọn viết mã của riêng mình, nhưng bạn có thể sử dụng mã được cung cấp bên dưới:

'{$ STAMP BS2}

'{$ PBASIC 2.5} irDetectLeft VAR Bit DO irDetectLeft = IN9 irDetectRight = IN0 NẾU IN9 = 0 HOẶC IN0 = 0 SAU ĐÓ "Đã phát hiện can thiệp" TẠM NGỪNG 100 LOOP

Nếu bạn gặp phải sự can thiệp, hãy xác định nguồn có khả năng xảy ra và tắt / xóa nó hoặc chuyển vị trí bạn vận hành Boe-Bot của mình.

Bước 10: Thêm các cặp IR khác

Thêm nhiều cặp IR hơn
Thêm nhiều cặp IR hơn

Nếu bạn muốn độ chính xác hơn trong chuyển động của Boe-Bot, bạn có thể muốn thêm nhiều Cặp IR hơn. 3 Cải thiện đáng kể hiệu suất so với hai; bạn có thể sử dụng cặp trung tâm để quét vật cản trực tiếp và sử dụng IR hai bên để xác định mức độ cần rẽ. Tuy nhiên, điểm yếu của thiết kế 3 cặp IR là bạn có thể biết khi bạn đang trượt vào tường, vì cặp IR trung tâm được sử dụng để phát hiện chướng ngại vật. Để giải quyết vấn đề này, bạn có thể thêm một cặp IR cho mỗi bên với giá trị điện trở cao - do đó và tín hiệu hồng ngoại sẽ chỉ được phát hiện nếu Boe-Bot ở gần bên hoặc bức tường ở một góc nghiêng.

Bước 11: Năm cặp IR - Mạch

Năm cặp IR - Mạch
Năm cặp IR - Mạch

Hãy cẩn thận khi hướng hai đèn LED hồng ngoại ở bên cạnh vì việc xoắn chúng có thể khiến dây dẫn chạm vào và gây ra đoản mạch.

Bước 12: Năm cặp IR - Mã

Năm cặp IR - Mã
Năm cặp IR - Mã

Bạn có thể muốn thử lập trình Boe-Bot của mình trước khi sử dụng mã này:

'{$ STAMP BS2}' {$ PBASIC 2.5} 'Năm mã phát hiện cặp IR' Matthew Shaw 'ngày 8 tháng 5 năm 2019 (Phiên bản 7)' Phát hiện đối tượng và xử lý logic cơ bản để giải quyết mê cung

irDetectLeft VAR Bit 'Biến cho bên trái

irDetectCentre VAR Bit 'Biến cho trung tâm irDetectRight VAR Bit' Biến cho bên phải irDetectLSide VAR Bit 'Biến cho bên trái irDetectRSide VAR Bit' Biến cho bên phải irDetectLSideFar VAR Bit 'Biến cho điện trở thấp bên trái irDetectRSideFar VAR Bit' Biến cho điện trở thấp bên phải

mLoop VAR Word

Lmotor PIN 15 'Động cơ bên trái được kết nối với chân 14, xung đi qua đây

Mã PIN Rmotor 14 'phải = 15

'tốc độ là -> 650-750-850

LFast CON 850 'Conastant cho động cơ trái ở tốc độ tối đa RFast CON 650' Conastant cho động cơ phải ở tốc độ tối đa

LStop CON 750 'Conastant cho động cơ trái ở tốc độ tối đa

RStop CON 650 'Conastant cho động cơ bên phải ở tốc độ tối đa

LMid CON 830 'Conastant cho động cơ trái ở tốc độ trung bình

RMid CON 700 'Conastant cho động cơ bên phải ở tốc độ trung bình

LSlow CON 770 'Conastant cho động cơ trái ở tốc độ tối thiểu

RSlow CON 730 'Conastant cho động cơ bên phải ở tốc độ tối thiểu

LRev CON 650 'Conastant cho động cơ trái ở tốc độ tối đa ngược lại

RRev CON 850 'Conastant cho động cơ trái ở tốc độ tối đa ngược lại

FREQOUT 7, 1, 38500 'bên trái

irDetectLeft = IN8

FREQOUT 6, 1, 38500 'trung tâm

irDetectCentre = IN5

FREQOUT 3, 1, 38500 'bên phải

irDetectRight = IN2

FREQOUT 10, 1, 38500 'Đóng trái

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'phải Đóng

irDetectRSide = IN0

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'bên phải

irDetectRSideFar = IN0

IF irDetectLSide = 0 AND irDetectRSide = 0 THÌ main 'LỆNH KHỞI ĐỘNG vẫy tay qua hai đầu dò bên để bắt đầu chương trình

Chủ chốt:

TẠM DỪNG 1000 DO

PULSOUT Lmotor, động cơ trái của LFast 'chạy với tốc độ tối đa

PULSOUT Rmotor, RFast 'Động cơ bên phải chạy với tốc độ tối đa

FREQOUT 6, 1, 38500 'trung tâm

irDetectCentre = IN5

FREQOUT 10, 1, 38500 'Đóng trái

irDetectLSide = IN11

FREQOUT 1, 1, 38500 'bên phải

irDetectRSide = IN0

NẾU irDetectLSide = 0 VÀ irDetectRSide = 1 THEN

DO PULSOUT Lmotor, LFast

FREQOUT 6, 1, 38500 'trung tâm

irDetectCentre = IN5 NẾU irDetectCentre = 0 THÌ xu

FREQOUT 10, 1, 38500 'Đóng trái

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'bên phải

irDetectRight = IN2

LOOP ĐẾN KHI irDetectLSide = 1 HOẶC irDetectRSide = 0

ELSEIF irDetectLSide = 1 VÀ irDetectRSide = 0 THEN

LÀM PULSOUT Rmotor, RFast

FREQOUT 6, 1, 38500 'trung tâm

irDetectCentre = IN5 NẾU irDetectCentre = 0 THÌ xu

FREQOUT 10, 1, 38500 'Đóng trái

irDetectLSide = IN11

FREQOUT 3, 1, 38500 'bên phải

irDetectRight = IN2

LOOP ĐẾN KHI irDetectLSide = 0 HOẶC irDetectRSide = 1

'ENDIF

NẾU irDetectCentre = 0 THÌ 'BẮT ĐẦU

FREQOUT 7, 1, 38500 'phía bên trái irDetectLeft = IN8

FREQOUT 6, 1, 38500 'trung tâm

irDetectCentre = IN5

FREQOUT 3, 1, 38500

irDetectRight = IN2

PAUSE 1000 'tạm dừng để hiển thị tín hiệu được phát hiện

IF (irDetectLeft = 1 AND irDetectRight = 0) THEN 'đánh giá thời lượng

GOSUB turnLeft

ELSEIF (irDetectLeft = 0 VÀ irDetectRight = 1) THÌ

GOSUB turnRight

ELSEIF (irDetectLeft = 1 VÀ irDetectRight = 1) THÌ

GOSUB turnDecide

KHÁC

GOSUB lần lượt Đảo ngược

ENDIF

ENDIF 'KẾT THÚC

VÒNG

KẾT THÚC

rẽ trái:

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

rẽ phải:

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

TRỞ LẠI

turnReverse:

FOR mLoop = 0 ĐẾN 50 PULSOUT Rmotor, RRev PULSOUT Lmotor, LRev TẠM DỪNG 20 PULSOUT Lmotor, LRev TẠM DỪNG 20 TIẾP THEO DO PULSOUT Rmotor, RRev FREQOUT 8, 1, 38500 irDetectLeft = IN9 FREQOUT 5, 1, 38500 ir = 1, 38500 irDetectRight = IN0 LOOP ĐẾN KHI IN9 = 1

TRỞ LẠI

turnDecide: 'sử dụng điện trở thấp hơn để xem thêm

FREQOUT 9, 1, 38500

irDetectLSideFar = IN11

FREQOUT 4, 1, 38500 'bên phải

irDetectRSideFar = IN0

IF (irDetectLSideFar = 1 VÀ irDetectRSideFar = 0) THEN 'đánh giá thời lượng

GOSUB turnLeft

ELSEIF (irDetectLSideFar = 0 VÀ irDetectRSideFar = 1) THÌ

GOSUB turnRight

ELSEIF (irDetectLSideFar = 1 VÀ irDetectRSideFar = 1) THÌ

GOSUB turnLeft

KHÁC

GOSUB lần lượt Đảo ngược

ENDIF

TRỞ LẠI

Đề xuất: