اطلاعیه

Collapse
No announcement yet.

راه اندازی NRF24L01 با آردوینو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    راه اندازی NRF24L01 با آردوینو

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

    نحوه اتصال مدار گیرنده و فرستنده

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

    کدهای فرستنده
    #include <RF24.h>
    #include <RF24_config.h>
    #include <SPI.h>
    RF24 radio(8, 53);
    const byte address[6] = "00001";
    void setup()
    {
    radio.begin();
    radio.setRetries(15, 15);
    radio.openWritingPipe(address);
    }
    void loop()
    {
    int joyStick[2];
    joyStick[0] = analogRead(A0);
    joyStick[1] = analogRead(A1);
    joyStick[0] = map(joyStick[0] , 0, 1023, 0, 180);
    radio.write(joyStick, sizeof(joyStick));



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

    RF24 radio(8,53);

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

    const byte address[6] = "00001";



    سپس یک آرایه به نام rxAddr تعریف میکنیم.در این آرایه آدرس گیرنده که قرار است اطلاعات برایش ارسال شود قرار میگیرد.در تابع setup برای شروع کار با مودم از دستور زیر استفاده میکنیم.این دستور باعث فعال شدن ماژول می شود.
    radio.begin()


    [B][/B]
    سپس از دستور ;(radio.setRetries(15, 15 استفاده میکنیم. در این ماژول با هر بار ارسال داده به فرستنده به گیرنده ، گیرنده یک ack ایجاد میکند.حال با استفاده از تابع بالا ، در صورتی که این ack توسط فرستنده دریافت نشد ، فرستنده سعی به ارسال دوباره ی داده میکند. به زبان ساده تر ، اگر اطلاعات توسط گیرنده دریافت نشود ، فرستنده داده ها را دوباره ارسال خواهد کرد.
    در آرگومان اول عدد مورد نظر در ۲۵۰ میکرو ثانیه ضرب میشود (حداکثر مقدار برای آرگومان ۱۵ می باشد)و زمان تغییر در هر بار ارسال داده را مشخص میکند. بنابر این در مثال ما اگر گیرنده موفق به دریافت داده ای نشد ، فرستنده هر۳۷۵۰ میکرو ثانیه یا هر ۳٫۷۵ میلی ثانیه (۱۵*۲۵۰=۳۷۵۰) سعی به ارسال داده میکند. آرگمان دوم تعداد دفعات سعی برای ارسال داده را مشخص میکند.در این مثال اگر ماژول گیرنده داده ای دریافت نکرد ، ماژول فرستنده قبل از متوقف شدن ۱۵ بار برای ارسال مجدد داده تلاش میکند.
    radio.openWritingPipe(rxAddr);



    این متد ماژول را در مد فرستنده قرار میدهد و در ورودی آن آدرس گیرنده اطلاعات را وارد میکنیم.
    joyStick[0]=analogRead(A0);
    joyStick[0]=map(joyStick[0],0,1023,0,180);
    radio.write(joyStick, sizeof(joyStick));

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

    #include <nRF24L01.h>
    #include <RF24.h>
    #include <Servo.h>
    RF24 radio(7, 8);
    Servo servo;
    const byte rxAddr[6] = "00001";
    void setup()
    {

    Serial.begin(9600);

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

    radio.startListening();
    servo.attach(3);
    }
    void loop()
    {
    if (radio.available())
    {
    int joyStick[2];
    radio.read(joyStick, sizeof(joyStick));
    servo.write(joyStick[0]);

    }



    #2
    پاسخ : راه اندازی NRF24L01 با آردوینو

    عالی بود.

    دیدگاه

    لطفا صبر کنید...
    X