در این پست قصد آموزش جامع پروتکل ارتباطی سریال داریم . ارتباط سریال برای ارتباط دو آردوینو با بکدیگر ، آردوینو به کامپیوتر و یا ارتباط آردوینو با سایر دستگاه ها و ماژولها استفاده میشود.در ادامهی آموزش با سایت مرجع آردوینو، دیجی اسپارک همراه باشید.
ارتباط 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 به صورت زیر میباشد.
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 کار می کند.
پیشنهاد می کنم یک عدد تهیه کنید و شرع به یاد گرفتننش کنین
سلام خسته نباشید
برای ارتباط برد اردوینو due با کامپیوتر استفاده از خود پورت usb اصلی که برای برنامه ریزی استفاده میشه از نظر کاهش نویز و سرعت انتقال بهتره یا ارتباط سریال rs232
با سلام
ارتباط USB کامپیوتر مناسب است.
[…] آموزش ارتباط سریال در آردوینو بخش اول […]
[…] سلام البته ک میشه لینک زیر میتونه کمکتو.ن کنه آموزش جامع ارتباط سریال آردوینو -بخش اول – دیجی اسپارک […]
سلام اقای قربانی،واقعا دستت درد نکنه خیلی مطالب اموزنده ایه،اقا من اون مشکل ارتباط اردوینو با لب تابم رو حل کردم،البته با راهنمایی های جنابعالی فقط میخواستم یه لطف دیگه به بنده بکنید و بفرمایید،اگه بنده الان بخوام با گوشی اندروید به یکی یا چندتا از پین هاش خروجی برای مثلا در بازکن بگیرم البته با مازول بلوتوث hc-05 به نظر جنابعالی چه برنامه ایی باید رو اردوینو اپلود کنم.اگه امکان داره برنامش رو برام ایمیل کنید بسیار ممنون میشم.متشکرم.
سلام در پست زیر آموزشش قرار گرفته شده است
http://digispark.ir/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D8%B3%D8%A7%D8%AF%D9%87-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C-%D9%85%D8%A7%DA%98%D9%88%D9%84-%D8%A8%D9%84%D9%88%D8%AA%D9%88%D8%AB-hc-05-%D8%A8%D8%A7/
سلامی دوباره از لینک زیر برنامه را دانلود نمایید
http://www.kelidestan.com/android-sell/android-app-info.php?app_package=wingood.bluetooth.btsimpleterminal
سلام تو مثالی که زدین من if رو متوجه نمیشم مخصوصا اونجاش که نوشته ;gt&
لطفا اگه ممکنه بیشتر تویضح بدین ممنون
سلام به دلیل تداخل در یکی از افزونه های ووردپرس بعضی از کدهای قرار گرفته به صورت خودکار به کدهای html تبدیل شدن
هم اکنون کد اصلاح شد و در سایت قرار گرفت
در رابطه ی اون شرط داخل if هم باید بگم در اون شرط چک می کنیم که هر وقت در بافر سریال دیتایی وجود داشت و تعداد بایت آن بیشتر از صفر بود وارد بلاک شرط شود
تشکر
ممنون از پاسختون
خواهش میکنم
با سلام
بسیار تشکر دارم از آموزشهای خوب و کاملی که در سایتتان قرار میدهید
بنده نیازی دارم در مورد نوع ارتباط با ای سی یو های خودرو توسط اوردینو اطلاعاتی کسب نمایم
گویا اوردینو میتواند در ارتباط با پروتکلهای خوردوریی برای نمایش کدهای خطا و یا همان دیاگ مورد استفاده قرار گیرد
منتها میخواستم بدونم برای این کار به چه اطلاعاتی نیازمندیم .
آیا این پروتکلها مانند OBD , OBD2 , ALDL , I2C , 1Wire , Handshake , جزو زیرمجموعه های پروتکلهای ارتباط سریال می باشند . و توسط تابع های سریال این پروتکلها را میتوان برنامه نویسی کرد ؟
لطفا در این مورد و نحوه ی راه اندازی این نوع پروتکلها به طور کامل آموزش بگذارید
البته این مورد در وب سایت و انجمن رسمی اوردینو مورد بحث و حتی به صورت پروژه انجام شده است . اما به دلیل انگلیسی بودن مقداری سخت است . در صورتیکه توسط شما و به فارسی آموزش داده شود راه اندازی این بخش راحت تر انجام میشود
با تشکر
سلام به زودی به سوال شما پاسخ داده میشه
پیگیری کنید …
سلام به زودی به سوال شما پاسخ داده میشه
پیگیری کنید …
سلام
فرموده بودید به زودی پاسخ میدهید . خواستم پیگیری کنم در این مورد .
با تشکر
سلام
مدتی بود مشکلی پیش اومده بود و نمیتوانستم کامنت ها را بررسی کنم
لطفا مشکلتان را دوباره بفرمایید
با سلام
بسیار تشکر دارم از آموزشهای خوب و کاملی که در سایتتان قرار میدهید
بنده نیازی دارم در مورد نوع ارتباط با ای سی یو های خودرو توسط اوردینو اطلاعاتی کسب نمایم
گویا اوردینو میتواند در ارتباط با پروتکلهای خوردوریی برای نمایش کدهای خطا و یا همان دیاگ مورد استفاده قرار گیرد
منتها میخواستم بدونم برای این کار به چه اطلاعاتی نیازمندیم .
آیا این پروتکلها مانند OBD , OBD2 , ALDL , I2C , 1Wire , Handshake , جزو زیرمجموعه های پروتکلهای ارتباط سریال می باشند . و توسط تابع های سریال این پروتکلها را میتوان برنامه نویسی کرد ؟
لطفا در این مورد و نحوه ی راه اندازی این نوع پروتکلها به طور کامل آموزش بگذارید
البته این مورد در وب سایت و انجمن رسمی اوردینو مورد بحث و حتی به صورت پروژه انجام شده است . اما به دلیل انگلیسی بودن مقداری سخت است . در صورتیکه توسط شما و به فارسی آموزش داده شود راه اندازی این بخش راحت تر انجام میشود
با تشکر
سلام
به غیر از i2C که خودش یه پروتکل به حساب میاد بقیه موراد جز پروتکل سریال هستند و لی با سطح منطق های ولتاژ های متفاوت که برای کار کردن با آن ها و اتصالشون به آردوینو باید از IC ها و ماژول های مبدل استفاده کنید
مثل:
https://learn.sparkfun.com/tutorials/obd-ii-uart-hookup-guide
http://wbo2.com/~techedge.com.au/vehicle/aldl8192/8192hw.htm
سلام
آقا لطفا ما رو تحویل بگیرید . ممنون میشم بتونید راهنمایی کنید
من همچنان منتظر راهنمایی شما هستم
با تشکر
سلام آقای مهندس، امکان کنترل فرضا صد تا led با یه دونه برد آردوینو یونو هست؟ ممنون میشم جواب بدین
با سلام
در این خصوص نیاز به شیفت رجیستر خواهید داشت.
[…] پروتکل ارتباطی سریال (UART) […]
[…] پروتکل ارتباطی سریال (UART) […]
[…] پروتکل ارتباطی سریال (UART) […]
[…] پروتکل ارتباطی سریال (UART) […]
عالیست سپاس از مطالب آموزنده شما موفق باشید بزرگوار
سلام خواهش میکنم
موفق باشید
سلام ضمن تشکر فراوان میخواستم بدونم آیا جهت ساخت آبنمای حروف میتوان از مطالب گفته شده شما استفاده کرد؟ آیا نرم افزاری که بتواند حرو را بصورت کد اسکی یا درمبنای ۲ یا هر شکل دیگری به آردوینو بفرستد و تبعا آردوینو نیز به شیربرقی ها فرمان دهد آیا چه نرم افزاری مناسب این کار هست؟
سلام منظورتون این هست که حروف دلخواه شما به صورت آب تولید شود؟
همانند لینک زیر؟
http://www.gadgetonics.com/2013/02/water-printing-fountain-in-osaka-japan.html#axzz43jT57v8k
توضیحات بی نظیر بود خیلی ممنون واقعا عالی بود
توضیحات بی نظیر بود خیلی ممنون واقعا عالی بود
توضیحات بی نظیر بود خیلی ممنون واقعا عالی بود
خواهش میکنم امیدوارم مفید واقع شده باشه
سلام به همه دوستان.
من میخواستم بدونم راهی هست که بردهای آردوینو رو با هم به وسیله usart ارتباط داد ،به طوری که یک برد که به کامپیوتر وصل است به عنوان master باشه و بقیه بردها slave باشند،و برد های slave دارای یک آدرس ۱۰ بیتی باشند که برای master قابل شناسایی باشه،و تعداد slave ها چند تا میتونه باشه ،با تشکر از دوستان
سلام
ببخشید من وقتی وقتی می خواهم برنامه ای روی آردوینو آپلود کنم ارور میدهد در صورتی که کامپایل می شود
نگاه که کردم د=دیدم در قسمت tools منوی portغیرفعال است
و هر کار کردم نتوانستم فعالش کنم
چکار باید بکنم؟
درود
درایور بورد آردوینو شما نصب نیست
سلام
خسته نباشید و ممنون بابت آموزش خوبتون
ما روی یه رباتی کار میکینیم که یک قسمت از پردازشش با رسبپری پای انجام میشه و خروجی اون وارده یک آردوینو میشه.میخواستم ببینم به نظر شما بهترین راه برای برقراری ارتباظ بین این دو کروم پروتکله؟
بازم بابت مطالبه مفیدتون سپاسگذارم.
درود
به نظر بنده ارتباط سریال در این موضوع هم ساده تره و هم مناسب تر
سلام حامد جان من هم روی این موضوع کار میکنم خوشحال میشم با هم تبادل نظر کنم.
سلام حامد جان من هم روی این موضوع کار میکنم خوشحال میشم با هم تبادل نظر کنم. اگه میشه باهم در تماس باشیم
سلام . میشه لطفا برای ارتباط بین آردوینو due و Mega2560 راهنماییم کنید؟
مسئله من اینجوره که متغیری رو از due به mega میفرستم و بالعکس.
تغییر سطوح ولتاژ از ۵ به ۳٫۳ رو هم با تقسیم مقاومتی و هم با مبدل سطح منطقی انجام میدم اما نمیدونم مشکل کجاست؟
سلام میشه لطف کنی ارتباط بین برد آردوینو با نرم افزار لب ویو رو توضیح بدی یا اگه مرجعی داره که یاد بگیرم برام ایمیلش کنی ممنون مهندس.
با سلام
مهندس قربانی چگونه میشود به خطوط برنامه های اردینو شماره خط داد
ممنون
با سلام
ضمن تشکر از توجه شما، لطفا دقیق تر بیان کنید که برای چه منظوری میخواهید این کار را انجام دهید، تا توضیحات ارایه شود.
با سلام
ممنون از مطالب مفیدی که میذارین
من یه کد لازم دارم که یه عدد ۵ رقمی رو بتونم تو سریال مانیتور وارد کنم و روی ال سی دی نمایش بده
با سلام ضمن تشکر از توجه شما، همانطور که بارها تاکید شده است هدف ما در دیجى اسپارک به عنوان مرجع تخصصى آردوینو به زبان فارسى، افزایش سطح علمى کاربران با ارایه آموزش و رفع اشکال است. نه اینکه کدها را بدون هیچ تلاشى از طرف شما در اختیارتان قرار دهیم. شما بایستى در این مورد دانش کدنویسى داشته باشید و براى رفع اشکال به دیجى اسپارک مراجعه کنید.
سلام و وقت بخیر
لطفا من را جهت ساخت مبدل ttl به rs232 که هندشیکینگ هم داشته باشد رآنهایی بفرمایید .
با سلام
ضمن تشکر از توجه شما، این موضوع از مبحث آموزش خارج است همچنین برای این کار نیازی به ساختن نیست، مبدل TTL به RS232 در بازار موجود است.
سلام.آیا روشی هست که بشه به وسیله ی اون باند سریال یک برد رو پیدا کرد؟
چون اون برد ارتباطش سریال هست ولی هیچ اطلاعاتی ازش ندارم که از چه باندی استفاده میکنه یا…..
با سلام و تشکر از شما
سوال شما خیلی کلی است، به این صورت اگر هم راه حلی باشد، نمیتوان راهنمایی کرد. پیشنهاد میشود نام برد و مدل و… را اعلام بفرمایید. در این صورت اگر روشی وجود داشته باشد، حتما اطلاع رسانی خواهیم کرد.
سلام من از اردوینو پرو میکرو استفاده میکنم
دوتا ماژول دارم که هردو نیاز دارن که به پین های rx و tx متصل بشن
چطوری اینارو متصل کنم؟در صورتی که یک جفت بیشتر وجود نداره؟
ماژول ها (df player,Voice Recognition)
سلام
این مورد تست نشده است ولی باید از کتابخانه SoftwareSerial Library و نحوه ی فراخوانی Serial استفاده کنید.
سلام
ممنون از اطلاعات خوبتون
یه سوال داشتم؟
میخواستم بپرسم چگونه میشه بین آردوینو و ماژول nodemcu ارتباط برقرار کرد به نحوی که اطلاعات بدست آمده از سنسورهای متصل به آردوینو به روی وای فای رفته و در سریال و وای فای قابل مشاهده باشد؟؟لازم به ذکره که سیستم یک طرفه است و فقط از آردوینو اطلاعات را بخونه و روی وای فای رفته و مشاهده بشه
به دلیل محدودیت هایی که وجود داره (مثلا تعداد ۴ عدد ورودی آنالوگ در آردوینو) نمیتونم از خود nodemcu بصورت تنها استفاده کنم
ممنون
با سلام
در این خصوص نیازی به استفاده از برد Nodemcu نمیباشد. پیشنهاد میشود از ماژول ESP8266 استفاده بفرمایید. جهت اطلاعات بیشتر به آموزش esp8266 ماژول وای فای – at command -1 مراجعه کنید.
با سلام من این برنامه و چند برنامه ی دیگر را تست کردم ولی در سریال مانیتور عبارت OK دریافت نمیشود. از طریق ماژول USB به UART دیتاهای ارسالی و دریافتی به ماژول قابل مشاهده است و کاملا صحیح ارسال و دریافت میشود. ولی در نرم افزار آردویینو به داده های دریافتی از ماژول ESP دسترسی ندارم.( نه به عبارت OK دسترسی دارم و نه به دیتایی که از طریق نرم افزار سوکت پروتکل به ماژول میفرستم)
لطفا راهنمایی کنید
من تست کردم از سریال مانیتور فقط میشه عدد و خروجی داد
باسلام و تشکر معنی buffer[8] , buffer[i],….. چیست ؟ و کلا این [] به چه معنی است؟
سلام
بافر در واقع همان حافطه بافر است که برای ذخیره سازی اطلاعات استفاده میشود و بی ارتباط با این آموزش است.
سلام،من برنامه ای در آردوینو نوشته ام که از یک سنسور دیتا می گیرد،میخواهم بدانم چطور میتوان دیتاها را روی کامپیوتر ثبت کرد، روی سریال مانیتور دیتاها را میبینم ولی میخواهم آنها به صورت یک فایل داشته باشم.
با سلام
برای این منظور بایستی کدهای دیتالاگر را به پروژهتان اضافه کنید.
دست شما درد نکنه
واقعا عالی بود ۳>
با سلام
از توجه و نظر شما ممنونم.
سلام عالی جناب مهندس
لطفا در خصوص ارتباط سریال ۲ اردینو به من کمک کنید.
با سلام و تشکر از توجه شما
در این خصوص به آموزش روش ایجاد دو سریال مانتیور مجزا در نرم افزار آردوینو Arduino IDE مراجعه کنید. سپس سوالاتتان را از طریق ادامه همان آموزش مطرح بفرمایید.
باسلام. میخواستم ببینم میشه از طریق آردینو یه سیگنال رو به سیستم فرستاد و در سیستم تبدیل به گراف کرد؟؟ یه داده رو بفرسایم و بعد از نمونه برداری تبدیل به یه گراف بشه!!
با سلام
بله این کار امکان پذیر است. ولی بایست با ترکیب نرم افزار پروسسینگ و آردوینو این کار را انجام دهید.
سلام من نخواستم با استفاده از ترمینال یا سریال به اردینو پیام بدم sent کنم می توانم serial. Write استفاده کنم
با سلام
متوجه سوال شما نشدم. لطفا دقیقتر توضیح دهید.
سلام
من یه مشکلی دارم ،میخوام برنامه نوشته شده با لبویو رو در برد ارداینو کامپایل کنم و برد بصورت standalone یا امبدد باشه و بمحض اتصال برق به برد،برنامه راه اندازی بشه.در واقع نرم افزار مبدل برنامه لبویو به ارداینو رو میخوام ،کسی میتونه کمکم کنه؟
با سلام
کاربر گرامی این مورد توسط بنده تست نشده است. از دیگر کاربرانی که در این مورد اطلاعاتی دارند، تقاضا میکنم در بحث شرکت کنند.
نمیشه خروجی رو پاک کرد؟
با سلام
منظور شما از خروجی چیست؟
سلام
آیا دستوری هست برای پایک کردن سریال مانیتور ؟؟؟
ممنون میشم جواب بدید.
با سلام
در دستورات پایه سریال مانیتور اشاره ای به این موضوع نشده است. با توجه به اینکه این مورد تا به حال تست نشده است، طبق تجربه دیگر کاربران دستور زیر را به صورت جداگانه تست و بررسی کنید.
Serial.clear(); //clear the screen
سلام
دستوری برای پاک کردن صفحه ی سریال وجود دارد ؟
با سلام
در دستورات پایه سریال مانیتور اشاره ای به این موضوع نشده است. با توجه به اینکه این مورد تا به حال تست نشده است، طبق تجربه دیگر کاربران دستور زیر را به صورت جداگانه تست و بررسی کنید.
Serial.clear(); //clear the screen
سلام.آیا میشه از یک پورت سریال دو برنامه به صورت همزمان استفاده کنند ؟ من یک برنامه پایتون نوشتم که مقادیری رو به آردوینو ارسال میکنه و میخوام با Serial Monitor خود ide آردوینو مقادیر رو ببینم ولی برنامه پایتون بهم ارور access is denied میده و از کار میوفته.راهی هست بشه مشکل رو برطرف کرد و همزمان بشه چند برنامه به یک پورت وصل بشن؟
با سلام
از آموزش زیر استفاده کنید.
روش ایجاد دو سریال مانتیور مجزا در نرم افزار آردوینو Arduino IDE
سلام
چطور میشه با همین ارتباط یه موتور رو با متلب راه اندازی کرد و سرعت رو از یه پایه خوند؟
با سلام
با ارتباط سریال از آردوینو به سیستم متصل میشود. در نرم افزار متلب کافیست مقادیر را از روی سریال مانیتور بخوانید و اقدامات بعدی را روی آن انجام دهید.
سلام.خوشا به حالت …به خدا …من از بچگی عاشق این داستانها بودم..اصلا نمیدونستم ترانزیستور چیه ایسی چیه ولی میرفتم میخریدم ..الانم یه عالمه ایسی ترانزیستور و مقاومت دیود غیره دارم .هیچ وقت نتونستم اموزش درست درمون ببینم ..واقعا بزرگترین لطفی که خدا به بشر میتونه بکنه اینه که تو این زمینه علم بده بهش..میدونی یه دیود ساده مثال بارز چیه یه فرشته ..تعریف فرشته اینه که قدرت سرپیچی از فرمان خدا رو نداره و اگه این کارو کنه نابود میشه…حالا فکن تمام قطعات برد الکترونیکی شامل این تعریف میشن ..مثلا اگه در جهت بایاس که تعین نشده جریان رو عبور بده خب قطعا معیوب میشه ..کسی که الکترونیک رو بلده میتونه فرشته خلق کنه ..کاش میشد ولی دیگه فک نکنم بتونم ۳۸سالم شد و در حصرت ..بازم دمت گرم میای یاد میدی
سپاس از همراهی شما کاربر گرامی
سلام. در ارتباط I2C با یک ماژول چطور میتونم نرخ نمونه برداری رو افزایش بدم؟ در حال حاضر نهایتا ۲۴ داده در هر ثانیه استخراج میشه؟
سلام
برای تنظیم سرعت ارتباط I2C می توانید از تابع SETCLOCK استفاده کنید.
سلام مطلبتون عالی بود. می شه لطفا یه مثال کامل(شامل همه ارگومان ها) از کد Serial.begin(speed,config) بزنید؟
با سلام
برای این منظور به آموزش زیر مراجعه کنید.
آموزش آردوینو بخش چهاردهم – ارتباط communication در آردوینو
سلام خسته نباشید. من از دستور
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 , نوشتهام که با آردوینو یونو کار میکند و بخاطر حجم کم حافظه یونو الان از یک آردوینو مگا استفاده کردهام و مثل برنامه در آردوینو یونو پورت سریال برای سیم ۸۰۰ را پورت ۲ و ۳ معرفی کردم ولی ارتباط برقرار نمیشود ، از ۰ و ۱ آردوینو مگا هم استفاده کردهام ولی برقرار نمیشود میخواستم بپرسم در برنامه باید تغییری ایجاد کنم ؟ لطفاً راهنمایی بفرمایید ؟
با سلام
پایه های سریال در برد آردوینو مگا ۲۵۶۰ متفاوت هستند و ۳ ارتباط سریال سخت افزاری دارد. از همان ها استفاده کنید.