التحديثات 8/10/2024 ، محاولة ثابتة ITERATOR إذا لم يتم الاتصال
مستقببرات Ebyte
تهدف هذه المكتبة إلى استخدامها مع جهاز الإرسال والاستقبال eByte من نوع UART (E44-TTL-100 على سبيل المثال) ، وحدات لاسلكية صغيرة لـ MCU مثل Teensy و Arduino. تتيح هذه المكتبة للمستخدمين برمجة معلمات التشغيل وترسل واستقبال البيانات. تقوم هذه الشركة بتصنيع عدة وحدات ذات قدرات مختلفة ، ولكن يجب أن تكون معظم التعريفات هنا متوافقة معها ، تم استخراج جميع الثوابت من عدة أوراق بيانات وتم إدراجها في ثنائية مثل كيف تمثل ورقة البيانات كل إعداد. نأمل أن تكون أي تغييرات أو إضافات على الثوابت مسألة نسخ ثوابت ورقة البيانات مباشرة في #Defines. استخدام هذه المكتبة يستهلك حوالي 970 بايت.
أنت فقط بحاجة فقط إلى هذه المكتبة لبرمجة وحدات eByte هذه.
لقراءة هياكل البيانات ، يمكنك استدعاء طريقة ReadBytes مباشرة على الكائن التسلسلي لـ Ebyte:
eserial.readbytes ((uint8_t*) & mydata ، (uint8_t) sizeof (myData)) ؛
لكتابة هياكل البيانات ، يمكنك استدعاء طريقة الكتابة مباشرة على الكائن التسلسلي لـ Ebyte
eserial.write ((uint8_t*) & mydata ، (uint8_t) sizeof (myData)) ؛
أرقام طراز Ebyte (فقط قائمة جزئية معروضة) مخطط أرقام الطراز القديم E30-TTL-100 ، E30-490T20D ، E31-TTL-100 ، E32-TTL-100 ، E32-TTL-500 ، E32-TTL-1W ، E41-TTL-100 ، E41-TTL-100 ، E44-TTL-100 ، E44-TTL-E44 ، E44-TTL-E44 ، E44-TTL-E44 ، E44-TTL-1W ، E50-TTL-100 ، E50-TTL-500 ، E51-TTL-100 ، E51-TTL-500 ، E51-TTL-1W
مخطط رقم طراز جديد E22-900T22S ، E22-230T22S ، E22-400T22S ، E22-230T30S ، E22-400T30S ، E22-900T30S ، E30-433T20S3 ، E30-170D ، E30-170T27D ، E30-780S E30-868T20D ، E30-915T20D ، E30-490T20D ، E30-433T20S ، E30-433T20D ، E30-915T20S ، E31-230T27D ، E31-433T17S ، E31-433T17D ، E31-433T27D ، E31-433T30D ، E31-433T33D ، E32-433T20DC ، E32-433T20S ، E32-433T2T2T ، E32-433T30D ، E32-433T30S ، E32-868T20D ، E32-868T20S ، E32-868T30D ، E32-868T30S ، E32-915T20D ، E32-915T20S ، E32-915T30D ، E32-915T. E32-170T30D ، E32-400T20S
ملاحظة: تحقق من موقع Ebyte للتأكد من أن الوحدة النمطية المحددة تدعم اتصالات UART ، بعض الوحدات النمطية هي SPI فقط.
إليك مقطع فيديو على YouTube حول استخدام المكتبة: https://youtu.be/hmjarkgucfa
اتصال الوحدة
الوحدة النمطية MCU الوصف
- مو أي دبوس رقمي* دبوس للتحكم في أوضاع العمل/البرنامج
- M1 أي دبوس رقمي* دبوس للتحكم في أوضاع العمل/البرنامج
- RX أي دبوس رقمي* دبوس إلى MCU TX Pin (تنقل الوحدة إلى MCU ، وبالتالي يجب أن تتلقى MCU بيانات من الوحدة النمطية
- TX أي دبوس رقمي* دبوس إلى MCU RX (تنقل الوحدة النمطية إلى MCU ، وبالتالي يجب أن تتلقى MCU بيانات من الوحدة النمطية
- AUX أي دبوس رقمي للإشارة عند اكتمال العملية (منخفضة الانشغال ، يتم الانتهاء من ارتفاع) (يمكنك حذفها مع -1 ، ولكن وقت الاسترداد الثابت المستخدمة وقد لا تكون طويلة بما يكفي لإكمال العملية)
- VCC +3V3 أو 5V0 ، لاحظ أن الوحدات قد تكون أكثر دفئًا مع 5V0 وتستهلك المزيد من الطاقة
- يجب أن يكون الأرض VCC شائعة في الوحدة النمطية و MCU
ملحوظات
- الحذر في الاتصال بـ Arduino Pin 0 و 1 لأن تلك المسامير هي اتصال USB بجهاز الكمبيوتر ، بحيث لا يمكنك توصيل Ebyte أثناء البرمجة. أوصي بعدم استخدام دبابيس Arduino 0 و 1
- خطوط الإشارة لهذه الوحدات هي 3V3 ولكنها تتسامح 5 فولت ، ولكن قد تؤدي 5 فولت إلى فشل الاتصال. إذا كنت تستخدم MCU 5 فولت مثل Arduino ، فقد تحتاج إلى القيام بما يلي. أ) قد تحتاج إلى سحب 4K7-10K إلى دبابيس RX و AUX (ربما TX) إذا كنت تستخدم و Arduino B) إذا كنت تستخدم Arduino ، فقد تحتاج إلى مقاوم من سلسلة 4K7 بين MCU TX و Transceiver RX.
- في بعض تطبيقاتي ، لم يكن لدي ما يكفي من المسامير الرقمية لتوصيل دبوس AUX. لا تقلق (فقط تمرير -1 في قائمة الوسيطة في الكائن إنشاء رمز). لدى المكتبة تأخير مدمج لتوفير تأخير مناسب للسماح لإرسال الإرسال-قد تضطر إلى تجربة المبلغ.
- تعتمد الدبابيس التسلسلية للاتصال على MCU ، Teensy 3.2 على سبيل المثال: Serial1 هي Rx = 0 ، Tx = 1 ، Serial2 Rx = 9 ، Tx = 10 ، Serial3 Rx = 7 ، Tx = 8. يمكن أن يكون Arduino أكثر دبابيس متسلسلة باستخدام برامج (MCU_RX_PIN ، MCU_TX_PIN) ، باستثناء الدبابيس 0 و 1 كما هي لاستخدام USB
- لا تسمح بعض MCU مثل Teensy و ESP32 باستخدام برامج البرامج لإنشاء منفذ اتصالات. لا تقلق ، فقط سلك الصلب EBTYE إلى منفذ UART مخصص (PIN 0 و PIN 1 على TEENSY 3.2 للسلسلة 1.
موقع المصنعين
http://www.ebyte.com/en/ move module تم تصميم هذه المكتبة لاستخدامها مع http://www.ebyte.com/en/product-view-news.aspx؟id=174
استخدام الرمز العام
- إنشاء كائن تسلسلي
- إنشاء كائن eByte الذي يستخدم الكائن التسلسلي
- ابدأ الكائن التسلسلي
- init () كائن eByte
- تعيين المعلمات (اختياري ولكن مطلوب إذا كان المرسل والمستقبل مختلفان)
- أرسل أو استمع إلى البيانات المرسلة (بايت واحد) أو إنشاء بنية بيانات وإرسالها
نصائح حول الاستخدام
لأفضل نطاق:
- تشير ورقة البيانات إلى أن أفضل النتائج مع الهوائيات 2MeToS خارج الأرض
- خط البصر المثالي ، ولكن الاختبار الشخصي ، لا يزال النقل ناجحًا مع بعض العوائق
- يمكن أن تتحسن معدلات بيانات الهواء البطيئة النطاق ، ولكن بسبب وقت الإرسال الأطول ، سيتم التضحية بمدة إرسال البيانات
- النظر في الهوائيات عالية الربح (يمكن شراؤها من الشركة المصنعة) انظر موقع الويب الخاص بهم للحصول على التفاصيل
- تقول ورقة البيانات لنطاق الحد الأقصى ، وتشغيل الوحدات ذات 5.0 فولت (احتفظ 3V3 على خطوط الإشارة). لقد وجدت شخصية مختلفة مختلفة مع ارتفاع الجهد الإمداد
- تقول ورقة البيانات لنطاق الحد الأقصى ، قم بتعيين معدل بيانات الهواء على 2.4 نقطة أساس. لقد وجدت شخصية مختلفة مختلفة عن معدلات البيانات المنخفضة ، وقد تحد معدلات البيانات المنخفضة من عدد المرات التي يمكنك من خلالها إرسال البيانات.
حزم نقل البيانات
- تحتوي هذه المكتبة على طريقة لإرسال بايت واحد ، ولكن إذا تم إرسال المزيد من البيانات ، قم بإنشاء بنية بيانات وإرسال بنية البيانات باستخدام طريقة Sendstruct (& struct ، sizeof (struct)). لاحظ Pass by Ref ، لذا قم بتضمين اسم الهيكل قبل
- مرة أخرى ، تستغرق معدلات البيانات البطيئة وقتًا أطول ، ستحتاج إلى تجربة نطاق معدل بيانات الهواء المثالي بناءً على حجم البيانات
- إذا كنت بحاجة إلى إرسال البيانات باستخدام بنية بين تغييرات MCU المختلفة في كيفية اختلاف كل حزم معالج. إذا حصلت على بيانات تالفة حول نهاية الاسترداد ، فهناك طرق لإجبار المترجم على عدم تحسين تعبئة الهيكل-لم أتمكن بعد من العمل. ما نجح بالنسبة لي هو استخدام مكتبة تخلق دعامة ومقابض إرسال. تحقق من EasyTransfer.h (Google IT واحصل على المؤلف المفضل لديك). في هذه libs ، ستستخدم طريقة إرسالها والحصول عليها (هناك أجهزة وبرامج libs ، استخدم وفقًا لذلك. مما يعني أنه يمكنك استخدام هذه المكتبة لبرمجة وإدارة الإعدادات ولكن استخدام EasyTransfer للتعامل مع البيانات عبر الخطوط التسلسلية التي تستخدمها eByte. ليب.
تصحيح الأخطاء
- إذا كانت الوحدة اللاسلكية الخاصة بك هي إرجاع جميع 0 لطريقة printparameters () أو مجرد النموذج وأنت تستخدم الأجهزة المسلسلات وأنت تستخدم ESP32 ، تأكد
- إذا كانت الوحدة اللاسلكية الخاصة بك تعيد جميع 0 من أجل طريقة printparameters () ، فتأكد من أن الأسلاك الخاصة بك صحيحة وتعمل ، فإن MCU RX تحتاج إلى الاتصال بطبقة Ebyte TX والعكس صحيح. تأكد أيضًا من توصيل M0 و M0 و AUX بالمنافذ الرقمية الصحيحة. معظم المشكلات ناتجة عن اتصالات خط البيانات غير الصحيحة
- إذا كانت الوحدة النمطية اللاسلكية الخاصة بك تعيد جميع 0 لطريقة PrintParameters () ، وأنت متأكد من أن الأسلاك الخاصة بك صحيحة ، فقد تكون الوحدة النمطية بطيئة في الرد على تغيير pinmode الذي يتم إجراؤه أثناء تغيير الوضع. تقول ورقة البيانات إن تأخير 2 مللي ثانية مطلوب ، لكنني وجدت 10 مللي ثانية أكثر موثوقية. مع بعض الوحدات ، هناك حاجة إلى مزيد من الوقت. الافتراضي للمكتبة هو 50 مللي ثانية ، ولكن زيادة هذا في ملف .h إذا لم تتم قراءة المعلمات بشكل صحيح.
- إذا كانت الوحدة اللاسلكية الخاصة بك تعيد جميع 0 من أجل طريقة printparameters () ، وأنت متأكد من أن الأسلاك الخاصة بك صحيحة و MCU هي 5V0 ، فقد تضطر إلى إضافة موزّارات الجهد على خط MXU TX و AUX. يمكن أن تكون هذه الوحدات صاخبة إذا تم إرسال إشارة 5V0 إليها. أحصل على نتائج موثوقة للغاية عند تشغيل الوحدة النمطية مع مصدر طاقة 3V3 منفصل. أستخدم محولات باك عمومًا أو المنظمين الخطية.
- إذا كنت تستخدم 5V0 MCU ، فقد تحتاج إلى مقاومات سلسلة فقط على خط MCU TX إلى خط Ebyte RX وربما خطوط M0 و M1. من المفترض أن تكون وحدات eByte هذه 5 فولت متسامح ، ولكنها آمنة أفضل من آسف. كما تدعي MFG أن السحب 4K7 يمكن أن تكون هناك حاجة إلى خط MCU TX و AUX. لقد استخدمت هذه الإرسال والاستقبال على Uno's و Mega's و Nano مع أي مقاومات وكان كل شيء على ما يرام. كان لدي حالة واحدة لم يعمل فيها نانو مع هؤلاء المستقبلين وتطلب بعض الطاقة الفردية.
- إذا كنت تستخدم وحدات 1W (30 ديسيبل إخراج الطاقة) ، فتوصل الوحدة بشكل منفصل عن إمدادات الطاقة على متن الطائرة MCU. قد يتجاوز السحب الحالي التصنيف على متن الطائرة مما يؤدي إلى تدمير MCU. لقد دمرت منظم الجهد على متن الطائرة على نانو عند محاولة تشغيل وحدة 1W.
- إذا كان جهاز الإرسال والمستقبل مختلفًا MCU (Arduino <-> Teensy) ، فإن إرسال حزمة دفع هياكل البيانات بشكل مختلف ، بغض النظر عن أنواع بيانات الهيكل. ويرجع ذلك إلى كيفية التعامل مع معالج 8 بت ومعالج 32 بت مع عملية التعبئة. الخيار 1) هو استخدام eastransfer lib. أنا استخدم هذا lib ويعمل بشكل جيد. الخيار 2) جرب سمة متغير __attribute __ ((معبأة)). الخيار 3) ولا تضحك ، ولكن إذا أرسل تعويمًا بالنظر إلى ضرب تعويم إلى 100 (وأعيد صياغة إلى int) ، فقم بتقسيم هذه القيمة على 100 على الطرف المتلقي (إعادة صياغة إلى تعويم)
- إذا بدا أنك تحصل على بيانات فاسدة من .printparameters ، جرب addinng #include "AVR/IO.H" إلى برنامج .ino الخاص بك
- إذا كنت تقوم بتشغيل وحدات eByte الخاصة بك من مصدر طاقة منفصل ، فتأكد من توصيل جميع الأسباب