آموزش آردوینو

معرفی برد آردوینو Uno R4 Minima (بررسی تخصصی)

Arduino UNO R4 Minima یک جهش اساسی برای جامعه سازندگان و توسعه‌دهندگان محسوب می‌شود. این برد نشان‌دهنده گذار قطعی از معماری قدیمی 8-bit AVR (میکروکنترلر ATmega328P مورد استفاده در Arduino UNO R3) به یک اکوسیستم مدرن و بسیار قدرتمند 32-bit مبتنی بر Arm® Cortex®-M است.

با ادغام میکروکنترلر قدرتمند Renesas RA4M1 و در عین حال حفظ فرم فاکتور آشنای برد UNO، مدل UNO R4 Minima افزایش چشمگیری در سرعت پردازش، حافظه و قابلیت‌ها ارائه می‌دهد. این برد ویژگی‌های پیشرفته‌ای مانند گذرگاه Controller Area Network (CAN)، تقویت‌کننده عملیاتی داخلی (OPAMP) و مبدل دیجیتال به آنالوگ (DAC) با وضوح بالا را معرفی می‌کند؛ در حالی که همچنان با کتابخانه گسترده شیلدها و لوازم جانبی موجود سازگار باقی مانده است.

با این حال، این توانمندی جدید با قواعد تازه‌ای همراه است. تغییرات قابل توجهی در معماری تغذیه اعمال شده است، به‌ویژه در رابطه با ریل تغذیه 3.3V و محدودیت‌های جریان GPIO. اگر در حال مهاجرت از Arduino UNO R3 قدیمی و قابل اعتماد هستید، لازم است به نقشه پایه‌ها (pinout) توجه ویژه‌ای داشته باشید تا پروژه‌های شما بدون آسیب به برد جدید، به‌صورت ایمن منتقل شوند.

پین های آردوینو UNO R4 Minima

برد UNO R4 Minima در مجموع دارای 32 پایه است. چینش پایه‌ها به صورت زیر است:

پین های آردوینو UNO R4 Minima 

اکنون بیایید نگاهی دقیق‌تر به پایه‌های Arduino و عملکرد آن‌ها داشته باشیم، ابتدا از پایه‌های دیجیتال شروع می‌کنیم.

پین های دیجیتال I/O

برد UNO R4 Minima شامل 14 پایه دیجیتال ورودی/خروجی است که با D0 تا D13 برچسب‌گذاری شده‌اند.

پین های دیجیتال I/O 

شما می‌توانید این پایه‌ها را به‌صورت ورودی یا خروجی پیکربندی کنید. زمانی که یک پایه به‌عنوان ورودی تنظیم شود، می‌تواند سیگنال‌های دیجیتال را بخواند؛ برای مثال تشخیص دهد که آیا یک دکمه فشرده شده است یا خیر. هنگامی که یک پایه به‌عنوان خروجی تنظیم شود، می‌تواند سیگنال‌های دیجیتال برای کنترل دستگاه‌هایی مانند LED، موتور یا رله ارسال کند.

برای استفاده از یک پایه دیجیتال، ابتدا باید با استفاده از تابع pinMode() مشخص کنید که آن پایه چگونه عمل کند. اگر قصد دارید پایه‌ای را به‌عنوان ورودی تنظیم کنید، از دستور pinMode(pin, INPUT) استفاده می‌شود و سپس می‌توانید وضعیت آن را با تابع digitalRead(pin) بخوانید. اگر می‌خواهید پایه را به‌عنوان خروجی تنظیم کنید، از pinMode(pin, OUTPUT) استفاده می‌شود. پس از آن می‌توانید با نوشتن digitalWrite(pin, HIGH) آن را فعال کرده یا با digitalWrite(pin, LOW) آن را غیرفعال کنید.

در هنگام استفاده از پایه‌های دیجیتال ورودی/خروجی، باید به چند محدودیت الکتریکی مهم توجه داشته باشید. این پایه‌ها در سطح منطقی 5V کار می‌کنند. هر پایه دیجیتال می‌تواند حداکثر 8 mA جریان را به‌صورت ایمن تحمل کند و مجموع جریان تمامی پایه‌های دیجیتال نباید از 60 mA تجاوز کند.

این موضوع تفاوت مهمی نسبت به میکروکنترلر ATmega328P مورد استفاده در UNO R3 دارد، جایی که هر پایه معمولاً می‌توانست بین 20 تا 40 mA جریان را تحمل کند. اگر در حال مهاجرت از UNO R3 هستید، باید مراقب باشید که بارهای با جریان بالا (مانند اپتوکوپلرهای با مقاومت کم یا چندین LED) را بدون استفاده از مقاومت‌های محدودکننده جریان یا ترانزیستورهای درایور به‌طور مستقیم متصل نکنید. در صورت تجاوز از محدودیت 8 mA، ممکن است درایورهای خروجی داخلی میکروکنترلر به‌طور دائمی آسیب ببینند.

پین های دارای مقاومت پول آپ داخلی

هر پایه دیجیتال در UNO R4 Minima دارای یک مقاومت Pull-up داخلی است. این ویژگی زمانی بسیار کاربردی است که پایه به‌عنوان ورودی استفاده می‌شود و هیچ قطعه‌ای به آن متصل نیست. بدون مقاومت Pull-up، یک پایه ورودی ممکن است در وضعیت شناور (Floating) قرار گیرد، به این معنا که به دلیل نویز الکتریکی محیط، به‌صورت تصادفی بین حالت HIGH و LOW تغییر وضعیت دهد. این امر می‌تواند نتایج غیرقابل پیش‌بینی و گمراه‌کننده ایجاد کند.

مقاومت Pull-up داخلی این مشکل را با کشیدن ملایم ولتاژ پایه به سطح HIGH در زمانی که سیگنال دیگری وجود ندارد، برطرف می‌کند. این کار باعث می‌شود مقدار خوانده‌شده از ورودی پایدار و قابل اعتماد باقی بماند. هنگامی که یک دکمه یا کلید متصل می‌شود، با فشردن آن می‌توان پایه را به سطح LOW کشید و Arduino تغییر وضعیت را به‌وضوح تشخیص خواهد داد.

برای فعال‌سازی مقاومت Pull-up داخلی، به‌جای pinMode(pin, INPUT) باید از دستور pinMode(pin, INPUT_PULLUP) استفاده کنید.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

توجه داشته باشید که مقدار این مقاومت Pull-up داخلی ثابت نیست، اما معمولاً در حدود 20 kΩ است.

پین  های وقفه

پایه‌های وقفه (Interrupt) نوعی پایه دیجیتال ورودی ویژه هستند که می‌توانند در صورت وقوع یک رویداد خارجی—مانند تغییر سطح ولتاژ از HIGH به LOW یا بالعکس—یک بخش مشخص از کد (روال سرویس وقفه یا ISR) را اجرا کنند. این قابلیت به Arduino اجازه می‌دهد بدون نیاز به بررسی مداوم وضعیت پایه در حلقه اصلی برنامه، به‌صورت آنی به رویدادها واکنش نشان دهد.

برد UNO R4 Minima دارای دو پایه وقفه خارجی اصلی است که روی پایه‌های 2 و 3 قرار دارند:

پین  های وقفه

برد UNO R4 Minima از 4 حالت تحریک مختلف پشتیبانی می‌کند که مشخص می‌کنند ISR چه زمانی اجرا شود، همان‌طور که در جدول زیر نشان داده شده است:

حالت شرط فعال شدن کاربرد
RISING تغییر پایه از LOW به HIGH تشخیص فشردن دکمه (pull-down)
FALLING تغییر پایه از HIGH به LOW تشخیص فشردن دکمه (pull-up)
CHANGE تغییر وضعیت پایه در هر دو جهت خواندن انکودر، شمارش پالس
LOW باقی ماندن پایه در سطح LOW رویدادهای مبتنی بر سطح

برای راه‌اندازی یک وقفه، Arduino از تابع attachInterrupt(interrupt, ISR, mode) استفاده می‌کند. در این تابع، پارامتر interrupt مشخص می‌کند کدام وقفه استفاده شود؛ به‌طوری‌که interrupt 0 متناظر با پایه دیجیتال 2 و interrupt 1 متناظر با پایه دیجیتال 3 است. پارامتر ISR نام تابعی است که هنگام وقوع وقفه اجرا می‌شود. پارامتر mode نیز نحوه تحریک وقفه را تعیین می‌کند، مانند RISING، FALLING، CHANGE یا LOW.

همچنین لازم است بدانید که UNO R4 Minima از یک میکروکنترلر مدرن مبتنی بر Cortex-M4 استفاده می‌کند که دارای سیستمی به نام Nested Vector Interrupt Controller یا NVIC است. این سیستم بسیار پیشرفته‌تر بوده و امکان تعریف وقفه روی تقریباً تمامی پایه‌های دیجیتال و آنالوگ را فراهم می‌کند. با این حال، برای حفظ سادگی و سازگاری با بردهای کلاسیک UNO، محیط نرم‌افزاری Arduino عمدتاً بر پایه‌های D2 و D3 برای وقفه‌های خارجی تمرکز دارد.

پایه های PWM

پایه‌های PWM (مدولاسیون عرض پالس) در UNO R4 Minima پایه‌های دیجیتالی هستند که می‌توانند خروجی شبه‌آنالوگ تولید کنند. این کار با سوئیچ کردن بسیار سریع پایه بین حالت HIGH و LOW انجام می‌شود؛ به‌گونه‌ای که در عمل، ولتاژی میان این دو سطح به نظر می‌رسد. مفهوم اصلی در PWM، چرخه وظیفه (Duty Cycle) است که درصد زمانی را نشان می‌دهد که سیگنال در یک سیکل کامل در وضعیت HIGH قرار دارد. با تغییر چرخه وظیفه می‌توان ولتاژ متوسط اعمال‌شده به یک قطعه متصل را کنترل کرد و در نتیجه شدت روشنایی LED، سرعت موتور یا حتی تولید تن‌های صوتی ساده را تنظیم نمود.

برد UNO R4 Minima دارای 6 پایه با قابلیت PWM است: D3، D5، D6، D9، D10 و D11. این پایه‌ها روی برد با نماد تیلدا (~) در کنار شماره پایه مشخص شده‌اند.

پایه های PWM

برای تولید سیگنال PWM، ابتدا باید پایه موردنظر را در بخش setup() برنامه با استفاده از تابع pinMode(pin, OUTPUT) به‌عنوان خروجی تنظیم کنید. سپس با استفاده از تابع analogWrite مقدار PWM را تعیین نمایید. در این تابع، پارامتر pin شماره پایه PWM و پارامتر value چرخه وظیفه را مشخص می‌کند.

به‌صورت پیش‌فرض، رزولوشن PWM در UNO R4 Minima برابر با 8 بیت تنظیم شده است. این بدان معناست که مقادیر PWM در بازه 0 تا 255 قرار دارند. این تنظیم پیش‌فرض تضمین می‌کند که کدهای نوشته‌شده برای بردهای قدیمی‌تر Arduino بدون نیاز به تغییر اجرا شوند.

با این حال، UNO R4 Minima قابلیت‌های بیشتری ارائه می‌دهد و امکان افزایش رزولوشن PWM را فراهم می‌کند. با استفاده از تابع analogWriteResolution() می‌توانید رزولوشن را تا 12 بیت افزایش دهید که مقادیر 0 تا 4096 را در اختیار قرار می‌دهد و کنترل دقیق‌تری بر خروجی ایجاد می‌کند.

پایه های آنالوگ به دیجیتال ADC

پایه‌های ورودی آنالوگ در UNO R4 Minima برای خواندن سیگنال‌های آنالوگ پیوسته استفاده می‌شوند. این سیگنال‌ها معمولاً از سنسورهایی می‌آیند که کمیت‌های فیزیکی مانند دما، شدت نور، صدا یا فشار را اندازه‌گیری می‌کنند. برخلاف سیگنال‌های دیجیتال که فقط HIGH یا LOW هستند، سیگنال‌های آنالوگ می‌توانند سطوح ولتاژ متعددی داشته باشند. برای تفسیر این سیگنال‌ها، Arduino از یک مبدل آنالوگ به دیجیتال داخلی (ADC) استفاده می‌کند که ولتاژ آنالوگ را به یک عدد دیجیتال قابل استفاده در برنامه تبدیل می‌کند.

برد UNO R4 Minima دارای 6 پایه ورودی آنالوگ با برچسب A0 تا A5 است.

پایه های آنالوگ به دیجیتال ADC

برای خواندن مقدار آنالوگ از یک پایه، از تابع analogRead(pin) استفاده می‌شود. این تابع یک مقدار عدد صحیح بازمی‌گرداند که نمایانگر ولتاژ موجود روی پایه انتخاب‌شده است.

به‌صورت پیش‌فرض، ADC در UNO R4 Minima با رزولوشن 10 بیت تنظیم شده است تا سازگاری با نسخه‌های قبلی حفظ شود. در رزولوشن 10 بیت، مقدار خروجی در بازه 0 تا 1023 قرار دارد. این بدان معناست که بازه ولتاژ 0 تا 5 V به 1024 گام مساوی تقسیم می‌شود و Arduino می‌تواند تغییرات ولتاژ تا حدود 4.9 mV را تشخیص دهد.

با این حال، R4 Minima نسبت به نسل‌های پیشین بسیار قدرتمندتر است. می‌توانید رزولوشن را تا 12 بیت یا حتی 14 بیت افزایش دهید که امکان تشخیص تغییرات بسیار کوچک‌تر ولتاژ را فراهم می‌کند. در رزولوشن 14 بیت و بازه 5 V، اندازه هر گام ولتاژ تقریباً 0.3 mV خواهد بود. برای تغییر رزولوشن ADC، از تابع analogReadResolution() در بخش setup() برنامه استفاده می‌شود.

همچنین توجه داشته باشید که در صورت کمبود پایه‌های دیجیتال استاندارد، پایه‌های A0 تا A5 می‌توانند به‌عنوان پایه‌های دیجیتال ورودی/خروجی نیز استفاده شوند.

تغییر ولتاژ رفرنس ADC

به‌طور پیش‌فرض، UNO R4 Minima ولتاژهای آنالوگ را در بازه مرجع 0 تا 5V (منبع تغذیه 5V برد) اندازه‌گیری می‌کند. این ولتاژ مرجع تعیین می‌کند که ADC حداکثر چه ولتاژی را می‌تواند اندازه‌گیری کند. در برخی کاربردها—برای مثال زمانی که از سنسوری با سطح ولتاژ پایین‌تر مانند 3.3V استفاده می‌کنید—ممکن است بخواهید ولتاژهای پایین‌تر را با دقت بیشتری اندازه‌گیری کنید.

برای این منظور می‌توانید با استفاده از پایه AREF و تابع analogReference(type) ولتاژ مرجع آنالوگ را تغییر دهید.

پین دیجیتال به آنالوگ DAC

برد UNO R4 Minima دارای یک مبدل دیجیتال به آنالوگ داخلی (DAC) است. یک DAC عملکردی معکوس ADC دارد؛ به‌جای خواندن ولتاژ آنالوگ و تبدیل آن به عدد دیجیتال، یک مقدار دیجیتال را دریافت کرده و آن را به یک ولتاژ آنالوگ پیوسته تبدیل می‌کند. این قابلیت یک ارتقای قابل‌توجه برای UNO R4 Minima محسوب می‌شود و آن را برای پروژه‌های صوتی مانند تولید موج سینوسی صاف، کنترل نوسان‌سازهای کنترل‌شونده با ولتاژ (VCO) در سینتی‌سایزرها یا ایجاد ولتاژ مرجع متغیر بسیار مناسب می‌سازد.

در UNO R4 Minima، DAC روی پایه آنالوگ A0 در دسترس است.

پین های دیجیتال به آنالوگ DAC

برای استفاده از DAC، از همان تابع analogWrite(pin, value) که برای تولید سیگنال PWM استفاده می‌شود، بهره می‌برید.

به‌صورت پیش‌فرض، پایه DAC با رزولوشن 8 بیت کار می‌کند، به این معنا که مقادیر قابل‌قبول بین 0 تا 255 هستند. برای مثال، نوشتن مقدار 0 ولتاژی نزدیک به 0 V تولید می‌کند، در حالی که مقدار 255 ولتاژی نزدیک به 5 V خروجی خواهد داد. مقدار حدود 127 که تقریباً در میانه بازه قرار دارد، ولتاژی در حدود 2.5 V روی پایه A0 ایجاد می‌کند.

در برخی کاربردها، به‌ویژه پروژه‌های صوتی، رزولوشن 8 بیت ممکن است خروجی به‌اندازه کافی صاف ارائه نکند. در چنین شرایطی، UNO R4 Minima امکان افزایش رزولوشن DAC تا 12 بیت را فراهم می‌کند. در رزولوشن 12 بیت، مقادیر بین 0 تا 4095 خواهند بود و کنترل بسیار دقیق‌تری روی ولتاژ خروجی فراهم می‌شود.

analogWriteResolution(12);

توجه داشته باشید که اگر از A0 به‌عنوان خروجی DAC استفاده می‌کنید، نمی‌توانید هم‌زمان از آن به‌عنوان ورودی آنالوگ برای خواندن سنسورها بهره ببرید.

پین های آپ امپ

یکی از قدرتمندترین ویژگی‌های جدید R4 Minima، وجود یک تقویت‌کننده عملیاتی (Op-Amp) داخلی است. داشتن Op-Amp داخلی نیاز به استفاده از آی‌سی‌های خارجی برای کاربردهایی مانند بافر کردن سیگنال‌ها، تقویت داده‌های ضعیف سنسورها، فیلتر کردن نویز یا انجام بسیاری از پردازش‌های آنالوگ دیگر را کاهش می‌دهد.

اگرچه میکروکنترلر Renesas RA4M1 مورد استفاده در UNO R4 Minima در مجموع دارای 4 تقویت‌کننده عملیاتی داخلی است، اما برد تنها یکی از آن‌ها را از طریق هدر آنالوگ در اختیار کاربر قرار می‌دهد. به‌طور مشخص، پایه A1 به‌عنوان ورودی غیرمعکوس (Non-Inverting)، پایه A2 به‌عنوان ورودی معکوس (Inverting) و پایه A3 به‌عنوان خروجی Op-Amp استفاده می‌شود.

پین های آپ امپ

برای استفاده از Op-Amp در UNO R4 Minima، باید کتابخانه OPAMP.h را در برنامه خود فراخوانی کرده و سپس با استفاده از تابع OPAMP.begin(speed) آن را مقداردهی اولیه کنید. پارامتر اختیاری speed به شما اجازه می‌دهد بین حالت‌های عملکردی مختلف انتخاب کنید. می‌توانید OPAMP_SPEED_LOWSPEED را برای مصرف توان کمتر یا OPAMP_SPEED_HIGHSPEED را برای عملکرد سریع‌تر با مصرف توان بالاتر انتخاب نمایید.

کاربرد های آپ امپ

یکی از ساده‌ترین روش‌های استفاده از Op-Amp، پیکربندی آن به‌عنوان دنبال‌کننده ولتاژ (Voltage Follower) یا بافر است؛ به این صورت که پایه A2 (ورودی منفی) را مستقیماً به پایه A3 (خروجی) متصل می‌کنید. در این پیکربندی، هر ولتاژی که به A1 (ورودی مثبت) اعمال شود، بدون تغییر دامنه اما با توان درایو جریان بیشتر در خروجی A3 ظاهر می‌شود.

همچنین می‌توانید از آن به‌عنوان تقویت‌کننده ولتاژ برای افزایش دامنه سیگنال‌های بسیار کوچک استفاده کنید. برای این کار، یک مقاومت 10k بین A2 و زمین و یک مقاومت 10k دیگر بین A3 و A2 متصل می‌شود. در این پیکربندی، هر سیگنالی که به A1 اعمال شود، با دامنه‌ای دو برابر در A3 ظاهر خواهد شد. با این حال، هنگام تقویت سیگنال‌ها باید احتیاط کنید. ولتاژ خروجی نباید از حدود 4.7V تجاوز کند. در صورت افزایش بیش از این مقدار، سیگنال دچار کلیپینگ می‌شود و در شرایط شدید ممکن است به برد آسیب وارد شود.

علاوه بر این، می‌توانید از Op-Amp به‌عنوان مقایسه‌گر (Comparator) برای مقایسه دو ولتاژ ورودی و تولید خروجی دیجیتال HIGH یا LOW استفاده کنید، یا آن را در مدارهای پیشرفته‌تر مانند مدارهای انتگرال‌گیر و مشتق‌گیر به کار ببرید.

بدیهی است که این مثال‌ها تنها بخشی از قابلیت‌هایی هستند که با Op-Amp داخلی در اختیار شما قرار می‌گیرد.

پین های I2C

برد UNO R4 Minima از پروتکل I2C (Inter-Integrated Circuit) پشتیبانی می‌کند. I2C یک روش ارتباط سریال متداول است که به Arduino اجازه می‌دهد تنها با استفاده از دو سیم به نام‌های SDA و SCL با سنسورها و دستگاه‌های مختلف ارتباط برقرار کند. در UNO R4 Minima، پایه SDA به A4 و پایه SCL به A5 متصل است. علاوه بر این، پایه‌های SDA و SCL روی پین‌های اختصاصی نزدیک به پایه AREF نیز در دسترس هستند.

پین های I2C

برای استفاده از ارتباط I2C در برنامه Arduino، ابتدا باید کتابخانه Wire را در ابتدای کد فراخوانی کنید. سپس در تابع setup() سیستم I2C را مقداردهی اولیه نمایید. پس از فعال‌سازی I2C، می‌توانید داده را به دستگاه متصل ارسال کنید. هر دستگاه I2C دارای یک آدرس اختصاصی است که Arduino برای تشخیص مقصد ارتباط از آن استفاده می‌کند.

پین های SPI

برد UNO R4 Minima از رابط SPI (Serial Peripheral Interface) نیز پشتیبانی می‌کند. SPI یک پروتکل ارتباط سریال دیگر است که معمولاً نسبت به I2C سرعت بالاتری دارد. در SPI برای ارسال داده، دریافت داده و همگام‌سازی انتقال از طریق سیگنال کلاک، از پایه‌های مجزا استفاده می‌شود.

پین های SPI

نکته: برد UNO R4 Minima از نام‌گذاری مدرن Controller/Peripheral برای پایه‌های SPI استفاده می‌کند، به‌جای اصطلاحات قدیمی Master/Slave، هرچند عملکرد آن‌ها کاملاً مشابه است.

در UNO R4 Minima، پایه 11 با عنوان COPI (Controller Out, Peripheral In) مشخص شده است که در گذشته با نام MOSI شناخته می‌شد. این پایه برای ارسال داده از Arduino به دستگاه دیگر استفاده می‌شود. پایه 12 با عنوان CIPO (Controller In, Peripheral Out) که قبلاً MISO نام داشت، برای ارسال داده از دستگاه جانبی به Arduino به کار می‌رود. پایه 13 نقش SCK (Serial Clock) را دارد و وظیفه همگام‌سازی انتقال داده را بر عهده دارد. پایه 10 معمولاً به‌عنوان CS (Chip Select) استفاده می‌شود. این پایه مشخص می‌کند که Arduino قصد ارتباط با کدام دستگاه SPI را دارد، موضوعی که هنگام اتصال هم‌زمان چندین دستگاه SPI اهمیت ویژه‌ای پیدا می‌کند.

علاوه بر پایه‌های استاندارد SPI، برد UNO R4 Minima دارای هدر ICSP (In-Circuit Serial Programming) نیز هست که دسترسی به همان سیگنال‌های SPI را فراهم می‌کند. برای ارتباط SPI می‌توانید از پایه‌های دیجیتال استاندارد یا از هدر ICSP استفاده کنید.

پین های ارتباط سریال UART

برد UNO R4 Minima نسبت به نسل قبلی خود ارتقای مهمی دارد: این برد دارای 2 رابط سخت‌افزاری UART مجزا است.

یک رابط از طریق درگاه USB-C در دسترس است و رابط دیگر از طریق پایه‌های RX/TX ارائه می‌شود.

پین های ارتباط سریال UART

در برد قدیمی UNO R3، درگاه USB و پایه‌های دیجیتال 0 و 1 به یک رابط سریال مشترک متصل بودند. این موضوع باعث می‌شد نتوانید هم‌زمان از Serial Monitor روی رایانه و یک ماژول خارجی (مانند GPS یا گیرنده Bluetooth) بدون ایجاد تداخل استفاده کنید.

در R4 Minima این مشکل با تفکیک کامل برطرف شده است. درگاه USB-C به یک رابط سریال متصل است که در کد با نام Serial شناخته می‌شود، در حالی که پایه‌های 0 (RX) و 1 (TX) به رابط مستقل دیگری متصل هستند که با نام Serial1 در کد استفاده می‌شود. این طراحی امکان دیباگ برنامه روی رایانه و ارتباط هم‌زمان با یک دستگاه خارجی را فراهم می‌کند.

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

پروتکل ارتباطی CAN

برد UNO R4 Minima از ارتباط CAN (Controller Area Network) نیز پشتیبانی می‌کند. CAN یک پروتکل ارتباطی قابل اعتماد و مقاوم در برابر نویز است که در ابتدا توسط شرکت Bosch برای استفاده در خودروها توسعه یافت، اما امروزه در بسیاری از سیستم‌های صنعتی و اتوماسیون کاربرد گسترده دارد. یکی از مزایای اصلی CAN این است که دستگاه‌ها می‌توانند بدون نیاز به رایانه مرکزی، مستقیماً روی یک شبکه مشترک با یکدیگر ارتباط برقرار کنند.

برد UNO R4 Minima دارای یک کنترلر داخلی CAN است که از استانداردهای CAN 2.0A و CAN 2.0B پشتیبانی می‌کند. سیگنال‌های CAN روی پایه دیجیتال D4 برای CAN TX (ارسال) و پایه دیجیتال D5 برای CAN RX (دریافت) در دسترس هستند.

پروتکل ارتباطی CAN

نکته بسیار مهم این است که UNO R4 Minima تنها شامل کنترلر CAN است و فاقد ترنسیور CAN می‌باشد. کنترلر منطق داده را مدیریت می‌کند، اما سیگنال‌های الکتریکی موردنیاز گذرگاه CAN را تولید نمی‌کند. برای اتصال Arduino به سایر دستگاه‌های CAN، باید از یک ماژول ترنسیور CAN خارجی (مانند MCP2551 یا TJA1050) استفاده کنید. این ترنسیورها سیگنال‌های منطقی 5V Arduino را به سیگنال‌های تفاضلی CAN-H و CAN-L موردنیاز شبکه CAN تبدیل می‌کنند.

پین های هدر ICSP

اگر قبلاً با Arduino UNO R3 کار کرده‌اید، بلافاصله هدر 6 پایه‌ای ICSP (In-Circuit Serial Programming) را خواهید شناخت. با این حال، عملکرد آن در R4 Minima کاملاً تغییر کرده است.

پین های هدر ICSP 

در UNO R3، هدر ICSP معمولاً برای دو هدف اصلی استفاده می‌شد: فلش کردن بوت‌لودر با استفاده از برنامه‌نویس خارجی (مانند AVR ISP یا یک Arduino دیگر به‌عنوان ISP) و ارتباط با دستگاه‌های SPI.

در UNO R4 Minima، هدر ICSP دیگر برای فلش کردن بوت‌لودر استفاده نمی‌شود، زیرا این برد از یک میکروکنترلر کاملاً متفاوت، Renesas RA4M1، استفاده می‌کند که برنامه‌نویسی از طریق SPI را پشتیبانی نمی‌کند. طبق دفترچه راهنمای سخت‌افزار Renesas RA4M1، این میکروکنترلر دو روش اصلی برای برنامه‌نویسی حافظه فلش خود دارد: SCI Boot Mode از طریق رابط UART و USB Boot Mode از طریق رابط USB داخلی. بنابراین روش سنتی ISP از طریق SPI پشتیبانی نمی‌شود.

به همین دلیل، هدر ICSP در UNO R4 Minima بیشتر برای سازگاری با شیلدها و سخت‌افزارهای مبتنی بر SPI نگه داشته شده است. برای برنامه‌نویسی سطح پایین یا بازیابی برد، هدر اختصاصی SWD/JTAG در دسترس است.

پین های SWD / JTAG

هدر 10 پایه‌ای SWD / JTAG معادل مدرن هدر ICSP برای چیپ‌های مبتنی بر ARM است. این هدر برای برنامه‌نویسی عمیق، بازیابی برد آسیب‌دیده یا دیباگ حرفه‌ای استفاده می‌شود.

پین های SWD / JTAG

با اتصال یک دیباگر سخت‌افزاری خارجی مانند Segger J-Link، ST-Link V3 یا دستگاه سازگار با DAPLink، می‌توانید:

  • دیباگ گام‌به‌گام: برخلاف روش سنتی استفاده از Serial.print() برای حدس زدن عملکرد کد، این پورت اجازه می‌دهد اجرای کد را متوقف کرده، مقدار هر متغیر را در زمان واقعی مشاهده کنید، حافظه را بررسی کنید و نقاط توقف (breakpoints) تعیین کنید تا کد دقیقاً در جایی که خطا وجود دارد متوقف شود.
  • بازیابی برد: اگر بوت‌لودر به‌طور جدی آسیب دیده و پورت USB برد را شناسایی نمی‌کند، این پورت به‌طور کامل رابط استاندارد را دور می‌زند. این تنها راه برای فلش کردن بوت‌لودر مستقیماً روی چیپ و بازگرداندن برد به حالت عملیاتی است.

پین های تغذیه

برد UNO R4 Minima چندین پایه قدرت دارد که برای تغذیه خود برد و همچنین تأمین انرژی برای سنسورها، ماژول‌ها و دیگر قطعات خارجی استفاده می‌شوند.

پین های تغذیه

برای درک جریان برق در برد، نمودار ساده‌ای از درخت قدرت ارائه شده است:

جریان برق در برد Arduino Uno R4 Minima

VIN: این پایه اجازه می‌دهد Arduino را با منبع تغذیه خارجی، مانند آداپتور دیواری یا پک باتری، تغذیه کنید. محدوده ولتاژ ورودی برای VIN معمولاً 6V تا 24V است. ولتاژ وارد شده به این پایه توسط مبدل DC-DC کاهنده ISL854102FRZ به 5V پایدار تنظیم می‌شود تا میکروکنترلر و دیگر بخش‌های برد تغذیه شوند. پایه Vin همچنین به جک DC متصل است، بنابراین تغذیه از طریق جک نیز روی این پایه در دسترس است.

5V: این پایه خروجی 5V تنظیم شده ارائه می‌دهد که می‌توان از آن برای تغذیه سنسورها، ماژول‌ها و شیلدهای خارجی استفاده کرد. میزان جریان در دسترس به منبع تغذیه برد بستگی دارد:

  • در صورت تغذیه از VIN یا جک دیواری، مبدل کاهنده فعال است و پایه 5V می‌تواند تا حدود 1.2 آمپر جریان فراهم کند.
  • در صورت تغذیه از طریق USB-C، مبدل کاهنده دور زده می‌شود و جریان قابل دسترس بسته به منبع USB می‌تواند تا حدود 2 آمپر باشد.

توجه: هنگام تغذیه برد از USB، ولتاژ پایه 5V کمی کمتر و معمولاً حدود 4.7V است، به‌دلیل افت ولتاژ روی دیود محافظ شاتکی.

3.3V: خروجی 3.3V تنظیم شده دارد، اما هشدار مهمی دارد. بر خلاف UNO R3 که دارای رگولاتور اختصاصی 3.3V بود، در R4 Minima این ولتاژ مستقیماً توسط میکروکنترلر Renesas RA4M1 تولید می‌شود و جریان محدودی دارد، معمولاً بین 50mA تا 100mA. این پایه فقط برای ولتاژ مرجع یا سنسورهای کم‌مصرف استفاده می‌شود و نباید دستگاه‌های 3.3V پرمصرف مانند نمایشگرهای OLED/TFT بزرگ، ماژول‌های Wi-Fi یا رادیوهای LoRa را مستقیماً تغذیه کند. در صورت نیاز به جریان بالاتر، باید از رگولاتور خارجی استفاده شود.

پین های خاص

علاوه بر پایه‌های دیجیتال، آنالوگ و ارتباطی استاندارد، UNO R4 Minima دارای چندین پایه با عملکرد ویژه است.

پین های خاص

  • D13: اگر تا به حال اسکچ Blink را اجرا کرده‌اید، با این پایه آشنا هستید. D13 به LED داخلی متصل است. وقتی پایه HIGH شود، LED روشن و وقتی LOW شود، خاموش می‌شود. توجه داشته باشید که در صورت استفاده از D13 به‌عنوان ورودی/خروجی دیجیتال معمولی، LED داخلی نیز با سیگنال‌های شما چشمک خواهد زد.
  • IOREF: ولتاژ مرجع ورودی/خروجی را فراهم می‌کند و به شیلدها می‌گوید برد با چه ولتاژی کار می‌کند. در R4 Minima، این پایه 5V ارائه می‌دهد. توجه کنید که IOREF یک سیگنال مرجع است و منبع تغذیه نیست. از آن برای تغذیه قطعات خارجی استفاده نکنید.
  • RESET: دکمه ریست سخت‌افزاری است. فعال LOW است، یعنی اتصال آن به زمین میکروکنترلر را ریست می‌کند. یک مقاومت pull-up داخلی این پایه را HIGH نگه می‌دارد تا برد به‌طور عادی کار کند.
  • BOOT: حالت راه‌اندازی میکروکنترلر Renesas RA4M1 را کنترل می‌کند. در حالت عادی، وقتی HIGH یا شناور باشد، برد در حالت “Single-chip mode” بوت می‌شود و اسکچ یا بوت‌لودر استاندارد اجرا می‌شود. اگر در هنگام روشن شدن LOW شود، برد به حالت “ROM Bootloader mode” می‌رود و امکان بازیابی برد آسیب‌دیده فراهم می‌شود.
3.3 (3 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

2 نظر

  1. ممنون از شما خیلی کامل و مفهومی این برد مدرن تر رو تشریح کردید و مقایسه خوبی بین این برد و برد قدیمی UNO R3 داشتید

    1. سلام عزیز
      خوشحالیم که برای شما مفید بوده

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

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