الإتصال اللاسلكي باستخدام NRF24

حول المشروع:

هذا المقال يوضح كيفية استخدام شريحة NRF24L01  لإنشاء اتصال لاسلكي بين لوحين اردوينو حيث يتم التحكم بمصباح الليد المتصل بالأردوينو (B) عن طريق مفتاح ضاغط متصل بالأردوينو (A) . تتميز شريحة NRF24L01  بقدرتها على العمل كجهاز ارسال واسقبال بتردد   2.4GHz و نطاق قنوات 125 قناة . بالإضافة إلى ذلك يمكن ان يصل مدى الإرسال باستخدام شريحة  NRF24L01  إلى 100 متر في المناطق المفتوحة بسرعة تصل إلى 2Mbps. كما يمكن لكل جهاز NRF24L01 الاتصال ب 6 أجهزة NRF24L01  في الوقت ذاته

الأدوات والمعدات الألكترونية المطلوبة:

1 – اردوينو أونو ـ (2)

2 – مفتاح ضاغط
3- وحدة مرسل ومستقبل | NRF24L01 ـ (2)
4 – مصباح ليد.

5- حزمة أسلاك متنوعة. 

الدائرة الكهربائية و التوصيل

تحتوي شريحة NRF24L01 على 8 منافذ تبدأ بمنفذين للتغذية بالطاقة و 6 منافذ أخرى تسمح للشريحة بالاتصال بالمتحكمات والأجهزة الأخرى عبر تقنية SPI. بعد تغذية شريحة  NRF24L01 بالطاقة عن طريق توصليها بكل من 3.3 فولت و GND يتم التوصيل بالشكل التالي.

 

منفذ NRF24L01منفذ اردوينو أونو
CE8
CNS7
SCK13
MOSI11
MISO12
IRQ10

بعد توصيل شريحتي NRF24L01 بكل من  الأردوينو A و B يتم توصيل المفتاح الضاغط بالأردوينو  A (المرسل). كما يجب توصيل مصباح الليد بلوح الأردوينو B (المستقبل) بالشكل التالي :

البرمجة

يتم أولا برمجة الأردوينو A (المرسل) لأرسال حالة المفتاح الضاغط للأردوينو B. للبدء في البرمجة يجب تنزيل المكتبة RF24 حيث يمكن تنصيبها بسهولة من إدارة المكتبات. بعد التنصيب يتم البدء في البرمجة.

يمكن ملاحظة استخدام الدالة ()openWritingPipe والتي تستخدم لإنشاء وسط تواصل لإرسال  البيانات. كما يمكن ضبط مستوى الطاقة لواحد من اربعة مستويات مختلفة باستخدام الدالة  ()setPALevel. بعد ذلك يمكن كتابة (إرسال) قيمة المتغير button الذي يحمل قيمته من المفتاح الضاغط باستخدام الدالة write.

				
					
#include 
#include 
#include 

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

const byte address[6] = "00001";
boolean button = 0;
int pushbutton = 2 ;

void setup() {
  pinMode(pushbutton,INPUT);
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();  }

void loop() {
  button = digitalRead(pushbutton);
  radio.write(&button, sizeof(button));
 delay(200);  }
				
			

الآن يتم برمجة المستقبل لأستقبال حالة المفتاح الضاغط من ثم تشغيل المصباح وفقا للبيانات التي تم استقبالها. 

				
					#include 
#include 
#include 
    
RF24 radio(8, 7);
const byte address[6] = "00001";
int led = 2;
boolean button = 0;

void setup() {
  pinMode(led,OUTPUT);
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(0, address);
  radio.setPALevel(RF24_PA_MIN);
  radio.startListening();  }
  
void loop() {
  while (radio.available()) {
    radio.read(&button, sizeof(button));
    Serial.println(button);
        if (button == HIGH) {
            digitalWrite(led, HIGH); }
        else 
            digitalWrite(led, LOW);
}
 delay(500);
 
}
				
			

تم استخدام الدالة ()openReadingPipe التي تقوم بفتح قناة تواصل لقراءة (استقبال) البيانات. يمكن تهيئة  المستقبل لاستقبال الرسائل من الأجهزة الأخرى باستخدام الدالة()  startListening  . أخيرا تمكن الدالة ()read من الحصول على البيانات التي تم استقبالها . كما يمكن عرض البيانات على سيريال بورت لمراقبة البيانات الواردة.

انتقل إلى المتجر

انتقال إلى الأعلى