اتصال لاسلكي بين لوحتين اردوينو باستخدام (RF 433Mhz)

مبتدئ

image_pdf

البرمجة

بالبداية ستحتاج إلى تحميل مكتبة (VirtualWire) و من ثم تثبيتها على بيئة تطوير الاردوينو (Arduino IDE) يمكنك الاطلاع على الدرس الأول -تنصيب برنامج اردوينو (IDE) على جهازك من سلسة تعلم الاردوينو لمعرفة كيف يتم تثبيت المكتبات

برمجة المرسل 

#include <VirtualWire.h> 
#define size 1
int pot = A0;
byte TX_buffer[size]={0};
byte i;


void setup() 
{

vw_set_tx_pin(3); // pin
vw_setup(2000); // bps
for(i=0;i<size;i++)
{
TX_buffer[i]=i;
}
}

void loop()
{ 
int val = map(analogRead(pot),0,1024,0,255);
TX_buffer[0] = val; 
vw_send(TX_buffer, size); 
vw_wait_tx(); 
delay(10); 
}

برمجة المستقبل 

 

#include <VirtualWire.h> 
byte message[VW_MAX_MESSAGE_LEN]; // a buffer to store the incoming messages
byte messageLength = VW_MAX_MESSAGE_LEN; // the size of the message
int received_number = 0;
int LED = 5;

void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
Serial.println("Ready...");
vw_set_rx_pin(3); // pin
vw_setup(2000); // bps
vw_rx_start();
}

void loop()
{
if (vw_get_message(message, &messageLength)) // non-blocking
{
Serial.print("Potentiometer: ");
for (int i = 0; i < messageLength; i++)
{
//Serial.print(message[i]);
received_number = message[i];
}
Serial.println(received_number);
analogWrite(LED, received_number);
}
}

شرح الكود البرمجي

أولا المرسل

في البداية سنقوم باستدعاء مكتبة (VirtualWire) والتي تتضمن دوال تساعدنا على برمجة الوحدة، ونعرف منفذ المقاومة المتغيرة

#include <VirtualWire.h> 
#define size 1
int pot = A0;
byte TX_buffer[size]={0};
byte i;

في دالة void setup()  نهيئ منفذ الارسال

void setup() 
{

vw_set_tx_pin(3); // pin
vw_setup(2000); // bps
for(i=0;i<size;i++)
{
TX_buffer[i]=i;
}
}

في دالة void loop() نأخذ قراءة من المقاومة المتغيرة ضمن مدى من 0 إلى 255 والتي  تمثل شدة الإضاءة المطلوبة، و نرسل الإشارة

void loop()
{ 
int val = map(analogRead(pot),0,1024,0,255);
TX_buffer[0] = val; 
vw_send(TX_buffer, size); 
vw_wait_tx(); 
delay(10); 
}

ثانيا المستقبل

نقوم باستدعاء مكتبة VirtualWire وتعريف الإشارة المستقبلة وحجم الرسالة، وتعريف منفذ الثنائي المشع للضوء (LED)

#include <VirtualWire.h> 
byte message[VW_MAX_MESSAGE_LEN]; 
byte messageLength = VW_MAX_MESSAGE_LEN; 
int received_number = 0;
int LED = 5;

في دالة void setup() نقوم بتهيئة منفذ الاتصال التسلسلي حتى نتمكن من طباعة القيم المستقبلة على شاشة الاتصال  وكمت سيتم تعريف منافذ الخرج

void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
Serial.println("Ready...");
vw_set_rx_pin(3); // pin
vw_setup(2000); // bps
vw_rx_start();
}

في دالة void loop() نستقبل الرسالة و نعكس قيمتها ليتم تحديد شدة اضاءة الثنائي المشع للضوء (LED)

void loop()
{
if (vw_get_message(message, &messageLength)) // non-blocking
{
Serial.print("Potentiometer: ");
for (int i = 0; i < messageLength; i++)
{
//Serial.print(message[i]);
received_number = message[i];
}
Serial.println(received_number);
analogWrite(LED, received_number);
}
}

 

 

 

X
تم إضافة المنتج إلى السلة بنجاح