آموزش افزایش پورت سریال در آردوینو

آموزش افزایش پورت سریال آردوینو

تمام بردهای آردوینو از یک پورت سریال بر روی پین‌های ۰ و ۱ خود پشتیبانی می‌کنند ( که این پورت اغلب اوقات به پورت usb کامپیوتر متصل  است) . آیا برای شما پیش آمده است که نیاز به یک پورت سریال دیگر داشته باشید ؟ دیجی اسپارک ، مرکز تخصصی آردوینو در این پست به شما آموزش می‌دهد که چگونه می‌توانید از پین‌های‌ دیجیتال به عنوان پورت سریال استفاده کنید. با دیجی اسپارک همراه باشید.

با استفاده از سخت افزاری به نام UART که در دل میکروکنترلرهای AVR تعبیه شده است می‌توان از پورت‌های دیجیتال به عنوان پورت سریال استفاده کرد که این امر کمک می‌کند که با وسایلی که درای پروتکل ارتباطی سریال می‌باشند توسط پین‌های دیجیتال میکرو ارتباط سریال برقرار کنید .پلت فرم آردوینو دارای کتابخانه‌ای به نام SoftwareSerial می‌باشد که کار با سخت‌افزار UART را بسیار آسان کرده و به کمک آن قادر خواهید بود از پین‌های دیجیتال برای برقراری ارتباط سریال استفاده نمایید.

چه الزامی به یادگیری این کتابخانه می‌باشد؟

همانطور که گفته شد برخی از برد‌های آردوینو مانند Arduino Uno , Pro و . . . دارای یک عدد پورت سریال می‌باشند.فرض کنید قصد راه‌اندزای ماژول HC05 ( این ماژول با استفاده از پرونکل سریال کار می‌کند  )  را با آردوینو Uno دارید و علاوه برا آن قصد دارید اطلاعاتی را بر روی سریال مانیتور نرم افزار نمایش دهید. هم اکنون شما نیاز به دو پورت سریال دارید و برای اینکه بتوانید یک ارتباط سریال دیگر داشته باشید باید از کتابخانه SoftwareSerial استفاده کنید.

 

 

محدودیت‌های کتابخانه SoftWareSerial

  • اگر با استفاده از این کتابخانه ، چند پورت سریال نرم افزاری راه اندازی کنید ، در یک زمان خاص فقط از یکی از آن ها می‌توانید دیتا دریافت کنید.
  • تمام پین‌های آردوینو‌های سری مگا از این کتابخانه پشتیبانی نمی‌کند . فقط از پین‌های۰, ۱۱, ۱۲, ۱۳, ۱۴, ۱۵, ۵۰, ۵۱, ۵۲, ۵۳, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69) می‌توان به عنوان Rx استفاده نمود و برای Tx محدودیتی وجود ندارد.
  •  تمام پین‌های  آردوینو Leonardo و Micro از این کتابخانه پشنیبانی نمی‌کند و فقط از پین‌های ۸ , ۹ , ۱۰ , ۱۱ , ۱۴ , ۱۵ ,  ۱۶ می‌توان به عنوان Rx استفاده نمود و برای Tx محدودیتی وجود ندارد.

 

 

توابع

 

برای شروع کار با این کتابخانه ابتدا باید کتابخانه را همانند دستور زیر به نرم ‌افزار معرفی کنید.

 

SoftwareSerial(rxPin, txPin, inverse_logic)

برای کار با این کتابخانه ابتدا باید به ازای هر پورت سریالی که می‌خواهیم راه‌اندازی کنیم ، یک شی از SoftwareSerial بسازیم و سازنده‌های آن را وارد کنیم.

پارامترها :

rxPin : شماره پینی است که می‌خواهیم از آن به عنوان گیرندهاستفاده کنیم.

txPin : شماره پینی است که می‌خواهیم از آن به عنوان فرستنده استفاده کنیم.

inverse_logic : سطح منطق راا هنگام دریافت اطلاعات مشخص می‌‌کند. (الزامی به وارد کردن این آرگمان نمی‌باشد )

تذکر: به هیچ عنوان نباید وسیله‌ای که دارای سطح منطق متفاوت ارتباط سریال می‌باشد به آردوینو متصل نمود.برای آردوینوهایی که در ولتاژ ۵ ولت کار می‌کنند ،سطح منطق ۰ و ۵ ولت می‌باشد و برای آردوینو‌هایی که در ولتاژ ۳٫۳ ولت کار می‌کنند ، سطح منطق ۰ و ۳٫۳ ولت می‌باشد. برای مثال نباید وسیله‌جانبی که سطح ولتاژ پروتکل سریال آن ۰ و ۵ ولت می‌باشد به آردوینویی متصل نمود که سطح ولتاز ارتباط سریال آن ۰ و ۳٫۳ ولت می‌باشد.

در مثال زیر یک ارتباط سریال بر روی پین ۲ و ۳ راه‌اندازی نموده‌ایم :

 

 

begin(speed)

با استفاده از این تابع سرعت انتقال اطلاعات را مشخص می‌کنیم. مقادیر بادریت مجاز عبارت‌اند از: ۳۰۰, ۶۰۰, ۱۲۰۰, ۲۴۰۰, ۴۸۰۰, ۹۶۰۰, ۱۴۴۰۰, ۱۹۲۰۰, ۲۸۸۰۰, ۳۱۲۵۰, ۳۸۴۰۰, ۵۷۶۰۰ و ۱۱۵۲۰۰ .

مثال:

 

 

listen()

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

به عنوان مثال در قطعه کد زیر وقتی برنامه به خط ۲۳ می‌رسد عملیات فعال بودن portOne متوقف می‌شود و portTwo را فعال می‌کند و همچنین در سریال مانیتور نرم افزار هنگام تست کردن برنامه برای portOne پیغام Port One is not listening! و برای portTwo پیغام Port Two is not listening! را نمایش می‌دهد.

 

ولی اگر برنامه زیر را تست کنید برای portOne پیام Port One is listening! و برای portTwo نیز هم پیام Port Two is listening! را بر روی سریال مانیتور نرم افزار نمایش می‌دهد.

 

 

available()

این تابع تعداد بایت‌های دریافتی بر روی پورت سریال ساخته شده را برمی‌گرداند و همچنین اطلاعات دریافت شده را درون بافر گیرنده پورت سریال ذخیره می‌کند.

ساختار کلی تابع به صورت زیر می‌باشد :

 

مثال :

 

read()

این تابع کاراکتر دریافت شده بر روی پورت سریال ساخته شده را می‌خواند و مقدار آن را برمی‌گرداند و در صورت این‌که اطلاعاتی برای خواندن وجود نداشته باشد مقدار ۱- را برمی‌گرداند. شکل استفاده از این تابع به صورت زیر می‌باشد :

 

در قسمت بعدی به آموزش ادامه توابع این کتابخانه می‌پردازیم.

علیرضا قربانی
علیرضا قربانی
علیرضا قربانی هستم دانشجوی مهندسی پزشکی. چیزهای خیلی زیادی رو در دنیا دوست دارم. یک گیک هستم و یشه گفت یک هکر. نه به معنی دزدی پسورد و ایمیل مردم. به معنی عشق به دونستن و عشق به تحقیق درباره خیلی از چیزهایی که می بینم و می‌شنوم. اگر بخوام علاقه‌مندی‌ درجه یکم رو نام ببرم میتونم بگم برنامه نویسی و بعد از اون امبدد سیستم ها.

2 دیدگاه ها

  1. نیما می‌گه:

    سلام یک کتابخانه دیگه هم برای این منظور هست ، ممکنه اونم آموش بدین

  2. […] آموزش افزایش پورت سریال آردوینو بخش اول […]

پاسخ دهید

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