תוכן עניינים:

ממשק CMUCam2 ל- OOPIC: 5 שלבים
ממשק CMUCam2 ל- OOPIC: 5 שלבים

וִידֵאוֹ: ממשק CMUCam2 ל- OOPIC: 5 שלבים

וִידֵאוֹ: ממשק CMUCam2 ל- OOPIC: 5 שלבים
וִידֵאוֹ: Zigbee счетчик электроэнергии на 100 А с установкой на DIN рейку 2024, יולי
Anonim

עקוב אחר מאת המחבר:

חיבור שני OOBoards יחד באמצעות I2C
חיבור שני OOBoards יחד באמצעות I2C
חיבור שני OOBoards יחד באמצעות I2C
חיבור שני OOBoards יחד באמצעות I2C

סקירה כללית של ממשק CMUCam2 ל- ו- OOPIC.

שלב 1: יצירת כבל המתאם

יצירת כבל המתאם
יצירת כבל המתאם

1. עברו לרדיואק וקנו 2 כאלו: מחבר כוס הלחמה DB-9 זכר 2. סיכה הלחמה 5 במחבר A לסיכה 5 במחבר B (אם אתה מסתכל היטב על המחבר, הם מסומנים) 3. סיכה הלחמה 2 במחבר A לסיכה 3 במחבר B (אם אתה מסתכל היטב על המחבר, הם מסומנים) 4. סיכה הלחמה 3 במחבר A לסיכה 2 במחבר ב '(אם מסתכלים היטב על המחבר, הם מסומנים)

שלב 2: שנה את קצב השידור ב- CMUCam

שנה את קצב השידור ב- CMUCam
שנה את קצב השידור ב- CMUCam

שנה את קצב השידור של מצלמת CMUC ל -9600 באוד (הוסף מגשר למיקום 0).

שלב 3: חבר את כבל התכנות הרגיל וקוד ההעלאה

חבר את כבל התכנות הרגיל והעלה קוד
חבר את כבל התכנות הרגיל והעלה קוד

חבר את כבל התכנות הסטנדרטי והעלה את הקוד שלך. להלן קוד דוגמה שתוכל להתחיל. קוד זה יעקוב אחר תנועה באמצעות פקודות LF ו- FD. הוא יחליף את IOLine 7 (מחובר לנורית LED) וישקף את נורית מצב המעקב ב- CMUCam.

& apos ******** אובייקטים הקשורים ליציאה טורית ******** Dim serialPort כחדש oSerialPortDim txBuff As New oBuffer27 & aposchange 27 כדי להפוך את המאגר לגדול/קטן יותר Dim rxBuff כחדש oBuffer10Dim serialActive_LED כחדש oDIO1Dim toggleSerial_Button As ODIO1Dim toggleSerial_Event כחדש oEventDim toggleSerial_Wire כחדש oWireDim סדרתיReceive_Event As new oEventDim serialReceive_Wire כחדש oWire & apos ******** באגים הקשורים באגים ******** Dim statLED כחדש oDIO1***** ******* ***** ************************************* Sub sub & aposinitize alles main_init & aposset the mask output to עקוב אחר מרכז המסה CMUCAM_setOutputMask (2, 3) & aposload מסגרת ההבדל ההתחלתית שלנו CMUCAM_loadDiffFrame () & aposstart התחל את חישוב ההבדלים CMUCAM_startDiffCalc (10) סוף Sub_ub main_init & aposinitize סטטוס LED statLED. IOLine = 7 statLED. Direction_corti) סיום סו b & apos תהליכים שהתקבלו מנות תהליך משנה חבילה () Dim mx As Byte Dim my As Byte & aposcheck עבור שניהם Mx ו- My להיות 0 & apos ניתנים אם הם לא 0, המיקום יהיה כבוי (כלומר & aposT 12 34) & aposbut אז הם ניצחו & אפוסט לעמוד בקריטריונים 0 rxBuff. Location = 2 mx = rxBuff. Value rxBuff. Location = 4 my = rxBuff. Value & aposthe led אמור למצמץ יחד עם נורית המעקב במצלמה אם (mx = "0") ו- (my = "0") statLED = 0 אחר statLED = 1 סוף IfEnd Sub & apos **************************************** **** & apos*CMU Cam Functions*& apos ************************************** ******* & apossets הנתון הוביל להפעלה, כיבוי, אוטומטי & aposparam led מספר המספר של led (0, 1) & aposparam val off, on, auto (0, 1, 2) Function CMUCAM_ledSet (ledNum As Byte, val As Byte) מכיוון שבייט & aposVString לא עובד & אפוסט ממש בקומפיילר החדש … & aposnot בטוח לגבי הישן & 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" txBuff.uffx. Value = 13 & apossend הפקודה serial_SendBufferEnd Sub & aposstarts חישוב הבדלי מסגרות וסף גוש aposparam (0-9) Sub CMUCAM_startDiffCalc (thresh As Byte) Dim tens As Byte & apossetup מחרוזת הפקודה שלנו באופן ידני txBuff. Location = 0 txBuff. Value = "F" txBuff. 1 txBuff. Value = "D" txBuff. Location = 2 txBuff. Value = "" txBuff. Location = 3 עשרות = דורש/10 txBuff. Value = serial_toChar (עשרות) txBuff. Location = 4 עשרות = דרשן/10 txBuff. Value = serial_toChar (thresh-tens) txBuff. Location = 5 txBuff. Value = 1 3 & שלח את הפקודה serial_SendBufferEnd Sub & apossets את מסיכת הפלט וחבילת aposparam סוג חבילה למסיכה (0, 1, 2 וכו ') ראה עמוד 46 & ערך מסכת aposparam להחיל (0-255) תת CMUCAM_setOutputMask (packetType As Byte, mask As Byte) עמד מאות As Byte Dim tens As Byte & apossetup מחרוזת הפקודה שלנו באופן ידני txBuff. Location = 0 txBuff. Value = "O" txBuff. Location = 1 txBuff. Value = "M" txBuff. Location = 2 txBuff. Value = "" & סוג apospacket txBuff. Location = 3 txBuff. Value = serial_toChar (packetType) txBuff. Location = 4 txBuff. Value = "" & aposmask להחלת txBuff. Location = 5 מאות = מסכה/100 txBuff. Value = serial_toChar (מאות) txBuff. Location = 6 עשרות = (מסכה-מאות)/10 txBuff. Value = serial_toChar (tens) txBuff. Location = 7 txBuff. Value = serial_toChar (מסכה-מאות-עשרות) & החזרת apocarriage txBuff. Location = 8 txBuff. Value = 13 & הוסף את הפקודה serial_SendBufferEnd Sub & apos* ****************************************** ו- apos*כללי סדרות משנה *& apo s ********************************************* portSub serial_init () & aposinitize לחצן להפעלה וכיבוי של היציאה הטורית (הפעל להפעלה, כבה לתכנת) toggleSerial_Button. IOLine = 5 toggleSerial_Button. Direction = cvInput toggleSerial_Wire. Input. Link (toggleSerial_Button_). קישור (toggleSerial_Event. Operate) toggleSerial_Wire. Operate = cvTrue & aposinitialize אירוע כדי לחסום את הנתונים שלנו serialReceive_Wire. Input. Link (serialPort. Received) serialReceive_Wire. Output. Link (serialReceive_Event.eceperate_Event. Operate_Event. Operate_EventiveOceize) = 0 & aposinitize את היציאה הטורית שלנו serialPort. Baud = cv9600 & aposinitize את הסטטוס הסידורי שלנו LED serialActive_LED. IOLine = 6 serialActive_LED. Direction = cvOutput & aposwait כאן עד שהיציאה הטורקית שלנו תופעל בזמן ש- SerialPort. Operate = cvFalse WendEnd Sub ונקבל את הנתונים שלנו ולבקש את הנתונים שלנו ולבקש מאגר נתונים. השלמת מנות תת -סדרתי Re ceive_Event_Code () & apos.received הופך לשקר כאשר מאגר 4 בתים ריק בעוד (serialPort. Received = cvTrue) & אפוסקופיה של הבייט למאגר שלנו rxBuff. Value = serialPort. Value & aposcheck עבור סוף החבילה אם rxBuff. Value = 13 & חבילת חבילה & aposreset את המאגר ליציאה ההתחלה rxBuff. Location = 0 אחר rxBuff. Location = rxBuff. Location + 1 EndIf WendEnd Sub & aposturns על והיציאה הטורית לתכנות SubSub toggleSerial_Event_Code () אם serialPort. Operate = cvFalse serialPort. Type = cctive_Type_Clive_Crypt serialPort. Operate = cvFalse serialActive_LED = 0 End IfEnd Sub & apos ממיר מספר ספרה בודדת ל- characterFunction serial_toChar (inVal As Byte) As Byte Dim retVal כבתים בחר Case inVal מקרה 0 retVal = "0" מקרה 1 retVal = "1" מקרה 2 retal = "2" מקרה 3 retVal = "3" מקרה 4 retVal = "4" מקרה 5 retVal = "5" מקרה 6 retVal = "6" מקרה 7 retVal = "7" מקרה 8 retVal = "8" מקרה 9 retVal = "9" סוף בחר serial_toChar = retValEnd פונקציה & apos sen ds הנתונים הכלולים ב- txBuff & apos הערה: ודא שהמאגר מכיל החזרת עגלה (13) בסוף !! Sub serial_SendBuffer () & apositerate דרך, שליחת כל בייט, סיום על החזרת כרכרה txBuff. Location = 0 בעוד 1 serialPort. Value = txBuff. Value ooPIC. Delay = 1 & apose אולי לא צריך את זה & apossee אם מדובר בחזרת עגלה אם txBuff. Value = 13 & aposbreak מחוץ ללופ שלנו Return End If & aposgo לתו הבא txBuff. Location = txBuff. Location + 1 WendEnd Sub

שלב 4: נתק את מחבר התכנות

נתק את מחבר התכנות
נתק את מחבר התכנות
נתק את מחבר התכנות
נתק את מחבר התכנות

לאחר מחבר התכנות מנותק, חבר את מכלול הכבלים החדש כפי שמוצג להלן. המתאם שבוצע בשלב 1 אמור לאפשר חיבור CMUCam ישירות ל- OOPIC

שלב 5: לחץ על הלחצן כדי לאתחל תקשורת סדרתית

הכפתור ב- IOLine 5 יתחיל את התקשורת הטורית בין CMUCam ל- OOPIC. מכיוון שהיציאה הטורית משמשת הן לתכנות והן ל- CMUCam, כנראה שצריכה להיות דרך מבוקרת לעבור בין השניים.

התוכנית לא תפעל עד שתלחץ על לחצן זה. אם תלחץ שוב על הכפתור, היציאה הסדרתית לא תהיה פעילה, ותאפשר לך לתכנת אותו. נורית ה- IOLine 6 מציגה את מצב היציאה הטורקית הנוכחית (מופעל מופעל, כבוי פירושו מוכן לתכנות).

מוּמלָץ: