جدول المحتويات:

استعادة وحدة البلوتوث HC-06 التي تم تكوينها بشكل غير صحيح: 4 خطوات
استعادة وحدة البلوتوث HC-06 التي تم تكوينها بشكل غير صحيح: 4 خطوات

فيديو: استعادة وحدة البلوتوث HC-06 التي تم تكوينها بشكل غير صحيح: 4 خطوات

فيديو: استعادة وحدة البلوتوث HC-06 التي تم تكوينها بشكل غير صحيح: 4 خطوات
فيديو: استعادة شكل الأيقونات الأصلية واصلاح صيغ الملفات والبرامج لشكلها الطبيعي في الويندوز 2024, يوليو
Anonim
قم باستعادة وحدة البلوتوث HC-06 التي تم تكوينها بشكل غير صحيح
قم باستعادة وحدة البلوتوث HC-06 التي تم تكوينها بشكل غير صحيح

من أصل أقصى حد ، قمت بتكوين وحدة HC-06 Bluetooth (التابعة) الخاصة بي بمعدل باود 1 ، 382 ، 400 باود باستخدام الأمر AT + BAUDC. منذ أن تم توصيل Arduino به لم يكن قادرًا على استخدام الوحدة مع مكتبة SoftwareSerial. حاولت استعادة معدل البث بالباود من خلال مسلسل أجهزة Arduino (الدبابيس 0 و 1) دون أي حظ.

حاولت أيضًا البحث في Google عن الموضوع دون إيجاد حل مقبول. ربما كان استخدام المنفذ التسلسلي المدمج بجهاز الكمبيوتر حلاً (مع تغيير مستوى المنطق من 12 فولت إلى 3 فولت 3) ، لكن جهاز الكمبيوتر الخاص بي لا يحتوي على هذا المنفذ القديم ، لذلك كان علي أن أتوصل إلى حل آخر.

الخطوة 1: ما سوف تحتاجه

ما سوف تحتاجه
ما سوف تحتاجه
  • لوحة Arudino / Genuino مع الافتراضي Atmel ATMEGA328P-PU MCU (@ 16 ميجا هرتز).
  • وحدة بلوتوث HC-06 تستمع على 1 ، 382 ، 400 باود
  • IDE الأساسي اردوينو من

الخطوة الثانية: الحل

الحل
الحل
الحل
الحل

يرجى ملاحظة أن Instructable والحل مصنوع لسيناريو 1 ، 382 ، 400 باود (AT + BAUDC). لن يعمل الحل مع أي معدلات باود أخرى. للتعامل مع الحالات الأخرى ، يرجى الرجوع إلى الخطوات التي تبدأ من الخطوة 3.

الحل بسيط حقا.

  1. قم بتوصيل دبوس HC-06's VCC إلى دبوس 5V من Arduino.
  2. قم بتوصيل دبوس GND HC-06 بدبوس GND في Arduino.
  3. قم بتوصيل دبوس RXD الخاص بـ HC-06 بالدبوس 2 من Arduino.
  4. اترك دبوس TXD الخاص بـ HC-06 غير متصل (أو اتصل بالدبوس 8).
  5. تحميل رسم hc06reset.ino.
  6. سيقوم البرنامج بتعيين HC-06 في 115 ، 200 وضع الباود (AT + BAUD8).
  7. استخدم وحدة HC-06 المستردة كما كان من قبل.

الخطوة الثالثة: ما وراء الكواليس …

خلف الكواليس…
خلف الكواليس…
خلف الكواليس…
خلف الكواليس…

مكتبة SoftwareSerial التي تأتي مع Arduino IDE قادرة على الإرسال بحد أقصى 115 ، 200 بت / ثانية ، لذلك فهي ليست بالسرعة الكافية للتواصل على المعدل المطلوب 1 ، 382 ، 400 باود. بالنظر إلى أن لوحة Arduino الافتراضية تعمل على 16 ميجاهرتز ، فإن الحد الأقصى النظري لمعدل البت غير المضغوط هو 16 ، 000 ، 000 بت / ثانية. نحن بخير حتى الآن!

بناءً على فهمي لبرنامج SoftwareSerial.cpp ، يتم إجراء الاتصال السيالي عن طريق تعيين طرف إخراج مرتفع (= 1) أو منخفض (= 0) فيما يتعلق بالتأخير (الذي يأتي من معدل البث بالباود) بين التغييرات.

  • يكون دبوس الإخراج مرتفعًا بشكل افتراضي (يعني عدم وجود بيانات) ، إذن
  • يتم إرسال بت البداية (الذي يسحب الدبوس منخفضًا) ، ثم
  • يتم إرسال 8 بتات من البيانات من LSB إلى MSB ، (+ 5V عندما تكون البتة 1 و 0 بخلاف ذلك)
  • يتم إرسال بت التوقف (الذي يسحب الدبوس عالياً)

بهذه الطريقة يتم إرسال 1 بايت باستخدام 10 بتات.

الرسالة التي يجب أن نرسلها هي AT + BAUD8 (بدون / n ، / r في النهاية). يعيد هذا الأمر HC-06 إلى 115 ، 200 معدل الباود الذي يمكن للمكتبات العادية التعامل معه.

من أجل إرسال وحدات بت بسرعة 1 ، 382 ، 400 بت / ثانية ، لكل بتة 1/1 ، 382 ، 400 ثانية (أي 723.38 نانوثانية تقريبًا) لكل بت. يعمل Arduino على 16 ، 000 ، 000 ميجاهرتز ، لذلك تستمر كل دورة 1/16 ، 000 ، 000 ثانية - أي 62.5 نانوثانية لكل دورة.

باستخدام كود تجميع AVR ، يمكننا استخدام الأمر OUT لتعيين دبوس الإخراج مرتفعًا أو منخفضًا و NOP لانتظار دورة وحدة معالجة مركزية واحدة بالضبط. كلا الأمرين يلتهم بالضبط دورة وحدة المعالجة المركزية 1. بهذه الطريقة يمكن تغطية وقت البت 723.38 نانوثانية من خلال 11 إلى 12 تعليمات اردوينو لكل بت مرسلة. شيء واحد يجب مراعاته: يقوم الأمر OUT بتعيين بايت كامل في وقت واحد ، لذلك يتعين علينا تحديد PORTx حيث لا يمثل هذا مشكلة. يعد استخدام ATMEGA328P-PU على سبيل المثال PORTD (دبابيس اردوينو 0-7) مثاليًا لهذه الحالة. بعد ضبط البت ، يجب أن ينقضي الوقت المناسب فقط وهو ما يتم بواسطة 10 إلى 11 NOPs وهذا كل شيء.

يمكنك العثور على تفاصيل الحساب في ملف Excel أدناه. أنشأ هذا الملف التعليمات الجماعية المطلوبة للبرنامج. كان لا بد من إجراء عدد قليل من الاستبدالات بعد لصق الكود الذي تم إنشاؤه.

الخطوة 4: مزيد من القراءة / تحسين الإمكانيات

  • ربما يمكن إنشاء مكتبة SoftwareSerial أسرع باستخدام التقنية الموضحة في الخطوة السابقة.
  • صنع FedericoK2 أداة رائعة تنشئ رمز استرداد HC-06 لكل معدل بت محتمل. ادخل إلى الموقع هنا: https://tools.krum.com.ar/save_your_hc-06/ شكرًا FedericoK2

موصى به: