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

חיבור שני OOBoards יחד באמצעות I2C: 4 שלבים
חיבור שני OOBoards יחד באמצעות I2C: 4 שלבים

וִידֵאוֹ: חיבור שני OOBoards יחד באמצעות I2C: 4 שלבים

וִידֵאוֹ: חיבור שני OOBoards יחד באמצעות I2C: 4 שלבים
וִידֵאוֹ: Control 32 Servo over Wi-Fi using ESP32 and PCA9685 via desktop or mobile phone V5 2024, נוֹבֶמבֶּר
Anonim
חיבור שני OOBoards יחד באמצעות I2C
חיבור שני OOBoards יחד באמצעות I2C

מדריך זה מכסה כיצד לחבר שני OOBoards באמצעות I2C.

שלב 1: התחברות לאוטובוס רשת I2C

חיבור לאוטובוס רשת I2C
חיבור לאוטובוס רשת I2C
חיבור לאוטובוס רשת I2C
חיבור לאוטובוס רשת I2C

ישנם שני אוטובוסים I2C ב- OOBoards, אוטובוס מקומי ואוטובוס רשת.

הקוד OOPIC הוא בעצם שפה מתפרשת, כלומר ה"קוד "מאוחסן ב- EEPROM, וקורא/מתפרש על ידי המיקרו -מעבד בזמן אמת. ה- EEPROM משתמש באוטובוס LOCAL I2C כדי לתקשר עם המיקרו -בקר. אם היית מסתכל על האוטובוס המקומי הזה באוסילוסקופ, היית רואה פטפוט מתמיד. בלוחות OOBoards, האוטובוס המקומי הוא מה שמחובר למחבר I2C, זה לא בהכרח מה שאנחנו רוצים. האוטובוס NETWORK הוא בדרך כלל האוטובוס המשמש לתקשורת עם התקנים/oopics אחרים, ב- OOBoards אין לאוטובוס זה מחבר. על מנת לגשת לאוטובוס זה, עליך להלחים חוטים לפינים 42 ו -37 של המיקרו -בקר (מסומן N_SDA, N_SCL בסכימה בהתאמה).

שלב 2: הוסף את נגדי Pullup

לאחר חיבורי SDA ו- SCL על כל מעבד, שני הלוחות יכולים

להיות מקושרים יחד על ידי חיבור SDA ל- SDA, SCL ל- SCL, וחיבור חוט קרקע משותף בין הלוחות. תצטרך גם נגד משיכה בכל קו (השתמשתי ב- 12k, אבל זה בדיוק מה שהיה לי בשכיבה). שים לב שאתה צריך רק נגד זרימה אחד לכל שורה בסך הכל שני נגדים (לא 4).

שלב 3: תכנת את העבד

כעת, כשהחיבורים הפיזיים קיימים, יהיה עליך לתכנת את מיקרו -הבקר של העבדים. הוספתי קצת קוד למטה שאמור להתחיל אותך.

Dim SLAVE as New oDDELinkDim LED כחדש oDIO1Sub Main () & aposset כתובת I2C שלנו ל -2 (שימו לב, זה חייב להתאים לשלט הרחוק & aposaddress שהגדרנו בקוד האב) ooPIC. Node = 2 & apossetup LED LED. IOLine = 5 LED. כיוון = cvOutput & aposnow, קשר את הפלט של אובייקט DDELink שלנו ל- & aposthe LED והפעל אותו … כעת באופן אוטומטי, הנורית תמצמץ SLAVE. Output. Link (LED) SLAVE. Operate = cvTrueEnd Sub

שלב 4: תכנת המאסטר

לבסוף, תכנת את המיקרו -בקר הראשי. שימו לב היטב לקווים המגדירים את נכס המיקום של DDELink: אלא אם זה מוגדר כראוי, זה לא יעבוד!

Dim Master As new oDDELinkDim wire as New oWireDim hz1 as New oBitSub Main () & aposlink timer 1 second to a bit we can access & bitthos bit will now switch once to second wire. Input. Link (ooPIC. Hz1) wire. Output. קישור (hz1) wire. Operate = cvTrue & aposthis מגדיר את כתובת I2C של המיקרו -בקר המקומי שלנו וממשק I2C של אפוס אינו פעיל עד שנקבעה כתובת ooPIC. Node = 1 & aposnow אנו מתקינים את אובייקט DDELink שלנו, הקלט שלנו הוא ביט hz1 והערך aposnote כי לאובייקט יש גם מאפיין פלט המשמש & apos כאשר אנו נמצאים במצב recieve Master. Input. Link (hz1) & aposthis היא כתובת I2C של הבקר המרוחק, שימו לב כי & aposin את קוד העבד, אנו אומרים לו שיש לו כתובת של 2 Master. Node = 2 & aposugh … זהו החלק המחורבן, זוהי "הכתובת" של DDELink & aposobject במרחב הזיכרון של slave ו- aposs. על מנת להבין את המספר הזה, עלינו לפתוח ולרכז את קוד העבדים, ולאחר מכן עבור אל View-> קוד הידור. & apos לחפש משהו כמו: & aposL *. Construct. Begin; עמעום כחדש oDDELink & aposwhere * הוא מספר כלשהו, והוא שמו של אובייקט DDELink שלך & aposin קוד העבד שלך. השורה שמתחתיה צריכה לקרוא משהו כמו: & aposC0020: 041; המספר הזה … כתובת ושליטה מימין ל & apos: & apos הוא הכתובת של העבד DDELink אובייקט Master. Location = 41 & aposthis אומר לאובייקט שנשלח נתונים (כלומר, העתק נתונים מהנכס שלנו. קלט & אפוסטו של נכסי הפלט של העבדים (שים לב, אם אתה מגדיר זאת לקבל, זה ההפך) Master. Direction = cvSend & posturn it on, אבל שום דבר עדיין לא קורה … Master. Operate = cvTrue Do & aposcheck כדי לבדוק אם אנו מעבירים כרגע נתונים אם Master. Transmitting = cvFalse ואז & הערכת ערך זה ל -1 תגרום למאסטר לשלוח את הערך אל העבד והערך, זה מתאפס אוטומטית ל 0 עם השלמת השידור Master. Sync = סוף אחד אם LoopEnd Sub

מוּמלָץ: