תוכן עניינים:
- אספקה
- שלב 1: חיבורים פיזיים
- שלב 2: אופן השימוש בספרייה
- שלב 3: העברת נתונים בסיסיים
- שלב 4: קבלת נתונים בסיסיים
- שלב 5: בדיקה
וִידֵאוֹ: תקשורת סדרתית של ארדואינו: 5 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:13
פרויקטים רבים של Arduino מסתמכים על העברת נתונים בין כמה Arduinos.
בין אם אתה חובב שבונה מכונית RC, מטוס RC או מעצב תחנת מזג אוויר עם תצוגה מרחוק, תצטרך לדעת כיצד להעביר נתונים סדרתיים באופן אמין מארדואינו אחד למשנהו. לרוע המזל, קשה לחובבים לגרום לתקשורת נתונים סדרתית לפעול בפרויקטים משלהם. הסיבה לכך היא כי נתונים סדרתיים נשלחים כזרם של בתים.
ללא כל סוג של הקשר בתוך זרם הבייטים, כמעט בלתי אפשרי לפרש את הנתונים. ללא יכולת לפרש את הנתונים, ה- Arduinos שלך לא יוכלו לתקשר בצורה מהימנה. המפתח הוא להוסיף נתוני הקשר אלה לזרם הבייטים בעזרת עיצוב מנות סדרתי סטנדרטי.
עיצוב מנות סדרתי, מלית מנות וניתוח מנות מורכב וקשה להשגה. למרבה המזל עבור משתמשי Arduino, ישנן ספריות זמינות שיכולות לבצע את כל ההיגיון המורכב הזה מאחורי הקלעים, כך שתוכל להתמקד בהפעלת הפרויקט שלך ללא תוספת ראש. הוראה זו תשתמש בספריית SerialTransfer.h לעיבוד מנות סדרתיות.
בקיצור: מדריך זה יעבור כיצד תוכל ליישם נתונים סדרתיים חזקים בקלות בכל פרויקט באמצעות הספרייה SerialTransfer.h. אם אתה רוצה ללמוד עוד על התיאוריה ברמה נמוכה על תקשורת סדרתית חזקה, עיין במדריך זה.
אספקה
-
2 ארדואינים
מומלץ מאוד להשתמש ב- Arduinos שיש להם מספר UARTs חומרה (כלומר Arduino Mega)
- חוט חיבור
-
התקן את SerialTransfer.h
זמין באמצעות מנהל הספריות של Arduino IDE
שלב 1: חיבורים פיזיים
בעת שימוש בתקשורת סדרתית, יש לזכור כמה נקודות חיווט:
- וודא שכל השטח מחובר!
- יש לחבר את סיכת Arduino TX (Transmit) לסיכה RX (קבלה) של Arduino האחרת
שלב 2: אופן השימוש בספרייה
SerialTransfer.h מאפשר לך לשלוח בקלות כמויות גדולות של נתונים באמצעות פרוטוקול מנות מותאם אישית. להלן תיאור של כל התכונות של הספרייה - רבות מהן נשתמש בהמשך הדרכה זו:
SerialTransfer.txBuff
זהו מערך בתים שבו כל נתוני המטען שיש לשלוח באמצעות סדרת נאגרים לפני השידור. אתה יכול למלא את המאגר הזה בתים של נתונים כדי לשלוח אותו לארדואינו אחר.
SerialTransfer.rxBuff
זהו מערך בתים שבו כל נתוני המטען המתקבלים מארדואינו האחרים נאגרים.
SerialTransfer.bytesRead
מספר בתים המטען שהתקבל על ידי ה- Arduino האחרים ומאוחסן ב- SerialTransfer.rxBuff
SerialTransfer.begin (Stream & _port)
מאתחל מופע של הכיתה של הספרייה. אתה יכול להעביר כל אובייקט מחלקתי "סידורי" כפרמטר - אפילו אובייקטים ברמה "SoftwareSerial"!
SerialTransfer.sendData (const uint16_t & messageLen)
זה גורם ל- Arduino שלך לשלוח מספר בייטים "messageLen" במאגר השידור לארדואינו השני. לדוגמה, אם "messageLen" הוא 4, ארבעת הבייטים הראשונים של SerialTransfer.txBuff יישלחו באמצעות סדרתי ל- Arduino השני.
SerialTransfer.available ()
זה גורם לניתוח Arduino שלך לנתונים סדרתיים שהתקבלו מהארדואינו השני. אם פונקציה זו מחזירה את ה"אמיתי "הבולאני, פירוש הדבר שחבילה חדשה נותחה בהצלחה ונתוני החבילה שהתקבלו נשמרים/זמינים ב- SerialTransfer.rxBuff.
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
ממלא "לן" מספר בתים של אובייקט שרירותי (בייט, אינט, צף, כפול, מבנה וכו '…) לתוך מאגר השידור החל מהאינדקס כפי שצוין על ידי הארגומנט "אינדקס".
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
קורא מספר "בתים" ממאגר הקבלה (rxBuff) החל מהאינדקס כפי שצוין על ידי הארגומנט "אינדקס" לאובייקט שרירותי (בייט, אינט, צף, כפול, מבנה וכו '…).
הערה:
הדרך הקלה ביותר להעברת נתונים היא להגדיר תחילה מבנה המכיל את כל הנתונים שברצונך לשלוח. Arduino בקצה המקבל צריך להיות בעל מבנה זהה.
שלב 3: העברת נתונים בסיסיים
הסקיצה הבאה משדרת הן את ערך ה- ADC של analogRead (0) והן את הערך של analogRead (0) המומר למתח ל- Arduino #2.
העלה את הסקיצה הבאה ל- Arduino #1:
#כלול "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; מתח צף; } נתונים; הגדרת חלל () {Serial.begin (115200); סדרתי 1. התחל (115200); myTransfer.begin (Serial1); } לולאת חלל () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (נתונים, גודל (נתונים)); myTransfer.sendData (sizeof (נתונים)); עיכוב (100); }
שלב 4: קבלת נתונים בסיסיים
הקוד הבא מדפיס את ערכי ה- ADC והמתח המתקבלים מארדואינו מס '1.
העלה את הקוד הבא ל- Arduino #2:
#כלול "SerialTransfer.h"
SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; מתח צף; } נתונים; הגדרת חלל () {Serial.begin (115200); סדרתי 1. התחל (115200); myTransfer.begin (Serial1); } לולאת void () {if (myTransfer.available ()) {myTransfer.rxObj (data, sizeof (data)); Serial.print (data.adcVal); Serial.print (''); Serial.println (data.voltage); Serial.println (); } אחרת אם (myTransfer.status <0) {Serial.print ("ERROR:"); if (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); אחרת אם (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); אחרת אם (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
שלב 5: בדיקה
לאחר העלאת שני המערכונים לארדואינים המתאימים להם, תוכל להשתמש בצג הטורי ב- Arduino #2 כדי לוודא שאתה מקבל נתונים מארדואינו מספר 1!
מוּמלָץ:
תקשורת ארדואינו לצומת: 4 שלבים
תקשורת Arduino to Node: מדריך זה מיועד אך ורק להדגמה בסיסית ביותר כיצד לשלוח ולקבל נתונים באמצעות UART (סידורי) בין שני לוחות תואמים Arduino
LORA תקשורת בין עמיתים לעמית עם ארדואינו: 9 שלבים
לורה תקשורת בין עמיתים לעמיתים עם ארדואינו: אני חובב אלקטרוניקה מתחיל וזהו ההנחיה הראשונה שלי אז אנא אל תהססו בהערותיכם. במדריך זה אני הולך להסביר כיצד לגרום לשני צומת LORA לתקשר ישירות ללא TTN (רשת הדברים)
תקשורת סדרתית של Arduino ו- Python - תצוגת לוח מקשים: 4 שלבים
תקשורת סדרתית של Arduino ו- Python - תצוגת לוח המקשים: פרויקט זה מיועד למשתמשי Mac אך ניתן ליישם אותו גם עבור Linux ו- Windows, הצעד היחיד שצריך להיות שונה הוא ההתקנה
תקשורת ארדואינו ל- Laravel: 4 שלבים
תקשורת Arduino to Laravel: שלום לכולם, במדריך זה אראה לכם כיצד תוכלו לשלוח נתונים מארדואינו ליישום Laravel
תקשורת סדרתית באמצעות ARM Cortex-M4: 4 שלבים
תקשורת טורית באמצעות ARM Cortex-M4: זהו פרויקט מבוסס לוח שעושה שימוש ב- ARM Cortex-M4 (Texas Instruments EK-TM4C123GXL) לתקשורת סדרתית באמצעות מסוף וירטואלי. ניתן להשיג את הפלט במסך LCD בגודל 16x2 ולתת קלט לתקשורת סדרתית ב- Mo Serial