پروژه الکترونیکپروژه های Processingپروژه های آردوینو

ایجاد چت روم شخصی رادیویی با آردوینو و پروسسینگ (ارسال پیام با Arduino)

سلام. ایجاد چت روم شخصی رادیویی با آردوینو و پروسسینگ (ارسال پیام با Arduino) را آماده کردیم.

ارسال پیام با ماژول رادیویی بین با Arduino و Processing

ایجاد یک شبکه محلی برای به اشتراک گذاشتن پیام بین کارمندان، اعضا و … به صورت محرمانه تقریبا غیر ممکن شده است. به این دلیل که ارتباط واتسپ، فیسبوک، تلگرام و … همه با استفاده از اینترنت انجام میشود. چطور میتوانیم پیام ها را بدون استفاده از اینترنت ارسال کنیم؟ مثلا بدون استفاده از اینترنت بتوانیم با افراد داخل خانه، محل کار و … ارتباط برقرار کنیم. ما در این پروژه آردوینو با استفاده از یک برد آردوینو و دو ماژول nRF24L01 یک چت روم محلی میسازیم.

برای عملی کردن این پروژه، ما به یک حفت برد آردوینو و ماژول رادیویی بی سیم نیاز داریم. ماژول های بی سیم استفاده شده در اینجا از مدل nRF24L01 هستند که قیمت مناسبی دارند. همچنین این ماژول ها روی 2.4 گیگاهرتز کار میکنند. برد Arduino و nRF24L01 به صورت سریالی با هم ارتباط برقرار میکنند.

ارسال پیام با ماژول رادیویی بین با Arduino و Processing

ولی در این پروژه ما قرار نیست با سریال مانیتور آردوینو با هم صحبت کنیم ! قرار است با استفاده از نرم افزار Processing یک صفحه برای چت بسازیم. Processing نرم افزاری ساده اما انعطاف پذیر است که قادر به برقراری ارتباط UART با آردوینو است. ما یک فایل .exe با استفاده از پروسسینگ ایجاد میکنیم که میتوانید روی هر کامپیوتری اجرا شود. برای کار فقط باید برد آردوینو خود را به کامپیوتر متصل کنیم و فایل .exe را باز کنیم.

این پروژه توانایی چت دو نفره را دارد. اما ماژول nRF24L01 دارای 6 کانال است ! یعنی میتوانید این پروژه را برای ارتباط 6 نفره گسترش دهید. برد این ماژول ها حدودا 100 متر است.

توضیحات مدار پروژه

این پروژه دارای دو مدار است. ما از دو برد آردوینو مگا و نانو استفاده کردیم اما میتوانید از هر مدل استفاده کنید.

آردوینو مگا با nRF24L01 آردوینو نانو با nRF24L01

همانطور که در شماتیک های بالا میبینید، این پروژه Arduino هیچ اتصالات سختی ندارد. فقط باید برد های آردوینو را به ماژول های nRF24L01 متصل کنیم.

قطعات مورد نیاز

  1. برد آردوینو (هر نسخه) – دو عدد
  2. ماژول رادیویی nRF24L01 – دو عدد

توضیحات کد آردوینو

برنامه برای دو برد آردوینو مشابه است. کد کامل پروژه در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینچا بعضی از قسمت های کد را توضیح میدهیم.

اگر میخواهید آردوینو را به صورت اصولی و پروژه محور (ساخت ربات، ارتباط با اندروید، اینترنت اشیا، برنامه نویسی حرفه ای) یاد بگیرید، حتما دوره آموزش آردوینو را مشاهده کنید.

از آنجا که Arduino و nRF24L01 از طریق SPI ارتباط برقرار می کنند، ما کتابخانه SPI را فراخوانی میکینم. ما همچنین کتابخانه Maniacbug RF24 را برای کارکرد ماژول های RF فراخوانی کرده ایم. این کتابخانه در فایل دانلودی انتهای صفحه قرار داده شده است.

#include <SPI.h>  
#include "RF24.h"

ماژول های NRF ما به ترتیب به پین ​​8 و 10 به CE و CS وصل شده اند.

RF24 myRadio (8, 10);

ما یک بسته داده ساختار یافته به نام Package ایجاد می کنیم. متن متغیر [20] برای انتقال داده ها استفاده خواهد شد.

struct package
{
  char  text[20]; //متن منتقل شده
};
typedef struct package Package;
Package data;

در تابع void setup () نرخ baud را 9600 قرار میدهیم. ماژول های خود را با مصرف توان MIN و سرعت 250KBPS روی 115 تنظیم میکنیم. بعداً می توانید این مقادیر را تغییر دهید تا مقدار بهینه را بیابید.

void setup() 
{
  Serial.begin(9600);
  delay(1000);
  //Serial.print("Setup Initialized");
  myRadio.begin(); 
  myRadio.setChannel(115); 
  myRadio.setPALevel(RF24_PA_MIN); 
  myRadio.setDataRate( RF24_250KBPS ) ; // حداکثر سرعت
}

در صورت ارسال داده، ماژول نقش فرستنده را دارد و در غیر اینصورت به طور مداوم در هوا به دنبال سیگنال ها میگردد. پیام ها در یک آرایه ذخیره می شود و برای ارسال آنها از WritData () استفاده می شود.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
void loop()  
{
  
  while(Serial.available()>0) //گرفتن مقدار از کاربر
  { 
    val = Serial.peek();
    if(index < 19) 
      {
          inChar = Serial.read(); // خواندن کاراکتر
          inData[index] = inChar; // مرتب کردن آن
          index++; //مکان نوشتن کاراکتر بعدی تعیین میشود
          inData[index] = '\0'; 
      }
     if (val=='#')
      { 
       strcpy( data.text, inData);
        WriteData(); // قرار دادن ماژول در حالت فرستنده
    while (index!=0)
      {
      inData[index] = ' ';
      index--;
      }
      }
  }
ReadData(); //قرار دادن ماژول در حالت گیرنده
}

تابع void WritData () داده ها را در آدرس 0xF0F0F0F0AA می نویسد.

void WriteData()
{
  myRadio.stopListening(); //توقف دریافت و شروع ارسال داده ها
  myRadio.openWritingPipe(0xF0F0F0F066);//ارسال داده ها
  myRadio.write(&data, sizeof(data)); 
  delay(300);
}

تابع void ReadData () داده را در 0xF0F0F0F066 میخواند.

void ReadData()
{
myRadio.openReadingPipe(1, 0xF0F0F0F0AA); //خواندن داده ها
  myRadio.startListening(); //توقف ارسال و شروع به خواندن
  if ( myRadio.available()) 
  {
    while (myRadio.available())
    {
      myRadio.read( &data, sizeof(data) );
    }
    Serial.println(data.text);
  }
}

توضیحات کد Processing

“پردازش” یک نرم افزار منبع باز است. این نرم افزار برای توسع برنامه های اندرویدی نیز استفاده می شود. کار با Processing بسیار آسان است و بسیار شبیه به محیط نرم افزار Arduino است.

کد پروسسینگ برای هر دو طرف گفتگو در فایل دانلودی قرار داده شده است. پس از تنظیم آردوینو، آن ها را در کامپیوتر خود باز کنید. توجه داشته باشید باید نرم افزار پروسسینگ را نصب کرده باشید. : دانلود Processing

در کد زیر ما باشد مشخص کنیم که اطلاعات از کدام پورت COM و با چه سرعتی خوانده شوند. فیلم را ببینید تا کاملا متوجه شویدو

void setup()
{
  size(510,500);
  port = new Serial(this,Serial.list()[4],9600); //Reads the 4th PORT at 9600 baudrate
  println(Serial.list());
  background(0);
}

به طور مثال در کد بالا ما درگاه 4 را استفاده کرده ایم. توجه داشته باشید نباید شماره درگاه را بنویسید! باید به ترتیب ببینید چند درگاه COM دارید.

مثلا اگر رایانه شما دارای پورت های COM زیر است.

 COM [5] COM [2] COM [1] COM [7] COM [19]

در صورتی که از کد بالا استفاده کنید که ما درگاه چهارم را معرفی کرده ایم، یعنی شما آردوینو را به پورت COM 7 متصل کرده اید.

فیلم عملکرد پروژه

پس از اینکه کد آردوینو را بارگذاری کردید، برد را به لپ تاپ خود متصل کنید. سپس طرح پروسسینگ را اجرا کنید و شروع به تایپ کردن کنید و اینتر را بزنید. مشاهده میکنید که پیام شما در طرح دیگر قابل مشاهده است. فیلم زیر نحوه عملکرد این پروژه را نشان میدهد. این فیلم به درک شما نسبت به این پروژه کمک میکند. توجه داشته باشید در اینجا ما هر دو برد Arduino را به یک سیستم متصل کرده ایم. این کار تفاوتی با استفاده از دو کامپیوتر ندارد.

برای دانلود فایل ها باید عضو آیرنکس باشید، تنها چند ثانیه زمان لازم است.

ورود / ثبت نام

[lrm_form default_tab=”register” logged_in_message=””]

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید
امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
محمد رحیمی

محمد رحیمی

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *