AN0007 Arduino إلى Platinum COMM
“
معلومات المنتج
تحديد
- اسم المنتج: وثيقة مساعدة حول تحويل ARDUINO إلى PLATINUM COMMS
- الشركة المصنعة: Dynament Limited
- العنوان: هيرميtagمجمع إي لين الصناعي، طريق كينجز ميل،
مانسفيلد، نوتنغهامشاير، NG18 5ER، المملكة المتحدة - الاتصال: هاتف: 44 (0)1623 663636، البريد الإلكتروني: sales@dynament.com،
Webالموقع: www.dynament.com - الإصدار: 1.2، التاريخ: 09/04/2025
تعليمات استخدام المنتج
توصيل جهاز الاستشعار
تستخدم ورقة البيانات هذه Arduino Mega كـ exampلي. الاتصال كـ
يتبع:
- 5 فولت -> 5 فولت دبوس أردوينو
- 0 فولت -> أردوينو GND
- إرسال -> أردوينو RX1
- Rx -> ينتقل إلى مخرج مقسم الجهد. المدخل
يذهب إلى Arduino Tx
المجلدtagالتوافق ه
يستخدم Arduino جهدًا منطقيًا عاليًا يبلغ 5 فولت بينما يستخدم مستشعر Platinum
3.3 فولت. استخدم مستوى الصوتtagفاصل إلكتروني مع القيم المقترحة لـ R1 وR2
4K7 لمنع تلف المستشعر.
إعداد Arduino IDE
- قم بتنزيل أحدث إصدار من برنامج Arduino IDE من
الأردوينو webموقع. - حدد لوحة Arduino والمعالج والمنفذ في الأدوات
القائمة المنسدلة.
تحميل الكود
- انسخ النموذج المقدمampقم بإدخال الكود في Arduino IDE.
- قم بتحميل الكود إلى Arduino عن طريق النقر فوق السهم.
- افتح شاشة العرض التسلسلية view نقل البيانات.
التعليمات
س: ماذا يجب أن أفعل إذا كان لدي Arduino Uno مع وحدة اتصال واحدة فقط؟
ميناء؟
أ: وصّل مستشعر البلاتينيوم بهذا المنفذ. عند استخدام
شاشة تسلسلية، وسوف تظهر أيضًا الرقم السداسي المرسل.
"
ملاحظة التطبيق AN0007
وثيقة مساعدة حول تحويل ARDUINO إلى PLATINUM COMMS
داينامنت المحدودة
هيرميtagمجمع إي لين الصناعي، طريق كينجز ميل، مانسفيلد، نوتنغهامشاير، NG18 5ER، المملكة المتحدة. هاتف: 44 (0)1623 663636
البريد الإلكتروني: sales@dynament.com www.dynament.com
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 1 من 14
محتويات
Dynament Limited …………………………………………………………………………………………………………….1 توصيل المستشعر………………………………………………………………………………………………..3 بيئة التطوير المتكاملة Arduino …………………………………………………………………………………………………………….5 شرح الكود…………………………………………………………………………………………………..9 تقسيم الحزمة ………………………………………………………………………………………………….11 استخدام Serial.read() ………………………………………………………………………………………………….13
ملاحظات التحويل المتقدمة……………………………………………………………………………………….14
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 2 من 14
ربط المستشعر تستخدم ورقة البيانات هذه Arduino Mega كجهاز توصيلampيوفر Ardunio Mega أكثر من منفذ اتصال، وبالتالي يتم استخدام منفذ الاتصال 1 للتواصل مع المستشعر ويتم استخدام منفذ الاتصال 0 للطباعة على الكمبيوتر.
يستخدم Arduino جهدًا منطقيًا عاليًا يبلغ 5 فولت بينما يستخدم مستشعر Platinum جهدًا 3.3 فولت، لذا لمنع تلف المستشعر، يتم استخدام جهد XNUMX فولت.tagيجب استخدام المُقسّم. القيم المُقترحة لـ R1 وR2 هي 4K7.
الشكل 1: يخفض مستوى الصوتtagإلى المستوى القابل للاستخدام
لا يحتاج خط إرسال المستشعر المتجه إلى استقبال Arduino إلى مقسم حيث أن 3.3 فولت هو مدخل مقبول لـ Arduino.
لتشغيل المستشعر، يجب توصيله بجهد ٥ فولت و٠ فولت. للقيام بذلك، يمكنك استخدام دبابيس أردوينو.
بعد اكتمال هذه العملية، يجب أن يكون المستشعر الآن متصلاً بالدبابيس التالية:
5 فولت -> 5 فولت دبوس أردوينو
0 فولت -> أردوينو GND
إرسال -> أردوينو RX1
Rx -> يذهب إلى مخرج مقسم الجهد. يذهب المدخل إلى Arduino Tx.
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 3 من 14
بعد اكتمال هذه الخطوة، يجب توصيل مستشعر Platinum الخاص بك كما هو موضح:
الشكل 2: يظهر المستشعر مقلوبًا باستخدام محول لحام
إذا كنت تستخدم Arduino بمنفذ اتصال واحد فقط (مثل Arduino Uno)، فسوف يتعين عليك توصيله به، ومع ذلك، عندما تستخدم شاشة العرض التسلسلية (الموضحة لاحقًا)، فسوف تعرض أيضًا الرقم السداسي الذي تم إرساله.
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 4 من 14
انتقل إلى Arduino IDE webقم بزيارة الموقع وحمّل أحدث إصدار من برنامج Arduino IDE. بعد التثبيت، ستظهر لك الشاشة التالية:
الشكل 3: الشاشة الرئيسية لـ Arduino
في القائمة المنسدلة للأدوات، حدد لوحة Arduino والمعالج والمنفذ الذي تستخدمه:
الشكل 4: حدد خيارات اللوحة والمعالج والمنفذ
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 5 من 14
نسخة في هذا المثالampالكود: void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup() { Serial.begin(38400); Serial1.begin(38400);
}
حلقة فارغة () {إرسال_قراءة_بيانات_مباشرة_بسيطة();استقبال_قراءة_بيانات_مباشرة_بسيطة();تأخير(5000);
}
void send_read_live_data_simple(){ // 0x10, 0x13, 0x06, 0x10, 0x1F, 0x00, 0x58 Serial1.write(0x10); Serial1.write(0x13); Serial1.write(0x06); Serial1.write(0x10); Serial1.write(0x1F); Serial1.write(0x00); Serial1.write(0x58);
}
void receive_read_live_data_simple(){ بينما (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print("|"); } Serial.println();
}
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 6 من 14
الشكل 5: الكود جاهز للتحميل
انقر على السهم لتحميل الكود إلى أردوينو. بعد برمجة أردوينو، افتح شاشة العرض التسلسلي.
AN0007
الشكل 6: افتح شاشة العرض التسلسلي
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 7 من 14
الشكل 7: يوضح جهاز العرض التسلسلي الحزمة التي تم استلامها
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 8 من 14
شرح الكود يستخدم Arduino IDE لغة C++ لبرمجة Arduino.
هذا السطر إعلانٌ تمهيدي. يُستخدم لإبلاغ المتحكم الدقيق بأنه سيتم استدعاء دالتي `send_read_live_data_simple` و`receive_read_live_data_simple` في أسفل البرنامج.
الخطوة التالية هي وظيفة الإعداد. يتم تشغيل هذا الكود مرة واحدة فقط عند بدء التشغيل. يُشغّل المنفذين Serial0 وSerial1. يظهر المنفذ Serial0 على شاشة العرض التسلسلي، بينما يُتيح المنفذ Serial1 الاتصال بالمستشعر.
هذه هي الحلقة الرئيسية، حيث يُكرر هذا الكود. يمكنك ملاحظة ذلك من خلال قراءة أسماء الدوال، حيث يُرسل طلبًا لقراءة نسخة مُبسطة من بنية البيانات المباشرة. ثم يقرأ منفذ الاستقبال لقراءة الرد. بعد ذلك، ينتظر المتحكم الدقيق 5000 مللي ثانية.
تكتب هذه الدالة طلب الحصول على بنية البيانات المباشرة البسيطة إلى المنفذ التسلسلي 1. كما ذكرنا سابقًا، إذا كان لديك منفذ تسلسلي واحد فقط، فعليك تغيير Serial1 إلى Serial. للاطلاع على القائمة الكاملة للأوامر، راجع وثيقة بروتوكول اتصالات أجهزة استشعار Premier. إليك الجزء من الوثيقة الذي يوضح لك ما يجب كتابته لهذا الأمر:
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 9 من 14
تُكرر هذه الدالة قراءة البيانات أثناء وجود بيانات لا تزال قيد الاستقبال من مستشعر بلاتينيوم. تقرأ الدالة Serial1.read() البيانات من Serial1 المتصل بالمستشعر، وتطبعها على Serial0 لتُعرض على الشاشة التسلسلية. ثم تُطبع علامة `|` لتقسيم كل بايت مُستقبَل لجعلها أكثر وضوحًا على الشاشة التسلسلية.
بعد اكتمال هذه العملية، يتم كتابة سطر جديد إلى شاشة التسلسل.
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 10 من 14
تقسيم الحزمة يوضح الشكلان 8 و9 مخرجات وحدة فك التشفير التسلسلية المتصلة بخطوط الاستقبال والإرسال.
الشكل 8: الحزمة الصادرة
الشكل 9: الحزمة الواردة
يوضح الشكلان 10 و11 الأمر الصادر والوارد على التوالي مع عمود يوضح الأمر الذي يتعلق به.
الشكل 10: وصف الحزمة الصادرة
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 11 من 14
الشكل 11: وصف الحزمة الواردة
يرجى ملاحظة أن قراءة الغاز عشرية وليست صحيحة. هذا العدد العشري بصيغة IEEE-754، ويمكنك استخدام محول إلكتروني مثل هذا لتحويله. قيمة الغاز في هذه الحالة هي -250 (لأنها كانت في وضع الخطأ آنذاك).
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 12 من 14
استخدام Serial.read()
كان الكود السابق يطبع البيانات المُستقبَلة إلى الشاشة التسلسلية فقط، فإذا أردت حفظ البيانات في متغيرات، فستحتاج إلى إجراء معالجة إضافية. تُقسَّم الحزمة المُستقبَلة إلى بايتات، ولذلك ستحتاج إلى دمج بعض هذه البيانات في متغيرات. تُرجع الدالة Serial1.Read() عددًا صحيحًا (يبلغ 16 بت في أردوينو)، ولكن تُستخدم أول 8 بتات فقط. ولذلك، يُمكننا نسخها إلى نوع بيانات أصغر حجمًا يبلغ 8 بتات فقط، وفي هذه الحالة سأستخدم char.
بالنسبة للحزم التي يبلغ طولها بايت واحد فقط، يعمل هذا بشكل جيد:
بالنسبة للحزم التي يبلغ طولها 2 بايت أو 4 بايت، ستحتاج إلى ربط البيانات معًا.
يمكنك القيام بذلك بعدة طرق مختلفة، هنا ما سأفعله هو تحويل البيانات إلى اليسار ثم OR.
باستخدام هذا الكود، إذا كان readByte1 هو 0x34 و readByte2 هو 0x12.
(int)readByte2
// هذا يحول 0x12 إلى 0x0012.
(int)readByte2 << 8
// يؤدي هذا إلى تحويل البتات بمقدار بايت واحد مما يجعلها 0x1200.
(int)readByte2 << 8 | readByte1 // يتم بعد ذلك إجراء عملية OR، مع جعل 0x34 هو 0x1234.
هناك طريقة أخرى للقيام بذلك وهي وضع القيم في مصفوفة ثم تحويل المصفوفة إلى النوع الذي تريده:
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 13 من 14
طول الأحرف بايت واحد، بينما طول العائم 4 بايتات. لهذا السبب، إذا أنشأنا مصفوفة من 4 أحرف بقيمنا فيها، وغيّروا نوعها إلى عائم.
في هذه الحالة، readArray هو مؤشر إلى مصفوفة char. (float*)readArray هذا الجزء يحولها إلى مؤشر إلى عدد عشري ثم تتم إضافة * إلى المقدمة للحصول على قيمة العدد العشري.
ملاحظات التحويل المتقدمة
١. تعيد الدالة Serial.read() قيمة int بدلاً من char، لأن الأخطاء تُرجع قيمًا سالبة. يجب على برنامجك التحقق من ذلك.
2. يجب استخدام uint8_t و uint16_t بدلاً من char و int على التوالي، حيث أن هذه الأنواع ليس لها حجم قياسي (على جهاز الكمبيوتر الخاص بي، يكون int 32 بت بينما على Arduino يكون 16 بت).
٣. يحتوي بروتوكول الاتصالات على أحرف مُكدسة بالبايتات (تُعرف أيضًا بأحرف التحكم)، وقد تم شرح ذلك بمزيد من التفصيل في وثيقة بروتوكول اتصالات مستشعر Premier tds3. لهذا السبب، قد تكون حزمة البيانات المباشرة المقروءة أكبر من المتوقع أحيانًا.
AN0007
العدد 1.2
09/04/2025
ملاحظة التغيير 805
الصفحة 14 من 14
المستندات / الموارد
![]() |
DYNAMENT AN0007 Arduino إلى Platinum COMM [بي دي اف] دليل المستخدم AN0007 Arduino إلى Platinum COMM، AN0007، Arduino إلى Platinum COMM، إلى Platinum COMM، Platinum COMM |