مكتبة SoftwareSerial في Arduino

Mktbt Softwareserial Fy Arduino



تتيح منصة Arduino للأشخاص إنشاء مشاريع مختلفة. Arduino هو نظام أساسي سهل الاستخدام يدعم مجموعة واسعة من المكتبات ، بما في ذلك مكتبة SoftwareSerial . ال مكتبة SoftwareSerial يسمح لك بإنشاء منفذ تسلسلي على أي من المسامير الرقمية الموجودة على لوحة Arduino.

في هذه المقالة ، سوف نتعمق أكثر في مكتبة SoftwareSerial ونستكشف كيف تعمل.







مقدمة لمكتبة SoftwareSerial

ال مكتبة SoftwareSerial هي مكتبة Arduino قياسية تسمح بالاتصال التسلسلي على دبابيس رقمية بخلاف TX و RX. تتيح المكتبة إنشاء منفذ تسلسلي للبرنامج ، والذي يمكن استخدامه للتواصل مع الأجهزة الأخرى ، مثل وحدات التحكم الدقيقة الأخرى أو أجهزة الكمبيوتر أو حتى وحدات Bluetooth النمطية. مكتبة SoftwareSerial مضمنة في Arduino IDE ويمكن استخدامها مع أي لوحة Arduino.



ملحوظة: عمومًا، TX و RX تُستخدم الدبابيس للاتصال التسلسلي ولكن باستخدام هذه المكتبة يمكننا تمكين لوحة Arduino من استخدام أي من المسامير الرقمية لاستبدال دبابيس TX و RX.



فهم وظائف مكتبة SoftwareSerial

ال مكتبة SoftwareSerial يحتوي على العديد من الوظائف التي تمكنك من إعداد المنفذ التسلسلي للبرنامج والتحكم فيه. فيما يلي بعض الوظائف الرئيسية التي يجب أن تعرفها:





SoftwareSerial ()

تنشئ هذه الوظيفة مثيلًا جديدًا لملف البرامج فصل. تحتوي هذه الوظيفة على وسيطين ، دبوس RX ودبوس TX. على سبيل المثال ، إذا كنت تريد إنشاء منفذ تسلسلي للبرنامج على الدبابيس 2 و 3 ، يمكنك استخدام الكود التالي:

SoftwareSerial mySerial ( 2 و 3 ) ؛ // آر إكس ، تكساس



ال SoftwareSerial () يتم استخدام طريقة لإنشاء مثيل جديد من البرامج هدف. يسمح بإنشاء مثيلات متعددة ولكن في وقت واحد فقط يمكن أن يكون نشطًا.

بناء الجملة

بناء الجملة لملف SoftwareSerial () الطريقة على النحو التالي:

البرامج ( rxPin ، txPin ، inverse_logic )

حدود

معلمات SoftwareSerial () نكون

rxPin: تحدد هذه المعلمة رقم التعريف الشخصي الذي سيتم استخدامه لتلقي البيانات التسلسلية.

txPin: تحدد هذه المعلمة الدبوس الذي سيتم استخدامه لنقل البيانات التسلسلية.

المنطق العكسي: هذه المعلمة اختيارية ، وهي تعكس إحساس البتات الواردة. القيمة الافتراضية خاطئة ، مما يعني أنه يتم تفسير LOW على دبوس RX على أنه 0 بت و HIGH على أنه 1 بت. إذا تم الضبط على true ، فسيأخذ LOW على دبوس RX الآن 1 بت و HIGH مثل 0 بت.

يعود

ال SoftwareSerial () لا يعيد أي شيء.

وظائف مكتبة Arduino SoftwareSerial ()

اردوينو SoftwareSerial () يحتوي على قائمة بوظائف الاتصال التسلسلي بين الأجهزة. تتم مناقشة بعض الوظائف الرئيسية هنا:

يبدأ()

ال يبدأ() تعمل الوظيفة على تهيئة المنفذ التسلسلي للبرنامج بمعدل باود. معدل البث بالباود هو سرعة نقل البيانات عبر المنفذ التسلسلي. على سبيل المثال ، لتعيين 9600 على أنه معدل البث بالباود للاتصال التسلسلي ، يمكنك استخدام الكود التالي:

mySerial.begin ( 9600 ) ؛

متاح()

ال متاح () و unction ترجع البايتات المتاحة للقراءة في المنفذ التسلسلي للبرنامج. على سبيل المثال ، للتحقق مما إذا كانت هناك أي بيانات متاحة للقراءة ، يمكنك استخدام الكود التالي:

لو ( mySerial.available ( ) > 0 ) {
// يقرأ ادخال البيانات
char incomingByte = mySerial.read ( ) ؛
}

يقرأ()

ال يقرأ() وظيفة يقرأ البايت التالي للبيانات من المنفذ التسلسلي للبرنامج. على سبيل المثال ، لقراءة بايت من البيانات وطباعتها على الشاشة التسلسلية ، يمكنك استخدام الكود التالي:

char incomingByte = mySerial.read ( ) ؛
المسلسل. println ( وارد بايت ) ؛

يكتب()

ال يكتب() وظيفة تكتب بايت من البيانات إلى المنفذ التسلسلي للبرنامج. على سبيل المثال ، لإرسال الرسالة 'أ' عبر المنفذ التسلسلي للبرنامج ، ستستخدم الكود التالي:

mySerial.write ( 'أ' ) ؛

Arduino SoftwareSerial () رمز مثال للمكتبة

الآن سنتواصل بين لوحتين من Arduino عبر الاتصالات التسلسلية باستخدام هذه المكتبة. خذ لوحين من Arduino وقم بتوصيلهما كما هو موضح في الصورة أدناه.

يتصل D2 لوحة Master Arduino مع د 3 من لوحة Slave Arduino ، قم بالاتصال بالمثل د 3 ماستر اردوينو مع D2 من العبد اردوينو.

ملحوظة: للاتصالات التسلسلية ، TX دبوس متصل دائمًا بـ RX دبوس اردوينو المعاكس و RX دبوس السيد متصل دائمًا بـ TX دبوس اردوينو الآخر.

فيما يلي الأجهزة الخاصة بكل من لوحات Arduino.

فيما يلي مثال على كود Arduino يوضح كيفية استخدام ملف مكتبة SoftwareSerial لإنشاء اتصال بين لوحتين من لوحات Arduino:

كود مجلس المرسل

الكود أدناه مخصص للمرسل Arduino الذي سيكتب سلسلة إلى لوحة Arduino لجهاز الاستقبال.

# تضمين

// قم بإعداد البرنامج التسلسلي للكائن
SoftwareSerial mySerial ( 2 و 3 ) ؛

الإعداد باطل ( ) {
// ابدأ الاتصال التسلسلي
المسلسل ( 9600 ) ؛
بينما ( ! مسلسل ) {
؛ // انتظر ل منفذ تسلسلي للاتصال
}

// ابدأ الاتصال التسلسلي للبرنامج
mySerial.begin ( 9600 ) ؛
}

حلقة فارغة ( ) {
// أرسل رسالة عبر الاتصال التسلسلي للبرنامج
mySerial.println ( 'مرحبا ، لوحة الاستقبال!' ) ؛
تأخير ( 1000 ) ؛
}

رمز لوحة الاستقبال

الكود أدناه خاص بلوحة الاستقبال. باستخدام هذا الرمز ، سيتلقى Arduino السلسلة من لوحة أخرى عبر الاتصال التسلسلي الذي تم إنشاؤه بين لوحتين من Arduino.

# تضمين

// قم بإعداد البرنامج التسلسلي للكائن
SoftwareSerial mySerial ( 2 و 3 ) ؛

الإعداد باطل ( ) {
// ابدأ الاتصال التسلسلي
المسلسل ( 9600 ) ؛
بينما ( ! مسلسل ) {
؛ // انتظر ل منفذ تسلسلي للاتصال
}

// ابدأ الاتصال التسلسلي للبرنامج
mySerial.begin ( 9600 ) ؛
}

حلقة فارغة ( ) {
// يفحص لو تتوفر البيانات على الاتصال التسلسلي للبرنامج
لو ( mySerial.available ( ) ) {
// اقرأ البيانات واطبعها على الشاشة التسلسلية
المسلسل. println ( mySerial.readString ( ) ) ؛
}
}

في هذا المثال ، نقوم أولاً بتضمين مكتبة SoftwareSerial في بداية الكود. ثم نقوم بإنشاء ملف البرامج كائن يسمى ' mySerial 'مع الدبابيس 2 و 3 المحددة على أنها دبابيس RX و TX ، على التوالي.

في ال يثبت() وظيفة ، نبدأ كلاً من تسلسل الأجهزة والاتصال التسلسلي للبرامج بمعدل باود يبلغ 9600. في حلقة() وظيفة لوحة المرسل ، نرسل رسالة عبر الاتصال التسلسلي للبرنامج باستخدام طريقة mySerial.println () ، وانتظر لمدة ثانية قبل إرسال الرسالة التالية.

في وظيفة الحلقة () بلوحة جهاز الاستقبال ، سيتحقق الرمز من توفر البيانات التسلسلية على الاتصال التسلسلي للبرنامج باستخدام mySerial.available () طريقة. إذا كانت هناك بيانات متاحة ، فنحن نقرأ البيانات باستخدام طريقة mySerial.readString () ونطبعها على الشاشة التسلسلية باستخدام طريقة Serial.println ().

حدود مكتبة SoftwareSerial ()

ال مكتبة SoftwareSerial له العديد من المزايا المختلفة ولكن لديه أيضًا بعض القيود التي يجب أن يكون المستخدمون على دراية بها. وتشمل هذه القيود

  • عدم القدرة على نقل واستقبال البيانات في وقت واحد.
  • عند استخدام عدة منافذ تسلسلية للبرامج ، يمكن لمنفذ واحد فقط استقبال البيانات في وقت واحد.
  • تعمل المنافذ التسلسلية المستندة إلى البرامج التي تم إنشاؤها باستخدام هذه المكتبة بمعدلات باود منخفضة وليست موثوقة مثل المنافذ التسلسلية القائمة على الأجهزة.
  • لا تدعم بعض المسامير الموجودة على لوحات Mega و Mega 2560 مقاطعات التغيير لـ RX ، مما يحد من المسامير التي يمكن استخدامها.
  • وبالمثل ، في لوحات ليوناردو ومايكرو ، لا يمكن استخدام سوى دبابيس معينة لـ RX بسبب عدم وجود مقاطعات التغيير.
  • أقصى سرعة RX على لوحات Arduino أو Genuino 101 هي 57600 بت في الثانية.
  • لا يعمل RX على الرقم 13 الرقمي للوحات Arduino أو Genuino 101.
سبورة دبابيس RX
ميجا اند ميجا 2560 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

ليوناردو وميكروفون 8 ، 9 ، 10 ، 11 ، 14 (MISO) ، 15 (SCK) ، 16 (MOSI).

خاتمة

ال مكتبة SoftwareSerial in Arduino هي أداة مفيدة للتواصل مع الأجهزة باستخدام بروتوكولات الاتصال التسلسلي. يسمح للمطورين بإنشاء منافذ تسلسلية قائمة على البرامج يمكن استخدامها مع المنافذ التسلسلية القائمة على الأجهزة. هذه المكتبة بها بعض القيود لأنها لا تسمح بنقل البيانات في وقت واحد. لمزيد من التفاصيل اقرأ المقال أعلاه.