آردوینو آردوینو Arduino Uno اینترنت اشیا IOT نمایشگر LCD پروژه های آردوینو

ارتباط بین چند برد آردوینو در فواصل طولانی با پروتکل RS485

RS485-protocol-with-arduino-and-lcd-digispark
نوشته شده توسط علی زاهدی

تمامی ارتباط‌های سریال از جمله RS485 ,RS232 و… زیر شاخه‌هایی از استاندارد EIA/TIA هستند. که توسط مجمع EIA در سال ۲۰۱۱ لغو شد. در این استاندارد پارامترهایی مانند: طول کابل، جنس کابل، نحوه‌ی اتصال وسایل بهم دیگر، سرعت انتقال اطلاعات و نحوه‌ی ارسال آن درنظر گرفته شده است. بر اساس آن استاندارد TIA به چهار ارتباط RS232, RS422, RS432, RS485 تقسیم می‌شود. در این آموزش قصد داریم تا با استفاده از دو عدد ماژول Max485 ارتباط یک طرفه با پروتکل RS485 در فواصل طولانی بین دو برد آردوینو را برقرار کنیم. در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.

 

 


ارتباط سریال RS485


پورت‌های موازی در میکروکنترلرهای AVR توانایی انتقال ۸ بیت دیتا در هر لحظه را دارند. انتقال اطلاعات توسط این پورت‌ها به دلیل اینکه در فواصل طولانی دچار نویز زیادی می‌شود. قابلیت اطمینان کمی دارد. پورت سریال توانایی انتقال یک بیت دیتا در هر لحظه را دارد. در این پورت دیتاها بصورت دنبال هم ارسال و دریافت می‌شوند. درچنین حالتی یک بایت از اطلاعات بصورت هشت بیت یکی پس از دیگری ارسال می‌شود. نحوه ارسال هشت بیت به این صورت می باشد که قبل از ارسال هر بایت دیتا، پورت سریال ابتدا یک بایت “Start” ارسال می‌کند، که این بایت صرفاٌ یک بیت با مقدار صفر می‌باشد. پس از ارسال هر بایت دیتا، پورت سریال یک بایت “Stop” ارسال می‌کند و این به معنای خاتمه ارسال دیتا است. برای کنترل خطا ممکن است، از یک بیت اضافه به نام parity نیز استفاده شود. پروتکل RS485 این قابلیت را دارد که بصورت شبکه به یکدیگر متصل شوند. برای درک بیشتر این موضوع به تصویر زیر توجه فرمایید.

 

 


اتصالات پروژه RS485


در این آموزش برای ارتباط با استفاده از پروتکل RS485 برد آردوینو UNO بعنوان Master و برد آردوینو NANO بعنوان Slave تعریف شده‌اند. برای راه اندازی کافیست اتصالات را مانند نقشه شماتیک زیر برقرار کنید. پین های DE و RE در هر دو ماژول به یکدیگر متصل شده‌اند. و همچنین توجه داشته باشد که سیمی که به پایه های A و B ماژول ها وصل می‌شود، بایستی سیم بهم تایده شده باشد.

 

 


کدنویسی پروژه پروتکل RS485


پس از بستن اتصالات بصورت صحیح ابتدا کد زیر را کپی کرده و داخل نرم افزار آردوینو Paste کنید. سپس بر روی برد آردوینو UNO انتقال دهید.

کد زیر مربوط به برد آردوینو NANO می‌باشد. همانند کد بالا ابتدا کد زیر را کپی نمایید و سپس در نرم‌ افزار آردوینو Paste نمایید و سپس گزینه Upload را انتخاب نمایید تا کد بر روی برد انتقال پیدا کند.

 


تحلیل کد پروژه


تحلیل کد RS485 Master

در کد مربوط به برد آردوینو (UNO (Masterابتدا متغیری بنام enablePin تعریف شده است که مقدار آن برابر ۸ می‌باشد، این متغیر مربوط به پایه DE و RE ماژول MAX485 می‌باشد، زمانی که این پایه HIGH باشد ماژول در حالت فرستنده قرار دارد و زمانی که پایه LOW باشد ماژول درحالت گیرنده قرار می‌گیرد. سپس متغیر هایی برای خواندن مقدار پتانسیومتر تعریف شده است. در تابع setup ابتدا پورت سریال آردوینو با باودریت ۹۶۰۰ فعال شده است. سپس پایه شماره ۸ آردوینو بعنوان خروجی و پایه A0 بعنوان ورودی تعریف شده است. سپس ماژول MAX485 را در حالت فرستنده قرار داده می‌شود. در تابع loop هر ۱۰۰ میلی ثانیه مقدار پتانسیومتر خوانده میشود و از طریق Usart ارسال میگردد.

تحلیل کد RS485 Slave

در کد مربوط به برد (NANO (Slave ابتدا کتابخانه مربوط به LCD کاراکتری به کد اضافه میگردد و سپس همانند Master متغیری با نام enablePin تعریف شده است. متغیری برای تعریف خروجی LED تعریف می‌شود. در ادامه پایه های LCD به آنها متصل است همانند ترتیب نامبرده شده داخل تابع مربوطه قرار داده می‌شود. داخل تابع setup ابتدا مقدار دهی اولیه LCD انجام شده سپس یه مدت ۳ ثانیه در سطر اول عبارت “DigiSpark” و در سطر دوم عبارت “RS485 ARDUINO” نمایش داده می‌شود. پس از آن پورت سریال با باودریت ۹۶۰۰ شروع به کار می‌کند. سپس پایه های شماره ۸ و ۱۰ آردوینو بعنوان خروجی تعریف می‌شود. در تابع loop با هر بار دریافت از پورت سریال ابتدا مقدار دریافت شده بصورت عدد صحیح داخل متغیر pwmval ذخیره می‌شود. بع دلیل این که مبدل آنالوگ به دیجیتال برد آردینو ۱۰ بیتی میباشد مقدار دریافتی بین ۰ تا ۱۰۲۳ می‌باشد، اما برای انتقال این مقدار به خروجی بایستی مقدار دریافت شده به عدد ۸ بیتی تبدیل شود. با استفاده از دستور زیر مقدار ۰ تا ۱۰۲۳ را به ۰ تا ۲۵۵ تبدیل می‌کنیم.

در ادامه مقدار تبدیل شده بصورت آنالوگ بر روی خروجی قرار می‌گیرد. سپس عبارت “PWM FROM MASTER” در سطر اول LCD و مقدار تبدیل شده در سطر دوم نمایش داده می‌شود.

 

 


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


  1. برد آردوینو UNO
  2. برد آردوینو NANO
  3. ماژول MAX485
  4. نمایشگر Lcd 2*16
  5. پتانسیومتر
  6. led
  7. کابل فلت
  8. کابل دو رشته بهم تابیده شده

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

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

علی زاهدی

دانشجو ی رشته الکترونیک،
عاشق یادگیری و به اشتراک گذاشتن اطلاعاتم هستم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۶ دیدگاه

  • واقعا ممنون عالی بود.کمتر سایتی رو مثل سایت شما .میشه پیدا کرد که مطالب رو روان انقال بدن و از پرت و پلاگویی کم کنن.
    من یک سوالی داشتم راهنمایی بفرمایید.اگربخواهیم تعدادی حدود ۳۰ عدد شیفت رجیستر ۷۴۵۹۵ رو با RS485 در یک سطر ولی با مسافت مثلا ۴ متر از هم متصل کنیم وداده ها رو سریال بدیم و مواری دریافت کنیم.باید به چه شکل کار کنیم.ایا به صورت سیگنال های TTL )0,5)شدنیه؟ ون
    از کمکتون ممنونم.

    • با سلام از توجه شما سپاس گزارم
      برای این مورد بایستی دیتاشیت هردو ایسی های MAX-485 و ۷۴hc595 بررسی شود.