آردوینو پروژه های آردوینو مدارهای الکترونیک

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

آموزش راه اندازی NRF24L01 با آردوینو - دیجی اسپارک
نوشته شده توسط علیرضا قربانی

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

nRF24L01 ماژولی برای انتقال  داده  به صورت بی سیم می باشد و در مواردی مانند:هدست های بی سیم ،  کنسول های بازی مانند ps3   ، اتوماسین خانگی  ، سیستم های مسیر یاب مانند GPS و …. استفاده می شود

این ماژول در نوع آنتن دار و بدون آنتن ارا,ه میشود که برد آنتن دار ۱۱۰۰ متر و بدون آنتن آن ۱۰۰ متر می باشد.

nRF24L01 ماژول یک ماژول بسیار عالی برای ارسال و دریافت اطلاعات  بدون خطا  می باشد در مقابسه با ماژول های HMTR  از امکانات بسیار بیشتری برخورد دار می باشند.

آموزش راه اندازی ماژول nRF24L01 با استفاده از آردوینو

توضیحات ماژول NRF24L01:

ولتاژ کاری :الی ۳٫۳ ولت

دیتاریت ۲ مگابیت بر ثانیه  در فضای باز

دارای رگولاتور داخلی

 

 

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

دو عدد Arduino (در این پروژه از یک عدد آردوینو mega2560 و یک عدد آردوینو uno استفاده شده است).

دو عدد ماژول nrf24l01 (خرید از فروشگاه )

جوی استیک

سروو موتور

دو عدد خازن ۱۰ میکروفاراد به تغذیه ماژول nRF24L01 متصل می‌شود.

پین VCC به۳٫۳ولت و GND به GND  متصل شود.

 

 

در تصویر زیر نحوه ی اتصال پین ها را مشاهده می‌کنید.

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

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

 

پین های 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

 

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

  • MOSI is connected to the digital pin 51
  • MISO is connected to the digital pin 50
  • SCK is connected to the digital pin 52

ابتدا کتابخانه را از این لینک دانلود کنید و به نرم افزار اضافه کنید.

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

در ابتدای برنامه ابتدا سه کتابخانه  SPI.h ,nrf24L01.h,RF24.h را فراخوانی میکنیم.

از کلاس RF24   یک شی به نام radio میسازیم .

این شی  دو آرگمان ورودی دارد.که آرگومان اول  CE  و آرگومان دوم  CSN   می باشد.

قابل ذکر است که میتوانید پین های دیگری را نیز استفاده کنید.

 

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

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

سپس  از دستور ;(radio.setRetries(15, 15 استفاده میکنیم.

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

به زبان ساده تر ، اگر اطلاعات توسط گیرنده دریافت نشود ، فرستنده داده ها را دوباره ارسال خواهد کرد.

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

این متد ماژول را در مد فرستنده قرار میدهد و در ورودی آن آدرس گیرنده اطلاعات را وارد میکنیم.
ابتدا مقدار آنالوگ جوی استیک که بین ۰ و ۱۰۲۳ می باشد در خانه ی صفرم آرایه joystick   قرار میگیرد، سپس به کمک تابع map   مقدار ۰ الی ۱۰۲۳ به مقدار ۰الی ۱۸۰ نسبت داده میشود.

 

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

 کد های گیرنده:

 

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

آرگمان  اول تعداد فرستتنده هایی است که گیرنده از آن ها اطلاعات در یافت میکند. قابل ذکر است از۶  فرستنده به طور همزمان میتوان اطلاعات دریافت نمود.

آرگمان دوم آدرس فرستنده اطلاعات می باشد.

 

این متد ماژول را برای دریافت اطلاعات آماده میکند.

 

اگر ماژول داده ای دریافت نمود ، این متد مقدار true و اگر مقداری دریافت نکرد مقدار false را بر میگرداند.

 

پس از دریافت   داده،  مقدار مورد نظر به سروو موتور نسبت داده می شود.

 

 

[advanced_iframe securitykey=”355da9b1daf6a615cc55b91130b5d7f8b997ce0c” src=”http://www.aparat.com/video/video/embed/videohash/OwLvH/vt/frame” allowFullScreen=”true” webkitallowfullscreen=”true” mozallowfullscreen=”true” height=”360″ width=”640″]

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

علیرضا قربانی

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

۶۹ دیدگاه

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