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

ממסר I2C פגש את Arduino IDE: 5 שלבים
ממסר I2C פגש את Arduino IDE: 5 שלבים

וִידֵאוֹ: ממסר I2C פגש את Arduino IDE: 5 שלבים

וִידֵאוֹ: ממסר I2C פגש את Arduino IDE: 5 שלבים
וִידֵאוֹ: How to Build LDmicro Arduino PLC ( Adding I2C LCD) 2024, יולי
Anonim
ממסר I2C פגש את Arduino IDE
ממסר I2C פגש את Arduino IDE

אני מזמין לוח ממסר נחמד אבל לא הייתה הוראה של ArduinoIDE, רק Raspberry Pi e.o. אני מגלה כיצד להשתמש בו עם Arduino ורוצה לשתף אותו כדי שתוכל לחסוך את הזמן הזה.

דוגמה מקורית של RaspberryPi:

wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU:_EP-0099

דבר נחמד הוא שאתה יכול לערום עד 4 לוחות. כך שתוכל להשתמש במקסימום. 4 x 4 = 16 ממסר באוטובוס I2C אחד.

יש גם כמה חסרונות:

  • מסופים קטנים, לא מתאימים לחוט 1 מ"מ
  • לא ניתן לשנות את החיווט של המחברים התחתונים כאשר הם מוערמים יחד

אבל עדיין לוח נוח.

שלב 1: חיווט

חיווט
חיווט
חיווט
חיווט
חיווט
חיווט

בתמונות ניתן לראות את החיווט.

52Pi צריך שניהם 5V (עבור ממסר) ו- 3.3V (שבב I2C).

אז צריך 5 חוטים:

  • GND ל- GND
  • 5 V עד 5 V
  • 3.3 V עד 3.3 V
  • SLA ל- SLA
  • SCL ל- SCL

אם אתה משתמש ב- UNO Arduino או 5 V אחר, היזהר מהמקסימום 3, 6 V מבקר I2C! השתמש בנגדים או אחרת כדי להוריד את ה -5 V מתוך מספר ה- Arduino PIN!

שלב 2: דוגמת קוד פשוטה:

/* Arduino IDE (ESP) דוגמה עבור לוח relaisboard I2C.

* מאת Laurens Korste www.boktorrobotica.nl * לשימוש חופשי. */ #include // עבור התקנת חלל תקשורת I2C () {// כלל זה אינו עבור UNO או לוחות עם סיכות I2C ייעודיות Wire.begin (D1, D2); // הצטרף לאוטובוס i2c עם SDA = D1 ו- SCL = D2 עבור NodeMCU} לולאת חלל () {Wire.beginTransmission (0x10);/ * התחל לשדר לכתובת I2C 10 (לשנות גם ל- 11, 12 או 13) */ Wire.write (0x01); / * relais בחירה 1 (מתוך 4) על לוח 10 (גם 0x02, 0x03, 0x04) */ Wire.write (0xFF); /* הגדר Relais 1 על לוח 10 ל- ON. כל המספרים> 0 יעשו זאת */ Wire.endTransmission (); / * הפסק לשדר */ עיכוב (3000); שידור Wire.beginTransmission (0x10); / * */ Wire.write (0x01); Wire.write (0x00); / * הגדר Relais 1 על לוח 10 ל- OFF */ Wire.endTransmission (); / * הפסק לשדר */ עיכוב (3000); }

שלב 3: קוד בדיקת ממסר ארבעה

/* סקיצה מאת לורנס קורסטה עבור Arduino (ESP / NodeMCU)

* אבל לוחות אחרים יעשו גם * www.boktorrobotica.nl * במפתח זה כל 4 הממסרים יופעלו ויושבתו */ #include // עבור התקנת חלל תקשורת I2C () {Serial.begin (115200); // התחל סדרתי לניפוי באגים (9600 עבור UNO) Wire.begin (D1, D2); // הצטרף לאוטובוס i2c עם SDA = D1 ו- SCL = D2 של NodeMCU אין צורך ב- UNO} לולאת חלל () {for (int i = 1; i <= 4; i ++) {Wire.beginTransmission (0x10); // התחל עם כתובת המכשיר Wire.write (i); // בחרו את relais Wire.write (0xFF); // שלח את קוד ה- "on" FF (כל ספירה מ- 01 ל- FF תעשה) Wire.endTransmission (); // הפסיקו לשדר את Serial.write (i); Serial.println ("aan"); עיכוב (1000); שידור Wire.beginTransmission (0x10); // התחל עם כתובת המכשיר Wire.write (i); Wire.write (0x00); // שלח את הקוד "כבוי" Wire.endTransmission (); // הפסק לשדר את Serial.write (i); Serial.println ("אאוט"); עיכוב (1000); }}

שלב 4: הפרויקט שלי

הפרויקט שלי
הפרויקט שלי
הפרויקט שלי
הפרויקט שלי

כתבתי קוד להפעלת 3 התריסים שלי. ניתן לעשות זאת באמצעות מתגים אך גם באמצעות אפליקציית BLYNK, ראה תמונה.

  • לחיצה קצרה אחת תתחיל להזיז תריס אחד (או תעצור אותו כאשר הוא זז).
  • לחיצה ארוכה אחת וכל שלושת התריסים נפתחים (או נסגרים או עוצרים).
  • לחץ כפול: התריסים עוברים למצב "חורים".

כפי שניתן לראות בתמונה, שילבתי גם חיישן טמפרטורה ואור.

עכשיו הכל על בסיס PCB טוב ובקפידה בקופסה.

שלב 5: התקשר ממסר עם פקודה אחת

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

/ * סקיצה מאת לורנס קורסטה עבור Arduino (ESP/NodeMCU) עם לוח ממסר I2C * אבל לוחות אחרים יעשו גם * href = https://www.boktorrobotica.nl; www.boktorrobotica.nl * https://wiki.52pi.com/index.php/DockerPi_4_Channel_Relay_SKU: _EP-0099; www.boktorrobotica.nl * בסקיצה זו הממסר יופעל בשיחה אחת; * // #include // לתקשורת I2C // הצהרת ממסרים. 4 PCB לכל PCB 4 ממסרים אפשריים. בסקיצה זו מוזגים רק שני PCB // PCB וממסרים כך שניתן לקרוא להם עם פקודה אחת const byte PutOn = 0xFF; // פקודה להפעלת const byte PutOff = 0x00; // comand כדי לכבות const const Relay1bord1 = 0x1001; // אתה יכול לסמן את השמות על ידי דוגמה Relay1 const word Relay2bord1 = 0x1002; // אתה יכול לסמן את השמות על ידי דוגמה Relay2 const word Relay3bord1 = 0x1003; Relay4bord1 = 0x1004; // אתה יכול לסמן את השמות על ידי דוגמה Relay4 const word Relay1bord2 = 0x1101; // אתה יכול לסמן את השמות על ידי דוגמא Relay5 const w ord Relay2bord2 = 0x1102; // אתה יכול להזכיר את השמות לדוגמא Relay6 const word Relay3bord2 = 0x1103; // אתה יכול להזכיר את השמות לדוגמא Relay7 const word Relay4bord2 = 0x1104; // אתה יכול להזכיר את השמות על ידי דוגמה Relay8 const word Relay1bord3 = 0x1201; // אתה יכול להזכיר את השמות לדוגמא Relay9 const word Relay2bord4 = 0x1302; // אתה יכול להזכיר את השמות על ידי דוגמה להגדרת החלל של Relay14 () {Serial.begin (115200); // התחל סדרתי לניפוי באגים (9600 עבור UNO) Wire.begin (D1, D2); // הצטרף לאוטובוס i2c עם SDA = D1 ו- SCL = D2 של NodeMCU אין צורך ב- UNO} לולאת חלל () {// כדי להעביר את ממסר 4 למכשיר PCB 2 ב- RelayActie (Relay4bord2, PutOn); עיכוב (1000); // כדי לכבות את ממסר 4 במכשיר PCB 2 RelayActie (Relay4bord2, PutOff); עיכוב (1000); } void RelayActie (מילה Relay, בייט OnOrOff) {Wire.beginTransmission (highByte (Relay)); Wire.write (lowByte (ממסר)); Wire.write (OnOrOff); Wire.endTransmission (); }

מוּמלָץ: