ارتباط بی سیم با استفاده از NRF24L01

 

سلام امیدوارم که حال و روزتون خوب و خوش باشه. امروز قراره با هم درمورد ارتباط بیسیم از نوع رادیویی در آردوینو صحبت کنیم یعنی اینکه چجوری و با چی میتونیم دیتا را از طریق امواج رادیویی ارسال کنیم. جواب این سوال ماژول های NRf هستند که در ادامه کلی راجع بهش صحبت می‌کنیم فعلاً این را بلد باشیم که این ماژول ها از طریق امواج رادیویی دیتا را ارسال و دریافت می‌کنند در پست امروز، نگاهی به معرفی دقیق NRF24L01 خواهیم داشت. NRF24L01 اساساً یک فرستنده گیرنده بی سیم است که برای ارسال و دریافت داده با استفاده از امواج رادیویی استفاده می شود. این یک ماژول فرستنده گیرنده تک تراشه است. از پروتکل SPI برای انتقال داده ها استفاده می کند. سرعت انتقال اطلاعات آن تا 2 مگابیت در ثانیه است. NRF24L01 معمولاً در دستگاه ها و پروژه های صنعتی برای انتقال داده استفاده می شود. و بیشتر در رایانه، اسباب بازی، کنترل از راه دور و سایر وسایل الکترونیکی استفاده می شود در آموزش امروز، کار، پروتکل ارتباطی، پایه‌ها و ویژگی‌های آن را مورد بحث قرار خواهم داد. همچنین برخی از پیوندهای رابط آن را با آردوینو به اشتراک خواهم گذاشت. پس بیایید شروع کنیم

 مقدمه‌ای بر NRf24L01

·        NRF24L01 یک ماژول گیرنده فرستنده بی‌سیم (بر روی پروتکل SPI کار می کند) است که برای ارسال و دریافت داده‌ها در فرکانس رادیویی 2.4 تا 2.5 گیگاهرتز ISM استفاده می‌شود.

·        این ماژول فرستنده گیرنده از یک تولید کننده فرکانس، کنترل کننده حالت انفجار شوک، تقویت کننده قدرت، مدولاتور نوسان ساز کریستالی و دمدولاتور تشکیل شده است.

·        هنگامی که توان انتقال 0dBm باشد، تنها 11.3 میلی آمپر جریان مصرف می‌کند، در حالی که در حالت دریافت، 13.5 میلی آمپر جریان مصرف می‌کند.

·        این ماژول برای انتقال اطلاعات از راه دور و سریع طراحی شده است.

·        این برای کار از طریق یک پروتکل SPI طراحی شده است.

·        سرعت انتقال داده های هوایی NRF24L01 حدود 2 مگابیت در ثانیه است.

·        سرعت بالای انتقال داده در هوا همراه با حالت صرفه جویی در مصرف انرژی آن را برای کاربردهای بسیار کم مصرف بسیار مطلوب می‌کند.

·        این ماژول دارای اندازه جمع و جور است و به راحتی می‌توان از آن در فضاهای محدود استفاده کرد.

·        این ماژول برای کار در ولتاژ 3.3 ولت طراحی شده است.

·        این ماژول دارای محدوده آدرس 125 است و می تواند با شش ماژول دیگر ارتباط برقرار کند. با استفاده از این قابلیت می‌توانیم از آن در شبکه های مش و سایر برنامه های شبکه استفاده کنیم.

خب تا الان یه دید خیلی خوبی نسبت به این ماژول پیدا کردیم و الان وقت معرفی پایه ها رسیده است:

شماره

اسم پایه

ویژگی

1

CE

برای فعال کردن و انتخاب حالت فرستنده یا گیرنده بکار می‌رود

2

CSN

برای رابط پروتکل SPI استفاده می‌شود

3

SCK

کلاک ماژول می‌باشد

4

MOSI

این برای دریافت داده از یک دستگاه میکروکنترلر اصلی و برای ارسال داده به یک دستگاه Slave استفاده می شود.

5

MISO

این پین برای دریافت اطلاعات از یک دستگاه Slave و ارسال داده به دستگاه اصلی استفاده می شود.

6

IRQ

این پین برای داده های وقفه استفاده می شود.

7

Vdd

پایه 3.3 ولت می‌باشد

8

 Vss

زمین

 

تصویر زیر را نیز مشاهده کنید تا بهتر بفهمید

پایه های ماژول

رابط SPI در NRF24L01

·        NRF24L01 از پروتکل SPI برای انتقال استفاده می کند. SPI مخفف Serial Peripheral Interface است.

·     بیایید نگاهی به نحوه اتصال NRF24L01 با هر میکروکنترلر با استفاده از پین های SPI بیندازیم.
در شکل زیر، پایه های 
MISO) SPI ، MOSI،  (SCKرا با پایه های SPI میکروکنترلر وصل می‌شود، در حالی که پایه های سیگنال (CE، SCN) به پایه های GPIO میکروکنترلر متصل شده اند.

اتصال به میکروکنترلر

 

 

 

 

 

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

اکنون که درک کاملی از نحوه عملکرد ماژول فرستنده گیرنده nRF24L01 داریم، می‌توانیم آن را به آردوینو متصل کنیم!
برای شروع، پایه
VCC ماژول را به 3.3 ولت در آردوینو و پایه GND را به زمین وصل کنید. پین های CSN و CE را می توان به هر پین دلخواه دیجیتال آردوینو متصل کرد. در مورد ما، به ترتیب به پین ​​دیجیتال 8 و 9 متصل است. الان فقط پین هایی که برای ارتباط SPI استفاده می‌شوند باقی می‌مانند.
توجه داشته باشید که هر برد آردوینو دارای پین های
SPI متفاوتی است که باید بر اساس آن متصل شوند. برای بردهای آردوینو مانند UNO/Nano  این پین‌های دیجیتال 13 (SCK)، (MISO) 12 و 11 (MOSI) هستند.

بعد از اتصالات سخت افزاری نوبت به برنامه نویسی می‌رسد و همانطور که می‌دانید باید اول کتابخانه موردنظر را نصب کرد . در اینجا دو کد برای ارتباط بی سیم و در زیر شرح آنها آمده است.

 

کد ارسال

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

 

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

 

const byte address[6] = "00001";

 

void setup() {

  radio.begin();

  radio.openWritingPipe(address);

  radio.setPALevel(RF24_PA_MIN);

  radio.stopListening();

}

 

void loop() {

  const char text[] = "Hello World";

  radio.write(&text, sizeof(text));

 

  delay(1000);
{

و کد دریافت

#include <SPI.h>

#include <nRF24L01.h>

#include <RF24.h>

 

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

 

const byte address[6] = "00001";

 

void setup() {

  Serial.begin(9600);

  radio.begin();

  radio.openReadingPipe(0, address);

  radio.setPALevel(RF24_PA_MIN);

  radio.startListening();

}

 

void loop() {

  if (radio.available()) {

    char text[32] = "";

    radio.read(&text, sizeof(text));

    Serial.println(text);

 

  }
{

 

ما در کدهای بالا آرایه‌ای بنام ادرس ایجاد کردیم که برای خواندن و نوشتن داده ها در یک به اصطلاح خط لوله انجام می‌شود و برای هر دو باید یکسان باشد تا دیتایی که ارسال کردیم را بتوانیم بخوانیم
و از کدهای
radio.openWritingPipe(address)،  radio.openReadingPipe(0, address) برای نوشتن و خواندن از ادرس موردنظر استفاده می‌شود
radio.setPALevel(RF24_PA_MIN): سپس با استفاده از تابع radio.setPALevel() سطح Power Amplifier را تنظیم می‌کنیم، در مورد ما آن را روی حداقل تنظیم می‌کنیم البته هرچقدر از هم دورتر باشد باید بر روی حداکثر قرار داد.
در مرحله بعد، تابع
radio.stopListening()  داریم که ماژول را به عنوان فرستنده تنظیم می کند، و در طرف دیگر، تابع radio.startListening را داریم که ماژول را به عنوان گیرنده تنظیم می کند.
در بخش حلقه، در فرستنده، آرایه ای از کاراکترها را ایجاد می کنیم که پیام "Hello World" را به آنها اختصاص میدهیم. با استفاده از تابع radio.write() آن پیام را برای گیرنده ارسال میکنیم. اولین آرگومان در اینجا متغیری است که می خواهیم ارسال شود.
از طرف دیگر، در گیرنده، در بخش حلقه با استفاده از تابع radio.available() بررسی میکنیم که آیا داده ای برای دریافت وجود دارد یا خیر. اگر این شرط درست باشد، ابتدا آرایه ای از 32 عنصر به نام "متن" ایجاد می کنیم که در آن داده های دریافتی را ذخیره می‌کنیم.

 

با استفاده از ماژول ارتباطی شما می‌توانید در پروژه‌های اینترنت اشیاء ، رباتیک و هوشمندسازی استفاده کنید.

 

کپی شد!

ارتباط با ما

اصفهان ، میدان استقلال ، خیابان آزادگان ، دانشگاه صنعتی اصفهان
info@mehsa.ir