विषयसूची:

CMUCam2 को OOPIC में इंटरफेस करना: 5 कदम
CMUCam2 को OOPIC में इंटरफेस करना: 5 कदम

वीडियो: CMUCam2 को OOPIC में इंटरफेस करना: 5 कदम

वीडियो: CMUCam2 को OOPIC में इंटरफेस करना: 5 कदम
वीडियो: Episode 3: Kwabena Agyeman | OpenMV President & Co-Founder 2024, जुलाई
Anonim

लेखक द्वारा अधिक का पालन करें:

I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना
I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना
I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना
I2C का उपयोग करके दो OOBoards को एक साथ जोड़ना

CMUCam2 को और OOPIC से कैसे इंटरफ़ेस करें, इसका अवलोकन।

चरण 1: एडेप्टर केबल बनाना

एडेप्टर केबल बनाना
एडेप्टर केबल बनाना

1. गोटो रेडियोशैक और इनमें से 2 खरीदें:पुरुष डीबी-9 सोल्डर कप कनेक्टर2। कनेक्टर ए पर सोल्डर पिन 5 कनेक्टर बी पर 5 पिन करने के लिए (यदि आप कनेक्टर पर ध्यान से देखते हैं, तो वे चिह्नित होते हैं)3। कनेक्टर ए पर सोल्डर पिन 2 से कनेक्टर बी पर 3 पिन करने के लिए (यदि आप कनेक्टर पर ध्यान से देखते हैं, तो वे चिह्नित हैं) 4। कनेक्टर ए पर सोल्डर पिन 3 कनेक्टर बी पर 2 पिन करने के लिए (यदि आप कनेक्टर पर ध्यान से देखते हैं, तो वे चिह्नित होते हैं)

चरण 2: CMUCam पर बॉड दर बदलें

CMUCam पर बॉड दर बदलें
CMUCam पर बॉड दर बदलें

CMUCamera की बॉड दर को ९६०० बॉड में बदलें (जम्पर को स्थिति ० में जोड़ें)।

चरण 3: मानक प्रोग्रामिंग केबल कनेक्ट करें और कोड अपलोड करें

मानक प्रोग्रामिंग केबल कनेक्ट करें और कोड अपलोड करें
मानक प्रोग्रामिंग केबल कनेक्ट करें और कोड अपलोड करें

मानक प्रोग्रामिंग केबल कनेक्ट करें और अपना कोड अपलोड करें। आपको आरंभ करने के लिए यहां कुछ उदाहरण कोड दिए गए हैं। यह कोड LF और FD कमांड का उपयोग करके गति को ट्रैक करेगा। यह IOline 7 (एक LED से जुड़ा हुआ) को टॉगल करेगा और CMUCam पर ट्रैकिंग स्थिति LED को मिरर करेगा।

&apos ********* सीरियल पोर्ट संबंधित ऑब्जेक्ट ********* नए oSerialPortDim txBuff के रूप में नए oSerialPortDim txBuff के रूप में मंद सीरियलपोर्ट और बफ़र को बड़ा/छोटा बनाने के लिए मंद rxBuff को नए oBuffer10Dim serialActive_LED के रूप में नए oDIO1Dim टॉगलSerial_Button के रूप में बदलें नया oDIO1Dim टॉगलSerial_Event नए oEventDim के रूप में टॉगलSerial_Wire नए oWireDim serialReceive_Event के रूप में नए oEventDim serialReceive_Wire के रूप में नए oWire और apos के रूप में ******* डिबग संबंधित ऑब्जेक्ट ********* डिम स्टेटलेड नए oDIO1 और apos के रूप में ******* ***********&apos* जेनेरिक सबरूटीन्स *&apos****** *************************************** उप मुख्य और सब कुछ aposinitialize main_init और हमारे आउटपुट मास्क को एपॉसेट करें केवल बड़े पैमाने के केंद्र का अनुसरण करें CMUCAM_setOutputMask(2, 3) और हमारे प्रारंभिक अंतर फ्रेम CMUCAM_loadDiffFrame() को लोड करें और अंतर गणना शुरू करें CMUCAM_startDiffCalc(10) End SubSub main_init & aposinitialize a Status LED statLED. IOline = 7 statLED. Direction = cvOutput और apos में हमारे सीरियल पोर्ट को प्रारंभ करें।) अंत सु b&aposprocesses प्राप्त पैकेटसब प्रोसेसपैकेट () Dim mx As Byte Dim my As Byte & aposcheck Mx और My दोनों के लिए 0 & aposgranted यदि वे 0 नहीं हैं, तो स्थान बंद हो जाएगा (यानी & aposT 12 34) और apos लेकिन फिर वे 0 मानदंड rxBuff को पूरा करेंगे और करेंगे. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe LED को कैमरे पर ट्रैकिंग LED के साथ एक साथ ब्लिंक करना चाहिए यदि (mx = "0") और (my = "0") statLED = 0 और स्टेटलेड = 1 एंड इफएंड सब एंड apos ******************************************* ****&apos* सीएमयू कैम फंक्शन *&apos************************* ******* और दिए गए लेड को चालू, बंद, स्वचालित और अपोस्पारम एलईडी की संख्या (0, 1) और अपोस्पारम वैल ऑफ, ऑन, ऑटो (0, 1, 2) फ़ंक्शन CMUCAM_ledSet (ledNum As बाइट, वैल बाइट के रूप में) को एपॉसेट करता है) चूंकि बाइट और aposVString नए कंपाइलर में सही काम कर रहा था… और पुराने के बारे में निश्चित नहीं था &apostxBuff. VString = "L0 0" और हमारे कमांड स्ट्रिंग को मैन्युअल रूप से 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 उप और प्रारंभिक अंतर फ्रेमउप CMUCAM_loadDiffFrame() और हमारे कमांड स्ट्रिंग को मैन्युअल रूप से txBuff. Location = 0 txBuff. Value = "L" txBuff. Location = 1 txBuff. Value = "F" txBuff. Location = 2 txBuff। मान = 13 और आदेश भेजें serial_SendBufferEnd उप और फ्रेम अंतर की गणना शुरू करता है और aposparam थ्रेश थ्रेशोल्ड (0-9)उप CMUCAM_startDiffCalc (बाइट के रूप में थ्रेश) बाइट के रूप में मंद दसियों और हमारे कमांड स्ट्रिंग को मैन्युअल रूप से txBuff. Location = 0 txBuff. Value = "F" स्थान पर सेट करें। 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 दहाई = थ्रेश/10 txBuff. Value = serial_toChar(tens) txBuff. Location = 4 दहाई = थ्रेश/10 txBuff. Value = serial_toChar(थ्रेश-टेन्स) txBuff. Location = 5 txBuff. Value = 1 3 &apossend serial_SendBufferEnd आउटपुट मास्क और aposparam पैकेट टाइप को मास्क (0, 1, 2, आदि) में उप&एपॉसेट करता है, पेज 46 देखें और लागू करने के लिए aposparam मास्क मास्क मान (0-255) Sub CMUCAM_setOutputMask (पैकेट टाइप बाइट के रूप में, बाइट के रूप में मास्क) मंद सैकड़ों बाइट डिम दसियों के रूप में बाइट और हमारे कमांड स्ट्रिंग को मैन्युअल रूप से txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" और apospacket टाइप txBuff। स्थान = 3 txBuff. Value = serial_toChar(packetType) txBuff. Location = 4 txBuff. Value = "" &aposmask txBuff लागू करने के लिए। स्थान = 5 सौ = मास्क/100 txBuff. Value = serial_toChar (सैकड़ों) txBuff. Location = 6 tens = (मास्क-सैकड़ों)/10 txBuff. Value = serial_toChar(tens) txBuff. Location = 7 txBuff. Value = serial_toChar (मास्क-सैकड़ों-टेन्स) और aposcarriage रिटर्न txBuff. Location = 8 txBuff. Value = 13 &aposendBufferEnd Sub कमांड सीरियल_भेजें_भेजें ************************************************** सामान्य सीरियल सबरूटीन्स *&apo s ************************************************ धारावाहिक को प्रारंभ करता है पोर्टसब सीरियल_इनिट () सीरियल पोर्ट को चालू और बंद करने के लिए एक बटन को प्रारंभ करें (चलाने के लिए चालू करें, प्रोग्राम को बंद करें) टॉगल सीरियल_बटन। आईओलाइन = 5 टॉगल सीरियल_बटन। दिशा = सीवी इनपुट टॉगल सीरियल_वायर। इनपुट। लिंक (टॉगलसेरियल_बटन। वैल्यू) टॉगल सीरियल_वायर। आउटपुट। Link(toggleSerial_Event. Operate) टॉगलSerial_Wire. Operate = cvTrue और हमारे डेटा को बफ़र करने के लिए एक ईवेंट को प्रारंभ करें। = 0 हमारे सीरियल पोर्ट सीरियलपोर्ट को और aposinitialize। बॉड = cv9600 & aposinitialize हमारे सीरियल स्टेटस LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput और यहां तब तक प्रतीक्षा करें जब तक हमारा सीरियल पोर्ट सक्रिय न हो जाए। सीरियलपोर्ट के दौरान। पैकेट पूर्णताउप धारावाहिकRe ceive_Event_Code() &apos.received असत्य हो जाता है जब 4बाइट बफर खाली होता है जबकि (serialPort. Received = cvTrue) और बाइट को हमारे बफर rxBuff. Value = serialPort. Value और aposcheck के लिए पैकेट के अंत के लिए यदि rxBuff. Value = 13 और aposprocess पैकेट प्रक्रिया पैकेट () बफर को आरंभिक rxBuff में &aposreset करें। serialPort. Operate = cvFalse serialActive_LED = 0 एंड इफएंड सब एक सिंगल डिजिट नंबर को कैरेक्टर में कन्वर्ट करता हैFunction serial_toChar(inVal as Byte) बाइट डिम रेटवैल के रूप में बाइट सिलेक्ट केस इनवैल केस 0 रेटवैल = "0" केस 1 रेटवैल = "1" केस 2 रेटवैल = "2" केस 3 रेटवैल = "3" केस 4 रेटवैल = "4" केस 5 रेटवैल = "5" केस 6 रेटवैल = "6" केस 7 रेटवैल = "7" केस 8 रेटवैल = "8" केस 9 रेटवैल = "9" एंड सिलेक्ट करें serial_toChar = retValEnd फंक्शन और apos sen ds txBuff&apos में निहित डेटा नोट: सुनिश्चित करें कि बफर में अंत में एक कैरिज रिटर्न (13) है !!सब serial_SendBuffer() & apositerate के माध्यम से, प्रत्येक बाइट भेजकर, कैरिज रिटर्न पर अंत txBuff. Location = 0 जबकि 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 और इसकी आवश्यकता नहीं हो सकती है और देखें कि क्या यह कैरिज रिटर्न था यदि txBuff. Value = 13 और हमारे लूप से बाहर निकल जाता है तो रिटर्न एंड यदि अगले वर्ण txBuff. Location = txBuff. Location + 1 WendEnd Sub पर जाता है

चरण 4: प्रोग्रामिंग कनेक्टर को डिस्कनेक्ट करें

प्रोग्रामिंग कनेक्टर को डिस्कनेक्ट करें
प्रोग्रामिंग कनेक्टर को डिस्कनेक्ट करें
प्रोग्रामिंग कनेक्टर को डिस्कनेक्ट करें
प्रोग्रामिंग कनेक्टर को डिस्कनेक्ट करें

प्रोग्रामिंग कनेक्टर के डिस्कनेक्ट होने के बाद, नीचे दिखाए गए अनुसार नई केबल असेंबली संलग्न करें। चरण 1 में बने एडॉप्टर को CMUCam को सीधे OOPIC में प्लग करने की अनुमति देनी चाहिए

चरण 5: सीरियल संचार शुरू करने के लिए बटन दबाएं

IOline 5 का बटन CMUCam और OOPIC के बीच धारावाहिक संचार शुरू करेगा। चूंकि सीरियल पोर्ट प्रोग्रामिंग और सीएमयूकैम दोनों के लिए उपयोग किया जाता है, इसलिए शायद दोनों के बीच टॉगल करने का एक नियंत्रित तरीका होना चाहिए।

यह बटन दबाए जाने तक प्रोग्राम नहीं चलेगा। यदि आप फिर से बटन दबाते हैं, तो सीरियल पोर्ट निष्क्रिय हो जाएगा, जिससे आप इसे प्रोग्राम कर सकेंगे। IOline 6 पर LED वर्तमान सीरियल पोर्ट स्थिति (सक्रिय साधन पर, बंद का मतलब प्रोग्रामिंग के लिए तैयार) प्रदर्शित करता है।

सिफारिश की: