رفتن به محتوا

Arduino UNO R3 SMD

Arduino Uno Rev3 SMD یک برد میکروکنترلری مبتنی بر ATmega328 است. این برد دارای 14 پایه ورودی/خروجی دیجیتال است که 6 عدد از آن‌ها می‌توانند به عنوان خروجی PWM استفاده شوند. همچنین شامل 6 ورودی آنالوگ، یک رزوناتور سرامیکی 16 مگاهرتزی (CSTCE16M0V53-R0)، اتصال USB، جک تغذیه، هدر ICSP و یک دکمه Reset است. این برد تمام اجزای لازم برای کار با میکروکنترلر را در خود دارد؛ کافی است آن را با یک کابل USB به کامپیوتر متصل کنید یا با یک آداپتور AC به DC یا باتری تغذیه کنید تا آماده استفاده شود.

Arduino Uno SMD Front نمای روبروی برد رسمی

مشخصهمقدار
میکروکنترلرATmega328P
ولتاژ کاری5V
ولتاژ ورودی پیشنهادی7 تا 12 ولت
محدوده ولتاژ ورودی6 تا 20 ولت
پایه‌های دیجیتال14 عدد (6 عدد با قابلیت PWM)
پایه‌های PWM6 عدد
ورودی‌های آنالوگ6 عدد
جریان هر پایه I/O20 میلی‌آمپر
جریان خروجی پایه 3.3V50 میلی‌آمپر
حافظه Flash32KB (که 0.5KB آن توسط Bootloader استفاده می‌شود)
SRAM2KB
EEPROM1KB
فرکانس کاری16MHz
LED داخلیپایه 13
طول برد68.6 میلی‌متر
عرض برد53.4 میلی‌متر
وزن25 گرم

Arduino Uno را می‌توان با Arduino Software (IDE) برنامه‌نویسی کرد. برای این کار از منوی Tools > Board گزینه Arduino/Genuino Uno را انتخاب کنید (متناسب با میکروکنترلر روی برد).

میکروکنترلر ATmega328 روی Arduino Uno به صورت پیش‌فرض دارای یک Bootloader است که امکان آپلود برنامه جدید را بدون نیاز به پروگرامر سخت‌افزاری خارجی فراهم می‌کند. این ارتباط از طریق پروتکل STK500 انجام می‌شود.

همچنین می‌توانید Bootloader را دور بزنید و میکروکنترلر را مستقیماً از طریق هدر ICSP (In‑Circuit Serial Programming) با استفاده از Arduino ISP یا پروگرامرهای مشابه برنامه‌ریزی کنید.

برد 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 آن را خواند و نوشت.

نگاشت پایه‌های آردوینو به پورت‌های 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 میکروکنترلر ریست می‌شود. معمولاً برای اضافه کردن دکمه ریست روی شیلدهایی که دکمه اصلی برد را می‌پوشانند استفاده می‌شود.

برد 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 است.

برد 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 را غیرفعال کرد.

نسخه Revision 3 برد دارای ویژگی‌های جدید زیر است:

  • Pinout نسخه 1.0: اضافه شدن پایه‌های SDA و SCL در نزدیکی پایه AREF و دو پایه جدید در کنار RESET شامل IOREF که به شیلدها اجازه می‌دهد ولتاژ کاری برد را تشخیص دهند. در آینده شیلدها با بردهای AVR با ولتاژ 5V و همچنین Arduino Due با ولتاژ 3.3V سازگار خواهند بود. پایه دوم در حال حاضر متصل نیست و برای کاربردهای آینده رزرو شده است.

  • مدار RESET قوی‌تر: جایگزینی ATmega16U2 به جای ATmega8U2.