فهرست مطالب:

بازیابی ماژول بلوتوث HC-06 با پیکربندی اشتباه: 4 مرحله
بازیابی ماژول بلوتوث HC-06 با پیکربندی اشتباه: 4 مرحله

تصویری: بازیابی ماژول بلوتوث HC-06 با پیکربندی اشتباه: 4 مرحله

تصویری: بازیابی ماژول بلوتوث HC-06 با پیکربندی اشتباه: 4 مرحله
تصویری: LDmicro 13: HC-05 Bluetooth Phone App Control (Microcontroller PLC Ladder Programming with LDmicro) 2024, جولای
Anonim
بازیابی ماژول بلوتوث HC-06 با پیکربندی اشتباه
بازیابی ماژول بلوتوث HC-06 با پیکربندی اشتباه

با توجه به حداکثر گرایی خالص ، ماژول HC-06 بلوتوث (slave) خود را با نرخ بار 1 ، 382 ، 400 baud با دستور AT+BAUDC پیکربندی کردم. از زمانی که آردوینو به آن متصل شد قادر به استفاده از ماژول با کتابخانه SoftwareSerial نبود. من سعی کردم باود را با سریال سخت افزاری آردوینو (پین 0 و 1) بدون شانس بازیابی کنم.

من همچنین سعی کردم موضوع را در گوگل بدون یافتن راه حل قابل قبول جستجو کنم. شاید استفاده از پورت سریال ساخته شده توسط رایانه می تواند راه حلی باشد (با تغییر سطح منطقی 12V به 3V3) ، اما رایانه من این پورت منسوخ را ندارد ، بنابراین مجبور شدم راه حل دیگری ارائه کنم.

مرحله 1: آنچه شما نیاز دارید

آنچه شما نیاز خواهید داشت
آنچه شما نیاز خواهید داشت
  • برد Arudino/Genuino با Atmel ATMEGA328P-PU MCU پیش فرض (@16MHz).
  • ماژول بلوتوث HC-06 در 1 ، 382 ، 400 باود گوش می دهد
  • arduino IDE اولیه از

مرحله 2: راه حل

راه حل
راه حل
راه حل
راه حل

لطفاً توجه داشته باشید که این دستورالعمل و راه حل برای سناریوی 1 ، 382 ، 400 baud (AT+BAUDC) ساخته شده است. این راه حل برای سایر نرخ های باود کار نخواهد کرد. برای رسیدگی به موارد دیگر ، لطفاً به مراحل شروع از مرحله 3 مراجعه کنید.

راه حل واقعا ساده است.

  1. پین VCC HC-06 را به پین 5 ولت آردوینو وصل کنید.
  2. پین GND HC-06 را به پین GND آردوینو وصل کنید.
  3. پین RXD HC-06 را به پین 2 آردوینو وصل کنید.
  4. پین TXD HC-06 را بدون اتصال رها کنید (یا به پین 8 متصل شوید).
  5. بارگذاری طرح hc06reset.ino.
  6. این برنامه HC-06 را در حالت 115 ، 200 baud (AT+BAUD8) تنظیم می کند.
  7. از ماژول بازیابی HC-06 خود مانند قبل استفاده کنید.

مرحله سوم: پشت صحنه…

پشت صحنه…
پشت صحنه…
پشت صحنه…
پشت صحنه…

کتابخانه SoftwareSerial با Arduino IDE می تواند حداکثر 115 ، 200 بیت در ثانیه را منتقل کند ، بنابراین سرعت کافی برای برقراری ارتباط با سرعت 1 ، 382 ، 400 مورد نظر را ندارد. با توجه به اینکه یک برد پیش فرض آردوینو روی 16 مگاهرتز کار می کند ، حداکثر سرعت تراکم فشرده نشده تئوری 16 ، 000 ، 000 بیت/ثانیه است. تا اینجا خوب هستیم!

بر اساس درک من از SoftwareSerial.cpp ، ارتباط سیل با تنظیم یک پین خروجی High (= 1) یا Low (= 0) با توجه به تأخیر (که از نرخ باود ناشی می شود) بین تغییرات انجام می شود.

  • بنابراین ، پین خروجی به طور پیش فرض زیاد است (یعنی هیچ داده ای وجود ندارد)
  • سپس یک بیت شروع (که پین را به سمت پایین می کشد) منتقل می شود
  • 8 بیت داده از LSB به MSB منتقل می شود (+5V وقتی بیت 1 و 0 در غیر این صورت) پس از آن
  • بیت توقف (که پین را به سمت بالا می کشد) منتقل می شود

به این ترتیب 1 بایت با استفاده از 10 بیت منتقل می شود.

پیامی که باید ارسال کنیم AT+BAUD8 است (بدون / n ، / r در پایان). این دستور HC-06 را روی 115 ، 200 baud rate تنظیم می کند که توسط کتابخانه های معمولی قابل کنترل است.

برای ارسال بیت با سرعت 1 ، 382 ، 400 بیت/ثانیه ، برای هر بیت ما 1/1 ، 382 ، 400 ثانیه زمان (که تقریباً 723.38 نانوس ثانیه است) برای هر بیت داریم. آردوینو با سرعت 16000 ، 000 مگاهرتز کار می کند ، بنابراین هر چرخه 1/16 ، 000 ، 000 ثانیه طول می کشد - یعنی 62.5 نانوس در ثانیه.

با استفاده از کد مونتاژ AVR می توانیم از دستور OUT برای تنظیم پین خروجی بالا یا پایین و NOP برای صبر دقیق یک چرخه CPU استفاده کنیم. هر دو دستور دقیقاً 1 چرخه پردازنده را مصرف می کنند. به این ترتیب زمان بیت 723.38 ns را می توان با 11 تا 12 دستورالعمل آردوینو در هر بیت منتقل شده پوشش داد. یک نکته را باید در نظر گرفت: دستور OUT یک بایت کامل را یکجا تنظیم می کند ، بنابراین ما باید PORTx را انتخاب کنیم که مشکلی در آن وجود ندارد. استفاده از ATMEGA328P-PU به عنوان مثال PORTD (پین های آردوینو 0-7) برای این شرایط مناسب است. پس از تنظیم بیت ، فقط زمان مناسب باید سپری شود که توسط 10 تا 11 NOP انجام می شود و تمام.

جزئیات محاسبه را می توانید در فایل اکسل زیر بیابید. این فایل دستورالعمل های لازم را برای برنامه ایجاد کرد. پس از چسباندن کد تولید شده ، تنها چند جایگزین باید انجام شود.

مرحله 4: خواندن بیشتر/ بهبود امکانات

  • شاید بتوان با استفاده از تکنیک توضیح داده شده در مرحله قبل ، کتابخانه ای سریعتر SoftwareSerial ساخت.
  • FedericoK2 ابزاری عالی ساخته است که کد بازیابی HC-06 را برای هر نرخ بیت ممکن تولید می کند. از اینجا به سایت دسترسی پیدا کنید: https://tools.krum.com.ar/save_your_hc-06/ با تشکر FedericoK2

توصیه شده: