آموزش راه اندازی NRF24L01 توسط EasyMCU

آموزش راه اندازی NRF24L01 توسط EasyMCU

آموزش راه اندازی NRF24L01 توسط EasyMCU : استفاده از فرستنده و گیرنده های بیسیم ، از آنجایی که سیم های ارتباطی بین اجزا را حذف می کند، از طرفی از شلوغی و پیچیدگی ارتباط ها می کاهد و ظاهر هر دستگاه زیباتر می شود، از طرف دیگر استفاده و تعیین مکان و جابه جایی اجزا را راحت تر می کند.

یکی از بهترین و مطمئن ترین ماژول ها برای پروژه های هابی، ماژول NRF24L01+ می باشد که  قیمت مناسبی دارد .

 

ویژگی ها و برتریهای +NRF24L01

 

  • ارتباط بیسیم دو جهته ( هر بار یا فرستنده و یا گیرنده )
  • استفاده از پروتکل SPI در برقراری ارتباط با میکروکنترلر
  • فرکانس کاری 4GHz
  • برد 1km برای مدل آنتن دار و کمتر از 100m برای مدل بدون آنتن
  • سرعت انتقال 1-2Mbps (مگا بیت در ثانیه)
  • حالت استندبای ( standby )
  • جریان مصرفی بسیار کم
  • ACK خودکار و ارسال مجدد اطلاعات در صورت نرسیدن به گیرنده
  • محاسبات CRC

 

PinOut ماژول +NRF24L01

 

 

نحوه اتصال NRF24L01p به بورد Zcross

 

تصویر فوق توسط نرم افزار fritzing تهیه شده است

 

راه اندازی NRF24L01+ با Zcross

 

در حالت عادی راه اندازی این ماژول به سبب استفاده از پروتکل SPI قدری اطلاعات تخصصی نیاز دارد، اما کتابخانه این ماژول برای EasyMCU با نام nrf24l01.cpp توسعه داده شده است که راه اندازی این ماژول در حد 2 خط دستور ساده می شود!

دریافت کتابخانه NRF24L01p از Github

 

پس از دانلود کتابخانه، محتوای آن که شامل 2 فایل با پسوند (h.* و cpp.*) می باشد را به پوشه module_libraries انتقال دهید. یک بار نرم افزار EasyMCU را ببندید و مجدد اجرا کنید.

اگر برای ایجاد اولیه پروژه مشکل دارید قسمت شروع کار با Easy MCU را ببینید.

در مراحل ایجاد پروژه از تب libraries کتابخانه ی NRF24L01 را به پروژه اضافه کنید.

 

پیکربندی:

 

در ابتدا یک شیئ با نام wireless از کلاس NRF24L01 می سازیم. ( به جای wireless از هر نام دلخواه دیگری می توانید استفاده کنید ) و در پرانتز جلوی آن ویژگی های پیکربندی مد نظر را اعمال می کنیم.

 

جهت پیکربندی با ویژگی های

  • فرستنده
  • انتقال 1 بایت
  • فعال سازی ACK خودکار
  • LED1 به عنوان نمایانگر ارسال هر بایت
  • P11 به عنوان پایه ی CE ماژول (پیشفرض)
  • P12 به عنوان پایه ی irq ماژول (پیشفرض)
 

جهت پیکربندی با ویژگی های

  • گیرنده
  • انتقال 1 بایت
  • فعال سازی ACK خودکار
  • LED1 به عنوان نمایانگر دریافت هر بایت
  • P11 به عنوان پایه ی CE ماژول (پیشفرض)
  • P12 به عنوان پایه ی irq ماژول (پیشفرض)
 

تعیین پایه های دلخواه برای CE و irq

  • wireless نام شیء ساخته شده از کلاس NRF24L01 می باشد.
  • Px نام پایه دلخواه.

 

سینتکس های ارسال و دریافت

 

زمانی که ماژول به صورت فرستنده پیکربندی شده است ، برای ارسال می توانید از متود ()write استفاده کنید.

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

 

پروژه نمونه

 

پروژه نمونه به این شرح است که در سمت فرستنده یک پتانسیومتر به P5 متصل است و از سطح ولتاژ آنالوگ پتانسیومتر نمونه برداری می شود. اطلاعات نمونه برداری شده 12 بیت هستند، پس با 4 بار شیفت به راست دادن اطلاعات به اطلاعات 8 بیتی می رسیم. فرمت مناسب برای ارسال و دریافت 8 بیت یا به عبارت دیگر 1 بایت می باشد. در سمت گیرنده اطلاعات را دریافت می کنیم و در محیط ترمینال EasyMCU مقادیر دریافتی را مانیتور می کنیم. دقت کنید که برای این منظور از واحد USB_CDC استفاده شده است فلذا در سمت گیرنده دقت کنید واحد USB فعال باشد. اگر در ایجاد پروژه جدید مشکل دارید به قسمت شروع کار با Easy MCU مراجعه نمایید.

 

برنامه ی main.cpp برای دستگاه فرستنده:

 

برنامه main.cpp برای دستگاه گیرنده: