خانه / پروژه های اردوینو Arduino / پروژه آردوینو راه اندازی ماژول NRF24L01

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

در این پست از سایت اِمیک, ماژول رادیویی +NRF24L01 را با استفاده از برد آردوینو راه اندازی خواهیم کرد. ما در این پروژه نیاز به دو عدد برد اردوینو داریم که یکی از انها به عنوان فرستنده و دیگری به عنوان گیرنده استفاده می شود. قبلا در این پست ماژول +NRF24L01 را با میکروکنترلر AVR راه اندازی کرده بودم که توضیحات کاملی در مورد این ماژول و پایه های ان و… داده شد که توصیه می کنم مطالعه کنید.

این ماژول یکی از بهترین و مطمئن ترین ماژول های رادیویی برای ارسال و دریافت داده و اطلاعات می باشد که می توان در موارد مختلفی مانند قطعات کامپیوتری وایرلس, هدست های بیسیم, ریموت کنترل ها, اتوماسیون خانگی و غیره از ان استفاده کرد. این ماژول در دو نوع انتن دار و بدون انتن وجود دارد که نوع بدون انتن ان (انتن روی خود برد) برد حدود ۱۰۰ متر دارد و نوع انتن دار بردش بالای ۱۰۰۰ متر است. 

قطعات لازم برای راه اندازی ماژول +NRF24L01 شامل دو عدد برد اردوینو که من برد اردوینو UNO و MEGA 2560 داشتم و استفاده کردم شما می تونید از هر نوع برد اردوینو که دارید استفاده کنید, البته دقت کنید که حتما بردتون باید از ارتباط SPI پشتیبانی بکند. همچنین شما نیاز به دو عدد ماژول +NRF24L01 دارید (یکی برای فرستنده و دومی برای گیرنده) و یه سری قطعات دیگه که در ادامه توضیح داده می شود.

P-NRF24L01-Test-with-Arduino

برای راه اندازی ماژول +NRF24L01 ما از کتابخانه ان استفاده می کنیم بنابراین لازم است در ابتدا شما کتابخانه این ماژول را به نرم افزار اردوینو اضافه کنید, برای این منظور فایل زیر را دانلود کرده و از حالت Zip خارج کنید (پسورد www.emic.ir) و پوشه RF24-master را به پوشه‌ی libraries موجود در محل نصب برنامه اردوینو اضافه کنید.

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

 

کتابخانه راه اندازی ماژول +NRF24L01 :

همانطور که گفته شد ما برای راه اندازی ماژول +NRF24L01 از کتابخانه ان استفاده خواهیم کرد, در ادامه شما با این کتابخانه و توابع ان اشنا خواهید شد و نحوه راه اندازی ماژول +NRF24L01 با استفاده از این کتابخانه را یاد خواهید گرفت.

در ابتدا شما باید کتابخانه های زیر را به ابتدای برنامه خود اضافه کنید:

در ادامه ما یک شیء از کلاس RF24 به نام radio میسازیم. این شیء دارای دو آرگومان ورودی است که اولین پین CE و دومین پین CSN را مشخص می کند. (می توانید این شماره پین ها را به دلخواه تغییر دهید)

سپس یک آرایه به نام rxAddr تعریف میکنیم, در این آرایه آدرس گیرنده که اطلاعات برای ان ارسال می شود قرار دارد. (ادرس ارتباط را مشخص می کنیم)

دستور زیر باعث فعال شدن ماژول می شود که در تابع setup از ان استفاده می کنیم

در ماژول +NRF24L01 با هر بار ارسال داده از فرستنده به گیرنده، گیرنده یک ack ایجاد میکند. حال با استفاده از تابع زیر، در صورتی که این ack توسط فرستنده دریافت نشد، فرستنده سعی به ارسال دوباره ی داده میکند. به زبان ساده تر اگر اطلاعات توسط گیرنده دریافت نشود، فرستنده داده ها را دوباره ارسال خواهد کرد.
در آرگومان اول عدد مورد نظر در ۲۵۰ میکرو ثانیه ضرب میشود (حداکثر مقدار برای آرگومان ۱۵ می باشد) و زمان تغییر در هر بار ارسال داده را مشخص میکند. بنابراین در مثال ما اگر گیرنده موفق به دریافت داده ای نشد، فرستنده هر۳۷۵۰ میکرو ثانیه یا هر ۳٫۷۵ میلی ثانیه (۱۵*۲۵۰=۳۷۵۰) سعی به ارسال داده میکند. آرگمان دوم تعداد دفعات سعی برای ارسال داده را مشخص میکند. در این مثال اگر ماژول گیرنده داده ای دریافت نکرد، ماژول فرستنده قبل از متوقف شدن ۱۵ بار برای ارسال مجدد داده تلاش میکند.

دستور زیر ماژول را به عنوان فرستنده تنظیم می کند و ادرس گیرنده را در ورودی ان وارد می کنیم.(در بالا یک ارایه به نام rxAddr تعریف کردیم که حاوی ادرس گیرنده بود)

دستور زیر اطلاعات موجود در متغیر DATA را ارسال می کند و ورودی دوم اندازه ی مقدار ارسالی می باشد که به کمک تابع sizeof به طور اتوماتیک اندازه ی آن را مشخص میکنیم

دستور زیر ماژول را برای دریافت اطلاعات اماده می کند, این دستور و دستورات پایین مربوط به گیرنده هستند

دستور زیر در صورتی که ماژول گیرنده اطلاعاتی دریافت کند برابر یک می شود و در غیر این صورت برابر صفر است

دستور زیر دارای دو ارگومان ورودی است که مقدار اول مربوط به تعداد فرستنده هایی است که گیرنده از انها اطلاعات دریافت می کند, توجه کنید که حداکثر از ۶ فرستنده می توان به طور همزمان اطلاعات دریافت کرد, در اینجا فقط از ادرس ۰ استفاده می شود و ارگومان دوم هم ادرس ارتباط ما میباشد

دستور زیر اطلاعات را از فرستنده دریافت می کند و درون متغیر DATA می ریزد همانند دستوری که در بالا برای ارسال اطلاعات معرفی کردیم دستور زیر هم در قسمت ورودی دوم ان از تابع sizeof برای محاسبه اتوماتیک اندازه متغیر استفاده شده است

 

پروژه آردوینو راه اندازی ماژول NRF24L01 :

در زیر یک پروژه با این ماژول قرار داده شده است که هدف ان اشنایی شما با راه اندازی این ماژول به صورت عملی می باشد, شما می توانید پروژه زیر را با توجه به توضیحات ارائه شده در این پست با توجه به نیاز خود تغییر دهید. عملکرد این پروژه به این صورت است که قسمت فرستنده دارای دو کلید فشاری است و در قسمت گیرنده هم دو عدد LED وجود دارد. با فشار داده هر کدام از کلیدهای فشاری یک LED در قسمت گیرنده روشن می شود, در کلیپی که در انتهای مطلب گذاشته شده است می توانید عملکرد این پروژه را به صورت عملی مشاهده کنید.

 

پایه های ماژول +NRF24L01 :

همانطور که گفته شد ما در این پروژه برای قسمت فرستنده از برد اردوینو UNO و برای گیرنده از برد اردوینو MEGA 2560 استفاده کرده ایم و همچنین نیاز به دو عدد ماژول +NRF24L01 داریم, پایه های این ماژول در هر دو مدل با انتن و بدون انتن به صورت زیر است :

nRF24L01-Pinout

همانطور که در بالا مشاهده می کنید, تغذیه این ماژول حداکثر ۳٫۳ ولت است و در صورتی که ولتاژ بیشتری به ان اعمال کنید امکان اسیب دیدن ان وجود دارد. بهتره که از برد راه انداز این ماژول هم استفاده کنید که کار رو راحت می کنه و می تونید با ۵ ولت هم ماژول و هم بقیه قطعات پروژه رو تغذیه کنید و خطر اسیب دیدن ماژول با استفاده از برد راه انداز از بین میره. در تصویر زیر یه نمونه از این برد راه انداز را مشاهده می کنید که ماژول +NRF24L01 روی اون نصب میشه و به راحتی میتونید با ۵ ولت تغذیه کنید و در پروژه استفاده کنید. من برای تست این پروژه از این برد راه انداز استفاده کردم که میتونید در اخر مطلب مشاهده کنید

BaseModuleNrf

 

شماتیک فرستنده :

Transmitter-NRF24L01-Test-with-Arduino

  • پین CE <<< ۹
  • پین CSN <<< ۱۰
  • پین MOSI <<< ۱۱
  • پین MISO <<< 12
  • پین SCK <<<13

 

شماتیک گیرنده :

Receiver-NRF24L01-Test-with-Arduino

برای دیدن تصویر در اندازه بزرگتر ان را ذخیره کنید

  • پین CE <<< ۴۸
  • پین CSN <<< ۴۹
  • پین MISO <<< ۵۰
  • پین MOSI <<< 51
  • پین SCK <<<52

برنامه فرستنده :

برنامه گیرنده :

برنامه های فرستنده و گیرنده را در بالا مشاهده می کنید که در ابتدای مطلب در قسمت توضیح کتابخانه NRF24L01 دستورات استفاده شده بطور کامل توضیح داده شده اند. در صورتی که می خواهید از بردهای اردینو دیگری استفاده کنید فقط کافی است در خط ۵ برنامه ها پین های CE و CSN را با توجه به برد اردوینو مورد نظر خود به دلخواه تغییر دهید و پایه های ماژول را به پین های مربوط به ارتباط SPI در برد جدید متصل کنید.

 

  • برای اشنایی با دستورات مهم برنامه نویسی اردوینو اینجا کلیک کنید
  • برای مشاهده پروژه راه اندازی ماژول NRF24L01 با میکروکنترلر AVR اینجا کلیک کنید
  • برای اشنایی با نحوه پروگرام کردن برد اردوینو (ریختن برنامه روی برد) اینجا کلیک کنید

کلیپ تست عملی پروژه :

 

دانلود فایل ها

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

نظر یادتون نره…

درباره ی عابد رازانی

فارغ التحصیل کارشناسی الکترونیک از دانشکده باهنر شیراز و علاقمند به برنامه نویسی و طراحی مدارات الکترونیکی, درحال اماده شدن برای ارشد یا شایدم خدمت (:

دیدگاهتان را بنویسید

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