Mục lục:
- Bước 1: Làm cáp bộ điều hợp
- Bước 2: Thay đổi tốc độ truyền trên CMUCam
- Bước 3: Kết nối Cáp lập trình chuẩn và Mã tải lên
- Bước 4: Hủy bỏ trình kết nối lập trình
- Bước 5: Nhấn nút để khởi tạo giao tiếp nối tiếp
Video: Giao tiếp CMUCam2 với OOPIC: 5 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:36
Theo arsinioFollow More của tác giả:
Tổng quan về cách giao tiếp CMUCam2 với OOPIC.
Bước 1: Làm cáp bộ điều hợp
1. Goto radio và mua 2 trong số này: Đầu nối cốc hàn DB-9 Male2. hàn chân 5 trên đầu nối A đến chân 5 trên đầu nối B (nếu bạn nhìn kỹ trên đầu nối, chúng được đánh dấu) 3. hàn chân 2 trên đầu nối A đến chân 3 trên đầu nối B (nếu bạn nhìn kỹ trên đầu nối, chúng được đánh dấu) 4. hàn chân 3 trên đầu nối A đến chân 2 trên đầu nối B (nếu bạn nhìn kỹ trên đầu nối, chúng được đánh dấu)
Bước 2: Thay đổi tốc độ truyền trên CMUCam
Thay đổi tốc độ baud của CMUCamera thành 9600 baud (thêm một jumper vào vị trí 0).
Bước 3: Kết nối Cáp lập trình chuẩn và Mã tải lên
Kết nối cáp lập trình tiêu chuẩn và tải lên mã của bạn. Đây là một số mã ví dụ để bạn bắt đầu. Mã này sẽ theo dõi chuyển động bằng lệnh LF và FD. Nó sẽ bật tắt IOLine 7 (được nối với đèn LED) và phản chiếu đèn LED trạng thái theo dõi trên CMUCam.
& apos ******** các đối tượng liên quan đến cổng nối tiếp ******** Dim serialPort As New oSerialPortDim txBuff As New oBuffer27 & aposchange 27 để làm cho bộ đệm lớn hơn / nhỏ hơnDim rxBuff As New oBuffer10Dim serialActive_LED As New oDIO1Dim toggleSerial_Button As Mới oDIO1Dim toggleSerial_Event Như mới oEventDim toggleSerial_Wire Như mới oWireDim serialReceive_Event As mới oEventDim serialReceive_Wire As New oWire & apos ******** gỡ lỗi các đối tượng liên quan ******** Dim statLED As New oDIO1 & apos ******** ************************************** & apos * Chương trình con chung * & apos ****** **************************************** Sub main & aposinitialize mọi thứ main_init & aposset output mask của chúng tôi thành chỉ theo tâm khối lượng CMUCAM_setOutputMask (2, 3) & aposload khung chênh lệch ban đầu của chúng tôi CMUCAM_loadDiffFrame () & bắt đầu tính toán chênh lệch CMUCAM_startDiffCalc (10) End SubSub main_init & aposinitialize a LED trạng thái statLED. IOLine = 7 statLED. Dutirection) Cuối Su b & aposprocesses đã nhận được gói tin. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & dấu nháy đèn led sẽ nhấp nháy đồng thời với đèn LED theo dõi trên máy ảnh Nếu (mx = "0") Và (my = "0") statLED = 0 Khác statLED = 1 End IfEnd Sub & apos ****************************************** **** & apos * Chức năng CMU Cam * & apos *************************************** ******* & apossets led đã cho để bật, tắt, tự động & aposparam led Số lượng led (0, 1) & aposparam val off, on, auto (0, 1, 2) Function CMUCAM_ledSet (ledNum As Byte, val As Byte) Vì Byte & aposVString không hoạt động ngay trong trình biên dịch mới… & apos không chắc chắn về cái cũ & ApoxBuff. VString = "L0 0" & apossetup chuỗi lệnh của chúng tôi theo cách thủ công txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 & Apohe s tr $ function thật tệ… vì vậy bây giờ điều này đang xảy ra txBuff. Value = serial_toChar (ledNum) txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 txBuff. Value = serial_toChar (val) txBuff. Location = 4 txBuff. Value = 13 & apossend lệnh serial_SendBufferEnd Sub & aposload khung khác biệt ban đầuSub CMUCAM_loadDiffFrame () & apossetup chuỗi lệnh của chúng tôi theo cách thủ công txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff. Location = 2 txBuff. Value = 13 & apossend lệnh serial_SendBufferEnd Sub & aposstarts tính toán chênh lệch khung hình & ngưỡng thresh aposparam (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Dim hàng chục As Byte & apossetup chuỗi lệnh của chúng tôi theo cách thủ công txBuff. Location = 0 txBuff. Value = "Focation" txBuff = 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 tens = thresh / 10 txBuff. Value = serial_toChar (tens) txBuff. Location = 4 tens = thresh / 10 txBuff. Value = serial_toChar (thresh-tens) txBuff. Location = 5 txBuff. Value = 1 3 & apossend lệnh serial_SendBufferEnd Sub & apossets mặt nạ đầu ra & gói aposparam Loại gói dữ liệu vào mặt nạ (0, 1, 2, v.v.) xem trang 46 & giá trị mặt nạ aposparam để áp dụng (0-255) Sub CMUCAM_setOutputMask (packType As Byte, mask As Byte) Hàng trăm As Byte Dim tens As Byte & apossetup chuỗi lệnh của chúng ta theo cách thủ công txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & apospacket gõ txBuff. Location = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask để áp dụng txBuff. Location = 5 trăm = mask / 100 txBuff. Value = serial_toChar (trăm) txBuff. Location = 6 tens = (mask-Hundred) / 10 txBuff. Value = serial_toChar (tens) txBuff. Location = 7 txBuff. Value = serial_toChar (mask-Hundred-tens) & aposcarriage return txBuff. Location = 8 txBuff. Value = 13 & apossend lệnh serial_SendBufferEnd Sub & apos * ********************************************* & apos * Chương trình con nối tiếp chung *&một PO s ********************************************** & aposinitializing serial portSub serial_init () & aposinitialize nút để bật và tắt cổng nối tiếp (bật để chạy, tắt để lập trình) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Button. Value) toggleSerial_Wire. Output. Liên kết (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize một sự kiện để đệm dữ liệu của chúng ta serialReceive_Wire. Input. Link (serialPort. Receive) serialReceive_Wire. Output. Link (serialReceive_Eventize. Operate RX của chúng tôi) serialReceive_Wireation rxBuffrate RX = 0. hoàn thành gói ceive_Event_Code () & apos.receive trở thành sai khi bộ đệm 4byte trống Trong khi (serialPort. Receive = cvTrue) & aposcopy byte vào bộ đệm của chúng tôi rxBuff. Value = serialPort. Value & aposcheck khi kết thúc gói Nếu rxBuff. Value = 13 & aposprocess gói processPacket () & apos đặt lại bộ đệm ở đầu rxBuff. Location = 0 Else rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & dấu nháy bật và tắt cổng nối tiếp để lập trìnhSub toggleSerial_Event_Code () If serialPort. Operate = cvFalse serialPort. Operate 1 serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & aposconvert một số có một chữ số thành một ký tựFunction serial_toChar (inVal As Byte) As Byte Dim retVal As Byte Chọn trường hợp inVal Trường hợp 0 retVal = "0" Trường hợp 1 retVal = "1" Trường hợp 2 retVal = "2" Trường hợp 3 retVal = "3" Trường hợp 4 retVal = "4" Trường hợp 5 retVal = "5" Trường hợp 6 retVal = "6" Trường hợp 7 retVal = "7" Trường hợp 8 retVal = "8" Trường hợp 9 retVal = "9" End Chọn serial_toChar = retValEnd Chức năng & apos sen ds dữ liệu chứa trong txBuff & apos Lưu ý: đảm bảo bộ đệm chứa ký tự xuống dòng (13) ở cuối !! Sub serial_SendBuffer () & apositerate qua, gửi từng byte, kết thúc bằng ký tự xuống dòng txBuff. Location = 0 Trong khi 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 & aposmight không cần điều này & apossee nếu nó là ký tự xuống dòng Nếu txBuff. Value = 13 & aposbreak ra khỏi vòng lặp của chúng tôi Trả về Kết thúc Nếu & aposgo đến ký tự tiếp theo txBuff. Location = txBuff. Location + 1 WendEnd Sub
Bước 4: Hủy bỏ trình kết nối lập trình
Sau khi ngắt kết nối lập trình, hãy gắn cụm cáp mới như hình dưới đây. Bộ điều hợp được thực hiện ở bước 1 sẽ cho phép CMUCam được cắm trực tiếp vào OOPIC
Bước 5: Nhấn nút để khởi tạo giao tiếp nối tiếp
Nút trên IOLine 5 sẽ bắt đầu giao tiếp nối tiếp giữa CMUCam và OOPIC. Vì cổng nối tiếp được sử dụng cho cả lập trình và CMUCam, có lẽ nên có một cách kiểm soát để chuyển đổi giữa hai cổng.
Chương trình sẽ không chạy cho đến khi nút này được nhấn. Nếu bạn nhấn nút một lần nữa, cổng nối tiếp sẽ không hoạt động, cho phép bạn lập trình nó. Đèn LED trên IOLine 6 hiển thị trạng thái cổng nối tiếp hiện tại (bật nghĩa là hoạt động, tắt nghĩa là sẵn sàng lập trình).
Đề xuất:
Giao tiếp nối tiếp Arduino: 5 bước
Giao tiếp nối tiếp Arduino: Nhiều dự án Arduino dựa vào việc truyền dữ liệu giữa một số Arduino. chuyển seria
Giao tiếp nối tiếp PIC MCU và Python: 5 bước
PIC MCU và Python Serial Communication: Xin chào, các bạn! Trong dự án này, tôi sẽ cố gắng giải thích các thử nghiệm của tôi về PIC MCU và giao tiếp nối tiếp Python. Trên internet, có rất nhiều hướng dẫn và video về cách giao tiếp với PIC MCU qua thiết bị đầu cuối ảo rất hữu ích. Howev
Giao tiếp nối tiếp Arduino và Python - Hiển thị bàn phím: 4 bước
Giao tiếp nối tiếp Arduino và Python - Hiển thị bàn phím: Dự án này được thực hiện cho người dùng mac nhưng nó cũng có thể được thực hiện cho Linux và Windows, bước duy nhất nên khác là cài đặt
Giao tiếp dữ liệu trực tiếp ESP8266: 3 bước
Giao tiếp dữ liệu trực tiếp ESP8266: Giới thiệu Trong khi thực hiện một số dự án với mô-đun Arduinos và nRF24l01, tôi đã tự hỏi liệu tôi có thể tiết kiệm một chút công sức bằng cách sử dụng mô-đun ESP8266 thay thế hay không. Ưu điểm của mô-đun ESP8266 là nó chứa bộ điều khiển vi mô trên bo mạch, vì vậy không
Giao tiếp nối tiếp không dây bằng Bluefruit: 4 bước
Giao tiếp nối tiếp không dây sử dụng Bluefruit: Đây là hướng dẫn từng bước đơn giản để thay thế dây của bạn bằng kết nối bluetooth năng lượng thấp: Tôi đã mất một lúc để tìm ra điều này vì hầu như không có bất kỳ tài liệu nào về việc này với công nghệ năng lượng thấp bluetooth hiện đại như vậy với tư cách là Bluefrui