معرفی ، آموزش و راه اندازی ماژول NRF24L01 با AVR

معرفی ، آموزش و راه اندازی ماژول NRF24L01 با AVR

مقدمه

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

 


معرفی چیپ NRF24L01+

چیپ +NRF24L01 نمونه تصحیح شده با امکانات بیشتر و دیتاریت بالاتر چیپ NRF2401 است که توسط شرکت NORDIC در اوایل سال ۲۰۰۸ معرفی شد. چیپ NRF24L01 دارای یک موتور بلادرنگ (تکنولوژی پیشرفته SHOCKBURST) که اساسا طراحی شده برای موقعیت های که نیاز به مصرف توان بسیار پایین است NRF24L01 در رده فرکانسی جهانی ISM که در محدوده فرکانسی ۲٫۴۰۰ گیگاهرتز تا ۲٫۴۸۳۵ گیگا هرتز که در کل برای اجرا فقط به یک میکروکنترلر و تعداد کمی قطعات دیگر نیاز دارد که شامل چند خازن و سلف است. نحوه ارتباطی این چیپ به پروتکل SPI است که می توان با این پروتکل بر تمامی خواص نرم افزاری و سخت افزاری داخلی چیپ مدیریت داشت و آن را کنترل کرد.

NRF24L01P_Chip

مدولاسیون ارتباطی این چیپ به صورت GFSK است , همان مدولاسیونی که در تکنولوژی BLUETOOTH استفاده شده و به صورت انحصاری در دست چند شرکت بزرگ مثل BLUETOOTH   و  NORDIC SEMICONDUCTOR   و TEXAS INSTRUMENT و چند شرکت دیگر قرار دارد. چیپ به نحوی طراحی شده که هر چیپ شبیه به این است که یک کانال فرکانس خاص را برای خود دارد و از این رو می توان گفت درصد خطا و اختلال چیپ ها با یک دیگر (یا چیپ هایی به غیر از NRFL24L01) به صفر می رسد. دیتاریت چیپ در ۲ مگابیت بر ثانیه پیکره بندی شده و دو مد متفاوت مصرف پایین نیز دارد که آن را کم مصرف تر می کند.

 


انواع ماژول NRF24L01+

همانطور که در شکل زیر مشاهده می کنید ، این ماژول در دو نوع آنتن دار و بدون آنتن وجود دارد که نوع بدون آنتن حدودا برد ۱۰۰ متر و نوع آنتن دار آن در حدود ۱۱۰۰ متر می باشد.

NRF24L01P_Type


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

ویژگی های خاص:

  1. حداکثر دیتا ریت تا ۲ مگا بیت بر ثانیه در فضای باز
  2. جریان مصرفی بسیار پایین (۱۲ میلی آمپر)
  3. دارای رگولاتور داخلی و بی نیاز از تأمین ولتاژ های مختلف
  4. محدوده ولتاژ تغذیه چیپ از ۱٫۹ تا ۳٫۶ ولت
  5. مجهز به تکنولوژِی پیشرفته SHOCKBURST
  6. قابلیت اتصال چند ماژول به هم از طریق بی سیم و ایجاد یک شبکه محلی
  7. قابلیت تحمل ولتاژ ۵ ولت بر روی پین های دیتا
  8. سایز کوچک چیپ و نیاز به قطعات خارجی کم

 

موارد استفاده:

  1. قطعات کامپیوتری وایرلس مانند موس یا کی بورد یا قطعات دیگر
  2. هدست های بیسیم مانند VOIP HEADSET
  3. دسته های بیسیم کنسول های بازی مانند PS3
  4. ساعت های ورزشی یا سنسور ها
  5. ریموت کنترل برای مصارف الکترونیکی
  6. سیستم های مسیر یاب مانند GPS
  7. اسباب بازی ها
  8. و در بسیاری از پروژه های متنوع صنعتی و غیرصنعتی که نیاز به یک ارتباط بی سیم مطمئن می باشد.

 


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

NRF24L01P_Pins

نکته : پایه های هر دو سری بدون آنتن و آنتن دار یکسان و به صورت شکل فوق می باشد.

 


نحوه راه اندازی ماژول NRF24L01+

برای راه اندازی ماژول NRF24L01+ با استفاده از میکروکنترلر Atmega32 کافی است تا آن را به صورت زیر به میکروکنترلر وصل نماییم. سپس با اضافه کردن هدر فایل nrf24l01.h به برنامه میتوان از توابع موجود برای راه اندازی آن استفاده نمود.

NRF24L01P_Init

نکته : اگر از میکروکنترلرهای دیگر استفاده می کنید، پایه های MOSI، MISO، SCK را به پایه های رابط SPI در آن میکروکنترلر باید متصل نمایید. پایه های CE و CSN را به هر پایه دلخواه از آن میتوان وصل نمود اما در هدر فایل nrf24l01.h باید پورت متصل شده جدید را تغییر داد. پایه IRQ را نیز به هر پایه ای که وقفه خارجی دارد میتوان متصل کرد و سپس در هدر فایل nrf24l01.h شماره تابع سابروتین وقفه مربوطه را به شماره وقفه خارجی متصل به پایه IRQ تغییر داد.

 


توابع راه اندازی و نحوه ارسال/دریافت از ماژول NRF24L01

با اضافه کردن هدر فایل “nrf24l01+.h” به برنامه، قابلیت استفاده از این ماژول ایجاد می شود. سپس برای راه اندازی ماژول از تابع nRF_Config در برنامه استفاده می کنیم. به صورتی که برای ارسال اطلاعات (تنظیم ماژول به عنوان فرستنده) باید از این تابع به صورت زیر در برنامه:

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

در صورت تنظیم ماژول به عنوان فرستنده از تابع Send_Data استفاده می گردد. این تابع یا یا چندین متغیر را توسط ماژول ارسال می کند. به طوری که در آرگومان اول این تابع شماره payload یا شماره دیتایی که ارسال می شود قرار می گیرد. payload یک آرایه ۳۲ در ۸ بیت است که توانایی ارسال چندین داده به طور پشت سر هم ( مانند ارسال فایل متنی، mp3 ، ویدیویی و …) را فراهم می کند که میتوان داده های مختلف را در payload قرار داده و ارسال نمود. آرگومان دوم تابع نیز آدرس متغیری که میخواهیم ارسال شود در حافظه را دریافت می کند. بنابراین نحوه ارسال یک دیتا به صورت زیر است:

در صورت تنظیم ماژول به عنوان گیرنده در برنامه از متغیر State استفاده می گردد. متغیر State در حالت عادی ۰ است و زمانی که ماژول دیتایی را دریافت می کند، ۱ می گردد. بنابراین هر زمان که State برابر ۱ شد میتوان دیتا را از همان payload که ارسال شده بود دریافت کرده و کار مورد نظر را انجام داد. بنابراین نحوه دریافت دیتا یک به صورت زیر است:


پروژه راه اندازی دو ماژول NRF24L01+ و ارسال/دریافت توسط آن

در این پروژه می خواهیم بین دو ماژول NRF ارتباط برقرار کرده و توسط دو میکروکنترلر Atmega32 آنها را راه اندازی کنیم.

 

مرحله اول: طراحی سخت افزار

در این مرحله شماتیک مدار مورد نظر را در نرم افزار Altium Designer طراحی کردیم که به صورت شکل زیر می باشد. در این پروژه به دو مدار همانند این شکل نیاز داریم که هر دو آنها به همین صورت شکل زیر است.

NRF24L01_Schematic

مرحله دوم : طراحی نرم افزار

در این مرحله برنامه راه اندازی ماژول را برای فرستنده و گیرنده طراحی کرده و در نرم افزار CodeVision می نویسیم.

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

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

 

توضیح عملکرد پروژه :

فرستنده به صورت شمارنده از ۰ تا ۲۵۵ عمل می کند و همزمان هم LED های روی پورت A را روشن می کند و هم دیتای شمارش شده را به صورت کاراکتر به گیرنده ارسال می کند. گیرنده منتظر ارسال از فرستنده می ماند و به محض دریافت کاراکتر دیتا آن را روی پورت A نمایش می دهد.

 

مرحله سوم : پیاده سازی

در هنگام پیاده سازی به نکات زیر توجه کنید :

– مدار فرستنده و گیرنده کاملا شبیه به هم هستند.

– فرکانس میکرو در هنگام پروگرام کردن روی ۸ مگاهرتز داخلی است.

– ماژول های NRF24L01 را بدون استفاده از سیم نمیتوان به برد بورد وصل نمود.

– از سالم بودن LED ها و اتصال صحیح پایه مثبت آن به میکرو قبل از روشن نمودن مدار مطمئن شوید.

 

 

دانلود سورس پروژه راه اندازی ماژول NRF24L01 در نرم افزار کدویژن به همراه دیتاشیت و دیگر فایلهای پروژه

پسورد : electrovolt.ir

 

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

دیدگاه (74)

  • mahdi پاسخ

    باسلام و تشکر از کار زیباتون.
    بنده این ماژول رو گرفتم و مداررو باش بستم اما مشکلی که باهاش دارم اینه که فقط چند بار دریافت داره و بعد انگار گیرنده هنگ میکنه…
    برای اطمینان دو سوییچ گذاشتم و به هر سوییچ یک عدد اختصاص دادم که فقط همان لحظه استارت عدد رو ارسال میکنه و بعد دیگه هیچ…..
    این رو هم بگم فرستنده و گیرنده فعلا هر دو از یک جا دارن تغذیه میشن و خیلی نزدیک بهم هستن…نمیدونم اشکال از اینه یانه…لطفا راهنمایی فرمایید با تشکر

    ۱۸/۰۶/۱۳۹۴ در ۱۶:۳۰
    • محمد حسین پاسخ

      سلام دوست عزیز خواهش میکنم
      پروژه بالا رو اول ببندید و برنامشو پروگرام کنید اگه درست کار کنه ماژول ها ، میکرو و اتصالات درسته و بنابراین مشکل از برنامتونه که نوشتید. چنتا نکته به ذهنم میرسه توی برنامه :
      یکی اینکه متغیر State ( با S بزرگ ) رو در برنامه گیرنده و درون حلقه if چک کنید که حتما صفر کردید.
      در برنامه از تاخیر (delay) استفاده نکنید چون ممکنه باعث هنگ بشه.
      ممکنه مشکل از برنامه کلیدها باشه که توصیه میکنم بخش هفتم آموزش AVR مارو بخونید.

      ۱۸/۰۶/۱۳۹۴ در ۱۸:۱۱
  • Soheyla پاسخ

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

    ۲۶/۰۶/۱۳۹۴ در ۱۹:۲۱
    • محمد حسین پاسخ

      سلام
      خواهش میکنم دوست عزیز
      بهتره از USB که ولتاژ ۵ دقیق رو میده یا از آی سی ولتاژ رگولاتور ۷۸۰۵ به همراه یک آداپتور استفاده کنید
      برای میکرو AVR هم پروگرامر stk500 و Mk2 پیشنهاد میشه
      لطفا آموزش های AVR رو مطالعه کنید همه این سوالاتو به طور کامل توضیح دادم

      ۲۶/۰۶/۱۳۹۴ در ۲۰:۰۳
  • ناصر پاسخ

    خداخیرتون بده ومزدزحمات ونشردانشتون رودوچندان عطاکنه

    ۲۶/۰۷/۱۳۹۴ در ۲۰:۳۱
    • محمد حسین پاسخ

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

      ۲۶/۰۷/۱۳۹۴ در ۲۳:۴۴
  • matin پاسخ

    سلام مهندس
    من میخوام از چنتا از این مازول استفاده کنم.
    به این صورت که یه ماژول مرکزی دارم که به چنتا ماژول دیگه فرمان میده به صورت جدا. و هر ماژولی که فرمان رو گرفت به ماژول اصلی جواب تایید بده.
    فرمان برای هر ماژول جدا است و باید به یه صورت مشخص بشه که کدوم ماژول مورد نظر است.
    من چجوری باید این کارو انجام بدم؟؟
    تشکر از سایت خوبتون.
    یاعلی

    ۲۹/۰۷/۱۳۹۴ در ۰۸:۵۷
    • محمد حسین پاسخ

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

      ۳۰/۰۷/۱۳۹۴ در ۰۹:۱۷
  • حمید پاسخ

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

    ۱۳/۰۸/۱۳۹۴ در ۰۰:۴۰
    • محمد حسین پاسخ

      سلام دوست عزیز خیلی ممنون … بعضی از سودهایی که تو زندگی آدم میبره کاملا اتفاقیه … لطفا به دوستانتون سایت مارو معرفی کنید…باتشکر

      ۱۳/۰۸/۱۳۹۴ در ۰۸:۵۷
  • hlf پاسخ

    سلام،من نیاز به ماژول rf با برد مفید2000 متر دارم.متاسفنه علی زغم کارکرد مناب ماژولnrf24l به علت برد 1000 متر نمیتوانم از آن استفاده کنم.پیشنهاد شما چیست.آیا ماژول دیگری با برد بالاتر موجود میباشد که نحوه دستورات آن همانند ماژولnrf24l باشد.با تشکر

    ۰۱/۱۱/۱۳۹۴ در ۰۶:۴۱
    • محمد حسین پاسخ

      سلام دوست عزیز … ماژول های با برد بالاتر نیز موجود هستند ولی قیمت آنها بیشتر است ( در رنج فرکانسی 2.4GHz ماژول های Zigbee هست ) … اما پیشنهاد بنده اینه که از یک ماژول NRF24L01 اضافی در وسط فرستنده و گیرنده استفاده کنید …

      ۰۱/۱۱/۱۳۹۴ در ۰۷:۰۷
      • hlf پاسخ

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

        ۰۱/۱۱/۱۳۹۴ در ۱۱:۲۶
        • محمد حسین پاسخ

          بله میتوان انجام داد ولی به علت فاصله زیاد باید از 3 ماژول استفاده کنید یکی در فرستنده یکی در گیرنده و یکی بین آن ها … چون اطلاعات زیادی رد و بدل نمی کنید و فقط on و off است میتوانید از sms و ماژول sim900 استفاده کنید و با تلفن همراه وسایل را کنترل کنید که در این روش فاصله دیگر مطرح نیست و سرعت ارتباط پایین تر است …

          ۰۱/۱۱/۱۳۹۴ در ۱۲:۲۶
      • hlf پاسخ

        با تشکر.چگونه میتوانم کتابخانهnrf24l01 را به نرم افزار proteus اضافه کنم.در ضمن به علت محدودیتهای که دارم نمی توانم از sms استفاده کنم.همچنین به دلایلی نمیتوانم از چندماژول nrf استفاده کنم.اگر ماژولی که بتواند 2000 متر را مستقیما پوشش دهد لطفا معرفی کنید

        ۰۱/۱۱/۱۳۹۴ در ۱۵:۴۱
        • محمد حسین پاسخ

          این قطعه در پروتئوس نیست و کتابخانه نداره … پس از ماژول های Zigbee استفاده کنید …

          ۰۱/۱۱/۱۳۹۴ در ۱۸:۱۲
        • hlf پاسخ

          با تشکر و قدر دانی از راهنمایی های شما
          1-شماتیک گیرنده را عین فرستنده رسم نموده ام.فرستنده به طور کامل کار میکند ولی گیرنده هیچ عکس العملی از خود نشان نمیدهد.آیا نیاز نیست مشخصات ماژولNRF(پایه ها و ..) را در گیرنده تغیر بدهیم.
          2-اگر امکان داره برنامه را طوری تغییر دهید که بتوان یک یا چند وسیله را با آن روشن و خاموش نمود.
          قدر دان راهنمایی شما هستم

          ۰۲/۱۱/۱۳۹۴ در ۱۶:۰۶
      • hlf پاسخ

        با سلام و تشکر از راهنمای شما دوست عزیز.
        1-آیا امکان دارد از ماژولها از طریق پایه هایrx,tx میکرو به همان برنامه ارتباط از طریقhmt,hmr استفاده کرد.
        2-من نیاز به برنامه روشن و خاموش کردن زنگ خبر از یک نقطه مرکزی و (5الی6) نقطه فرعی دارم.اگه میتونید برنامه را انجام دهید هزینه آنرا پرداخت میکنم

        ۰۳/۱۱/۱۳۹۴ در ۱۱:۵۶
        • محمد حسین پاسخ

          متاسفانه دوست عزیز پروژه قبول نمی کنیم فعلا
          ارتباط هایی که از طریق پورت UART یا همون Rx ، Tx هستند از سرعت پایین تری نسبت به پورت SPI برخوردارند ولی کار شمارو راه می اندازند میتونید از اون ها هم استفاده کنید. برد 1600 متر ماژول Zigbee موجوده …

          ۰۴/۱۱/۱۳۹۴ در ۰۷:۱۵
      • hlf پاسخ

        با تشکر
        اگه امکان داره توضیح دهید چه تغیراتی به برنامه بدهم که یک میکرو با چند میکرو به صورت دور طرفه ارتباط برقرار کند

        ۰۶/۱۱/۱۳۹۴ در ۱۵:۲۰
  • mohamad پاسخ

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

    ۱۲/۱۱/۱۳۹۴ در ۱۵:۰۴
    • محمد حسین پاسخ

      سلام دوست عزیز حتما یه جایی مشکل داشته چون من خودم بارها تست کردم

      ۱۲/۱۱/۱۳۹۴ در ۱۹:۵۵
      • mohamad پاسخ

        پس توی برنامه (مخصوصا هدر )لازم نیست چیزیو تغییر بدم؟؟

        ۱۳/۱۱/۱۳۹۴ در ۰۸:۰۴
        • محمد حسین پاسخ

          نه نیازی نیست … دقت کنید ولتاژ تغذیه فرستنده و گیرنده ماژول NRF24L01+ هر دو باید یکسان و بین 1.6 تا 3.6 ولت باشد …

          ۱۳/۱۱/۱۳۹۴ در ۰۹:۱۴
  • احمد پاسخ

    سلام
    از طریق موبایل میشه با این ماژول ارتباط بزقرار کرد ؟
    مثل HC05 !

    ۰۵/۱۲/۱۳۹۴ در ۱۰:۰۵
    • محمد حسین پاسخ

      سلام خیر این ماژول پروتکل لازم برای ارتباط با موبایل رو نداره

      ۰۵/۱۲/۱۳۹۴ در ۱۵:۲۹
  • حجت پاسخ

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

    ۱۴/۱۲/۱۳۹۴ در ۰۸:۵۳
    • محمد حسین پاسخ

      سلام دوست عزیز مشکلتون چیه

      ۱۴/۱۲/۱۳۹۴ در ۰۹:۰۹
      • حجت پاسخ

        sender انگار کار می کنه ال ای دی هاش روشن می شه ولی تو resive هیچ کدوم کار نمی کنه با usb وصلش کردم به کامپیوتر فقط 1280 می ده نمی دونم یعنی چی اصن درس وصلش کردم
        mosi به mosi میکرو ، miso به miso میکرو، یا باید ضربدری وصلش کنم ؟
        ممنون

        ۱۴/۱۲/۱۳۹۴ در ۱۳:۱۹
        • محمد حسین پاسخ

          این ماژول ها به تغذیه بسیار حساس هستند. احتمال زیاد مشکل از تغذیه است. تغذیه مناسب برای این ماژول 3.3 ولت می باشد. برای راه اندازی فرستنده و گیرنده از دو عدد باتری به همراه رگولاتور 3.3 ولت استفاده کنید. در صورتی که جواب نگرفتید یا ماژول سوخته است یا میکرو صحیح پروگرام نشده.

          ۱۴/۱۲/۱۳۹۴ در ۱۳:۳۹
        • حجت پاسخ

          lf33 گذاشتم چه جوریه خوبه؟
          باید جواب بده
          با این ماژول های DC_DC هم امتحان کردم بازم کارنکرد
          البته تغذیه ی میکرو از 5 ولت افت می کنه می اد رو 4.5 ولی نباید مشکلی پیش بیاد

          ۱۵/۱۲/۱۳۹۴ در ۰۶:۲۰
      • mohamad پاسخ

        سلام
        من وقتی Nrf-config را یک میکنم میکرو هنگ میکنه مشکلم چیه ؟

        ۰۸/۰۳/۱۳۹۵ در ۰۹:۳۷
        • محمد حسین پاسخ

          سلام دوست عزیز از کجا میدونید مشکل از میکرو است و از ماژول نیست

          ۰۸/۰۳/۱۳۹۵ در ۱۵:۰۵
  • hlf پاسخ

    سلام،برای ارتباط بیسیم میخواهم از ماژولdrf7020d27 استفاده کنم لطفا در مورد سوالات زیر راهنمایی کنید.
    1-این ماژول درای توان خروجی نیم وات است.حداکثر طول کابل که میتوانم بین ماژول و آنتن استفاده کنم چقدر است.
    2-اگه بخواهم برای جلوگیری از افت توان آنتن را به ماژول وصل کنم و ماژول را در بالای دکل نصب کنم برای ارتباط بین ماژول و میکرو از چه مداری استفاده کنم که اطلاعاتttl به درستی بین میکرو و ماژول ارسال شوند.

    ۲۲/۱۲/۱۳۹۴ در ۱۳:۵۲
  • Bahram پاسخ

    لطفا یک کتاب کامل که با زبان c
    برنامه نویسی برای arm و avr معرفی کنید

    ۲۸/۱۲/۱۳۹۴ در ۲۱:۰۲
    • محمد حسین پاسخ

      برای AVR کتاب جابر الوندی و برای ARM مرجع LPC17XX محمد خوش باطن

      ۰۱/۰۱/۱۳۹۵ در ۱۵:۳۳
  • مرتضی پاسخ

    با سلام و تبریک سال نو
    نحوه آدرس دهی رو در فرستنده درست متوجه نشدم میشه لطفا توضیح بدهید
    شما بطور مثال یک رو فرستادید اگه بخواهیم پیچیده تر آدرس بدهیم چطوری میشه؟

    ۱۱/۰۱/۱۳۹۵ در ۰۵:۵۴
    • محمد حسین پاسخ

      سلام دوست عزیز خیلی ممنونم
      در تابع Send_Data ، باید با استفاده از عملگر & آدرس مکانی از حافظه که متغیر data1 در آن مکان وجود دارد را به عنوان ورودی به تابع بدهیم تا ارسال شود. عدد 1 در تابع Send_Data نشان دهنده عدد Payload است و متغیری که ارسال می شود data1 است.

      ۱۳/۰۱/۱۳۹۵ در ۰۶:۰۱
      • مرتضی پاسخ

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

        ۱۶/۰۱/۱۳۹۵ در ۰۳:۵۵
        • محمد حسین پاسخ

          خواهش می کنم دوست عزیز
          در این رابطه موضوع کاملا عوض میشه و باید دنبال راهکارهای شبکه سازی میکروکنترلرها بود که در این لینک میتوانید مقدمات آن را مشاهده کنید
          راهی که با این ماژول به ذهنم میرسه اینه که فرستنده برای همه دیتا را به همراه آدرس گیرنده ارسال کند اما فقط گیرنده ای که مورد نظر است دیتا را پردازش کند و بقیه گیرنده ها پاسخی ندهند

          ۱۷/۰۱/۱۳۹۵ در ۱۶:۱۱
  • محمدرضا پاسخ

    سلام
    خسته نباشید
    میخواسستم بپرسم از خدمتتون
    که اگر بخواهیم در برنامه که شما زحمت کشیدید و نوشتید
    به جای mega32 از mega8 استفاده کنیم چه تغیراتی باید اعمال شوند با توجه به این که:
    -مگا 8 پورت A ندارد
    من بیسیک کار میکنم ولی خوب C رو هم هنز نیاموخته ام ولی تا حدی که بتوانم کار خود را راه بیندازم بلدم
    فقط اگر زحمتی نباشه کمی عجله دارم
    چون پروژه کارگاه من هست
    خیلی ممنون از زحمات شما

    ۲۴/۰۲/۱۳۹۵ در ۱۵:۴۸
    • محمد حسین پاسخ

      سلام دوست عزیز در برنامه به جای atmega32.h بنویسید atmega8.h و از تنظیمات کدویژن atmega8 را انتخاب کنید و در هنگام پروگرام نیز atmega8 را انتخاب کنید. به جای پورت A از پورت های دیگر استفاده نمایید

      ۲۴/۰۲/۱۳۹۵ در ۱۹:۱۷
      • محمدرضا پاسخ

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

        ۲۴/۰۲/۱۳۹۵ در ۱۹:۴۶
  • علی پاسخ

    سلام میتونم از این ماژول nrf که فرستنده و گیرنده در یک محیط سرپوشیده و پرسروصدا که فاصله شون حدود 500 متر باشه استفاده کنم.ممنون از سایت مفیدتون.لطف کنید زودتر جوابمو بدین ضروریه

    ۰۲/۰۳/۱۳۹۵ در ۲۰:۵۲
    • محمد حسین پاسخ

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

      ۰۳/۰۳/۱۳۹۵ در ۰۴:۵۴
  • میلاد پاسخ

    سلام
    مطالبتون خیلی مفید بود خسته نباشید
    فقط من تازه دارم با این ماژول کار میکنم با مگا 8
    نمیدونم کجای هدر رو باید تغییر بدم
    اگه میشه کمک کنید

    ۲۰/۰۴/۱۳۹۵ در ۱۴:۰۰
    • شجاع داودی پاسخ

      سلام دوست عزیز اگر از کامپایلر کدویژن استفاده می کنید باید ابتدا در ابتدای برنامه include را تغییر دهید و سپس از منوی project بخش configure project را تغییر دهید. همچنین درون هدر فایل nrf نیاز به تغییرات پایه ها می باشد

      ۲۲/۰۴/۱۳۹۵ در ۱۲:۲۴
  • میلاد پاسخ

    یه سوال دیگه
    این ماژولا با کریستال خارجی 11.052 کار نمیکنن ؟
    آخه من تو برد هام از این کریستال استفاده کردم

    ۲۰/۰۴/۱۳۹۵ در ۱۴:۰۲
    • HQ 221 پاسخ

      منم همین مشکل رو دارم
      لطفا اگه کسی میدونه کمک کنه

      ۲۱/۰۴/۱۳۹۵ در ۱۳:۰۱
      • شجاع داودی پاسخ

        در واقع ارتباط میکرو با ماژول NRF از طریق ارتباط SPI می باشد که زمانی که از کریستال به جز 8 مگاهرتز استفاده می شود باید درون هدر فایل NRF و درون تابع nRF_Config رجیستر های تنظیمات مربوط به راه اندازی SPI تغییر کند

        ۲۲/۰۴/۱۳۹۵ در ۱۲:۳۲
        • میلاد پاسخ

          میشه بگید دقیقا کجاش رو باید تغییر بدم ؟

          ۲۳/۰۴/۱۳۹۵ در ۰۵:۴۶
  • محسن پاسخ

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

    ۳۱/۰۵/۱۳۹۵ در ۰۴:۰۱
    • شجاع داودی پاسخ

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

      ۳۱/۰۵/۱۳۹۵ در ۱۰:۵۱
  • محمد پاسخ

    با سلام

    میخواستم این ماژول رو با اتمگا 32 راه اندازی کنم که بصورت سیار و استفاده مثل ریموت ازشون بکنم میخواستم برای تغذیه چیکار باید کرد؟؟؟؟

    ۰۸/۰۶/۱۳۹۵ در ۰۳:۴۷
    • شجاع داودی پاسخ

      سلام دوست عزیز این ماژول با کلیه میکروکنترلرها قابل راه اندازی و استفاده می باشد برای تغذیه از باتری های قابل شارژ با ولتاژ حداقل 5 ولت و جریان دهی حداقل 500 میلی آمپر استفاده نمایید

      ۰۸/۰۶/۱۳۹۵ در ۰۶:۰۹
      • محمد پاسخ

        ممنون از پاسخگوییتون

        1 سوال اگه بخوایم به عنوان مثال کاراکترهای مثل a,b,c,d,… ارسال کنیم باید در قسمت فرستنده چگونه این هارو تعریف کنیم برای ارسالشون

        چون توی مثال که گفتین کاراکتر ارسال نشده بود مثل a,b,c,d,…

        ممنون میشم پاسخ بدین

        ۰۸/۰۶/۱۳۹۵ در ۰۸:۲۶
        • شجاع داودی پاسخ

          خواهش میکنم باید یک آرایه تعریف کرد و آدرس آن کاراکتر یا رشته را در تابع ارسال دیتا قرار داد ( مبحث آرایه ها و اشاره گر ها در C )

          ۰۹/۰۶/۱۳۹۵ در ۰۶:۲۶
  • محسن پاسخ

    سلام.چرا نمیشه ی متغیر از نوع اینتیجر برای ارسال استفاده کرد و تو تابع سند دیتا ارور میده.ممنون میشم جواب بدید

    ۲۱/۰۶/۱۳۹۵ در ۱۰:۲۱
    • شجاع داودی پاسخ

      سلام باید دیتا به صورت 8 بیتی باشد

      ۲۲/۰۶/۱۳۹۵ در ۱۷:۵۹
  • نادر پارسی پاسخ

    با سلام
    ضمن تشکر از سایت خوبتان که سرشار از مطالب آموزنده هست.
    خواهشمندم نحوه افزودن فایل کتابخانهای جدید به پروژه ها ی کدویژن را آموزش دهید.
    برای نمونه :
    (NRF24L01+.h)
    اگر قبلا آموزش داده اید لینکش را اعلام فرمایید تا مراجعه کنم.

    ۲۵/۰۶/۱۳۹۵ در ۱۰:۳۳
    • شجاع داودی پاسخ

      سلام دوست عزیز خیلی ممنونم
      بله در بخش سیزدهم آموزش AVR نحوه هدر فایل نویسی توضیح داده شده است

      ۲۸/۰۶/۱۳۹۵ در ۰۴:۴۱
  • میثم پاسخ

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

    ۲۹/۰۶/۱۳۹۵ در ۱۱:۵۶
    • شجاع داودی پاسخ

      سلام دوست عزیز خیلی ممنونم
      بله واحد spi و تنظیمات آن باید فعال شود که این تنظیمات درون هدر فایل NRF24L01+.h آورده شده است و با فراخوانی تابع NRF_Config انجام می شود

      ۲۹/۰۶/۱۳۹۵ در ۱۷:۲۲
      • میثم پاسخ

        ممنون مهندس جان بابت پاسختون
        مهندس کار پایهirq چیه توی این ماژول و آیا نیازه که وصل بشه یا نه؟؟؟؟؟؟
        توی برنامه بخوایم سرعت انتقال اطلاعات رو تغییر بدیم باید از کدوم قسمت اقدام کنیم؟؟؟؟؟
        اگه بخوایم کتابخونه رو واسه مگا 8تغییر بدیم باید توی کدوم قسمتها تغییر ایجاد کنیم؟؟؟؟؟؟
        حق نگهدارتون

        ۳۰/۰۶/۱۳۹۵ در ۰۹:۰۴
        • شجاع داودی پاسخ

          خواهش میکنم
          بله پایه وقفه هستش و باید وصل بشه
          همه تنظیمات در صورت وجود داخل هدر فایل هستش
          باید در همه فایل ها mega32 به mega8 تغییر یابد

          ۳۰/۰۶/۱۳۹۵ در ۱۸:۲۰
  • میثم پاسخ

    بی نهایت ممنونم بابت پاسخهای شما
    مهندس ببخشید من یه سر سوال میپرسم ازتون چون راستش این ماژول رو تهیه کردم و میخوام راه اندازیش کنم.
    مهندس از طریق این ماژول میشه وضعیت یه متغیر رو مثلا متغیر a وضعیتش الان 1یا 0 هستش رو به یه میکرو دیگه ارسال کرد و از طریق اون یه وسیله رو کنترل کرد؟
    آیا اگه به جای آنتن 2.4گیگ از یک تکه سیم استفاده بشه و سیم به یه سوکت روی پنل وصل بشه و آنتن به اون سوکت وصل بشه به ماژول آسیب میرسونه؟
    واینکه میگن اگه از آنتن بلندتری استفاده بشه برد بیشتری داره آیا صحت داره یا خیر؟

    ۳۱/۰۶/۱۳۹۵ در ۱۲:۱۰
    • ادمین الکترو ولت پاسخ

      بله میشه
      خیر حتما باید آنتن مخصوص باشه
      در این فرکانس بلند بودن آنتن تاثیری ندارد

      ۲۷/۰۲/۱۳۹۶ در ۱۹:۴۶
  • علیرضا پاسخ

    با سلام
    من این ماژول را به روشی که ارائه کرده اید راه انداختم. بسیار ممنون.
    من می خواهم در هر بار ارسال داده، 4 متغیر 8 بیتی را از فرستنده ارسال و در گیرنده دریافت کنم. از تکه کد زیر در فرستنده استفاده کرده ام :

    (Send_Data(1, &data1
    (Send_Data(2, &data2
    (Send_Data(3,, &data3
    (Send_Data(4, &data4
    در گیرنده نیز برای دریافت این 4 داده 8 بیتی به صورت زیر عمل کرده ام:
    }(if(state==1
    [datain0=payload[1
    [2]datain1=payload
    [datain3=payload[3
    [datain4=payload[4
    ممنون می شوم که بررسی کنید این کد درست است یا خیر؟ اگر درست است ولی درست کار نمی کند و اگر نه روش ارسال چند داده چگونه است؟
    با تشکر

    ۰۶/۰۹/۱۳۹۵ در ۰۵:۵۹
    • علیرضا پاسخ

      البته این بخش از کد جا ماند که در گیرنده در انتهای if عبارت state=0 گذاشته ام.

      ۰۶/۰۹/۱۳۹۵ در ۰۶:۰۰
      • ادمین الکترو ولت پاسخ

        سلام لطفا اینگونه سوالات را در تلگرام بنده مطرح کنید راهنمایی میکنم

        ۲۷/۰۲/۱۳۹۶ در ۲۰:۰۳
  • فرزین پاسخ

    با سلام و خسته نباشید برای راه اندازی nrf24l01p با کد نویسی اردینو میشه یه راهنمایی کنید

    ۲۷/۰۲/۱۳۹۶ در ۱۵:۳۹
    • ادمین الکترو ولت پاسخ

      سلام چه راهنمایی ؟ کدها و کتابخانه هاش برای اردوینو توی اینترنت هست

      ۲۷/۰۲/۱۳۹۶ در ۲۰:۰۵
  • ماترٌشکا پاسخ

    سلام و خداقوت
    ادمین محترم امکانش هست همین پروژه رو با نرم افزار آلتیوم قرار بدین؟؟ بشدت و خیلی فوری بهش نیاز دارم/
    مچکرم…

    ۰۲/۰۳/۱۳۹۶ در ۱۷:۱۶
    • ادمین الکترو ولت پاسخ

      سلام ممنونم
      سورس شماتیک نرم افزار آلتیوم هم قرار داده شده است

      ۰۲/۰۳/۱۳۹۶ در ۲۲:۳۵

پاسخ دهید

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

ده − پنج =