إذا كنت تعمل مع Arduino وترغب في تنفيذ اتصال لاسلكي فعال بين الأجهزة، فلا يوجد خيار أفضل من وحدة الإرسال والاستقبال NRF24L01. تعد وحدة التردد اللاسلكي الصغيرة ولكن القوية هذه أحد الخيارات الأكثر شيوعًا نظرًا لتكلفتها المنخفضة وسهولة الاستخدام والأداء الرائع في النطاق 2.4 جيجا هرتز.
في هذه المقالة، سنستكشف كيفية استخدام وحدة NRF24L01 مع Arduino، مع شرح كل شيء بدءًا من الجوانب الأساسية وحتى الأمثلة المتقدمة لكيفية تنفيذها في المشاريع. دعونا نتأكد من أنك تفهم كيفية توصيل هذه الوحدة واستخدامها في كل من إصداراتها الأساسية والمعززة، وكيفية تطبيق المكتبات اللازمة لجعلها تعمل بفعالية.
ما هو NRF24L01؟
El NRF24L01 عبارة عن شريحة إرسال واستقبال للترددات اللاسلكية تم تصنيعها بواسطة شركة Nordic Semiconductor والتي تعمل في النطاق الحر. 2.4 غيغاهرتز. فهو يسمح بنقل البيانات واستقبالها لاسلكيًا بين عدة أجهزة، مثل وحدات التحكم الدقيقة، بسرعة قابلة للتكوين تصل إلى 2 ميجابت في الثانية. والشيء الأكثر إثارة للاهتمام هو أنه يمكنه العمل مع ما يصل إلى ستة أجهزة متصلة في وقت واحد، مما يجعله أداة مثالية مجموعة واسعة من المشاريع الإلكترونية.
يتمتع جهاز الإرسال والاستقبال هذا أيضًا بتقنية تصحيح الأخطاء وإعادة إرسال البيانات الفاشلة، مما يحافظ على جودة اتصال قوية. يؤدي ذلك إلى تخفيف حمل المعالجة على Arduino أو أي وحدة تحكم أخرى متصلة بها.
نقطة إيجابية أخرى في NRF24L01 هي استهلاكها المنخفض للطاقة. في حالة تعليق، فهو يستهلك حوالي 22 ميكرو أمبير فقط، وهو مثالي للمشاريع التي تتطلب استهلاكًا منخفضًا. في حالة التشغيل، يمكن أن يزيد استهلاكه حتى 15 مللي أمبير عند إرسال البيانات.
إصدارات مختلفة من NRF24L01
يوجد إصداران أساسيان من وحدة NRF24L01. ال الإصدار الأساسي يحتوي على هوائي متعرج صغير مدمج في لوحة الوحدة نفسها. هذا الإصدار مثالي للاتصالات قصيرة المدى، مع نطاق فعال من 20 إلى 30 مترا في الأماكن المغلقة أو 50 المترو في المناطق المفتوحة.
من ناحية أخرى ، لدينا ملف نسخة مع هوائي خارجي ومكبر للصوت، المعروف باسم NRF24L01+ PA/LNA (مضخم الطاقة / مضخم صوت منخفض الضوضاء)، والذي يعمل على توسيع نطاق الاتصال بشكل كبير، حيث يصل إلى ما يصل إلى 1 كيلومتر في الظروف المثالية. هذا الإصدار أكثر تكلفة، ولكنه ضروري إذا كنت بحاجة إلى تغطية مسافات طويلة.
التغذية والاعتبارات الهامة
يحتوي NRF24L01 على جهد إمداد يتراوح من 1.9 إلى 3.6 فولت، لذلك فهو مهم جدًا لا تقم بتوصيله مباشرة بمنفذ 5V في Arduino، لأن ذلك قد يؤدي إلى تلفه. يُنصح باستخدام منفذ 3.3 فولت من Arduino لتشغيله، على الرغم من أنه سيكون من الضروري في كثير من الحالات استخدام منظم جهد خارجي إذا كنت تريد ضمان مصدر طاقة أكثر استقرارًا.
علاوة على ذلك، لتحسين موثوقية الإرسال، خاصة في الإصدار المزود بمكبر للصوت، فمن المستحسن وضع أ مكثف 10 ميكروفاراد إلى 100 ميكروفاراد بين دبابيس الطاقة (VCC وGND) للوحدة. سيؤدي ذلك إلى استقرار الطاقة ومنع انخفاض الجهد من التأثير على استقرار إشارة التردد اللاسلكي.
توصيل NRF24L01 بالاردوينو
يستخدم NRF24L01 واجهة سبي للتواصل مع المتحكم الدقيق . SPI هي واجهة اتصال تسلسلية متزامنة تسمح بنقل البيانات بسرعة وكفاءة. فيما يلي كيفية توصيل جهاز الإرسال والاستقبال NRF24L01 بجهاز Arduino UNO:
دبوس NRF24L01 | دبوس Arduino UNO |
---|---|
VCC | 3.3V |
GND | GND |
CE | 9 |
CSN | 10 |
SCK | 13 |
MOSI | 11 |
ميسو | 12 |
إذا كنت تستخدم Arduino MEGA، فستكون منافذ اتصال SPI مختلفة:
دبوس NRF24L01 | اردوينو ميجا دبوس |
---|---|
VCC | 3.3V |
GND | GND |
CE | 9 |
CSN | 53 |
SCK | 52 |
MOSI | 51 |
ميسو | 50 |
تركيب مكتبة RF24
من أجل استخدام NRF24L01 مع Arduino، من الضروري تثبيت المكتبة RF24، والذي يتضمن جميع الوظائف التي ستحتاجها للتحكم في الوحدة. هذه المكتبة كاملة جدًا وتم تحسينها بدرجة عالية لضمان اتصال سريع ومستقر.
لتثبيت المكتبة اتبع الخطوات التالية:
- افتح اردوينو IDE.
- اذهب إلى رسم > تضمين المكتبة > إدارة المكتبات...
- ابحث عن "RF24" في مدير المكتبة وقم بتثبيته.
الوظائف الرئيسية لمكتبة RF24
بمجرد تثبيت مكتبة RF24، ستتمكن من استخدام العديد من الوظائف التي ستسمح لك بتهيئة وإدارة الاتصال مع جهاز الإرسال والاستقبال. وفيما يلي نعرض لكم أهمها:
- RF24 (uint8_t _cepin، uint8_t _cspin)- تقوم هذه الوظيفة بإنشاء مثيل جديد لجهاز الإرسال والاستقبال يشير إلى منافذ CE وCSN التي تستخدمها على Arduino.
- بداية باطلة (): تهيئة وحدة الراديو. يجب أن تكون هذه الوظيفة موجودة في وظيفة الإعداد () الخاصة بالبرنامج.
- باطلة openWritingPipe (const uint8_t * العنوان)- يفتح قناة الكتابة التي سيتم إرسال البيانات إليها. يتطلب عنوان 5 بايت لتحديد القناة.
- كتابة منطقية (const void *buf، uint8_t len): يرسل البيانات من خلال قناة الكتابة. يعود صحيحًا إذا كان الإرسال ناجحًا، وخطأ إذا تعذر إجراء الإرسال.
- باطلة openReadingPipe (رقم uint8_t، const uint8_t * العنوان)- يفتح قناة قراءة حتى تتمكن الوحدة من تلقي البيانات من عنوان آخر.
- بداية باطلة ()- تفعيل وضع الاستماع لاستقبال البيانات من القنوات المفتوحة للقراءة.
- المنطق متاح ()- التحقق من توفر البيانات على قناة القراءة.
- قراءة باطلة (void *buf, uint8_t len): يقرأ البيانات المتوفرة في قناة القراءة ويحفظها في المخزن المؤقت المتوفر.
مثال التعليمات البرمجية: الاتصال الأساسي بين اثنين من Arduinos
لتوضيح كيفية استخدام NRF24L01، سنقوم بتنفيذ مثال اتصال أساسي حيث يرسل أحد Arduino ثلاث بيانات إلى آخر: قيمة الطرف التناظري A0، والوقت بالمللي ثانية الذي تم تشغيل الكود فيه (ملي()) وقيمة ثابتة (في هذه الحالة، 3.14).
كود باعث اردوينو:
#include <SPI.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
RF24 radio(CE_PIN, CSN_PIN);
const byte direccion[5] = {'c','a','n','a','l'};
float datos[3];
void setup() {
radio.begin();
radio.openWritingPipe(direccion);
Serial.begin(9600);
}
void loop() {
datos[0] = analogRead(A0) * (5.0 / 1023.0);
datos[1] = millis();
datos[2] = 3.14;
bool ok = radio.write(datos, sizeof(datos));
if (ok) {
Serial.println("Datos enviados");
} else {
Serial.println("Error en el envío");
}
delay(1000);
}
كود جهاز استقبال الاردوينو:
#include <SPI.h>
#include <RF24.h>
#define CE_PIN 9
#define CSN_PIN 10
RF24 radio(CE_PIN, CSN_PIN);
const byte direccion[5] = {'c','a','n','a','l'};
float datos[3];
void setup() {
radio.begin();
radio.openReadingPipe(1, direccion);
radio.startListening();
Serial.begin(9600);
}
void loop() {
if (radio.available()) {
radio.read(datos, sizeof(datos));
Serial.print("Voltaje: ");
Serial.print(datos[0]);
Serial.print(" V, Time: ");
Serial.print(datos[1]);
Serial.print(" ms, Sensor: ");
Serial.println(datos[2]);
}
delay(1000);
}
في هذا المثال، يقرأ Arduino المرسل قيمة مقياس الجهد المتصل بالطرف A0 ويرسله مع قيمة millis() وبيانات ثابتة. يستقبل Arduino المتلقي هذه القيم الثلاث، ويطبعها على الشاشة التسلسلية حتى تتمكن من رؤية النتائج.
نصائح لتحسين الأداء
على الرغم من أن NRF24L01 جهاز فعال للغاية، إلا أن أداءه ونطاقه يمكن أن يختلف بشكل كبير اعتمادًا على عدة عوامل. أدناه، نترك لك بعض النصائح لتحسين عملها:
- استخدم مصدر طاقة خارجي: إذا كنت تستخدم الإصدار المزود بـ PA/LNA، فمن الضروري استخدام مصدر طاقة خارجي. لن تكون الطاقة من Arduino كافية لتشغيل الوحدة بشكل صحيح عبر مسافات طويلة.
- ضع مكثفًا بين VCC وGND: سيؤدي المكثف الذي تتراوح سعته بين 10 و100 ميكروفاراد إلى تحسين استقرار الوحدة وتجنب مشاكل الطاقة.
- تجنب التدخل: يعمل NRF24L01 في نفس نطاق التردد مثل شبكات WiFi، لذا يُنصح باختيار قنوات بعيدة عن نطاق 2.4 إلى 2.5 جيجا هرتز الذي تستخدمه أجهزة توجيه WiFi عادةً.
مع هذه المعلومات، لديك الآن كل ما تحتاجه لبدء العمل مع NRF24L01 وArduino في مشاريعك. يفتح هذا الجهاز عددًا كبيرًا من الإمكانيات لإنشاء أنظمة اتصالات لاسلكية، بدءًا من مراقبة أجهزة الاستشعار عن بعد ووصولاً إلى التحكم في الروبوتات عبر مسافات طويلة.