תוכן עניינים:
- שלב 1: דרישת חומרה
- שלב 2: נושאים מכוסים
- שלב 3: יסודות אוטובוס I2C
- שלב 4: מודול מרבב TCA9548A I2C
- שלב 5:
- שלב 6: כיצד המאסטר שולח ומקבל נתונים
- שלב 7: קוד
- שלב 8: סורק I2C
- שלב 9: חיווט והדגמה
- שלב 10: יתרונות וחסרונות
- שלב 11: תודה
וִידֵאוֹ: מודול מרבב TCA9548A I2C - עם Arduino ו- NodeMCU: 11 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
האם אי פעם הגעת למצב שבו היית צריך לחבר שניים, שלושה או יותר חיישני 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
מעגל בין-משולב מבוטא 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 בעל שמונה ערוצים (דו-כיווני) המאפשר לשלוט בשמונה התקני 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' המצורף כדי למצוא את כתובת ה- 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
מוּמלָץ:
מודול מונו-סטריאו-מודול סטריאו- Eurorack מבוקר: 3 שלבים
פורמט מודול סטריאו מודול-סטריאו-אירווראק נשלט על ידי קורות חיים: המהפכה בסינתרים מודולריים וחצי-מודולריים הניבה מגוון יפהפה של אפשרויות מונו-סינתר חדשות לשימוש מוזיקה אלקטרונית ורעש, אך בעיה אחת עם מונו-סינתרים (ורוב המודולים של Eurorack ו /או זרימות האות) היא שלא רק שהם
תצוגת LCD I2C / IIC - השתמש ב- LCD SPI לתצוגת LCD I2C באמצעות מודול SPI ל- IIC עם Arduino: 5 שלבים
תצוגת LCD I2C / IIC | השתמש ב- LCD SPI לתצוגת LCD I2C באמצעות מודול SPI ל- IIC עם Arduino: היי חבר'ה מכיוון של- SPI LCD 1602 רגיל יש יותר מדי חוטים להתחבר כך שקשה מאוד לחבר אותו ל- arduino אבל יש מודול אחד זמין בשוק שיכול המר את תצוגת SPI לתצוגת IIC, אז עליך לחבר רק 4 חוטים
לוח HiFive1 Arduino עם מודול מודול WiFi ESP-01: 5 שלבים
לוח Arduino HiFive1 עם מדריך מודול WiFi של ESP-01: HiFive1 הוא הלוח הראשון מבוסס RISC-V התואם Arduino שנבנה עם מעבד FE310 מבית SiFive. הלוח מהיר פי 20 מ- Arduino UNO אך בדומה ללוח UNO, הוא חסר כל קישוריות אלחוטית. למרבה המזל, ישנם מספר לא יקרים
מודול מודול ממסר 5V לעבודה עם פטל פטל: 4 שלבים
מודול ממסר 5V לעבודה עם פטל פטל: בימים אלה ממש קל לשים את ידכם על לוח ממסר, אך מהר תגלו שרובם מיועדים ל -5 V אשר יכולים להוות בעיה עבור פטל עניים או כל אחר מיקרו -בקר פועל על 3.3V, פשוט אין להם את הוולטה
Arduino+Java (מרבב): 16 שלבים
Arduino+Java (מרבב): עוצמה כנדרש: 1 כבל Arduino Uno con USB.1 Protoboard. 8 כבלים. 5 Leds.1 Resistencia 330