สารบัญ:

การเชื่อมต่อ CMUCam2 กับ OOPIC: 5 ขั้นตอน
การเชื่อมต่อ CMUCam2 กับ OOPIC: 5 ขั้นตอน

วีดีโอ: การเชื่อมต่อ CMUCam2 กับ OOPIC: 5 ขั้นตอน

วีดีโอ: การเชื่อมต่อ CMUCam2 กับ OOPIC: 5 ขั้นตอน
วีดีโอ: การใช้งานสมาร์ทคาเมร่าเบื้องต้น (CMUcam5 / PIXY) 2024, กรกฎาคม
Anonim

By arsinioFollow เพิ่มเติมโดยผู้เขียน:

เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C
เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C
เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C
เชื่อมต่อ OOBoards สองตัวเข้าด้วยกันโดยใช้ I2C

ภาพรวมเกี่ยวกับวิธีการเชื่อมต่อ CMUCam2 กับ OOPIC

ขั้นตอนที่ 1: การสร้างสายอะแดปเตอร์

การทำสายอะแดปเตอร์
การทำสายอะแดปเตอร์

1. ไปที่ radioshack แล้วซื้อ 2 อัน: Male DB-9 Solder Cup Connector2. บัดกรีพิน 5 บนตัวเชื่อมต่อ A ถึงพิน 5 บนตัวเชื่อมต่อ B (หากคุณดูขั้วต่ออย่างระมัดระวังพวกเขาจะทำเครื่องหมายไว้)3. บัดกรีพิน 2 บนตัวเชื่อมต่อ A ถึงพิน 3 บนตัวเชื่อมต่อ B (หากคุณดูขั้วต่ออย่างระมัดระวังพวกเขาจะทำเครื่องหมายไว้)4. บัดกรีพิน 3 ที่ขั้วต่อ A ถึงพิน 2 ที่ขั้วต่อ B (หากคุณดูขั้วต่ออย่างระมัดระวังพวกเขาจะทำเครื่องหมายไว้)

ขั้นตอนที่ 2: เปลี่ยนอัตรารับส่งข้อมูลบน CMUCam

เปลี่ยนอัตราบอดบน CMUCam
เปลี่ยนอัตราบอดบน CMUCam

เปลี่ยนอัตราบอดของ CMUCamera เป็น 9600 บอด (เพิ่มจัมเปอร์ไปที่ตำแหน่ง 0)

ขั้นตอนที่ 3: เชื่อมต่อสายเคเบิลการเขียนโปรแกรมมาตรฐานและรหัสอัปโหลด

เชื่อมต่อสายเคเบิลการเขียนโปรแกรมมาตรฐานและรหัสอัปโหลด
เชื่อมต่อสายเคเบิลการเขียนโปรแกรมมาตรฐานและรหัสอัปโหลด

เชื่อมต่อสายการเขียนโปรแกรมมาตรฐานและอัปโหลดรหัสของคุณ นี่คือตัวอย่างโค้ดบางส่วนที่จะช่วยให้คุณเริ่มต้น โค้ดนี้จะติดตามการเคลื่อนไหวโดยใช้คำสั่ง LF และ FD มันจะสลับ IOLine 7 (เชื่อมต่อกับ LED) และสะท้อนสถานะ LED การติดตามบน CMUCam

&apos********** อ็อบเจ็กต์ที่เกี่ยวข้องกับพอร์ตอนุกรม ******** Dim serialPort As ใหม่ oSerialPortDim txBuff เป็นใหม่ oBuffer27 &aposchange 27 เพื่อทำให้บัฟเฟอร์ใหญ่ขึ้น/เล็กลงDim rxBuff เหมือนใหม่ oBuffer10Dim serialActive_LED เหมือนใหม่ oDIO1Dim toggleSerial_Button As ใหม่ oDIO1Dim toggleSerial_Event ใหม่ oEventDim toggleSerial_Wire ใหม่ oWireDim serialReceive_Event ใหม่ oEventDim serialReceive_Wire ใหม่ oWire&apos********** ดีบักวัตถุที่เกี่ยวข้อง ********Dim statLED เป็นใหม่ oDIO1&apos********** **************************************&apos* รูทีนย่อยทั่วไป *&apos****** ********************************************** Sub main & aposinitialize ทุกอย่าง main_init & ตั้งค่าเอาต์พุตของเราเป็น ทำตามจุดศูนย์กลางมวลเท่านั้น CMUCAM_setOutputMask(2, 3) &aposload เฟรมความแตกต่างเริ่มต้นของเรา CMUCAM_loadDiffFrame() &ยกเลิกการคำนวณความแตกต่าง CMUCAM_startDiffCalc(10)End SubSub main_init & aposinitialize a status LED statLED. IOLine = 7 statLED. Direction = cv serialin our portositial)จบซู b&aposprocesses ได้รับ packetsSub processPacket() Dim mx As Byte Dim my As Byte &aposcheck for both Mx and My to be 0 &aposgranted if they are not 0 the location will be off (ie &aposT 12 34) &aposbut จากนั้นพวกเขาจะชนะ&apost ตรงตามเกณฑ์ 0 rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value &aposthe led ควรกะพริบพร้อมกันกับ LED ติดตามบนกล้อง ถ้า (mx = "0") และ (my = "0") statLED = 0 อื่น statLED = 1 End IfEnd Sub&apos****************************************** ****&apos* ฟังก์ชั่นแคม CMU *&apos************************************ *******&กำหนดที่นำไปสู่การเปิด, ปิด, อัตโนมัติ&aposparam ledNum number of led (0, 1)&aposparam val off, on, auto (0, 1, 2)Function CMUCAM_ledSet(ledNum As Byte, val As Byte) เนื่องจาก Byte &aposVString &apost ทำงานถูกต้องในคอมไพเลอร์ใหม่… &apostxBuff. VString = "L0 0" &apossetup สตริงคำสั่งของเราด้วยตนเอง txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 &aposthe s ฟังก์ชัน tr$ ห่วย…ดังนั้นตอนนี้กำลังเกิดขึ้น 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 คำสั่ง serial_SendBufferEnd Sub&aposloads ความแตกต่างเริ่มต้น frameSub CMUCAM_loadDiffFrame() &apossetup สตริงคำสั่งของเราด้วยตนเอง txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" tuff. ค่า = 13 &ส่งคำสั่ง serial_SendBufferEnd Sub&aposstarts การคำนวณความแตกต่างของเฟรม&aposparam thresh threshold (0-9)Sub CMUCAM_startDiffCalc(thresh As Byte) Dim tens As Byte &apossetup สตริงคำสั่งของเราด้วยตนเอง txBuff. Location = 0 txBuff"Valtue = " 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = " " txBuff. Location = 3 สิบ = thresh/10 txBuff. Value = serial_toChar(สิบ) txBuff. Location = 4 สิบ = thresh/10 txBuff. Value = serial_toChar(thresh-tens) txBuff. Location = 5 txBuff. Value = 1 3 &ลบคำสั่ง serial_SendBufferEnd Sub&apossets output mask&aposparam packetType ประเภทของแพ็กเก็ตที่จะมาสก์ (0, 1, 2, ฯลฯ) ดูหน้า 46&ค่ามาสก์ aposparam ที่จะใช้ (0-255)Sub CMUCAM_setOutputMask(packetType As Byte, mask As Byte) Dim ร้อย เป็น Byte Dim tens As Byte &apossetup สตริงคำสั่งของเราด้วยตนเอง txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = " " &aposuffpacket ประเภท txBuff. Location = 3 txBuff. Value = serial_toChar(packetType) txBuff. Location = 4 txBuff. Value = " " &aposmask เพื่อใช้ txBuff. Location = 5 ร้อย = mask/100 txBuff. Value = serial_toChar(ร้อย) txBuff =Location = 6 tens (mask-hundreds)/10 txBuff. Value = serial_toChar(tens) txBuff. Location = 7 txBuff. Value = serial_toChar(mask-hundreds-tens) &aposcarriage return txBuff. Location = 8 txBuff. Value = 13 & ส่งต่อคำสั่งย่อย *_ *********************************************&apos* รูทีนย่อย Serial ทั่วไป *&อ s**********************************************&ตั้งค่าซีเรียลให้กลายเป็นซีเรียล portSub serial_init() & aposinitialize ปุ่มเพื่อเปิดและปิดพอร์ตอนุกรม (เปิดเพื่อเรียกใช้ ปิดโปรแกรม) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link(toggleSerial_Button. Value) toggleSerial_Wire. Output ลิงก์ (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & จัดตำแหน่งเหตุการณ์เพื่อบัฟเฟอร์ข้อมูลของเรา = 0 & aposinitialize พอร์ตซีเรียลของเรา serialPort. Baud = cv9600 & aposinitialize LED สถานะซีเรียลของเรา serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput &apos รอที่นี่จนกว่าพอร์ตอนุกรมของเราจะถูกเปิดใช้งาน ขณะที่ serialPort. Operate = cvFalse WendEnd Sub&aposcopies ข้อมูลลงในบัฟเฟอร์การรับของเราและตรวจสอบ แพ็กเก็ตเสร็จสิ้นSub serialRe ceive_Event_Code() &apos.received จะกลายเป็นเท็จเมื่อบัฟเฟอร์ 4byte ว่างเปล่า ขณะที่ (serialPort. Received = cvTrue) &aposcopy ไบต์ไปยังบัฟเฟอร์ของเรา rxBuff. Value = serialPort. Value &aposcheck สำหรับการสิ้นสุดของแพ็กเก็ต หาก rxBuff. Value = 13 & กระบวนการแพ็กเก็ต &aposรีเซ็ตบัฟเฟอร์เป็นจุดเริ่มต้น rxBuff. Location = 0 อื่น rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub&aposturns เปิดและปิดพอร์ตอนุกรมสำหรับ programmingSub toggleSerial_Event_Code() ถ้า serialPort. Operate = cvFalse serialPort. Operate = cvTrue serialate = cvTrue serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub&aposconverts ตัวเลขหลักเดียวเป็น characterFunction serial_toChar(inVal As Byte) As Byte Dim retVal As Byte Select Case inVal Case 0 retVal = "0" Case 1 retVal = "1" Case 2 retVal = "2" กรณีที่ 3 retVal = "3" กรณีที่ 4 retVal = "4" กรณีที่ 5 retVal = "5" กรณีที่ 6 retVal = "6" กรณีที่ 7 retVal = "7" กรณีที่ 8 retVal = "8" กรณีที่ 9 retVal = "9" End Select serial_toChar = ฟังก์ชัน retValEnd&apos sen ds ข้อมูลที่มีอยู่ใน txBuff&apos หมายเหตุ: ตรวจสอบให้แน่ใจว่าบัฟเฟอร์มีการขึ้นบรรทัดใหม่ (13) ที่ส่วนท้าย!!Sub serial_SendBuffer() &apositerate ผ่าน ส่งแต่ละไบต์สิ้นสุดที่ carriage return txBuff. Location = 0 ขณะที่ 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 &aposmight ไม่ต้องการสิ่งนี้ &apossee ว่ามันเป็น carriage return ถ้า txBuff. Value = 13 &aposbreak ออกจากลูปของเรา Return End หาก &apos ไปที่อักขระถัดไป txBuff. Location = txBuff. Location + 1 WendEnd Sub

ขั้นตอนที่ 4: ตัดการเชื่อมต่อ Programming Connector

ตัดการเชื่อมต่อ Programming Connector
ตัดการเชื่อมต่อ Programming Connector
ตัดการเชื่อมต่อ Programming Connector
ตัดการเชื่อมต่อ Programming Connector

เมื่อถอดขั้วต่อการเขียนโปรแกรมแล้ว ให้ต่อส่วนประกอบสายเคเบิลใหม่ดังที่แสดงด้านล่าง อะแดปเตอร์ที่ทำในขั้นตอนที่ 1 ควรอนุญาตให้ CMUCam เสียบเข้ากับ OOPIC. โดยตรง

ขั้นตอนที่ 5: กดปุ่มเพื่อเริ่มต้นการสื่อสารแบบอนุกรม

ปุ่มบน IOLine 5 จะเริ่มต้นการสื่อสารแบบอนุกรมระหว่าง CMUCam และ OOPIC เนื่องจากพอร์ตอนุกรมใช้สำหรับทั้งการเขียนโปรแกรมและ CMUCam จึงน่าจะมีวิธีการสลับระหว่างทั้งสองแบบที่มีการควบคุม

โปรแกรมจะไม่ทำงานจนกว่าจะกดปุ่มนี้ หากคุณกดปุ่มอีกครั้ง พอร์ตอนุกรมจะหยุดทำงาน ทำให้คุณตั้งโปรแกรมได้ LED บน IOLine 6 แสดงสถานะพอร์ตอนุกรมปัจจุบัน (เปิดหมายถึงใช้งานอยู่ ปิดหมายถึงพร้อมสำหรับการเขียนโปรแกรม)

แนะนำ: