FLProg - الجمع بين لوحات اردوينو في حلقة المعلومات



بدءًا من الإصدار 1.10.5 ، يسمح لك برنامج FLProg بدمج العديد من لوحات Arduino في شبكة UART. أولاً ، فكر في كيفية حدوث ذلك. يتم ربط اللوحات وفقًا للدائرة الموضحة في الرسم التوضيحي للعنوان. افترض أن اللوحة 1 ترسل من خلال UART حزمة بيانات تحتوي على معرفات اللوحة ، والمتغير ، وكذلك قيمة المتغير. تقبل اللوحة 2 هذه الحزمة وإذا لم تكن بحاجة إلى بيانات من هذا المتغير ، فإنها ببساطة ترسل هذه الحزمة إلى أبعد من ذلك. إذا كانت قيمة هذا المتغير ضرورية ، وفقًا للبرنامج ، لوحدة التحكم ، ثم يتم نسخ القيمة من الحزمة إلى المتغير الداخلي ، كما يتم إرسال الحزمة أيضًا على طول الحلقة.
بهذه الطريقة تعود الحزمة ، بعد اجتياز الحلقة بأكملها ، إلى اللوحة التي أرسلتها ، سيتوقف إرسال الحزمة.
وبالتالي ، فإن البيانات من الحزمة متاحة لأي لوحة متصلة بالحلقة ، ويمكن أن تكون أي من الألواح هي البادئ في إرسال الحزمة.

مخطط منضدة الاختبار:



منطق ما يلي:
  • يتلقى Arduino No. 1 بيانات عن درجة الحرارة والرطوبة من أجهزة الاستشعار.
  • يعرض Arduino No. 2 درجة الحرارة من DS18B20.
  • يعرض Arduino No. 3 درجة الحرارة والرطوبة من مستشعر DHT-22.

لتجنب التعليقات الغاضبة بأن هذا المنطق ليس ضروريًا وغير منطقي ، سأوضح أن هذا المشروع تعليمي بحت ويهدف إلى شرح مبادئ نقل البيانات من خلال حلقة المعلومات. للقيام بذلك ، نضيف المزيد من الهراء إلى منطق العمل.
  • تلتقط قيمة درجة الحرارة الرقمية من مستشعر DS18B20 Arduino№3 ، ثم تحولها إلى سلسلة وترسلها إلى الحلقة. يلتقط هذا الخط Arduino№2 ويعرض على الشاشة.
  • تلتقط قيمة درجة الحرارة الرقمية من مستشعر DHT-22 Arduino№2 ، ثم تحولها إلى سلسلة وترسلها إلى الحلقة. يلتقط هذا الخط Arduino№3 ويعرض على الشاشة.
  • تلتقط قيمة الرطوبة الرقمية من مستشعر DHT-22 جهاز Arduino # 3 ، ثم تحوله إلى سلسلة وتعرضه على الشاشة.

لذلك دعونا نبدأ.
نفتح برنامج FLProg وننشئ مشروعًا لـ Arduino№1. في اللوحة الأولى ، نرمي وحدة فحص ناقل OneWire (مكتبة العناصر ، المجلد متنوع). تقوم هذه الكتلة الموجودة على الحافة الأمامية عند الإدخال En بمسح ناقل OneWire ، وعندما تكون هناك أجهزة استشعار عليه ، فإنها تضيف العناوين المكتشفة إلى المصفوفات المرتبطة. لتعيين كتلة ، نطلق على محرر الكتلة (انقر مرتين على الكتلة).



  1. أولاً ، قم بإنشاء حافلة OneWire الجديدة.
  2. ثم قم بإنشاء مصفوفة. نظرًا لأننا نخطط لوجود مستشعر واحد في الحافلة ، فإننا ننشئ صفيفًا واحدًا.

الآن سننظم مخطط بدء التشغيل لهذه الكتلة مرة واحدة في بداية البرنامج. للقيام بذلك ، سنقوم بتجميع مثل هذا المخطط.



R - يقع المشغل في مجلد "المشغلات" بمكتبة العناصر. إنه يعمل على إبراز الحافة الرائدة للنبض المزود للإدخال. عند الإخراج ، سيكون هناك دفعة واحدة من البرنامج خلال انتقال مستوى المدخلات من منخفض إلى مرتفع.
ثم نقوم بإنشاء لوحة جديدة وسحب مستشعر درجة الحرارة DS18x2x إليه (مكتبة العناصر ، مجلد المستشعرات). نحن نسمي محرر الكتلة ونقوم بتمييز المستشعر.



  1. من القائمة المنسدلة ، حدد ناقل OneWire الذي تم إنشاؤه مسبقًا على الدبوس 4
  2. حدد طريقة ضبط العنوان "Array"
  3. حدد صفيف الاستشعار الذي تم إنشاؤه مسبقًا
  4. نقوم بتعيين وضع الاستقصاء الدوري للمستشعر ، مع تكرار الاقتراع مرة واحدة كل ثانية واحدة.


الآن يجب إرسال القيمة المستلمة من المستشعر إلى الحلقة.
في برنامج FLProg ، يمكنك توصيل وحدة التحكم بالحلقة بطريقتين. في هذا المشروع لـ Arduino№1 ، سننظر في الطريقة الأولى - من خلال الكتل التي ترسل متغيرًا إلى الحلقة.
نقوم بسحب كتلة "إرسال متغير إلى الحلقة" (مكتبة العناصر ، مجلد UART) على اللوحة ، واستدعاء محرر الكتلة لذلك.



  1. أولاً ، أضف وحدة التحكم إلى الحلقة.

    في النافذة التي تفتح ، يجب عليك تحديد منفذ الاتصال بالحلقة وسرعة المنفذ وتعيين اسم الجهاز في الحلقة. أيضًا ، من أجل راحة العمل مع المشروع ، من المستحسن إنشاء ملف قائمة من متغيرات الحلقة التي من خلالها ستتم مزامنة جميع وحدات التحكم المشاركة فيه.
  2. ثم نقوم بإنشاء متغير سيتم نقله إلى الحلقة.

    في نافذة إنشاء المتغير ، يجب تحديد اسم المتغير ونوعه.
  3. بعد ذلك نقوم بتعيين الوضع الدوري لإرسال المتغير ، بفترة ثانية واحدة.


بعد تحديد المعلمة للكتلة ، نقوم بتوصيل المستشعر وإرسال الكتل مع بعضها البعض وتعيين الثابت الحقيقي عند إدخال En لكتلة الإرسال.



نقوم بإنشاء لوحة جديدة وسحب مستشعر DHT-22 إليها (مكتبة العناصر ، مجلد المستشعرات). نحن نسمي محرر الكتلة ونقوم بتمييز المستشعر.



  1. حدد دبوس توصيل المستشعر
  2. اختر نوع المستشعر
  3. نحدد توفر مخرجات درجة الحرارة والرطوبة
  4. قمنا بتعيين الطريقة الدورية لاستطلاع المستشعر بتردد 1 ثانية


ثم نقوم بسحب كتلتين من إرسال المتغير إلى الحلقة على اللوحة الثالثة ، وتحديد الحلقة الموجودة في إعدادات الكتلة ، وإنشاء متغير في كل منها.





المجال الذي سنقوم فيه بتوصيل الكتل مع بعضها البعض ، ووضع الثوابت صحيحة على مدخلات كتل En لإرسال المتغيرات.



مع الانتهاء من مشروع Arduino№1. يجب أن يعمل مثل هذا المخطط:



الآن إنشاء مشروع جديد لـ Arduino№2.
قم بتوصيل اللوحة على الفور بالحلقة. هنا نستخدم الطريقة الثانية ، من خلال شجرة المشروع. نفتح الشجرة حتى فرع "الاتصالات" بشكل شامل وانقر بزر الماوس الأيمن على عنصر "الحلقات". في قائمة السياق التي تظهر ، حدد عنصر "إضافة رنين".



تفتح نافذة معلمات الحلقة المعروفة بالفعل. نحتاج مرة أخرى إلى إدخال اسم الجهاز في الحلقة واختيار المنفذ الذي يتم من خلاله توصيل الجهاز بالحلقة. لكننا الآن لا نقوم بإنشاء ملف متغير الحلقة ، ولكننا نختار الملف الذي تم إنشاؤه مسبقًا. في هذه الحالة ، تتم مزامنة المتغيرات بين المشاريع تلقائيًا.





يمكن تغيير جميع معلمات الحلقة من خلال شجرة المشروع عن طريق استدعاء قائمة السياق في الفروع المقابلة.
وفقًا لخوارزمية Arduino№2 ، فإنها تلتقط متغير درجة الحرارة من مستشعر DHT-22 ، وتحول قيمتها إلى سلسلة وترسلها إلى الحلقة. للقيام بذلك ، اسحب كتلة "الحصول على متغير من الحلقة" إلى الرسم التخطيطي (مكتبة العناصر ، مجلد "UART") واستدع المحرر لذلك.



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



، ثم نطلق على محرر كتلة "تحويل السلسلة".


نظرًا لأن إدخال هذه الكتلة عبارة عن قيمة نوع تعويم ، لدينا القدرة على تعيين عدد المنازل العشرية عند التحويل إلى سلسلة. أعتقد أن مكانًا عشريًا واحدًا يكفي بالنسبة لنا.
ثم نسحب كتلة "إرسال متغير إلى رنين" (مكتبة العناصر ، مجلد UART) إلى الدائرة ، وباستخدام المحرر ، حدد الحلقة وقم بإنشاء متغير جديد سيتم إرساله إلى الحلقة. قمنا أيضًا بتعيين وضع إرسال دوري بفترة ثانية واحدة.





ثم نقوم بتوصيل الكتل معًا وتعيين الثابت الحقيقي عند إدخال En لكتلة الإرسال المتغيرة.



قم بإنشاء لوحة جديدة واسحب كتلة "الحصول على متغير من الحلقة" (مكتبة العناصر ، مجلد "UART") عليها واستدعي المحرر من أجلها. في المحرر ، حدد الحلقة المتصلة. نظرًا لأنه ، وفقًا للخوارزمية ، يعد Arduino preparing3 القيمة للعرض على الشاشة ، سننشئ متغيرًا جديدًا سيرسله جهاز التحكم هذا إلينا.



الآن اسحب وأفلت كتلة "العرض على شريحة HD44780" (مكتبة العناصر ، المجلد "Displays") على الرسم التخطيطي واستدعي المحرر الخاص به وقم بتمييزه.



  1. إنشاء عرض جديد
  2. اضبط الاتصال وفقًا للمخطط
  3. تعيين معلمات العرض
  4. تكوين عرض البيانات من إدخال الكتلة
  5. قم بإعداد مركز الصف الأول


بعد ذلك ، نقوم بتوصيل الكتل وتعيين الثابت الحقيقي عند إدخال En لكتلة العرض.



مع الانتهاء من مشروع Arduino№2. يجب أن يعمل هذا المخطط:



نقوم بإنشاء مشروع لـ Arduino№3.
نقوم بتوصيل وحدة التحكم بالحلقة باستخدام أي من الطرق المذكورة أعلاه. عند الاتصال ، حدد ملف متغير الحلقة الذي تم إنشاؤه مسبقًا.



وفقًا للخوارزمية ، تلتقط وحدة تحكم Arduino№3 قيمة درجة الحرارة من مستشعر DS18B20 من Arduino№1 وتحولها إلى سلسلة وترسل هذه السلسلة إلى حلقة لـ Arduino№2. كل المتغيرات الضرورية لهذا لدينا بالفعل. لذلك ، على غرار Arduino№2. قم بسحب وإفلات الكتل "الحصول على متغير من حلقة" (مكتبة العناصر ، المجلد "UART") ، "تحويل السلاسل" (مكتبة العناصر ، المجلد "نوع التحويل") والكتلة "إرسال متغير إلى الرنين" (مكتبة العناصر ، مجلد UART) إلى الرسم التخطيطي. ثم نقوم بتحديدها.
"الحصول على متغير من حلقة"



"تحويل السلاسل"



"إرسال متغير إلى حلقة"



بعد ذلك نجمعها في دائرة



نقوم بإنشاء لوحة جديدة لعرض درجة الحرارة من مستشعر DHT-22. بنفس الطريقة مثل Arduino№2 ، اسحب "الحصول على متغير من الحلقة" (مكتبة العناصر ، المجلد "UART") و "العرض على الشريحة HD44780" (مكتبة العناصر ، المجلد "يعرض"). نحن نقيمها.
"الحصول على المتغير من الحلقة"



"عرض على شريحة HD44780" نتواصل



معًا.



نقوم بإنشاء لوحة جديدة لعرض الرطوبة.
نقوم أيضًا بسحب وإسقاط على اللوحة كتلة "الحصول على متغير من الحلقة" (مكتبة العناصر ، المجلد "UART") والمعلمات.



ثم اسحب وأفلت كتلة "تحويل السلسلة" (مكتبة العناصر ، مجلد "نوع التحويل") ، وقم بتوصيله بكتلة "الحصول على متغير من الحلقة" وقم بتعيين المعلمة نفسها.





حسنًا وأخيرًا ، نسحب كتلة "العرض على شريحة HD44780" (مكتبة العناصر ، المجلد "Displays"). عند تحديد المعلمة للوحدة ، حدد عرضًا موجودًا واعرض قيمة الرطوبة في وسط السطر الثاني.



نحن نربط الكتل معا.



اكتمل إنشاء برنامج Arduino№3.
النتيجة النهائية.



شكرا لكم على اهتمامكم.

Source: https://habr.com/ru/post/ar391365/


All Articles