چهارشنبه , ۲۹ آبان ۱۳۹۸
آخرین مطالب
LINK TABLES
خانه | کارگاه آموزشی ماژول ها | ماژول بلوتوث و میکروکنترلر AVR – جلسه ۳

ماژول بلوتوث و میکروکنترلر AVR – جلسه ۳

دوستان عزیزم سلام!

این بار در خدمتتون هستم با جلسه ی چهارم کارگاه آموزشی ماژول ها. بالاخره این جلسه، جلسه ی آخریه که در مورد ماژول بلوتوث صحبت می کنیم. این بار قصد داریم که یه مدار عملی ببندیم و  ماژول بلوتوث و میکروکنترلر AVR رو با هم راه اندازی کنیم.  خیلی سریع بریم سر اصل مطلب !!!

  • توضیحات
  • کدنویسی
  • ویدیوی آموزشی

در جلسات قبل کارگاه آموزشی ماژول ها با ماژول بلوتوث آشنا شدیم. سپس آن را به کامپیوتر متصل نموده و تنظیم کردیم. همچنین یک ارتباط ساده ی سریال نیز با موبایل و ماژول برقرار نمودیم. در ادامه می خواهیم یک پروژه نیز تعریف کنیم و این بار ماژول بلوتوث و میکروکنترلر AVR را با بکدیگر ارتباط دهیم.

پروژه ماژول بلوتوث و میکروکنترلر

هدف از این پروژه

  • یادگیری نحوه ی برقراری ارتباط بین ماژول بلوتوث و میکروکنترلر و مجهز کردن میکروکنترلر به ارتباط بلوتوث
  • مشاهده ی مطالب جلسات قبل در حوزه ی ارتباطی ماژول بلوتوث و میکروکنترلر AVR
  • برقراری یک ارتباط ساده بین کامپیوتر و میکروکنترلر از طریق بلوتوث
  • آماده کردن مخاطبان عزیز جهت انجام کارهای عملی

تعریف پروژه

در این پروژه ی آموزشی قصد داریم مداری را طراحی کنیم که با کامپیوتر ارتباط بگیرد. آنگاه پس از برقرارشدن ارتباط، هرچیزی که توسط کیبورد کامپیوتر تایپ می کنیم در LCD کاراکتری نمایش داده شود. به عبارتی می خواهیم LCD کاراکتری را به یک نمایشگر متنی برای کامپیوترمان تبدیل کنیم.

نقشی که ماژول بلوتوث در این جا ایفا می کند، ایجاد ارتباط بین کامپیوتر و میکروکنترلر می باشد. به عبارتی توسط ارتباط بلوتوث یک ارتباط سریال مجازی بین کامپیوتر و میکروکنترلر برقرار می کنیم. سپس با تایپ عبارات در محیط ترمینال کامپیوتر، این عبارات توسط میکروکنترلر دریافت شده و بر روی ال سی دی نمایش داده می شود.

ما در اینجا از لپ تاپ استفاده کرده ایم. با توجه به این که لپ تاپ دارای بلوتوث است، فقط نیاز به یک ماژول بلوتوث داریم. در صورتی که شما از کامپیوتر فاقد بلوتوث استفده می کنید می توانید یک ماژول بلوتوث دیگر نیز برای کامپیوترتان تهیه کنید.

قطعات مورد نیاز برای این پروژه

  • ماژول بلوتوث hc-05
  • Lcd کاراکتری (در اینجا ۲X16)
  • میکروکنترلر AVR (در اینجا ATMega16)
  • پتانسیومتر کیلواهم
  • بردبورد وسیم

شماتیک مدار

شماتیک مدار این پروژه در پروتئوس به صورت زیر است. همانطور که مشاهده می کنید LCD به صورت ۴ سیمه به میکروکنترلر متصل شده است. برای تنظیم کنتراست ال سی دی نیز به شیوه ای که در تصویر آمده است عمل می کنیم. برای اطلاعات بیشتر به «راه اندازی LCD کاراکتری» مراجعه کنید.

شماتیک پروژه ماژول بلوتوث

ماژول بلوتوث و میکروکنترلر را نیز به این گونه متصل می کنیم که پایه ی TXD ماژول به پایه ی RXD میکروکنترلر (PIND.0) وصل باشد. قرار است در این پروژه میکروکنترلر نقش گیرنده را در ارتباط سریال بازی کند. به همین دلیل همین اتصال بین ماژول بلوتوث و میکروکنترلر کافی است. و دیگر نیازی به اتصال RXD ماژول به TXD میکروکنترلر نیست. برای مطالعه ی بیشتر در مورد ارتباط سریال به نوشته ی «ارتباط سریال» مراجعه کنید.

برای افزودن ماژول بلوتوث به کتابخانه ی نرم افزار پروتئوس از فایل هایی که در انتهای این نوشته برای دانلود قرار داده شده است، استفاده کنید. برای این کار دو فایل BluetoothTEP.IDX و BluetoothTEP.LIB موجود در فایل زیپ را در فولدر LIBRARY در محل نصب پروتئوس کپی کنید. پس ازآن در محیط پروتئوس با جستجوی عبارت Bluetooth می توانید از آنها استفاده نمایید.

فلوچارت عملکرد پروژه

با مطالعه ی دقیق فلوچارت زیر به نحوه ی عملکرد پروژه پی خواهید برد. این فلوچارت برای میکروکنترلر نوشته شده است. با اجرای این فلوچارت فرمان های میکروکنترلر برای LCD، بر اساس ارتباط ماژول بلوتوث و میکروکنترلر سازماندهی می شوند.

فلوچارت پروژه ماژول بلوتوث

نوشتن برنامه برای میکروکنترلر

برای این کار از نرم افزار کدویژن استفاده کرده ایم (به دلیل محبوبیتی که دارد). هنگام ایجاد پروژه، ارتباط ۴ سیمه ی LCD کاراکتری را فعال می کنیم. همچنین گیرنده ی ارتباط سریال را با تنظیمات بادریت ۹۶۰۰، یک بیت پایان و بدون توازن فعال می نماییم.

?? برای مشاهده ی برنامه ی نوشته شده و توضیحات آن بر روی زبانه ی برنامه نویسی در بالا کلیک کنید. ??

شبیه سازی

همان شماتیکی را که قبلا در محیط پروتئوس رسم کردیم، شبیه سازی می کنیم. به نکات زیر توجه کنید:

??  مسلماً نمی توانیم ارتباط بلوتوث را شبیه سازی کنیم. به همین دلیل به هنگام شبیه سازی، ارسال اطلاعات (از طریق بلوتوث) را به وسیله ی پورت های سریال مجازی انجام می دهیم. جهت تنظیم کردن قطعه ی ماژول بلوتوث در محیط پروتئوس با دابل کلیک بر روی آن تنظیمات پورت سریال را وارد می کنیم. منظور از پورت سریال در اینجا پورت مجازی ای است که به ماژول بلوتوث در شبیه سازی متصل می شود.

??  برای ایجاد پورت سریال مجازی از نرم افزار Tibbo VSP manager استفاده می کنیم. آموزش نحوه ی استفاده از این نرم افزار در فضای اینترنت وجود دارد. با کمی جستجو در اینترنت نحوه ی کار با این نرم افزار را یاد خواهید گرفت. (علت این که این آموزش در اینجا ارائه نمی شود، طولانی شدن بحث و دور شدن از هدف اصلی این جلسه می باشد). در صورتی که در استفاده از این نرم افزار به مشکل برخوردید بپرسید تا با کمال میل پاسخ دهیم.

??  با نرم افزار Tibbo دو پورت سریال مجازی ایجاد نموده  و آن ها را با هم کوپل می کنیم. یکی را به ماژول بلوتوث در پروتئوس متصل کرده و دیگری را به نرم افزار ترمینال ارتباط می دهیم. در مورد نحوه ی کار با نرم افزار ترمینال TeraTerm در جلسه ی قبل مفصلاً توضیحاتی ارائه شد.

شبیه سازی را اجرا می کنیم. هرچیزی را که در محیط ترمینال تایپ کنیم بر روی LCD نمایش داده می شود. شبیه سازی انجام شده را در انیمیشن زیر مشاهده می کنید:

شبیه سازی پروژه ماژول بلوتوث

بستن مدار ماژول بلوتوث و میکروکنترلر به صورت عملی

پس از انجام شبیه سازی موفقیت آمیز، نوبت به بستن مدار به طور عملی می رسد. نمونه ی مدار بسته شده بر روی بردبورد را در تصویر اول بالای صفحه مشاهده کردید. با مشاهده ی ویدیوی آموزشی در مورد بستن مدار و عملکرد آن مطالبی مفید خواهید آموخت. در صورتی که سوالی در رابطه با بستن مدار دارید، صمیمانه در خدمتتان هستیم!

??  ویدیوی تهیه شده برای کار با مدار عملی در همین نوشته در زبانه ی ویدیوی آموزشی قابل دسترسی می باشد.??

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

توضیحات برنامه

برخی از خطوط برنامه ی بالا در مباحث قبل (در دوره ی آموزشی میکروکنترلر AVR و دوره ی آموزشی برنامه نویسی C) عینا آمده اند و توضیحاتی نیز برای آن ها ارائه شده است. به همین دلیل از توضیح دوباره پرهیز می کنیم.

  • در خطوط ۱۷ تا ۲۱ گیرنده ی سریال میکروکنترلر را برای تنظیماتی که میخواهیم تنظیم می کنیم. این تنظیمات را در قسمت توضیحات بیان کردیم. برای یادآوری در مورد ارتباط سریال اینجا را کلیک کنید.
  • در خط ۳۹ منتظر می مانیم تا در ارتباط سریال مابین ماژول بلوتوث و میکروکنترلر، میکروکنترلر کاراکتری را دریافت کند.
  • در خطوط ۴۰ تا ۴۳ بررسی می کنیم که آیا کاراکتر دریافتی، کد اسکی معادل کلید backspace است یا خیر. در صورتی که اینگونه باشد، تمام نوشته های روی LCD را پاک می کنیم و نشانگر را به مکان اولیه باز می گردانیم.
  • در خط ۴۵ در صورتی که کلید backspace فشرده نشده باشد، کاراکتر دریافتی را بر روی LCD نمایش می دهیم.

در ویدیوی زیر با نحوه ی تنظیم بلوتوث کامپیوتر جهت برقراری ارتباط با ماژول بلوتوث و میکروکنترلر آشنا خواهید شد. همچنین یک نمونه ی اولیه از این مدار و نحوه ی عملکرد آن را نیز مشاهده خواهید نمود.

فایل زیپ زیر شامل سورس کد، فایل هگز، فایل شبیه سازی و کتابخانه ی ماژول بلوتوث در پروتئوس می باشد. آن را از طریق لینک زیر دانلود کنید:

پسورد فایل زیپ : www.microlearn.ir

دانلود فایل های مربوط به این جلسه

خب دوستان خوبم، بالاخره کارمون با ماژول بلوتوث تموم شد. پروژه ای که انجام دادیم یه پروژه ی آموزشی بود و برای پروژه های آموزشی ساده بودن اصل اوله. با ماژول بلوتوث ایده های بسیار جالب و کاربردی ای رو میشه پیاده سازی کرد. این تجربه رو شخصا در انجام پروژه هایی که در تیم میکرولرن انجام داده م، دارم. در جلسه ی بعد با ماژول NRF آشنا خواهیم شد. همراهمون باشین. یا حق.

درباره ی مجتبی حکیمیان

Avatar
کارشناس الکترونیک و کارشناس ارشد مخابرات سیستم | زمینه ی تحقیقاتی : پردازش تصویر و تعقیب اشیاء متحرک |‌فعال در حوزه ی الکترونیک مبتنی بر میکروکنترلر | برنامه نویس و طراح بردهای الکترونیکی مبتنی بر میکروکنترلر

۳۳ دیدگاه

  1. Avatar
    سمیرا زمانی

    سلام و تشکر از سایت خوبتون
    میشه با دو تا HC05 دو تا AVR رو به هم متصل کرد؟

  2. Avatar

    با سلام
    کارتون عالیه حرف ندارین
    ی سوال چرا اموزشی از ماژول wifi ندارین ک خیلی کاربردی تره
    اصلا میکرو می تونه ماژول wifi پشتیبانی کنه

  3. Avatar

    به نظرم کار کردن با زبان c خیلی سخته چون دستورات طولانی و سختی داره

    • احسان عبداللهی

      دوست عزیز اگه زبان سی را اصولی یاد بگیرید اصلا براتون سخت نیست. حتما در روش آموزش خودتون بازبینی کنید تا بتونید این زبان را خوب یاد بگیرید.

  4. Avatar

    سلام
    خیلی ممنون از مطلب جامع و توضیحات عالی تون

  5. Avatar

    باید چه کار کنیم به جای نمایش دادن کارکتر مثلا led های جدا از همی روشن بشن

  6. Avatar

    تشکر از مطالبتون

  7. Avatar

    مرسی به خاطر سایت خوبتون
    اگر قسمت نوشتن نظر رو بالای نظرات بذ ارید بهتره

  8. Avatar

    سلام ببخشید یک سوال داشتم من همین برنامه رو برای atmega32 دز کدویژن نوشتم اما این ارور رو میده لطفا کمک کنید:
    Packed library error: D:\code vision avr\lib\alcd.lib(134): #error directive: Alphanumeric LCD library not set in the project configuration.

  9. Avatar

    سلام برای تغذیه مدار از چی استفاده کردین؟ممنون میشم اگه زودتر پاسخ بدید.

  10. Avatar

    یه سوال دیگه هم دارم و اون اینه که اگه بخایم ارتباطمون دو طرفه باشه یعنی مثلا با زدن یک کلید یه متن از پیش تعریف شده ای از طریق میکرو و ماژول بلوتوث رو ارسال کنیم برای کامپیوتر چکار باید بکنیم؟

  11. Avatar

    سلام
    از این پست شما درباره ماژول بلوتوریاث لذت بردم

    دو سوال از شما دارم و خیلی نیاز دارم برای انجام یک پروژه:

    ۱-طراحی یک دسته کنترل مثل دسته کنترل هلیکوپتر که به هر سرعت دلخواه که دسته کنترلی حرکت داده شود با همان سرعت ، موتور الکتریکی بچرخد.

    ۲-ذخیره اطلاعات سرعت چرخش موتور الکتریکی در هر ثانیه در یک حافظه جانبی

    با تشکر از شما
    لطفا جواب را به ایمیلم ارسال کنید

  12. Avatar

    من دوتا مشکل دارم اول اینکه وقتی میرم توی تنظیمات بلوتوث لپتاپم توی قسمت com ports چیزی نشون نمیده و دوم اینکه وقتی میرم توی تنظیمات ترمینال توی کدویژن روی com 3 تنظیم شده و فقط همین یه گزینه رو داره و نمیشه تغییرش داد.ممنون میشم اگه راهنمایی بفرمایید

  13. Avatar

    سلام
    ببخشید یه سوال بی ربط داشتم میشه توضیح بدهید چطور میتونیم فرکانس بالا حدود ۱ تا دو گیگاهرتز رو آشکارسازی بکنیم آی سی خاصی هم برای اینکار هست؟ شنیدم با دیودهای مخصوص هم میشه فرکانس های بالا رو آشکارسازی کرد میشه توضیح بدید چطور از این دیودها استفاده میکنن؟؟

  14. Avatar

    سلام خسته نباشید.
    ۲ تا درخواست دارم:
    لطفا هرچه سریعتر آموزش ماژول nrf رو شروع کنید. من به شدت بهش احتیاج دارم!
    اگر وقت داشتید، لطفا سری هم به انجمن بزنید و به سؤالات پاسخ بدید.
    این رو صادقانه بگم که منبعی بهتر از سایت شما برای آموزش avr و ماژول ها پیدا نکردم!!!! به همین خاطر این درخواست ها رو از شما دارم.
    با تشکر از مطالب و پیگیری شما

  15. Avatar

    با عرض سلام و خسته نباشید
    جناب مهندس .من یک دستگاه دارم که با پورت سریال فقط در بادریت ۳۰۰ کار میکند و با کامپیوتر ارتباط میگیرد چگونه میتوانم با یک برد بلوتوث با این دستگاه ارتباط بر قرار کنم . ممنون میشوم راهنمایی بفرمایید

  16. Avatar

    سلام آقای مهندس
    من تموم کار ها و انجام دادم وقتی به ماژول وصل میشم و ارسال می کنم
    روی صفحه کاراکتر های نامفهومی ظاهر میشه
    مشکل از کجاس
    فیوز بیت روی ۸MHZ

  17. Avatar

    سلام
    واقعا سایت عالی دارید

  18. Avatar

    سلام
    بینهایت ممنونم از مطالب
    خیلی عالی بود
    ممنون میشم ماژول بعدی رو sim900 آموزش بدبن یا منبعی معرفی کنید
    چون من و تعدادی از دوستان برای پروژه کارشناسیمون باید با این ماژول کار کنیم
    ممنون

    • Avatar

      سلام به شما
      خوشحالیم که مطلب مفیدی بوده براتون. ماژول sim900 هم در دستور کار قرار داره و آموزش اون در آینده ای نزدیک براتون منتشر میشه.

  19. Avatar

    با سلام و خسته نباشید

    آیا میشه یک فایل رو از کامپیوتر یا موبایل به میکرو فرستاد؟

    • Avatar

      سلام
      ماژول HC-05 و کلا ماژول های ارتباط سریال جهت برقراری ارتباط سریال هستن و برای ارسال فایل مناسب نیستن. این ماژول ها برای ارسال مستقیم فایل طراحی وساخته نشده ن. البته میشه به طور نرم افزاری و با پیچیدگی هایی این کار رو با سرعت پایین کرد که کلا به صرفه نیس.

      • Avatar

        بسیار ممنون از پاسختون

        شما چه ماژولی را برای اینکار پیشنهاد میدهید؟

        • Avatar

          بعید میدونم ماژولی وجود داشته باشه که به طور خاص برای انتقال فایل سیستم بین کامپیوتر و میکروکنترلر طراحی شده باشه.
          در هرصورت با استفاده از هر ماژول ارتباطی (از جمله ماژول بلوتوث، وای فای و …) شما نیاز به دو چیز دارین تا بتونین فایل رو به صورت بایت به بایت منتقل کنین. یکی پروتکل و برنامه ای در سمت میکروکنترلر و دیگری هم پروتکل و برنامه ای در سمت کامپیوتر. در کل کار مشکل و کندی هست. معمولا در چنین کاربردهایی از بردهای رسبری پای استفاده میشه.

  20. Avatar

    سلام جناب مهندس، خسته نباشید 🙂
    عذر میخوام، لطفا اگر امکانش هست در مورد مد مستر و متصل شدن به ماژول هایی که روی مد اسلیو هستن هم کمی توضیح بدید.
    ممنون از زحماتتون 🙂

    • Avatar

      سلام، ممنونم
      وقتی بخوایم دو تا ماژول رو به هم متصل کنیم یکی رو باید روی مد مستر تنظیم کنیم و دیگری را روی مد اسلیو. در مورد چگونگی تنظیم صحبت شد.
      بعد از اون ماژول مستر باید ماژول اسلیو رو پیدا کنه. روش های مختلفی هست اما چون ما میخوایم که کانکشن امنی داشته باشیم از این روش استفاده می کنیم:
      – آدرس ماژول اسلیو رو از طریق دستورات AT که صحبت شد پیدا می کنیم.
      – با دستور زیر نوع کانکشن در ماژول مستر رو روی حالتی قرار میدیم که ماژول اسلیو رو از طریق آدرسی که ما بهش میدیم پیدا کنه:
      AT+CMODE=0
      – و با دستور زیر هم بهش دستور میدیم که به ماژول با آدرس X متصل بشه و تمام:
      AT+BIND=X
      برای جزییات بیشتر به دیتاشیت ماژول مراجعه کنین. در صورتی که سوالی بود در خدمتم.

  21. Avatar

    سلام
    واقعا ممنون
    یه سوال اون مقاومت هایی که کنار ماژول تو عکس فوق قرار دادین برای چه کاربردی هست و اندازه هاشون چقدر است ؟/
    با تشکر

    • Avatar

      سلام، خواهش می کنم؛
      واقعا منتظر بودم که یه نفر این سوالو بپرسه. این مقاومت ها ربطی به ماژول ندارن و کلا برای کنتراست LCD هستن !!! 😀 راستش پتانسیومتری که برای تنظیم کنتراست در نظر گرفته بودم وسطای کار دچار مشکل شد. برای همین چند تا مقاومت ۳۳۰ رو با هم سری کردم تا بتونم با تقسیم مقاومتی تنظیم کنتراست رو به صورت پله ای انجام بدم، همین!!!
      البته موقع تدوین این جلسه پتانسیومتر در اختیارم بود ولی به دلایلی مدار رو تغییر ندادم:
      اول این که بگم میشه گاهی خلاقیت های کوچیکی زد و مشکل مدار رو راحت حل کرد
      دوم اینکه به کسایی که پتانسیومتر دم دستشون نیست بگم چه جوری ال سی دی رو راه بندازن.
      سوم اینکه این مدار یه مدار تست و اولیه س و خیلی نیازی به مته به خشخاش گذاشتن نیست.
      —————————————————————————————————–
      اینجا یه نکته ی ریز هم یادم اومد که بگم: وقتی دارین از میکروکنترلر به ماژول اطلاعات میفرستین، TXD میکرو رو مستقیما به RXD ماژول وصل نکنین. چون سطح ولتاژ ماژول در ارتباط سریال ۳٫۳ ولت هست ولی سطح خروجی میکروکنترلر ۵ ولته. این کار میتونه در طولانی مدت به ماژول آسیب وارد کنه. برای رفع این مشکل در مسیری که گفتم یه تقسیم مقاومتی انجام بدین تا سطح ولتاژ بیاد روی ۳٫۳ ولت.
      البته اینجا این کار رو من نکرده م چون در این پروژه ی آموزشی کلا از میکروکنترلر چیزی به ماژول ارسال نمیشه و این ارتباط قطعه.

  22. Avatar

    ممنون برای پروژه لطفا sim900 رو هم اموزش دهید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *