در پست‌های قبلی روش اتصال ماژول nrf24l01 را به آردوینو و همچنین برنامه نویسی آن را که به صورت کنترل یک سروو موتور به وسیله جوی استیک بود را آموزش دادیم که می‌توانید برای دیدن آن به پست زیر مراجعه کنید.

آموزش ماژول NRF24L01 در آردوینو

اگر توجه کرده باشید در آموزش قبلی دو برد آردوینو به وسیله‌ی NRF با هم‌دیگر ارتباط یک طرفه برقرار می‌کردند به صورتی که یکی از آردوینوها فقط به صورت فرستنده و آردوینو دیگر فقط به صورت گیرنده عمل‌ می‌کرد.در این پست ارتباط دوطرفه به وسیله‌ی nrf24l01 را آموزش می‌دهیم به صورتی که آردوینو هم بتواند اطلاعات دریافت کند و هم اطلاعات ارسال کند. در ادامه آموزش با مرجع تخصصی آردوینو همراه باشید.

 

سخت افزار مورد نیاز

دو عدد آردوینو Uno

دو عدد ماژول nrf24l01

دو عدد LED
دو عدد تاچ سویج

 

اتصالات

اتصالات در هر دو آردوینو به صورت زیر می‌باشد.

پین های CE   و CSN میتوانند به هر پین دیجیتالی منصل شوند(‌ ما پین ce را به پین ۹ و پین csn را به پین شماره ۱۰ آردوینو متصل می‌کنیم)

در برد آردوینو uno  پین های پرروتوکل spi به صورت زیر می باشند:

  • MOSI is connected to the digital pin 11
  • MISO is connected to the digital pin 12
  • SCK is connected to the digital pin 13

همچنین یک تاچ سوییچ را به پین شماره ۳ متصل می‌کنیم و آن را به صورت PULL Down در می‌آوریم . یک عدد LED نیز به پین شماره ۲ متصل می‌کنیم.

 

آموزش راه اندازی nrf24l01 -دیجی اسپارک

 

اتصالات دو عدد ماژول nrf24l01 به دو عدد آردوینو

اتصالات دو عدد ماژول nrf24l01 به دو عدد آردوینو

 

کدنویسی

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

دانلو د کتابخانه nrf24l01

آموزش نصب کتابخانه در آردوینو

 

کد‌های زیر را بر روی هر دو آردوینو آپلود کنید. همانطور که مشاهده می‌کنید بر روی هر آردوینو که کلید را فشار دهید ، وضعیت LED متصل به آردوینو مقابل تغییر می‌کند.

 

 

 

 

شیوه کار

در setup برنامه تنظیمات مربوط به ماژول و LEDها و کلید‌ها را انجام‌می‌دهیم. سپس تابعی به نام chk_incoming تعریف می‌کنیم .

در این تابع چک می‌کنیم که در صورتی  که آردوینو مقابل اطلاعات را ارسال کند، آن اطلاعات را دریافت کند و متناسب با  آن‌ اطلاعات دریافت شده(این اطلاعات شامل وضعیت کلید‌های متصل  به آردوینو مقایل می‌باشد) وضعیت LED ها را تغییر دهد.

 

سپس تابعی به نام  TX_mode تعریف می‌کنیم.

در این تابع ابتدا ماژول در وضعیت  فرستنده قرار می‌گیرد سپس اطلاعات را ارسال می‌کند ، پس از ارسال اطلاعات دوباره ماژول در وضعیت گیرنده قرار می‌گیرد.

 

بعد از مراحل فوق تابعی به نام chk_outgoing ایجاد می‌کنیم.

در این تابع مرتبا وضعیت فشرده شدن کلید‌ها چک می‌شود و در صورتی که یکی از کلید‌ها فشرده شود از تابع TX_mode قرار می‌گیرد و اطلاعات مربوط به وضعیت کلید‌ها را برای آردوینو مقابل ارسال می‌کند و سریع دوباره ماژول در مد گیرنده قرار می‌گیرد.

 

 

در مرحله آخر تمام توابع نوشته شده را در loop برنامه قرار می‌هیم:

 

 

 

علیرضا قربانی
علیرضا قربانی
علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

13 دیدگاه ها

  1. علی می‌گه:

    آقای قربانی خسته نباشید.مطلبتون مثل همیشه فوق العاده بود.
    دستتون درد نکنه.

  2. میم می‌گه:

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

  3. […] ۲- دانلود کتابخانه و پروژه راه اندازی NRF24L01 و +NRF24L01 3- آموزش ارتباط دو طرفه توسط NRf24l01 آردوینو ۴- راه اندازی ماژول nRF24L01 […]

  4. احسان می‌گه:

    ببخشید من سوالم رو توی اون یکی مثال این ماژول گذاشته بودم.
    من این مدار رو دقیقا بستم. توی سریال مانیتور failed میزنه و توی هر دو آردوینو فقط ال ای دی چشمک میزنه.

    بعدشم من یه جا خوندم که تو مثالش واسه هر کدوم یه آدرس مختلف نوشته. هر چند تستش نکردم.

  5. sama می‌گه:

    سلام اقای قربانی
    خسته نباشین
    من بابت پروژم یکم راهنمایی میخوام، فکر کنم شما بتونین کمکم کنین

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

  6. monem می‌گه:

    سلام خسته نباشین.
    بنده از ماژول + استفاده میکنم و ماژول رو صحیح وصل کردم.
    هرموقع کلید رو فشار می دم تو سریال مانیتور می نویسه failed.
    چی کار می تونم بکنم؟

  7. محمدرضا می‌گه:

    سلام خسته نباشین
    من برنامه نویس اندروید هستم و میخام یه اپلیکیشن بسازم که کاربر باهاش به این برد وصل بشود و یه ارتباط دو نفره ایجاد بشود .من را در این راه یاری بفرمایید
    چطور باید این کار را بکنم؟

پاسخ دهید

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