ارتباط های آسنکرون سریال یکی از کاربردی ترین نوع ارتباط در بین سخت افزار های مختلف است . در این ارتباط دیتا در تعدا بیت های مشخصی و بر اساس یک زمان بندی دقیق و از قبل مشخص شده انتقال می باشد . یکی از کاربردی ترین پروتکل های ارتباط سریال غیر همزمان ، پرتکل RS232 می باشد . این پروتکل شامل لایه های سخت افزاری و نرم افزاری خود است . در لایه های نرم افزاری نحوه ارسال بیت های داده و سایر پارامتر ها مشخص می شود و در لایه سخت افزاری شامل پورت های 9 پایه با عنوان پورت های DB9 می باشد . در این ارتباط مسیر های ارسال و دریافت دیتا مجزا از همدیگر می باشند . به طور گسترده ای از RS232 در کامپیوتر های صنعتی و… استفاده می شود . RS232 امکان ارتباط باسیم تا مسافت های تقریبا 15 متری را فراهم می ساز . اما به دلیل مسافت کم RS232 در ارتباط های با فاصله دور تر از پروتکل RS485 استفاده می شود . ساختار نرم افزاری و نحوه ارسال دیتا در این پروتکل همانند RS232 است با این تفاوت که سطح ولتاژ در این ارتباط با RS232 متفاوت است . RS485 امکان ارتباط های باسیم تا فواصل 1200 متر را فارهم میسازد . لذا در شبکه هایی که اجزا در وفواصل دوری از هم قرار دارند از RS485 استفاده می شود . برخلاف RS232 در ارتباط RS485 هیچ سخت افزار معینی برای استفاده در خروجی ها تعریف نشده است ( پورت سخت افزاری ). به همین دلیل خروجی و ورودی های RS485 در برد های مختلف به شکل های مختلف است مانند ترمینال و یا حتی پورت های DB9 . یکی از مهم ترین تفاوت های RS232 و RS485 کانال های ارتباطی آن ها می باشد . ارتباط RS232 به صورت تمام دو طرفه است ولی ارتباط RS485 به صوت نیمه دو طرفه می باشد که از دیفرانسیل خطوط برای انتقال منطق های 0 و 1 استفاده می کند . در این آموزش قصد داریم به نحوه راه اندازی ماژول MAX485 بپردازیم . MAX485 یک مبدل UART به RS485 است . لذا به راحتی توسط این ماژول دیتای سریال ارسال شده از برد آردوینو را می توان از طریق پروتکل RS485 منتقل نمود . این کار امکان ارتباط سیمی چندین برد را در فواصل دور فراهم می سازد .
در تصویر زیر پایه های ماژول MAX485 نشان داده شده است :
شماتیک اتصال ماژول به آردوینو :
برنامه فرستنده :
#define SerialTxControl 2 // contact # 2 will switch receiver / transmitter mode
#define RS485Transmit HIGH
#define RS485Receive LOW
void setup (void) {
Serial.begin (9600); // set the serial port to 9600baud speed
pinMode (SerialTxControl, OUTPUT);
digitalWrite (SerialTxControl, RS485Transmit); // put the device into transmitter mode
}
void loop (void) {
Serial.print ("ping"); // send text
delay (500);
}
برنامه گیرنده :
#define SerialTxControl 2
#define RS485Transmit HIGH
#define RS485Receive LOW
char buffer [100];
byte state = 0;
void setup (void) {
Serial.begin (9600);
pinMode (13, OUTPUT);
pinMode (SerialTxControl, OUTPUT);
digitalWrite (SerialTxControl, RS485Receive); // put the device into receiver mode
}
void loop (void) {
int i = 0;
if (Serial.available ()) {// if any data came to the port
delay (5); // wait a bit for the entire data packet to be accepted by the port
while (Serial.available ()) {
buffer [i ++] = Serial.read (); // read data and write it to the buffer
}
}
if (i> 0) {// if there is something in the buffer
buffer [i ++] = '\ 0'; // convert the buffer contents to a string by adding a null character
if (strcmp (buffer, "ping")) {// if the accepted string is equal to the ping text
digitalWrite (13, state); // blink LED
state =! state;
}
}
}
پس از پروگرام کردن دوتا برد آردوینو ، در محیط آردوینو IDE در قسمت Tools پورت را برد روی پروتی که گیرنده به آن متصل است قرار داده و سپس وارد محیط Serial Monitor شوید .



