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

ماژول NRF24L01 یک هدر برد چیپ NRF24L01 شرکت NXP است . به دلیل ساختار پیچیده مدارات RF و همچنین حساسیت طراجی PCB آنها ، شرکت NXP خود چیپ های NRF24L01 را به صورت ماژول عرضه می کند ( هر چند چیپ NRF24L01 خود در بازار موجود است ) . NRF24L01 یک گیرنده فرستنده RF می باشد که قابلیت ارسال و دریافت دیتا را به صورت وایرلس دارد . این چیپ از باند فرکانسی 2.5GHz استفاده می کند لذا برد بیشتری نسبت به سایر ماژول های RF دارد . همچنین به آنتن کوچکی جهت ارتباط نیاز دارد .

به طور کلی ماژول های NRF24L01 در سه مدل  دارای پین هدر ، SMD و مدل تقویت شده در بازار موجود اند . مدل تقویت شده خود دارای چندین نوع مختلف است که تنها در کیفیت مدار تقویت کننده با همدیگر تفاوت دارند و همه آن ها دارای پین های خروجی یک شکلی هستند ( مدل با برد مشکی معمولا برد کمی نسبت به انواع تایوانی با برد نارنجی را دارد )

این مازول ها قابلیت شبکه شدن را دارند که می توان از آن ها در شبکه های IoT استفاده کرد . به طور مثال در کنترل دمای یک سالن بزگ نمی توان تنها به دیتای خروجی یک سنسور دما اکتفا کرد چرا که دمای نقاط مختلف سالن ممکن است با همدیگر تفاوت داشته باشند . لذا باید از چندین سنسور استفاده نمود . اسفاده از ارتباطی سیم در این حالت می تواند هزینه های زیادی را به همراه داشته باشد  . در چنین شرایطی می توان از ماژول های NRFL جهت ارتباط هر واحد سنسور با MCU مرکزی استفاده کرد . حتی می توانید از این ماژول ها جهت ساخت رادیو کنترل  استفاده نمود . یکی از قابلیت های مهم NRF24L01 صحت سنجی ارسال و دریافت دیتا است . در این روش پس از ارسال دیتا از سوی فرستنده ، اگر گیرنده موفق به دریافت دیتا شود ، پیغام ACK مبنی بر دریافت را ارسال می کند . هر زمان فرستنده این پیغام را دریافت نکند ، دوباره برای ارسال دیتا تلاش خواهد کرد . این الگو ارسال و دریافت درست را تضمین میکند .

 

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

برای راه اندازی این ماژول از تغذیه 3.3 ولتی استفاده می شود . همچنین جهت ارتباط با این ماژول از رابط ارتباطی SPI استفاده می شود . پین های ارتباطی این ماژول با ولتاژ 5 ولت سازگار اند لذا می توان مستقیم ماژول را به آردوینو متصل کرد . پیکربندی این ماژول پیچیدگی های خود را دارد لذا برای راه اندازی راحت تر از کتابخانه …… استفاده میکنیم . این کتابخانه به کار گیری nrf را بسیار ساده می کند .

در این جا قصد داریم با استفاده از دو ماژول NRF24L01 بین دو برد آردوینو ارتباط برقرار کنیم . ابتدا لازم است کتابخانه زیر را دانلود آن را نصب کنید .

RF24-master

هدف ازاین مقاله مقدمه ای بر راه اندازی NRF24L01 است . می توانید با توسعه این پروژه به راحتی رادیو کنترل خودتان را بسازید و از آن برای کنترل ربات های پرنده استفاده کنید .

 

این پروژه شامل دو قسمت فرستنده و گیرنده است .

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

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#define led 2
RF24 radio(7, 8); // CE, CSN
const byte addresses[][6] = {"00001", "00002"};
boolean buttonState = 0;
void setup() {
  pinMode(2, OUTPUT);
  radio.begin();
  radio.openWritingPipe(addresses[1]); // 00002
  radio.openReadingPipe(1, addresses[0]); // 00001
  radio.setPALevel(RF24_PA_MIN);
}
void loop() {
  delay(5);
  radio.stopListening();
  int potValue = analogRead(A0);
  int angleValue = map(potValue, 0, 1023, 0, 180);
  radio.write(&angleValue, sizeof(angleValue));
  delay(5);
  radio.startListening();
  while (!radio.available());
  radio.read(&buttonState, sizeof(buttonState));
  if (buttonState == HIGH) {
    digitalWrite(led, HIGH);
  }
  else {
    digitalWrite(led, LOW);
  }
}

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

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

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>
#define button 2
RF24 radio(7, 8); // CE, CSN
const byte addresses[][6] = {"00001", "00002"};
Servo myServo;
boolean buttonState = 0;
void setup() {
  pinMode(button, INPUT);
  myServo.attach(5);
  radio.begin();
  radio.openWritingPipe(addresses[0]); // 00001
  radio.openReadingPipe(1, addresses[1]); // 00002
  radio.setPALevel(RF24_PA_MIN);
}
void loop() {
  delay(5);
  radio.startListening();
  if ( radio.available()) {
    while (radio.available()) {
      int angleV = 0;
      radio.read(&angleV, sizeof(angleV));
      myServo.write(angleV);
    }
    delay(5);
    radio.stopListening();
    buttonState = digitalRead(button);
    radio.write(&buttonState, sizeof(buttonState));
  }
}

شماتیک مدار گیرنده :

Tags:
About Author: USER_4