Arduino UNO R3
برد Arduino Uno یک برد میکروکنترلری مبتنی بر ATmega328P است. این برد دارای ۱۴ پایه ورودی/خروجی دیجیتال است که ۶ عدد از آنها میتوانند به عنوان خروجی PWM استفاده شوند. همچنین شامل ۶ ورودی آنالوگ، یک رزوناتور سرامیکی ۱۶ مگاهرتزی (CSTCE16M0V53‑R0)، اتصال USB، جک تغذیه، هدر ICSP و یک دکمه Reset است.
این برد تمام اجزای لازم برای کار با میکروکنترلر را در خود دارد؛ کافی است آن را با یک کابل USB به کامپیوتر متصل کنید یا با یک آداپتور AC به DC یا باتری تغذیه کنید تا کار را شروع کنید. میتوانید با Uno آزادانه آزمایش و کار کنید بدون اینکه خیلی نگران خراب کردن چیزی باشید؛ در بدترین حالت میتوانید چیپ میکروکنترلر را با هزینهای کم تعویض کنید و دوباره از ابتدا شروع کنید.
تصاویر
Section titled “تصاویر”


فایل ها
Section titled “فایل ها”مشخصات فنی
Section titled “مشخصات فنی”| مشخصه | مقدار |
|---|---|
| میکروکنترلر | ATmega328P |
| ولتاژ کاری | 5V |
| ولتاژ ورودی پیشنهادی | 7 تا 12 ولت |
| محدوده ولتاژ ورودی | 6 تا 20 ولت |
| پایههای دیجیتال | 14 عدد (6 عدد با قابلیت PWM) |
| پایههای PWM | 6 عدد |
| ورودیهای آنالوگ | 6 عدد |
| جریان هر پایه I/O | 20 میلیآمپر |
| جریان خروجی پایه 3.3V | 50 میلیآمپر |
| حافظه Flash | 32KB (که 0.5KB آن توسط Bootloader استفاده میشود) |
| SRAM | 2KB |
| EEPROM | 1KB |
| فرکانس کاری | 16MHz |
| LED داخلی | پایه 13 |
| طول برد | 68.6 میلیمتر |
| عرض برد | 53.4 میلیمتر |
| وزن | 25 گرم |
راهنمای برنامهنویسی
Section titled “راهنمای برنامهنویسی”Arduino Uno را میتوان با Arduino Software (IDE) برنامهنویسی کرد. برای این کار از منوی Tools > Board گزینه Arduino/Genuino Uno را انتخاب کنید (متناسب با میکروکنترلر روی برد).
میکروکنترلر ATmega328 روی Arduino Uno به صورت پیشفرض دارای یک Bootloader است که امکان آپلود برنامه جدید را بدون نیاز به پروگرامر سختافزاری خارجی فراهم میکند. این ارتباط از طریق پروتکل STK500 انجام میشود.
همچنین میتوانید Bootloader را دور بزنید و میکروکنترلر را مستقیماً از طریق هدر ICSP (In‑Circuit Serial Programming) با استفاده از Arduino ISP یا پروگرامرهای مشابه برنامهریزی کنید.
تفاوت با سایر بردها
Section titled “تفاوت با سایر بردها”برد Uno با بردهای قبلی آردوینو تفاوت دارد زیرا از چیپ FTDI USB‑to‑Serial استفاده نمیکند. در عوض از ATmega16U2 (یا ATmega8U2 در نسخههای قبل از R3) استفاده میکند که به عنوان مبدل USB به Serial برنامهریزی شده است.
برد Arduino Uno میتواند از طریق اتصال USB یا یک منبع تغذیه خارجی تغذیه شود. انتخاب منبع تغذیه به صورت خودکار انجام میشود.
تغذیه خارجی (غیر از USB) میتواند از طریق یک آداپتور AC به DC یا باتری تأمین شود. آداپتور با یک فیش 2.1mm با قطب مثبت در مرکزT به جک تغذیه برد متصل میشود. همچنین میتوان سیمهای باتری را به پایههای GND و Vin در کانکتور POWER متصل کرد.
برد میتواند با ولتاژ 6V تا 20V کار کند. با این حال اگر ولتاژ کمتر از 7V باشد، ممکن است پایه 5V کمتر از 5V خروجی بدهد و برد ناپایدار شود. اگر ولتاژ بیش از 12V باشد، رگولاتور ولتاژ ممکن است بیش از حد گرم شود و به برد آسیب برسد. محدوده پیشنهادی 7V تا 12V است.
پایههای تغذیه شامل موارد زیر هستند:
-
Vin: ولتاژ ورودی برد زمانی که از منبع تغذیه خارجی استفاده میشود (به جای
5Vاز USB یا منبع تنظیمشده دیگر). میتوان ولتاژ را مستقیماً از این پایه وارد کرد یا در صورت استفاده از جک تغذیه، از طریق همین پایه به آن دسترسی داشت. -
5V: این پایه خروجی
5Vتنظیمشده از رگولاتور روی برد است. برد میتواند از طریق جک تغذیهDC(7‑12V)، اتصال USB (5V) یا پایهVIN(7‑12V) تغذیه شود. اعمال ولتاژ مستقیم به پایههای5Vیا3.3Vباعث دور زدن رگولاتور میشود و ممکن است به برد آسیب بزند؛ بنابراین توصیه نمیشود. -
3V3: خروجی
3.3Vکه توسط رگولاتور روی برد تولید میشود. حداکثر جریان قابل دریافت50mAاست. -
GND: پایههای زمین.
-
IOREF: این پایه ولتاژ مرجع کاری میکروکنترلر را فراهم میکند. یک شیلد که به درستی طراحی شده باشد میتواند ولتاژ این پایه را خوانده و منبع تغذیه مناسب را انتخاب کند یا مبدل سطح ولتاژ را فعال کند تا با
5Vیا3.3Vکار کند.
میکروکنترلر ATmega328 دارای 32 کیلوبایت حافظه Flash است که 0.5KB آن توسط Bootloader استفاده میشود. همچنین دارای 2KB SRAM و 1KB EEPROM است که میتوان با استفاده از کتابخانه EEPROM آن را خواند و نوشت.
ورودی و خروجی
Section titled “ورودی و خروجی”نگاشت پایههای آردوینو به پورتهای ATmega328P مشخص شده است. این نگاشت برای میکروکنترلرهای ATmega8، ATmega168 و ATmega328 یکسان است.
هر یک از 14 پایه دیجیتال در Uno میتواند به عنوان ورودی یا خروجی استفاده شود با توابع
pinMode()، digitalWrite() و digitalRead().
این پایهها با 5V کار میکنند. هر پایه میتواند در شرایط کاری توصیهشده 20mA جریان بدهد یا دریافت کند و دارای یک مقاومت pull‑up داخلی 20 تا 50 کیلو اهم است که به صورت پیشفرض غیرفعال است. حداکثر جریان 40mA برای هر پایه است و عبور از این مقدار ممکن است به میکروکنترلر آسیب دائمی وارد کند.
علاوه بر این، برخی پایهها عملکردهای خاصی دارند:
-
Serial: پایههای
0 (RX)و1 (TX)برای دریافت و ارسال داده سریال TTL استفاده میشوند. این پایهها به چیپUSB‑to‑TTL Serialمتصل هستند. -
External Interrupts: پایههای
2و3میتوانند برای ایجاد وقفه خارجی تنظیم شوند (سطح LOW، لبه بالا رونده، لبه پایین رونده یا تغییر مقدار). -
PWM: پایههای
3،5،6،9،10و11خروجی PWM هشتبیتی از طریق تابعanalogWrite()ارائه میدهند. -
SPI: پایههای
10 (SS)،11 (MOSI)،12 (MISO)،13 (SCK)برای ارتباطSPIاستفاده میشوند. -
LED: پایه
13به یک LED داخلی متصل است. وقتی مقدار پایه HIGH باشد LED روشن میشود و وقتی LOW باشد خاموش میشود. -
TWI: پایههای
A4 (SDA)وA5 (SCL)برای ارتباطI2C/TWIاستفاده میشوند. برد Uno دارای 6 ورودی آنالوگ با نامهایA0تاA5است که هر کدام رزولوشن 10 بیتی دارند (یعنی 1024 مقدار مختلف). به صورت پیشفرض این ورودیها ولتاژ بین0Vتا5Vرا اندازه میگیرند، اما میتوان با استفاده از پایهAREFو تابعanalogReference()محدوده بالای آن را تغییر داد. -
AREF: ولتاژ مرجع برای ورودیهای آنالوگ که همراه با
analogReference()استفاده میشود. -
Reset: با قرار دادن این خط در حالت LOW میکروکنترلر ریست میشود. معمولاً برای اضافه کردن دکمه ریست روی شیلدهایی که دکمه اصلی برد را میپوشانند استفاده میشود.
ارتباطات
Section titled “ارتباطات”برد Arduino/Genuino Uno روشهای مختلفی برای ارتباط با کامپیوتر، برد آردوینوی دیگر یا میکروکنترلرهای دیگر دارد. میکروکنترلر ATmega328 ارتباط سریال UART TTL (5V) را فراهم میکند که در پایههای 0 (RX) و 1 (TX) در دسترس است. یک ATmega16U2 روی برد این ارتباط سریال را از طریق USB منتقل میکند و در کامپیوتر به صورت یک Virtual COM Port دیده میشود. Firmware مربوط به 16U2 از درایورهای استاندارد USB COM استفاده میکند و نیاز به درایور خارجی ندارد، اما در ویندوز به یک فایل .inf نیاز است.
نرمافزار Arduino IDE دارای Serial Monitor است که امکان ارسال و دریافت داده متنی ساده بین کامپیوتر و برد را فراهم میکند. LED های RX و TX روی برد هنگام انتقال داده از طریق USB چشمک میزنند (اما برای ارتباط سریال مستقیم روی پایههای 0 و 1 این LEDها فعال نمیشوند).
کتابخانه SoftwareSerial امکان ایجاد ارتباط سریال روی هر یک از پایههای دیجیتال Uno را فراهم میکند.
میکروکنترلر ATmega328 همچنین از ارتباطهای I2C (TWI) و SPI پشتیبانی میکند. نرمافزار Arduino IDE شامل کتابخانه Wire برای سادهتر کردن استفاده از I2C و کتابخانه SPI برای ارتباط SPI است.
ریست خودکار (Software Reset)
Section titled “ریست خودکار (Software Reset)”برد Arduino Uno طوری طراحی شده است که به جای فشار دادن دستی دکمه Reset قبل از آپلود برنامه، بتوان آن را از طریق نرمافزار روی کامپیوتر ریست کرد. یکی از خطوط کنترل سختافزاری (DTR) در چیپ ATmega8U2/16U2 از طریق یک خازن 100 نانوفاراد به خط Reset در ATmega328 متصل شده است. وقتی این خط فعال شود (LOW شود)، خط Reset برای مدت کوتاهی پایین میآید و چیپ ریست میشود.
نرمافزار Arduino IDE از این قابلیت استفاده میکند تا تنها با فشار دادن دکمه Upload برنامه را روی برد بارگذاری کند. این باعث میشود Bootloader زمان انتظار کوتاهتری داشته باشد زیرا کاهش سیگنال DTR دقیقاً با شروع آپلود هماهنگ میشود.
این ساختار پیامدهای دیگری هم دارد. وقتی Uno به کامپیوتری با Mac OS X یا Linux متصل شود، هر بار که یک اتصال نرمافزاری جدید از طریق USB برقرار شود برد ریست میشود. برای حدود نیم ثانیه Bootloader فعال است و ممکن است اولین چند بایت داده ارسالشده را دریافت کند.
برد Uno دارای یک مسیر (trace) است که میتوان آن را قطع کرد تا auto‑reset غیرفعال شود. دو پد در دو طرف این مسیر وجود دارد که با لحیم کردن آنها میتوان دوباره این قابلیت را فعال کرد. این قسمت با برچسب RESET‑EN مشخص شده است. همچنین میتوان با اتصال یک مقاومت 110 اهم بین 5V و خط Reset قابلیت auto‑reset را غیرفعال کرد.
نسخه های UNO
Section titled “نسخه های UNO”نسخه Revision 3 برد دارای ویژگیهای جدید زیر است:
-
Pinout نسخه 1.0: اضافه شدن پایههای
SDAوSCLدر نزدیکی پایهAREFو دو پایه جدید در کنارRESETشاملIOREFکه به شیلدها اجازه میدهد ولتاژ کاری برد را تشخیص دهند. در آینده شیلدها با بردهایAVRبا ولتاژ5Vو همچنینArduino Dueبا ولتاژ3.3Vسازگار خواهند بود. پایه دوم در حال حاضر متصل نیست و برای کاربردهای آینده رزرو شده است. -
مدار RESET قویتر: جایگزینی
ATmega16U2به جایATmega8U2.