ዝርዝር ሁኔታ:

የአርዱዲኖ ተከታታይ ግንኙነት -5 ደረጃዎች
የአርዱዲኖ ተከታታይ ግንኙነት -5 ደረጃዎች

ቪዲዮ: የአርዱዲኖ ተከታታይ ግንኙነት -5 ደረጃዎች

ቪዲዮ: የአርዱዲኖ ተከታታይ ግንኙነት -5 ደረጃዎች
ቪዲዮ: በ30 ቀን እራስን መለወጥ Change Yourself in 30 Days 2024, ሀምሌ
Anonim
አርዱዲኖ ተከታታይ ግንኙነት
አርዱዲኖ ተከታታይ ግንኙነት

ብዙ የአርዱዲኖ ፕሮጀክቶች በብዙ አርዱኢኖዎች መካከል መረጃን በማስተላለፍ ላይ ይተማመናሉ።

የ RC መኪናን ፣ የአርሲ አውሮፕላን ወይም የርቀት ማሳያ ያለው የአየር ሁኔታ ጣቢያ ዲዛይን እያደረጉ ያሉ የትርፍ ጊዜ ማሳለፊያዎች ይሁኑ ፣ ተከታታይ መረጃን ከአንድ አርዱinoኖ ወደ ሌላ እንዴት በአስተማማኝ ሁኔታ እንደሚያስተላልፉ ማወቅ ያስፈልግዎታል። እንደ አለመታደል ሆኖ የትርፍ ጊዜ ማሳለፊያዎች ተከታታይ የውሂብ ግንኙነት በራሳቸው ፕሮጄክቶች ውስጥ እንዲሠሩ ለማድረግ አስቸጋሪ ነው ።ይህ ነው ምክንያቱም ተከታታይ መረጃ እንደ ባይት ዥረት ስለሚላክ ነው።

በባይት ዥረት ውስጥ ምንም ዓይነት ዐውደ -ጽሑፍ ከሌለ ውሂቡን ለመተርጎም ፈጽሞ የማይቻል ነው። ውሂቡን መተርጎም ሳይችሉ የእርስዎ አርዱኢኖዎች በአስተማማኝ ሁኔታ መገናኘት አይችሉም። ቁልፉ መደበኛ ተከታታይ ፓኬት ዲዛይን በመጠቀም ይህንን የአውድ ውሂብ ወደ ባይት ዥረት ማከል ነው።

ተከታታይ የፓኬት ንድፍ ፣ የፓኬት መሙላት እና የፓኬት መተንተን ውስብስብ እና ለመድረስ አስቸጋሪ ነው። እንደ እድል ሆኖ ለአርዱዲኖ ተጠቃሚዎች ፣ ይህንን ያለ ውስብስብ አመክንዮ ከትዕይንቱ በስተጀርባ ሊያደርጉ የሚችሉ ቤተ -መጻህፍት አሉ ፣ ስለሆነም ያለ ተጨማሪ ጭንቅላት ፕሮጀክትዎን ወደ ሥራ በማምጣት ላይ እንዲያተኩሩ። ይህ Instructable SerialTransfer.h ን ለተከታታይ ፓኬት ማቀነባበሪያ ይጠቀማል።

በአጭሩ - ይህ Instructable ቤተ -መጽሐፍት SerialTransfer.h ን በመጠቀም በማንኛውም ፕሮጀክት ውስጥ ጠንካራ ተከታታይ መረጃን በቀላሉ እንዴት መተግበር እንደሚችሉ ያያል። በጠንካራ ተከታታይ ግንኙነት ላይ ስለ ዝቅተኛ ደረጃ ጽንሰ-ሀሳብ የበለጠ ለማወቅ ከፈለጉ ፣ ይህንን አጋዥ ስልጠና ይመልከቱ።

አቅርቦቶች

  • 2 አርዱኢኖዎች

    ብዙ የሃርድዌር UART ዎች (ማለትም አርዱዲኖ ሜጋ) ያላቸውን አርዱኢኖዎች እንዲጠቀሙ በጣም ይበረታታል።

  • የሚጣበቅ ገመድ
  • SerialTransfer.h ን ይጫኑ

    በአርዱዲኖ አይዲኢ ቤተመፃሕፍት ሥራ አስኪያጅ በኩል ይገኛል

ደረጃ 1: አካላዊ ግንኙነቶች

አካላዊ ግንኙነቶች
አካላዊ ግንኙነቶች

ተከታታይ ግንኙነቶችን በሚጠቀሙበት ጊዜ ጥቂት የሽቦ ነጥቦችን ግምት ውስጥ ማስገባት ያስፈልጋል-

  • ሁሉም ምክንያቶች መገናኘታቸውን ያረጋግጡ!
  • Arduino TX (ማስተላለፍ) ፒን ከሌላው የአርዱዲኖ RX (ተቀበል) ፒን ጋር መገናኘት አለበት

ደረጃ 2 - ቤተ -መጽሐፍት እንዴት እንደሚጠቀሙ

ቤተ -መጽሐፍት እንዴት እንደሚጠቀሙ
ቤተ -መጽሐፍት እንዴት እንደሚጠቀሙ

SerialTransfer.h ብጁ የጥቅል ፕሮቶኮል በመጠቀም ብዙ መረጃዎችን በቀላሉ እንዲልኩ ያስችልዎታል። ከዚህ በታች የሁሉም የቤተ -መጽሐፍት ባህሪዎች መግለጫ ነው - ብዙዎቹ በዚህ መማሪያ ውስጥ በኋላ እንጠቀማለን-

SerialTransfer.txBuff

ይህ ከመተላለፉ በፊት በተከታታይ የሚላኩ ሁሉም የክፍያ ጭነት መረጃዎች የተደበቁበት ባይት ድርድር ነው። ወደ ሌላ አርዱinoኖ ለመላክ ይህንን ቋት በውሂብ ባይት መሙላት ይችላሉ።

SerialTransfer.rxBuff

ይህ ከሌላው አርዱዲኖ የተቀበለው ሁሉም የክፍያ ጭነት ውሂብ የተደበቀበት ባይት ድርድር ነው።

SerialTransfer.bytes ያንብቡ

በሌላው አርዱinoኖ የተቀበለ እና በ SerialTransfer.rxBuff ውስጥ የተከማቹ የክፍያ ጭነት ባይት ብዛት

SerialTransfer.begin (ዥረት እና _ፖርት)

የቤተ መፃህፍቱን ክፍል ምሳሌ ያስጀምራል። ማንኛውንም “ተከታታይ” የመማሪያ ክፍልን እንደ ልኬት ማለፍ ይችላሉ - “የሶፍትዌር ሰርቪስ” ክፍል ዕቃዎችን እንኳን!

SerialTransfer.sendData (const uint16_t & messageLen)

ይህ የእርስዎ አርዱኢኖ ወደ ሌላኛው አርዱዲኖ በማስተላለፊያው ቋት ውስጥ የ “መልእክት ሌን” የባይት ብዛት እንዲልክ ያደርገዋል። ለምሳሌ ፣ “messageLen” 4 ከሆነ ፣ የመጀመሪያዎቹ 4 ባይት የ SerialTransfer.txBuff በተከታታይ ወደ ሌላው አርዱinoኖ ይላካሉ።

SerialTransfer.available ()

ይህ የእርስዎ አርዱዲኖ ማንኛውንም የተቀበለውን ተከታታይ ውሂብ ከሌላው አርዱዲኖ እንዲተነተን ያደርገዋል። ይህ ተግባር ቡሊያን “እውነተኛ” ን ከመለሰ ፣ ይህ ማለት አዲስ ፓኬት በተሳካ ሁኔታ ተንትኗል እና አዲስ የተቀበለው የፓኬት ውሂብ በ SerialTransfer.rxBuff ውስጥ ተከማችቷል/ይገኛል።

SerialTransfer.txObj (const T & val ፣ const uint16_t & len, const uint16_t & index = 0)

በክርክር “ጠቋሚ” በተገለፀው መሠረት በዘፈቀደ የነገሮች (ባይት ፣ int ፣ ተንሳፋፊ ፣ ድርብ ፣ አወቃቀር ፣ ወዘተ…) ባይት ቁጥር “ባንድ” ብዛት ያስተላልፋል።

SerialTransfer.rxObj (const T & val ፣ const uint16_t & len ፣ const uint16_t & index = 0)

ከተቀበለው ቋት (rxBuff) በ “ጠቋሚ” ክርክር በተጠቀሰው የዘፈቀደ ነገር (ባይት ፣ int ፣ ተንሳፋፊ ፣ ድርብ ፣ አወቃቀር ፣ ወዘተ…) ከመረጃ ጠቋሚው ጀምሮ የ “ሌን” የባይት ቁጥርን ያነባል።

ማስታወሻ:

መረጃን ለማስተላለፍ ቀላሉ መንገድ በመጀመሪያ መላክ የሚፈልጉትን ሁሉንም ውሂብ የያዘ መዋቅርን መግለፅ ነው። በመቀበያው መጨረሻ ላይ አርዱዲኖ ተመሳሳይ የሆነ መዋቅር ሊኖረው ይገባል።

ደረጃ 3 መሠረታዊ መረጃን ያስተላልፉ

የሚከተለው ንድፍ ሁለቱንም የ ADC እሴት የአናሎግ አንባቢ (0) እና የአናሎግ አንባቢ (0) እሴት ወደ ቮልቴጅ ወደ አርዱinoኖ #2 ያስተላልፋል።

የሚከተለውን ንድፍ ወደ አርዱinoኖ #1 ይስቀሉ

#"SerialTransfer.h" ን ያካትቱ

SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; ተንሳፋፊ ቮልቴጅ; } ውሂብ; ባዶነት ማዋቀር () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } ባዶነት loop () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (ውሂብ ፣ መጠን (ውሂብ)); myTransfer.sendData (መጠን (ውሂብ)); መዘግየት (100); }

ደረጃ 4 መሠረታዊ መረጃን ይቀበሉ

የሚከተለው ኮድ ከአርዱዲኖ #1 የተቀበሉትን የኤዲሲ እና የቮልቴጅ እሴቶችን ያትማል።

የሚከተለውን ኮድ ወደ አርዱinoኖ #2 ይስቀሉ

#"SerialTransfer.h" ን ያካትቱ

SerialTransfer myTransfer; struct STRUCT {uint16_t adcVal; ተንሳፋፊ ቮልቴጅ; } ውሂብ; ባዶነት ማዋቀር () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (Serial1); } ባዶነት loop () {ከሆነ (myTransfer.available ()) {myTransfer.rxObj (ውሂብ ፣ መጠን (ውሂብ)); Serial.print (data.adcVal); Serial.print (''); Serial.println (data.voltage); Serial.println (); } ሌላ ከሆነ (myTransfer.status <0) {Serial.print ("ERROR:"); ከሆነ (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: ሙከራ

አንዴ ሁለቱም ንድፎች ወደየራሳቸው አርዱኢኖዎች ከተሰቀሉ ፣ ከአርዱዲኖ #1 መረጃ እየተቀበሉ መሆኑን ለማረጋገጥ በ Arduino #2 ላይ ያለውን Serial Monitor ን መጠቀም ይችላሉ!

የሚመከር: