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

מודול מרבב TCA9548A I2C - עם Arduino ו- NodeMCU: 11 שלבים
מודול מרבב TCA9548A I2C - עם Arduino ו- NodeMCU: 11 שלבים

וִידֵאוֹ: מודול מרבב TCA9548A I2C - עם Arduino ו- NodeMCU: 11 שלבים

וִידֵאוֹ: מודול מרבב TCA9548A I2C - עם Arduino ו- NodeMCU: 11 שלבים
וִידֵאוֹ: Как использовать 2 или более лазерных датчиков расстояния VL53L0X 2024, נוֹבֶמבֶּר
Anonim
Image
Image

האם אי פעם הגעת למצב שבו היית צריך לחבר שניים, שלושה או יותר חיישני I2C לארדואינו שלך רק כדי להבין שלחיישנים יש כתובת I2C קבועה או זהה. יתר על כן, לא יכולים להיות שני מכשירים עם אותה כתובת על אותם סיכות SDA/SCL!

אז מהן האפשרויות שלך? שים את כולם על מרבב TCA9548A 1-to-8 I2C כדי לגרום לכולם לדבר אחד עם השני באותו אוטובוס! ה- TCA9548A Breakout מאפשר תקשורת עם מכשירי I2C מרובים בעלי אותה כתובת מה שהופך אותו פשוט להתממשק איתם.

שלב 1: דרישת חומרה

נושאים מכוסים
נושאים מכוסים

להדרכה זו אנו צריכים:

- לוח לחם

- מרבב TCA9548A I2C

- Arduino Uno/Nano מה שנוח

- NodeMCU

- כמה תצוגות OLED מסוג I91C 0.91 ו- 0.96

- כבלים מגשרים, ו

- כבל USB להעלאת הקוד

שלב 2: נושאים מכוסים

נתחיל את הדיון בהבנת היסודות של טכנולוגיית I2C

לאחר מכן נלמד על המרבב TCA9548A וכיצד המאסטר והעבד שולח ומקבל נתונים באמצעות טכנולוגיית I2C. לאחר מכן נבדוק כיצד נוכל לתכנת ולהשתמש במכפיל בפרוייקט שלנו באמצעות Arduino ו- NodeMCU. הבא, אראה לך מידע מהיר הדגמה באמצעות 8 תצוגות OLED I2C ולבסוף נסיים את ההדרכה על ידי דיון על היתרונות והחסרונות של מרבב TCA9548A

שלב 3: יסודות אוטובוס I2C

יסודות האוטובוס I2C
יסודות האוטובוס I2C
יסודות האוטובוס I2C
יסודות האוטובוס I2C
יסודות האוטובוס I2C
יסודות האוטובוס I2C

מעגל בין-משולב מבוטא I-squared-C (I²C) או I2C הוא טכנולוגיית אוטובוס דו-חוטית (ובכן למעשה 4 חוטים מכיוון שאתה צריך גם את VCC ו- Ground) המשמשת לתקשורת בין מעבדים וחיישנים מרובים.

שני החוטים הם:

* SDA - נתונים סידוריים (קו נתונים) ו-

* SCL - שעון סידורי (קו שעון)

זכור, שני הקווים הללו הם "סינכרוניים" "דו-כיווניים" "פתוחים" ו"מושכים עם נגדים ".

טכנולוגיית האוטובוסים I2C תוכננה במקור על ידי Philips Semiconductors בתחילת שנות ה -80 כדי לאפשר תקשורת קלה בין רכיבים הנמצאים על אותו מעגל.

עם I2C, אתה יכול לחבר מספר עבדים למאסטר יחיד (כמו SPI) או שאתה יכול לקבל מספר מאסטרים השולטים בעבדים בודדים או מרובים. אדונים וגם עבדים יכולים להעביר ולקבל נתונים. אז מכשיר באוטובוס I2C יכול להיות באחת מארבע המצבים הבאים:

* שידור מאסטר - צומת מאסטר שולחת נתונים לעבד* קבלת מאסטר - צומת מאסטר מקבלת נתונים מעבד

* העברת עבדים - צומת העבדים שולחת נתונים למאסטר

* קבלת עבדים - צומת העבדים מקבל נתונים מהמאסטר

I2C הוא 'פרוטוקול תקשורת סדרתי' 'למרחק קצר', ולכן הנתונים מועברים 'טיפין' לפי החוט היחיד או קו ה- SDA. הפלט של סיביות מסונכרן לדגימת הביטים על ידי אות שעון 'משותף' בין המאסטר לעבד. אות השעון נשלט תמיד על ידי המאסטר. המאסטר יוצר את השעון ויוזם תקשורת עם עבדים.

אז, לסיכום>

מספר החוטים בשימוש: 2

סינכרוני או אסינכרוני: סינכרוני

סדרתי או מקביל: סדרתי

אות השעון נשלט על ידי: צומת מאסטר

מתח בשימוש: +5 V או +3.3 וולט

מספר מרבי של מאסטרס: ללא הגבלה

מספר עבדים מרבי: 1008

מהירות מרבית: מצב רגיל = 100kbps

מצב מהיר = 400kbps

מצב מהירות גבוהה = 3.4 Mbps

מצב מהיר במיוחד = 5 Mbps

שלב 4: מודול מרבב TCA9548A I2C

מודול מרבב TCA9548A I2C
מודול מרבב TCA9548A I2C
מודול מרבב TCA9548A I2C
מודול מרבב TCA9548A I2C
מודול מרבב TCA9548A I2C
מודול מרבב TCA9548A I2C

TCA9548A הוא מרבב I2C בעל שמונה ערוצים (דו-כיווני) המאפשר לשלוט בשמונה התקני I2C נפרדים על ידי אוטובוס I2C מארח יחיד. אתה רק צריך לחבר את חיישני I2C לאוטובוסים המורבבים SCn / SDn. לדוגמה, אם דרושים שמונה תצוגות OLED זהות ביישום, ניתן לחבר אחת מכל תצוגה בכל אחד מהערוצים הבאים: 0-7.

המרבב מתחבר לקווי VIN, GND, SDA ו- SCL של בקר הבקרה. לוח הפריצה מקבל VIN מ- 1.65V עד 5.5V. שני קווי ה- SDA וה- SCL הקלט מחוברים ל- VCC באמצעות נגד משיכה של 10K (גודל הנגד הנמשך נקבע על פי כמות הקיבול בקווי I2C). המרבב תומך בפרוטוקולים I2C רגילים (100 קילוהרץ) ומהירים (400 קילו -הרץ). כל סיכות הקלט/פלט של TCA9548A הן בעלות סובלנות של 5 וולט וניתן להשתמש בהן גם לתרגום מתח גבוה לנמוך או נמוך לגבוה.

מומלץ לשים נגדי משיכה בכל ערוצי TCA9548A, גם אם המתחים זהים. הסיבה לכך היא בגלל מתג ה- NMOS הפנימי. הוא אינו מעביר מתח גבוה במיוחד, מצד שני הוא משדר מתח נמוך מאוד. ניתן להשתמש ב- TCA9548A גם לתרגום מתח, המאפשר שימוש במתח אוטובוס שונה בכל זוג SCn/SDn כך שחלקים של 1.8-V, 2.5-V או 3.3-V יכולים לתקשר עם חלקים של 5-V. זה מושג על ידי שימוש בנגדי משיכה חיצוניים כדי למשוך את האוטובוס למתח הרצוי עבור המאסטר וכל ערוץ עבדים.

אם בקר המיקרו מזהה התנגשות באוטובוס או פעולה לא תקינה אחרת, ניתן לאפס את TCA9548A באמצעות הצהרת שפל לסיכה RESET.

שלב 5:

תמונה
תמונה
תמונה
תמונה
תמונה
תמונה

TCA9548 מאפשר למיקרו-בקר יחיד לתקשר עם עד '64 חיישנים 'כולם עם אותה כתובת I2C שונה או שונה על ידי הקצאת ערוץ ייחודי לכל תת-אוטובוס של חיישן עבדים.

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

יכול להיות שבמקסימום 8 של מרבבים אלה מחוברים יחדיו בכתובות 0x70-0x77 על מנת לשלוט על 64 מאותם חלקים ממוקדים I2C. על ידי חיבור שלושת סיביות הכתובת A0, A1 ו- A2 ל- VIN אתה יכול לקבל שילוב אחר של הכתובות. כך נראה בית כתובת של TCA9548A. 7 סיביות ראשונות מתחברות ליצירת כתובת העבדים. החלק האחרון בכתובת העבד מגדיר את הפעולה (קריאה או כתיבה) שיש לבצע. כאשר הוא גבוה (1), קריאה נבחרת, ואילו נמוך (0) בוחר פעולת כתיבה.

שלב 6: כיצד המאסטר שולח ומקבל נתונים

כיצד המאסטר שולח ומקבל נתונים
כיצד המאסטר שולח ומקבל נתונים
כיצד המאסטר שולח ומקבל נתונים
כיצד המאסטר שולח ומקבל נתונים

להלן ההליך הכללי של מאסטר לגשת למכשיר עבדים:

1. אם מאסטר רוצה לשלוח נתונים לעבד (WRITES):

-משדר מאסטר שולח מצב START ואחריו כתובות מקלט העבדים ו- R/W מוגדר ל- 0

-משדר מאסטר שולח נתונים ב'רגיסי הבקרה של 8 סיביות 'למקלט העבדים כאשר העבד מכיר בכך שהוא מוכן

-משדר מאסטר מסיים את ההעברה במצב STOP

2. אם מאסטר רוצה לקבל או לקרוא נתונים מעבד (READS):

-מקלט ראשי שולח מצב START ואחריו כתובות מקלט העבדים ו- R/W מוגדר ל -1

-מקלט ראשי שולח את הרישום המבוקש לקריאה למשדר עבדים

-מקלט ראשי מקבל נתונים ממשדר העבדים

- ברגע שכל הבייטים מתקבלים המאסטר שולח איתות NACK לעבד כדי לעצור את התקשורת ולשחרר את האוטובוס

- מאסטר-מקלט מסיים את ההעברה במצב STOP

אוטובוס נחשב לא פעיל אם קווי SDA ו- SCL גבוהים לאחר מצב STOP.

שלב 7: קוד

קוד
קוד

כעת, Int הקוד מאפשר להתחיל על ידי הכללת ספריית "Wire" ובהגדרת כתובת המרבבים.

#כלול "Wire.h"

#כלול "U8glib.h"

#define MUX_Address 0x70 // TCA9548A address encoders

לאחר מכן עלינו לבחור את היציאה שאליה ברצוננו לתקשר ולשלוח את הנתונים עליה באמצעות פונקציה זו:

void selectI2CChannels (uint8_t i) {

אם (i> 7) חזור;

שידור Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

לאחר מכן נאתחל את התצוגה בקטע ההתקנה על ידי קריאה "u8g.begin ();" עבור כל תצוגה המצורפת ל- MUX "tcaselect (i);"

לאחר האתחול, נוכל לעשות מה שאנחנו רוצים רק על ידי קריאת הפונקציה "tcaselect (i);" כאשר "i" הוא הערך של האוטובוס המרובה ולאחר מכן שליחת הנתונים והשעון בהתאם.

שלב 8: סורק I2C

סורק I2C
סורק I2C

רק למקרה שאם אינך בטוח לגבי כתובת המכשיר של מגן I2C שלך, הפעל את קוד 'סורק I2C' המצורף כדי למצוא את כתובת ה- hex של המכשיר שלך. בעת הטעינה ל- Arduino, הסקיצה תסרוק את רשת I2C ותציג את הכתובות המגיבות.

שלב 9: חיווט והדגמה

חיווט והדגמה
חיווט והדגמה
חיווט והדגמה
חיווט והדגמה

תִיוּל:

נתחיל בחיבור המרבב ללוח NodeMCU. לְחַבֵּר:

VIN עד 5V (או 3.3V)

GND לקרקע

SDA ל- D2 ו-

סיכות SCL ל- D1 בהתאמה

ללוח Arduino חבר:

VIN עד 5V (או 3.3V)

GND לקרקע

SDA ל- A4 ו-

סיכות SCL עד A5 בהתאמה

ברגע שה- MUX מחובר לבקר המיקרו, אתה רק צריך לחבר את החיישנים לזוגות SCn / SDn.

עכשיו, בואו לבדוק את ההדגמה המהירה הזו שבה חיברתי 8 תצוגות OLED למכפיל TCA9548A. מכיוון שמסכים אלה משתמשים בתקשורת I2C, הם מתקשרים עם הארדואינו באמצעות 2 סיכות בלבד.

שלב 10: יתרונות וחסרונות

יתרונות וחסרונות
יתרונות וחסרונות

יתרונות

* תקשורת דורשת רק שני קווי אוטובוס (חוטים)

* קיימים יחסי אמן/עבד פשוטים בין כל המרכיבים

* אין דרישות קפדניות של קצב שידור כמו למשל עם RS232, המאסטר יוצר שעון אוטובוס

* חומרה פחות מסובכת מאשר UARTs

* תומך באדונים מרובים ובעבדים מרובים

* סיביות ACK/NACK נותנות אישור לכך שכל מסגרת מועברת בהצלחה

* I2C הוא 'אוטובוס רב-מאסטר אמיתי' המספק בוררות וגילוי התנגשויות

* כל התקן המחובר לאוטובוס ניתן להתייחסות תוכנה באמצעות כתובת ייחודית

* רוב מכשירי I2C יכולים לתקשר במהירות של 100kHz או 400kHz

* I²C מתאים לציוד היקפי שבו הפשטות ועלות הייצור הנמוכה חשובות יותר ממהירות

* פרוטוקול ידוע ונפוץ

חסרונות

* קצב העברת נתונים איטי יותר מאשר SPI

* גודל מסגרת הנתונים מוגבל ל -8 סיביות

* נדרשת יישום חומרה מסובכת יותר מטכנולוגיית SPI

מוּמלָץ: