صفحه 1 از 5 123 ... آخرینآخرین
نمایش نتایج: از 1 به 10 از 49
Like Tree6 لایک

موضوع: راه اندازی ماژول nrf24l01

  1. #1
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259

    Post راه اندازی ماژول nrf24l01

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

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

    توضیحات ماژول NRF24L01:
    ولتاژ کاری :الی ۳٫۳ ولت
    سرعت 2 و 1 مگابیت بر ثانیه ..
    دارای 125 کانال
    فرکانس کاری 2.4 گیگاهرتز
    پروتکل ارتباطی SPI


    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: pinout-nrf24l01.jpg
مشاهده: 348
حجم: 92.3 کیلو بایت
    ویرایش توسط meysamam : 01-03-2017 در ساعت 07:01 AM

  2. #2
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    پین های CE و CSN میتوانند به هر پین منصل شوند.

    در برد آردوینو uno پین های پرروتوکل spi به صورت زیر می باشند:
    MOSI to pin 11
    MISO to pin 12
    SCK to pin 13

    VCC to 3.3v
    GND to GND

  3. #3
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    لینک کتابخانه مورد نیاز :

    RF24-master.zip

  4. #4
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    کد فرستنده:


    #include <nRF24L01.h>
    #include <RF24.h>
    #include <RF24_config.h>
    #include <SPI.h>

    RF24 radio(7, 8); // 7=CE 8=CSN

    const byte address[6] = "00001";
    // سپس یک آرایه به نام rxAddr تعریف میکنیم.در این آرایه آدرس گیرنده که قرار است اطلاعات برایش ارسال شود قرار میگیرد.

    void setup()
    {
    radio.begin();

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

    radio.setRetries(15, 15);

    radio.openWritingPipe(address);

    }
    void loop()
    {
    int payload[2];
    payload[0] = analogRead(A0);
    payload[1] = analogRead(A1);

    radio.write(payload, sizeof(payload));
    }
    ویرایش توسط meysamam : 01-03-2017 در ساعت 08:03 AM

  5. #5
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    سپس از دستور ;(radio.setRetries(15, 15 استفاده میکنیم.

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

  6. #6
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    این متد ماژول را در مد فرستنده قرار میدهد و در ورودی آن آدرس گیرنده اطلاعات را وارد میکنیم.
    radio.openWritingPipe(rxAddr);

  7. #7
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    مازول nRF24L01+ قابلیت ارسال 32بایت در یک ارسال را دارد ..


    void loop()
    {
    int payload[2];
    // ساختن آرایه به طول دلخواه یا 32 بایت
    payload[0] = analogRead(A0);
    // پر کردن خانه اول آرایه
    payload[1] = analogRead(A1);
    // پر کردن خانه دوم آرایه

    radio.write(payload, sizeof(payload));
    // ارسال آرایه به ماژول Nrf24
    }

  8. #8
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    و در آخر کد گیرنده :


    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>

    RF24 radio(7, 8);

    const byte rxAddr[6] = "00001";
    void setup()
    {

    Serial.begin(9600);

    radio.begin();
    radio.openReadingPipe(0, rxAddr);

    radio.startListening();
    // ماژول آماده دریافت اطلاعات می شود

    }
    void loop()
    {
    // چک کرئن برای دریافت اطلاعات
    if (radio.available())
    {
    int poyload[2];

    //دریافت اطلاعات و ذخیره در آرایه
    radio.read(poyload, sizeof(poyload));

    // نمایش اطلاعات در پورت سریال
    Serial.print(poyload);

    }
    }

  9. #9
    Member
    تاریخ عضویت
    Aug 2015
    نوشته ها
    57
    نقل قول نوشته اصلی توسط meysamam نمایش پست ها
    و در آخر کد گیرنده :


    #include <SPI.h>
    #include <nRF24L01.h>
    #include <RF24.h>

    RF24 radio(7, 8);

    const byte rxAddr[6] = "00001";
    void setup()
    {

    Serial.begin(9600);

    radio.begin();
    radio.openReadingPipe(0, rxAddr);

    radio.startListening();
    // ماژول آماده دریافت اطلاعات می شود

    }
    void loop()
    {
    // چک کرئن برای دریافت اطلاعات
    if (radio.available())
    {
    int poyload[2];

    //دریافت اطلاعات و ذخیره در آرایه
    radio.read(poyload, sizeof(poyload));

    // نمایش اطلاعات در پورت سریال
    Serial.print(poyload);

    }
    }





    با سلام و خسته نباشید اقا میثم واقعا ممنون از زحمات بی پایان شما من مطالب که گذاشتید مطالعه کردم فقط چند چیز برام مبهم بود اونم گفتم تازه اول راهم زیاد وارد نیستم میخاستم ازتون راهنمایی بگیرم اولین سوالم این بود که پایه هایی ماژولnrf24l01
    MOSI to pin 11
    MISO to pin 12
    SCK to pin 13
    به این ترتیب که گفتید تو برد اردینو بسته شوند تو برنامه لازم به تعریف این پایه ها نیست؟چون تو کد فرستنده پایه های CE و CSN تعریف شدن

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

    و سومین سوال اینکه تو کد گیرنده که زحمتشو کشیدید ماژول گیرنده همانند ماژول فرستنده پایه هاش وصل میشه به اردینو؟ و اینکه این کد در مد گیرنده نوشته شده فقط بار گذاری میکنیم؟

    و سوالم چهارم در ماژول گیرنده پایه خروجی سیگنال کدوم پایه هست؟ که مثلا اونو بدم به ماژول دیگه ممنون از زحمتی که کشیدین
    ویرایش توسط farzintey : 01-03-2017 در ساعت 12:25 PM

  10. #10
    مدیر ویژه
    تاریخ عضویت
    May 2014
    نوشته ها
    259
    نقل قول نوشته اصلی توسط farzintey نمایش پست ها
    با سلام و خسته نباشید اقا میثم واقعا ممنون از زحمات بی پایان شما من مطالب که گذاشتید مطالعه کردم فقط چند چیز برام مبهم بود اونم گفتم تازه اول راهم زیاد وارد نیستم میخاستم ازتون راهنمایی بگیرم اولین سوالم این بود که پایه هایی ماژولnrf24l01
    MOSI to pin 11
    MISO to pin 12
    SCK to pin 13
    به این ترتیب که گفتید تو برد اردینو بسته شوند تو برنامه لازم به تعریف این پایه ها نیست؟چون تو کد فرستنده پایه های CE و CSN تعریف شدن

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

    و سومین سوال اینکه تو کد گیرنده که زحمتشو کشیدید ماژول گیرنده همانند ماژول فرستنده پایه هاش وصل میشه به اردینو؟ و اینکه این کد در مد گیرنده نوشته شده فقط بار گذاری میکنیم؟

    و سوالم چهارم در ماژول گیرنده پایه خروجی سیگنال کدوم پایه هست؟ که مثلا اونو بدم به ماژول دیگه ممنون از زحمتی که کشیدین

    سوال اول = ماژول nRF با پروتکل SPI کار میکنه احتیاج به تعریف نداره.... ولی یایه های CE و CSN باید تعریف بشه..
    سوال دوم = rxAddr این ارایه نیست متغیره برای ادرس دادن به ماژول به هیچ پایه ای راه نداره (ادرس نرم افزاریه )
    سوال سوم= پایه های ماژول در ههر دو طرف گیرنده و فرستنده یکی هست ... شما این کدو با هم میتونی داخل یک دستگاه اجرا کنی ولی باید بهش بگی که کی فرستنده باشه کی گیرنده ..
    سوال چهار = پورت SPI هم فرستنده هست هم گیرنده

صفحه 1 از 5 123 ... آخرینآخرین

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO