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

ارتباط سریال فاصله طولانی بین دو برد آردوینو با کابل CAT6 و RS485

امروز در بسیاری از پروژه ها ما از برد های آردوینو، رزبری پای، NodeMCU و … استفاده میکنیم. در این برد ها اکثر ارتباط با سنسور ها و ماژول ها با استفاده از ارتباط سریال انجام میشود. در بعضی پروژه ها، ما نیازمند برقراری ارتباط سریال در فواصل طولانی هستیم. ارتباط سریال در فاصله طولانی میتواند دچار نویز شدیدی شود. بنابراین اگر میخواهید ارتباط سریال را در فاصله بیشتر از 10-15 متر برقرار کنید، ادامه این آموزش را بخوانید. زیرا در این آموزش ما با استفاده از RS485 و کابل CAT 6E نحوه برقراری ارتباط سریال بین دو برد آردوینو را آموزش میدهیم.

امروز ما قصد داریم پروتکل دیگری را که بیشتر مورد استفاده قرار می گیرد بنام RS485 بررسی کنیم که معمولاً در محیط های صنعتی با نویز  زیاد برای انتقال داده ها استفاده می شود. ما می خواهیم در مورد پروتکل ارتباطی RS485 و نحوه پیاده سازی آن با دو آردوینو نانو و استفاده از ماژول مبدل MAX485 RS485 به UART را بیاموزیم.

در این پروژه ما از کابل CAT-6E استفاده میکنیم که می تواند تا 600 مگاهرتز را پشتیبانی کند. هر دو انتها توسط یک رابط RJ45 خاتمه می یابد. حساسیت ورودی گیرنده 200 میلی ولت است.

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

شماتیک مدار ارتباط سیمی مسافت طولانی

تصویر زیر نمودار مدار فرستنده و گیرنده را برای ارتباط سیمی از راه دور با آردوینو نشان می دهد. توجه داشته باشید که مدارهای فرستنده و گیرنده هر دو یکسان به نظر می رسند تنها چیزی که متفاوت است کد نوشته شده در آن است. ما از یک برد به عنوان فرستنده و یک برد به عنوان گیرنده استفاده می کنیم ، اما می توانیم به راحتی برنامه ها را تنظیم کنیم تا با همان تنظیمات ، هم به عنوان فرستنده و هم گیرنده کار کنند.

شماتیک مدار ارتباط سیمی مسافت طولانی

شماتیک اتصال فوق نیز در زیر آورده شده است.

ارتباط سریال فاصله طولانی بین دو برد آردوینو

همانطور که در بالا مشاهده می کنید ، دو جفت مدار تقریباً یکسان هستند. هر دو مدار دارای یک ال سی دی کاراکتری 16*2 و یک آی سی مبدل MAX485 UART به RS485 هستند که از طریق یک رابط RJ45 به هر انتهای کابل Ethernet Cat-6E متصل هستند. کابلی که من در آموزش از آن استفاده کردم 25 متر طول دارد. ما برخی از داده ها را از طرف فرستنده از طریق کابل از برد آردوینو نانو ارسال می کنیم که از طریق ماژول MAX RS485 که در حالت Master کار می کند به سیگنال های RS485 تبدیل می شود.

در انتهای دریافت ، ماژول مبدل MAX485 به عنوان Slave کار می کند و با دریافت اطلاعات انتقالی از Master ، مجدداً داده RS485 را که دریافت کرده به سیگنال های استاندارد 5 ولت TTL UART تبدیل می کند تا توسط برد آردوینو نانو خوانده شود و در ال سی دی کاراکتری نمایش داده شود.

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

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

  1. ماژول مبدل MAX485
  2. برد آردوینو نانو – 2 عدد
  3. ال سی دی کاراکتری 16*2
  4. پتانسیومتر 10 کیلو اهم – 2 عدد
  5. کابل اترنت Cat-6E

ماژول مبدل MAX485 UART-RS485

این ماژول مبدل UART-RS485 دارای یک تراشه MAX485 است که یک فرستنده و گیرنده کم مصرف و با سرعت کم است که برای ارتباطات RS-485 استفاده می شود. این ماژول با منبع تغذیه + 5 ولت کار می کند و جریان نامی آن 300 میکرو آمپر است. این ماژول روی ارتباطات نیمه دو طرفه کار می کند تا عملکرد تبدیل سطح TTL به سطح RS-485 را اجرا کند ، به این معنی که می تواند در هر زمان اطلاعات را انتقال دهد یا دریافت کند و می تواند حداکثر سرعت انتقال 2.5Mbps را به دست آورد. ورودی گیرنده دارای ویژگی ایمن در برابر خرابی است که در صورت باز بودن ورودی ، خروجی بالای منطقی را تضمین می کند همچنین دارای LED های داخلی برای نمایش وضعیت فعلی تراشه است.

ماژول مبدل MAX485 UART-RS485

نمودار مدار داده شده در بالا نحوه اتصال IC داخلی MAX485 به اجزای مختلف را توضیح می دهد و هد رهای فاصله استاندارد 0.1 اینچی را ارائه می دهد تا در صورت تمایل با برد بورد استفاده شود.

کابل اترنت CAT-6E

وقتی به انتقال داده از راه دور فکر می کنیم ، فوراً به فکر اتصال به اینترنت از طریق کابل های اترنت می افتیم. امروزه ، ما بیشتر از Wi-Fi برای اتصال به اینترنت استفاده می کنیم اما قبلاً از کابلهای اترنت برای اتصال آن به اینترنت استفاده می کردیم. دلیل اصلی استفاده از این کابلهای اترنت بر روی سیمهای معمولی این است که آنها دارای محافظت بسیار بهتری در برابر نویز ها به خصوص در فاصله های طولانی هستند. کابل های اترنت دارای محافظ های لایه به لایه برای محافظت در برابر تداخل الکترومغناطیسی هستند و همچنین هر جفت سیم به هم تابیده شده است تا از تشکیل حلقه جریان جلوگیری کند.

آنها اغلب با کانکتور های 8 پین RJ45 در هر دو انتها خاتمه می یابند. انواع مختلفی از کابل های اترنت وجود دارد که می توانیم از جمله CAT-4، CAT-5، CAT-5E، CAT-6، CAT-6A و … استفاده کنیم. ما از کابل CAT-6E استفاده می کنیم که می تواند تا 600 مگاهرتز را پشتیبانی کند.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

تصویری که نشان می دهد چگونه یک جفت سیم در داخل لایه عایق کابل CAT-6E پیچ خورده است.

کابل کت سیکس CAT-6E

اتصال RJ-45 به کابل اترنت CAT-6E

اتصال RJ-45 به کابل اترنت CAT-6E

کد آردوینو ارتباط سریال طولانی

در این پروژه ، ما از دو برد آردوینو نانو استفاده می کنیم ، یكی به عنوان فرستنده و یكی به عنوان گیرنده كه هر كدام از آنها از یک ال سی دی کاراکتری 16*2 برای نمایش نتیجه استفاده میکنند. کد کامل در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

طرف فرستنده سریال

در ابتدا ما یک متغیر برای پین enable و یک متغیر برای مقدار پتانسیومتر در نظر میگیریم. سپس کتابخانه ال سی دی کاراکتری را فراخوانی میکنیم و پین های آن را تعریف میکنیم.

int enablePin = 8;
int potval =0 ;
#include <LiquidCrystal.h>       
LiquidCrystal lcd(2,3,4,5,6,7);

سپس وارد تابع void setup میشویم و پین enable را high میکنیم تا ماژول MAX485 در حالت فرستنده قرار بگیرد. از آنجا که این ماژول، یک آی سی نیمه دو طرفه است، نمیتواند همزمان انتقال دهد یا دریافت کند. همچنین ما ال سی دی کاراکتری را فعال میکنیم و یک پیام مقدمه در آن نمایش میدهیم.

  Serial.begin(9600);   
  pinMode(enablePin, OUTPUT);
  lcd.begin(16,2);
  lcd.print("irenx.ir");
  lcd.setCursor(0,1);
  lcd.print("Transmitter Nano");
  delay(3000);
  lcd.clear();

اکنون در void loop، یک مقدار عدد صحیح که به طور مداوم در حال افزایش است ، روی خطوط Serial می نویسیم که به برد نانو دیگر منتقل می شود. این مقدار در ال سی دی کاراکتری سمت فرستنده نیز نمایش داده میشود.

    Serial.print("Sent Value= ");
    Serial.println(potval);
    lcd.setCursor(0,0);
    lcd.print("Sent Value");
    lcd.setCursor(0,1);
    lcd.print(potval);
    delay(1000);
    lcd.clear();
    potval+=1;

طرف گیرنده سریال

در سمت گیرنده نیز ما ابتدا یک متغیر برای پین enable تعریف میکنیم که برای تعیین حالت ماژول MAX485 استفاده میشود. سپس کتابخانه LCD کاراکتری را فراخوانی میکنیم و پین های آن را تعریف میکنیم.

int enablePin = 8; 
#include <LiquidCrystal.h>    
LiquidCrystal lcd(2,3,4,5,6,7);

در قسمت void setup نیز مانند طرف فرستنده عمل میکنیم.

  Serial.begin(9600);      
  pinMode(enablePin, OUTPUT);
  lcd.begin(16,2);
  lcd.print("irenx.ir");
  lcd.setCursor(0,1);
  lcd.print("Receiver Nano");
  delay(3000);
  digitalWrite(enablePin, LOW);

سپس در void loop بررسی میکنیم که آیا چیزی در پورت سریال موجود است یا خیر و سپس داده ها را میخوانیم و از آنجا که داده ورودی یک عدد صحیح است، آن را روی ال سی دی نمایش میدهیم.

        int pwmval = Serial.parseInt(); 
        Serial.print("I got value");
        Serial.println(pwmval);
        lcd.setCursor(0,0);
        lcd.print("Received Value");
        lcd.setCursor(0,1);
        lcd.print(pwmval);
        delay(1000);
        lcd.clear();

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

به این ترتیب میتوانیم ارتباط سریال را در مسافت های طولانی برقرار کنیم. این یک روش ساده و آسان برای انقال اطلاعات است. در این پروژه ما از نرخ باو 9600 استفاده کردیم که برای بیشتر ماژول ها و سنسور ها مناسب است. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

دانلود فیلم پروژه ارتباط سریال طولانی بین دو آردوینو

موارد موجود در فایل : سورس کامل ، شماتیک کامل

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

ورود / ثبت نام

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

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

محمد رحیمی

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

2 نظر

  1. درود.
    نام ماژولی که کابل شبکه اترنت را به آن متصل کردید چیست؟

    1. سلام جناب. ماژول خاصی نیست و فقط وظیفه ارتباط سیم های کابل CAT6 به ماژول MAX485 رو بر عهده داره.

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

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