آموزش آردوینو تکنولوژی

آموزش جامع ارتباط سریال UART در بردهای آردوینو – بخش اول

آموزش ارتباط سریال Arduino
نوشته شده توسط علیرضا قربانی

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

 


ارتباط UART چیست


UART به معنای “Universal Asynchronous Receiver/Transmitter” است و یک رابط سریال است که برای انتقال داده ها بین دستگاه ها استفاده می شود. این رابط در میکروکنترلرها، ماژول ها و دستگاه های الکترونیکی دیگری یافت می شود.UART از نوعی ارتباط نامزد به نام “سریال نامزد” (asynchronous) استفاده می کند، به این معنی که اطلاعات به صورت تک تک بیت‌ها ارسال می شوند و بین بیت‌ها اطلاعات اضافی برای هماهنگی (مانند بیت استارت و بیت توقف) ارسال می شوند. این روش انتقال داده به این معنی است که هیچ ساعت مشترکی بین دستگاه فرستنده و گیرنده استفاده نمی شود و دستگاه ها باید برای هماهنگی بیت ها به دقت تنظیم شوند.

UART دارای دو خط اصلی است:

  • Rx (Receiver): خط دریافت که داده های ورودی را به دستگاه گیرنده منتقل می کند.
  • Tx (Transmitter): خط ارسال که داده های خروجی را از دستگاه فرستنده ارسال می کند.

در ارتباط UART، دستگاه فرستنده بیت های داده را به صورت پیوسته ارسال می کند، در حالی که دستگاه گیرنده آنها را می‌خواند. ارتباط UART به طور معمول از نرخ انتقال ثابتی برخوردار است که به عنوان “سرعت بودر” (baud rate) شناخته می شود و نشان دهنده تعداد بیت های داده ارسال شده در یک ثانیه است.ارتباط UART بسیار شایع در دستگاه های الکترونیکی است و برای انتقال داده های ساده و ارتباطات کوتاه مسافت استفاده می شود.

 


روش عملکرد ارتباط UART


ارتباط UART به صورتی کار می‌کند که دستگاه فرستنده و گیرنده به یکدیگر متصل می‌شوند و از طریق خطوط Tx و Rx به ارسال و دریافت داده ها می‌پردازند. فرایند کار ارتباط UART به شرح زیر است:

سرعت بودر (Baud Rate) تنظیم می‌شود: ابتدا، برای انتقال داده‌ها با سرعت خاصی، یک سرعت بودر برای ارتباط UART تنظیم می‌شود. سرعت بودر نشان دهنده تعداد بیت‌هایی است که در هر ثانیه ارسال می‌شوند.

تنظیمات فرستنده و گیرنده: دستگاه فرستنده و گیرنده باید تنظیماتی مشابه برای انتقال داده‌ها را داشته باشند. این تنظیمات شامل طول بیت (مثلاً ۸ بیت)، بیت استارت (یک بیت با مقدار LOW)، بیت توقف (یک یا دو بیت با مقدار HIGH) و جفت/فاصله بین بیت‌ها است.

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

دریافت داده توسط گیرنده: دستگاه گیرنده، بیت‌های دریافت شده را از خط Rx دریافت می‌کند. برای خواندن داده، گیرنده باید هماهنگی با بیت‌ها را در نظر بگیرد و بیت استارت و بیت توقف را تشخیص دهد.

فرستنده و گیرنده به توافق می‌رسند: هر بار که دستگاه فرستنده داده ارسال می‌کند، دستگاه گیرنده باید به درستی بیت‌ها را دریافت کند. برای این منظور، بیت استارت برای شروع بیت‌ها ارسال می‌شود و سپس بیت‌های داده به ترتیب ارسال می‌شوند. در نهایت، یک یا دو بیت توقف برای پایان بیت‌ها ارسال می‌شود.

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

تکرار فرآیند: فرآیند ارسال و دریافت داده به صورت مستمر تکرار می‌شود، تا زمانی که ارتباط UART فعال است یا تا زمانی که دستور متوقف کردن ارتباط ارسال شود.

استفاده از خطوط Tx و Rx جداگانه بین فرستنده و گیرنده به معنای ارتباط نقطه به نقطه است، به این معنی که ارتباط بین دو دستگاه صرفاً مستقیم است. اما در برخی موارد، از روش‌هایی مانند RS-485 استفاده می‌شود که به امکان ارتباط یک-به-چند بین چندین دستگاه اجازه می‌دهد.

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

ارتباطات میکروکنترلر: UART برای ارتباط میکروکنترلر با سایر دستگاه‌ها استفاده می‌شود. این ارتباطات شامل ارسال و دریافت داده‌ها، کنترل سنسورها و اجزای خارجی، ارتباط با نمایشگرها و دیگر دستگاه‌های جانبی است.

اتصال به ماژول‌ها و مدارهای خارجی: در برخی موارد، دستگاه‌ها نیاز به اتصال به ماژول‌ها و مدارهای خارجی مانند ماژول‌های سنسوری، ماژول‌های بلوتوث، ماژول‌های وای‌فای و غیره دارند. UART معمولاً برای ارتباط با این ماژول‌ها استفاده می‌شود.

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

برنامه‌های ارتباطات سریال: UART به عنوان یک رابط سریال استاندارد در برنامه‌های ارتباطات سریال مورد استفاده قرار می‌گیرد. برای انتقال داده‌ها بین دستگاه‌های مختلف مانند رایانه‌ها، مودم‌ها، ماژول‌های GSM و GPS و دیگر دستگاه‌های ارتباطی، از UART استفاده می‌شود.

 

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

 


ارتباط UART در آردوینو


بردهای آردوینو از ارتباط UART به عنوان یکی از روش‌های ارتباطی پشتیبانی می‌کنند. در بردهای آردوینو، ارتباط UART از طریق پین‌های مشخصی برقرار می‌شود.بردهای آردوینو دارای حداقل یک پورت سریال سخت افزاری هستند که به طور پیش فرض به پین‌های مشخصی متصل شده است. به عنوان مثال، بردهای آردوینو UNO یا Nano دارای یک پورت سریال سخت افزاری با نام Serial است که به پین‌های ۰ (Rx) و ۱ (Tx) متصل شده است.برای استفاده از ارتباط UART در بردهای آردوینو، شما می‌توانید از کتابخانه Serial استفاده کنید. با استفاده از این کتابخانه، می‌توانید داده‌ها را از طریق پورت سریال خوانده و به آن ارسال کنید. به طور معمول، میکروکنترلر ATmega328P که در بردهای آردوینو استفاده می‌شود، دارای یک کنترلر UART سخت افزاری است که از آن می‌توانید برای ارتباط استفاده کنید.در کد برنامه آردوینو، می‌توانید از دستورات مانند Serial.begin() برای شروع ارتباط UART و Serial.print() و Serial.read() برای ارسال و دریافت داده استفاده کنید. همچنین، می‌توانید سرعت بودر ارتباط UART را با استفاده از تابع Serial.begin() تنظیم کنید.با استفاده از ارتباط UART در بردهای آردوینو، می‌توانید با دستگاه‌های دیگر مانند سنسورها، ماژول‌ها، نمایشگرها و دستگاه‌های خارجی دیگر ارتباط برقرار کنید و داده‌ها را تبادل کنید.تمام برد های آردوینو دارای حداقل یک عدد  پورت سریال می باشد که  اختصارا به آن ها UART ,USART گفته می‌شود. در آردوینو از پین‌های دیجیتال ۰ و ۱ برای راه اندازی پورت سریال استفاده می‌شود و میتوان به وسیله‌ی درگاه USB بر روی برد ،آردوینو را به کامپیوتر متصل نمود( پین ۰   RX(گیرنده اطلاعات)  و پین ۱   TX (فرستنده اطلاعات )می باشد).هنگامی که از پین های ۰ و ۱ به عنوان پروت سریال استفاده شود ، دیگر نمی‌توان از این پین ها به عنوان ورودی خروجی دیجیتال استفاده نمود. شما می‌توانید از سریال مانیتوری که در محیط نرم افزار آردوینو در نظر گرفته شده است برای انتقال دیتا میان کامپیوتر و آردوینو استفاده کنید.برای باز کردن سریال مانیتور همانند تصویر زیر عمل کنید.

 

 

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

 

پس از باز کردن این پنجره در قسمت boude rate ، مقداری که در هنگام استفاده از تابع begin وراد کرده اید را  در این قسمت وارد کنید( این قسمت به طور کامل در طول آموزش توضیح داده می‌شود). آردوینو Uno فقط دارای یک پورت ارتباط سریال می‌باشد که از پین های ۰ و ۱ برای این منظور استفاده شده است. آردوینو سری MEGA علاوه بر پورت سریالی که بر روی پین های ۰ و ۱ دارد ، دارای سه پورت سریال دیگر به نام‌های Serial1 , Serial2 , Serial3 می‌باشد.اگر شما قصد برقراری ارتباط آردوینو با کامپیوتر به وسیله‌ی این سه پورت ( Serial1 , Serial2 , Serial3) را دارید باید از یک مبدل USB TO Serial استفاده کنید.همچنین می‌توانید برای متصل کردن پورت‌های سریال آردوینو به کابل  DB9 ، مطابق مدار زیر از یک آی‌سی MAX232 استفاده کنید.

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

 

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

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

 


برنامه نویسی UART آردوینو


begin()

begin اولین تابع مورد نیاز برای برقراری ارتباط سریال می‌باشد.توسط این تابع نرخ (سرعت)انتقال دیتا که اصطلاحا به آن باد ریت می‌گویند  میان دستگاه ، ماژول و یا کامپیوتری که قصد برقرای ارتباط با آن را دارید مشخص می‌شود. سرعت های استاندار برای برقراری ارتباط سریال ۳۰۰, ۶۰۰, ۱۲۰۰, ۲۴۰۰, ۴۸۰۰, ۹۶۰۰, ۱۴۴۰۰, ۱۹۲۰۰, ۲۸۸۰۰, ۳۸۴۰۰, ۵۷۶۰۰ و ۱۱۵۲۰۰ می‌باشند.البته توجه داشته باشید که شما میتوانید از اعداد دیگری برای بادریت استفاده کنید ، برای مثال ممکن است با ماژولی کار کنید که آن ماژول دارای بادریت استاندار نباشد  و شما نیز باید از بادریتی که در دیتاشیت ماژل ذکر شده است استفاده کنید.

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

Serial.begin(speed);
Serial.begin(speed, config);

ساختار اول دارای یگ آرگمان ورودی می‌باشد که نرخ انتقال دیتا را مشخص می‌کند و بسیار ساده می‎‌باشد.

در مورد ساختار دوم ، آرگمان اول (speed) بادریت را مشخص می‌کند .

آرگمان دوم (config) مربوط به تنظیمات تعداد بیت داده، بیت توازن  و استاپ بیت (stop bit یا بیت پایانی ) می‌باشد.برای فهم بهتر مطلب به توضیح بیت توزان و stop bit می‌پردازیم:

  • تعداد بیت داده چیست؟

هر وقت بخواهیم دیتایی از سمت فرستنده به گیرنده ارسال کنیم ، دیتای ما به بسته های  ۵ ، ۶ ، ۷ ، ۸ یا ۹ بیتی تقسیم میشود و سپس ارسال اطلاعات صورت می‌گیرد..در بیشتر کاربرد ها از داده ۸ بیتی استفاده می شود . در بیشتر طرح های ارتباط سریال ابتدا بیت کم ارزش ارسال می گردد .

  • استارت بیت(start bit) جیست؟

هنگام ارسال اطلاعات  یک بیت ۰ برای آگاه سازی از ارسال بسته به گیرنده ارسال می‌شود که به آن استارت‌بیت  ( start bit) می‌گویند.

  • stop bit چیست؟

همانطور که در بالا گفته شد برای ارسال دیتا ، دیتا را به بسته های   ۵ ، ۶ ، ۷ ، ۸ یا ۹ بیتی تقسیم بندی میکنیم.  حال برای اینکه گیرنده را آگاه سازیم که بسته‌ی داده‌ی ما به طور کامل ارسال شده است یک یا دو بیت درپایان دیتا ارسال می‌کنیم و گیرنده را از به پایان رسیدن بسته آگاه می‌سازیم.

  • بیت توازن چیست؟

بیتی است که برای نشان دادن زوج یا فرد بودن تعداد بیت هایی که ۱ می باشند به بیت های داده اضافه می شود.در مفهومی بسیار ساده بیت توازن برای مشخص کردن خطای کد و از دست نرفتن داده به کار می‌رود.دو نوع بیت توازن داریم : ۱- توازن زوج ۲- توزان فرد

۱-توزان زوج : به بیانی بسیار ساده ، یعنی به کدمان نگاه میکنیم ، اگر تعداد ۱ ها فرد باشید یک عدد ۱ به کد اضافه میکنیم که تعداد ۱ ها زوج شود.

۲-توازن فرد:  یعنی به کدمان نگاه می‌کنیم، اگر تعداد ۱ ها زوج باشد ، یک عدد ۱ به کد اضافه می‌کنیم که تعداد ۱ ها فرد شود.

***برای مثال فرض کنید کد ما۱۰۰۱۰۱ باشد ، چون تعداد ۱ ها فرد می‌باشد ، یک عدد ۱ به کدمان اضافه می‌کنیم ، کد ۱۰۰۱۰۱۱ حاصل می‌شود.پس با این کار کدی که  ما به سمت گیرنده میفرستیم همیشه تعداد ۱ های آن زوج می‌باشد. حال اگر در طرف گیرنده تعداد ۱ ها فرد باشد ، متوجه می‌شویم که کد دچار خطا شده است.

هم  اکنون به توضیح آرگومان config می‌پردزایم.این آرگمان دارای مقدار پیش فرض SERIAL_8N1  می باشد .به آرگمان config نیز می‌توان مقادیر زیر را نسبت داد:

  • SERIAL_5N1
  • SERIAL_6N1
  • SERIAL_7N1
  • SERIAL_8N1   به صورت پیش فرض از این گزینه استفاده شده است
  • SERIAL_5N2
  • SERIAL_6N2
  • SERIAL_7N2
  • SERIAL_8N2
  • SERIAL_5E1
  • SERIAL_6E1
  • SERIAL_7E1
  • SERIAL_8E1
  • SERIAL_5E2
  • SERIAL_6E2
  • SERIAL_7E2
  • SERIAL_8E2
  • SERIAL_5O1
  • SERIAL_6O1
  • SERIAL_7O1
  • SERIAL_8O1
  • SERIAL_5O2
  • SERIAL_6O2
  • SERIAL_7O2
  • SERIAL_8O2

سوالی که حتما برای شما پیش می آید ، این است که این مقادیر به چه معنا هستند ؟! به عنوان نمونه به توضیح SERIAL_8N1 می‌پردازیم.

در مقدار های نسبت داده شده به config  ؛ O مخفف کلمه odd  به معنای بیت توازن زوج ، E مخفف کلمه ی Even به معنای بیت توزان فرد و N مخفف کلمه None به معنای عدم استفاده از بیت توازن می‌باشد. عدد۱ تعداد stop بیت می‌باشد و عدد ۸ تعداد بیت داده می‌باشد. مثال:فرض می‌کنیم از این کد قطعه کد برای تنظیم کردن پورت  سریال  استفاده کرده ایم و قصد داریم کاراکتر رشته OK را با استفاده از پورت سریال به کامپیوتر منتقل کنیم:

Serial.begin(9600 , SERIAL_8N1 );

 

این کد به این معناست که از بادریت ۹۶۰۰ و از مقدار SERIAL_8N1 به عنوان config   استفاده کرده ایم. به این علت که کاراکتر O و K هر کدام ۸ بیت و همچنین در کانفیگ از  SERIAL_8N1  که به معنای ۸ بیت داده ، بدون بیت توازن  و ۱ عدد stop bit می‌باشد ، باید در ۲ بسته اطلاعات را  ارسال کنیم . هم اکنون به شرح ارسال کاراکتر O می‌پردازیم. کاراکتر O دارای کد اسکی ۷۹  می باشد و در مبنای دو دارای مقدار ۰۱۰۰۱۱۱۱ می‌باشد. بنابراین نقشه ی ارسال کاراکتر O به صورت زیر می‌باشد.

آموزش ارتباط سریال آردوینو

نقشه‌ی ارسال کاراکتر O

 

 

end()

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

Serial.end();

برای راه اندازی مجدد می‌توان از تابع Begin استفاده نمود.

 

print()

این تابع دیتا را به پورت سریال ارسال می‌کند.تابع print دارای فرم های مختلفی می‌باشد.این تابع اعداد صحیح  ، متن ، کاراکتر را به صورت رشته اعداد اعشاری را به صورت رشته  با دو عدد اعشار ارسال می‌کند.به مثال زیر توجه کنید:

Serial.print( 78 );// gives "78"
Serial.print(1.23456);// gives "1.23"
Serial.print('N');// gives "N"
Serial.print("Hello world.");// gives "Hello world."

 

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

Serial.print( val);
Serial.print( val, format);

 

val : دیتایی می باشد که می‌خواهیم آن را به پروت سریال ارسال کنیم

format : فرمت نمایش و تعداد ممیز اعشار نمایش داده را مشخص می‌کند.

 

برای ارسال اطلاعات به فرمت باینری ( مبنای ۲ )  از BIN ، مبنای ۸ از OCT ، مبنای ۱۰ از DEC و مبنای ۱۶ از HEX  استفاده می‌کنیم. توجه شما را به مثال زیر جلب می‌کنم :

Serial.print(78, BIN); // gives "1001110"       مبنای ۲
Serial.print(78, OCT); // gives "116"           مبنای ۸
Serial.print(78, DEC); // gives "78"            مبنای ۱۰
Serial.print(78, HEX); // gives "4E"            مبنای ۱۶

 

همچنین می‌توان تعداد ممیز اعشار را توسط format تعیین نمود.برای این کار کافی است تنها تعداد اعشار مورد نیاز را به جای format قرار دهیم همانند مثال زیر:

Serial.print(1.23456, 0); // gives "1"
Serial.print(1.23456, 2); // gives "1.23"
Serial.print(1.23456, 4); // gives "1.2346"

 

println()

این تابع همانند تابع print عمل می‌کند با این تفاوت که با هر بار ارسال اطلاعات دستور رفتن به خط بعد را نیز اجرا می‌کند. به زبانی ساده تر دو نمونه کد زیر با هم یکسان می‌باشند:

 

Serial.print("");
  Serial.print('n');

 

Serial.println("");

 

available()

به وسیله‌ی این تابع تعداد کاراکتر هایی که آماده خواندن از پورت سریال می‌باشند مشخص می‌شود.همچنین این تابع این امکان را فراهم می‌کند که ۶۴ بایت در بافر دریافت کننده ی پورت سریال خیره شود. این تابع تعداد کاراکتر های موجود در بافر را بر می‌گرداند. ساختار کلی تابع به صورت زیر می‌باشد:

Serial.available();

 

به مثال زیر توجه کنید:

int incomingByte = 0;   // for incoming serial data

void setup() {
        Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
}

void loop() {

        // send data only when you receive data:
        if (Serial.available() > 0) {
                // read the incoming byte:
                incomingByte = Serial.read();

                // say what you got:
                Serial.print("I received: ");
                Serial.println(incomingByte, DEC);
        }
}

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

 

 

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

علیرضا قربانی

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

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

۹۰ دیدگاه

    • آردوینو ابزاری است برای تولید کامپیوترهایی که نسبت به کامپیوتر شخصی شما، مقدار بیشتری از دنیای فیزیکی را احساس و کنترل می کنند. این ابزار، یک پلت فرم محاسباتی فیزیکی open-source است که بر اساس یک برد میکروکنترلر ساده تهیه شده، و نیز یک محیط توسعه برای نوشتن نرم افزار جهت کار با برد می باشد.

      آردوینو می تواند جهت ایجاد اشیای تعاملی، گرفتن ورودی از تعداد زیادی سوییچ و حسگر، و کنترل تنوعی از لامپ ها، موتورها، و سایر خروجی های فیزیکی به کار گرفته شود. پروژه های آردوینو می توانند مستقل باشند، و یا با نرم افزاری که روی کامپیوتر شما در حال اجراست(مثل Flash ، Processing، MaxMSP)، ارتباط برقرار کند. شما می توانید بردها را به طور دستی مونتاژ کنید و یا به صورت از پیش مونتاژ شده، خریداری کنید؛ محیط برنامه نویسی open-source را می توانید به صورت رایگان دانلود کنید.

      زبان برنامه نویسی آردوینو، یک پیاده سازی از Wiring(یک پلت فرم محاسباتی و فیزیکی مشابه) است، که بر اساس محیط برنامه نویسی چندرسانه ای Processing کار می کند.

      پیشنهاد می کنم یک عدد تهیه کنید و شرع به یاد گرفتننش کنین

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

  • سلام تو مثالی که زدین من if رو متوجه نمیشم مخصوصا اونجاش که نوشته ;gt&

    لطفا اگه ممکنه بیشتر تویضح بدین ممنون

  • با سلام
    بسیار تشکر دارم از آموزشهای خوب و کاملی که در سایتتان قرار میدهید
    بنده نیازی دارم در مورد نوع ارتباط با ای سی یو های خودرو توسط اوردینو اطلاعاتی کسب نمایم
    گویا اوردینو میتواند در ارتباط با پروتکلهای خوردوریی برای نمایش کدهای خطا و یا همان دیاگ مورد استفاده قرار گیرد
    منتها میخواستم بدونم برای این کار به چه اطلاعاتی نیازمندیم .
    آیا این پروتکلها مانند OBD , OBD2 , ALDL , I2C , 1Wire , Handshake , جزو زیرمجموعه های پروتکلهای ارتباط سریال می باشند . و توسط تابع های سریال این پروتکلها را میتوان برنامه نویسی کرد ؟
    لطفا در این مورد و نحوه ی راه اندازی این نوع پروتکلها به طور کامل آموزش بگذارید
    البته این مورد در وب سایت و انجمن رسمی اوردینو مورد بحث و حتی به صورت پروژه انجام شده است . اما به دلیل انگلیسی بودن مقداری سخت است . در صورتیکه توسط شما و به فارسی آموزش داده شود راه اندازی این بخش راحت تر انجام میشود
    با تشکر

          • با سلام
            بسیار تشکر دارم از آموزشهای خوب و کاملی که در سایتتان قرار میدهید
            بنده نیازی دارم در مورد نوع ارتباط با ای سی یو های خودرو توسط اوردینو اطلاعاتی کسب نمایم
            گویا اوردینو میتواند در ارتباط با پروتکلهای خوردوریی برای نمایش کدهای خطا و یا همان دیاگ مورد استفاده قرار گیرد
            منتها میخواستم بدونم برای این کار به چه اطلاعاتی نیازمندیم .
            آیا این پروتکلها مانند OBD , OBD2 , ALDL , I2C , 1Wire , Handshake , جزو زیرمجموعه های پروتکلهای ارتباط سریال می باشند . و توسط تابع های سریال این پروتکلها را میتوان برنامه نویسی کرد ؟
            لطفا در این مورد و نحوه ی راه اندازی این نوع پروتکلها به طور کامل آموزش بگذارید
            البته این مورد در وب سایت و انجمن رسمی اوردینو مورد بحث و حتی به صورت پروژه انجام شده است . اما به دلیل انگلیسی بودن مقداری سخت است . در صورتیکه توسط شما و به فارسی آموزش داده شود راه اندازی این بخش راحت تر انجام میشود
            با تشکر

      • سلام
        آقا لطفا ما رو تحویل بگیرید . ممنون میشم بتونید راهنمایی کنید
        من همچنان منتظر راهنمایی شما هستم
        با تشکر

      • سلام آقای مهندس، امکان کنترل فرضا صد تا led با یه دونه برد آردوینو یونو هست؟ ممنون میشم جواب بدین

  • سلام ضمن تشکر فراوان میخواستم بدونم آیا جهت ساخت آبنمای حروف میتوان از مطالب گفته شده شما استفاده کرد؟ آیا نرم افزاری که بتواند حرو را بصورت کد اسکی یا درمبنای ۲ یا هر شکل دیگری به آردوینو بفرستد و تبعا آردوینو نیز به شیربرقی ها فرمان دهد آیا چه نرم افزاری مناسب این کار هست؟

  • سلام به همه دوستان.
    من میخواستم بدونم راهی هست که بردهای آردوینو رو با هم به وسیله usart ارتباط داد ،به طوری که یک برد که به کامپیوتر وصل است به عنوان master باشه و بقیه بردها slave باشند،و برد های slave دارای یک آدرس ۱۰ بیتی باشند که برای master قابل شناسایی باشه،و تعداد slave ها چند تا میتونه باشه ،با تشکر از دوستان

  • سلام
    ببخشید من وقتی وقتی می خواهم برنامه ای روی آردوینو آپلود کنم ارور میدهد در صورتی که کامپایل می شود
    نگاه که کردم د=دیدم در قسمت tools منوی portغیرفعال است
    و هر کار کردم نتوانستم فعالش کنم
    چکار باید بکنم؟

  • سلام
    خسته نباشید و ممنون بابت آموزش خوبتون
    ما روی یه رباتی کار میکینیم که یک قسمت از پردازشش با رسبپری پای انجام میشه و خروجی اون وارده یک آردوینو میشه.میخواستم ببینم به نظر شما بهترین راه برای برقراری ارتباظ بین این دو کروم پروتکله؟
    بازم بابت مطالبه مفیدتون سپاسگذارم.

  • سلام حامد جان من هم روی این موضوع کار میکنم خوشحال میشم با هم تبادل نظر کنم. اگه میشه باهم در تماس باشیم

  • سلام . میشه لطفا برای ارتباط بین آردوینو due و Mega2560 راهنماییم کنید؟
    مسئله من اینجوره که متغیری رو از due به mega میفرستم و بالعکس.
    تغییر سطوح ولتاژ از ۵ به ۳٫۳ رو هم با تقسیم مقاومتی و هم با مبدل سطح منطقی انجام میدم اما نمیدونم مشکل کجاست؟

  • سلام میشه لطف کنی ارتباط بین برد آردوینو با نرم افزار لب ویو رو توضیح بدی یا اگه مرجعی داره که یاد بگیرم برام ایمیلش کنی ممنون مهندس.

  • با سلام
    مهندس قربانی چگونه میشود به خطوط برنامه های اردینو شماره خط داد
    ممنون

    • با سلام
      ضمن تشکر از توجه شما، لطفا دقیق تر بیان کنید که برای چه منظوری میخواهید این کار را انجام دهید، تا توضیحات ارایه شود.

  • با سلام
    ممنون از مطالب مفیدی که میذارین
    من یه کد لازم دارم که یه عدد ۵ رقمی رو بتونم تو سریال مانیتور وارد کنم و روی ال سی دی نمایش بده

    • با سلام ضمن تشکر از توجه شما، همانطور که بارها تاکید شده است هدف ما در دیجى اسپارک به عنوان مرجع تخصصى آردوینو به زبان فارسى، افزایش سطح علمى کاربران با ارایه آموزش و رفع اشکال است. نه اینکه کدها را بدون هیچ تلاشى از طرف شما در اختیارتان قرار دهیم. شما بایستى در این مورد دانش کدنویسى داشته باشید و براى رفع اشکال به دیجى اسپارک مراجعه کنید.

  • سلام و وقت بخیر
    لطفا من را جهت ساخت مبدل ttl به rs232 که هندشیکینگ هم داشته باشد رآنهایی بفرمایید .

  • سلام.آیا روشی هست که بشه به وسیله ی اون باند سریال یک برد رو پیدا کرد؟
    چون اون برد ارتباطش سریال هست ولی هیچ اطلاعاتی ازش ندارم که از چه باندی استفاده میکنه یا…..

    • با سلام و تشکر از شما
      سوال شما خیلی کلی است، به این صورت اگر هم راه حلی باشد، نمیتوان راهنمایی کرد. پیشنهاد میشود نام برد و مدل و… را اعلام بفرمایید. در این صورت اگر روشی وجود داشته باشد، حتما اطلاع رسانی خواهیم کرد.

  • سلام من از اردوینو پرو میکرو استفاده میکنم
    دوتا ماژول دارم که هردو نیاز دارن که به پین های rx و tx متصل بشن
    چطوری اینارو متصل کنم؟در صورتی که یک جفت بیشتر وجود نداره؟
    ماژول ها (df player,Voice Recognition)

    • سلام
      این مورد تست نشده است ولی باید از کتابخانه SoftwareSerial Library و نحوه ی فراخوانی Serial استفاده کنید.

  • سلام
    ممنون از اطلاعات خوبتون
    یه سوال داشتم؟
    میخواستم بپرسم چگونه میشه بین آردوینو و ماژول nodemcu ارتباط برقرار کرد به نحوی که اطلاعات بدست آمده از سنسورهای متصل به آردوینو به روی وای فای رفته و در سریال و وای فای قابل مشاهده باشد؟؟لازم به ذکره که سیستم یک طرفه است و فقط از آردوینو اطلاعات را بخونه و روی وای فای رفته و مشاهده بشه
    به دلیل محدودیت هایی که وجود داره (مثلا تعداد ۴ عدد ورودی آنالوگ در آردوینو) نمیتونم از خود nodemcu بصورت تنها استفاده کنم
    ممنون

  • با سلام من این برنامه و چند برنامه ی دیگر را تست کردم ولی در سریال مانیتور عبارت OK دریافت نمیشود. از طریق ماژول USB به UART دیتاهای ارسالی و دریافتی به ماژول قابل مشاهده است و کاملا صحیح ارسال و دریافت میشود. ولی در نرم افزار آردویینو به داده های دریافتی از ماژول ESP دسترسی ندارم.( نه به عبارت OK دسترسی دارم و نه به دیتایی که از طریق نرم افزار سوکت پروتکل به ماژول میفرستم)
    لطفا راهنمایی کنید

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

  • سلام،من برنامه ای در آردوینو نوشته ام که از یک سنسور دیتا می گیرد،میخواهم بدانم چطور میتوان دیتاها را روی کامپیوتر ثبت کرد، روی سریال مانیتور دیتاها را میبینم ولی میخواهم آنها به صورت یک فایل داشته باشم.

  • باسلام. میخواستم ببینم میشه از طریق آردینو یه سیگنال رو به سیستم فرستاد و در سیستم تبدیل به گراف کرد؟؟ یه داده رو بفرسایم و بعد از نمونه برداری تبدیل به یه گراف بشه!!

  • سلام
    من یه مشکلی دارم ،میخوام برنامه نوشته شده با لبویو رو در برد ارداینو کامپایل کنم و برد بصورت standalone یا امبدد باشه و بمحض اتصال برق به برد،برنامه راه اندازی بشه.در واقع نرم افزار مبدل برنامه لبویو به ارداینو رو میخوام ،کسی میتونه کمکم کنه؟

    • با سلام
      کاربر گرامی این مورد توسط بنده تست نشده است. از دیگر کاربرانی که در این مورد اطلاعاتی دارند، تقاضا میکنم در بحث شرکت کنند.

    • با سلام
      در دستورات پایه سریال مانیتور اشاره ای به این موضوع نشده است. با توجه به اینکه این مورد تا به حال تست نشده است، طبق تجربه دیگر کاربران دستور زیر را به صورت جداگانه تست و بررسی کنید.

      Serial.clear(); //clear the screen

    • با سلام
      در دستورات پایه سریال مانیتور اشاره ای به این موضوع نشده است. با توجه به اینکه این مورد تا به حال تست نشده است، طبق تجربه دیگر کاربران دستور زیر را به صورت جداگانه تست و بررسی کنید.

      Serial.clear(); //clear the screen

  • سلام.آیا میشه از یک پورت سریال دو برنامه به صورت همزمان استفاده کنند ؟ من یک برنامه پایتون نوشتم که مقادیری رو به آردوینو ارسال میکنه و میخوام با Serial Monitor خود ide آردوینو مقادیر رو ببینم ولی برنامه پایتون بهم ارور access is denied میده و از کار میوفته.راهی هست بشه مشکل رو برطرف کرد و همزمان بشه چند برنامه به یک پورت وصل بشن؟

  • سلام.خوشا به حالت …به خدا …من از بچگی عاشق این داستانها بودم..اصلا نمیدونستم ترانزیستور چیه ایسی چیه ولی میرفتم میخریدم ..الانم یه عالمه ایسی ترانزیستور و مقاومت دیود غیره دارم .هیچ وقت نتونستم اموزش درست درمون ببینم ..واقعا بزرگترین لطفی که خدا به بشر میتونه بکنه اینه که تو این زمینه علم بده بهش..میدونی یه دیود ساده مثال بارز چیه یه فرشته ..تعریف فرشته اینه که قدرت سرپیچی از فرمان خدا رو نداره و اگه این کارو کنه نابود میشه…حالا فکن تمام قطعات برد الکترونیکی شامل این تعریف میشن ..مثلا اگه در جهت بایاس که تعین نشده جریان رو عبور بده خب قطعا معیوب میشه ..کسی که الکترونیک رو بلده میتونه فرشته خلق کنه ..کاش میشد ولی دیگه فک نکنم بتونم ۳۸سالم شد و در حصرت ..بازم دمت گرم میای یاد میدی

  • سلام. در ارتباط I2C با یک ماژول چطور میتونم نرخ نمونه برداری رو افزایش بدم؟ در حال حاضر نهایتا ۲۴ داده در هر ثانیه استخراج میشه؟

    • سلام
      برای تنظیم سرعت ارتباط I2C می توانید از تابع SETCLOCK استفاده کنید.

  • سلام مطلبتون عالی بود. می شه لطفا یه مثال کامل(شامل همه ارگومان ها) از کد Serial.begin(speed,config) بزنید؟

  • سلام خسته نباشید. من از دستور
    Serial.print(“Sensor Value= “);
    Serial.println(sensor);
    delay(300);
    به درستی در پروژم استفاده کردم ولی متاسفنه پنجره سریال مانیتور من هیچ سریالی را نمایش نمی دهد.
    به روش های مختلف تست و دوباره سعی کردم. ممنون میشم کمکم کنید

    • با سلام
      به ظاهر کد درست است اما مطمئن شوید که دیتا از variable سنسور Sensor که تعریف کرده اید،دریافت می‌شود.

      • سلام متاسفانه هنوز جواب نمیده
        int sensor;

        void setup() {
        Serial.begin(9600);
        }

        void loop() {
        sensor = analogRead(A0);

        Serial.print(“Sensor Value= “);
        Serial.println(sensor);
        delay(300);
        }

        این کل برنامه من هست.
        برد من Arduino DUE هست و اموزشی که دارم میبینم مربوط به مدل UNO هست.
        که نمیدونم ایا مدل برد در برنامه نویسی تاثییر داره یا ن
        مداری که بستم مدار فتوسل هست و کاملا دقیق و درست بسته شده نمیدونم عیب از کجاست
        آیا باید برنامه خاصی نصب کنم یا اردوینو کتاب خانه ایی نیازداره ؟

        • با سلام
          خیر تفاوتی ندارد. کد برنامه کاملا درست است. سریال مانیتور و سریال پلاتر را هم بررسی کنید.

  • با عرض سلام
    بنده برنامه‌ای برای SIM 800l و gps , نوشته‌ام که با آردوینو یونو کار میکند و بخاطر حجم کم حافظه یونو الان از یک آردوینو مگا استفاده کرده‌ام و مثل برنامه در آردوینو یونو پورت سریال برای سیم ۸۰۰ را پورت ۲ و ۳ معرفی کردم ولی ارتباط برقرار نمیشود ، از ۰ و ۱ آردوینو مگا هم استفاده کرده‌ام ولی برقرار نمیشود میخواستم بپرسم در برنامه باید تغییری ایجاد کنم ؟ لطفاً راهنمایی بفرمایید ؟