آردوینو - آموزش آردوینو-Arduinoهمه ی مطالب

نکات، ترفندها، و تکنیک های آردوینو

گاهشمار آردوینو

در مقدمه مقداری در مورد تارخچه ی آردوینو توضیحاتی داریم. اولین برد آردوینو با پورت سریال RS232 طراحی شده بود این برد آردوینو هیچ گاه در اختیار عموم قرار نگرفت و فقط توسط گروه طراح آردوینو استفاده و تست شد.

arduino

اولین برد با قابلیت استفاده عمومی که به تولید رسید آردوینو NG نام داشت. NG مخفف (New Generation) بود. برد NG از چیپ ATmega8 با فرکانس 16MHZ و چیپ FT232 برای تبدیل USB به سریال تشکیل شده بود. bootloader دو کیلوبایت از حافظه 8KB میکرو را اشغال کرده بود و با باودریت 19200 اجرا میشد.

arduino_ng

ورژن بعدی برد آردوینو Diecimila نام داشت در بدر Diecimila چیپ ATmaga8 با چیپ ATmega168 جایگزین شده بود. بهترین تغییر در این برد دو برابر شدن حافظه میکروکنترلر بود فرکانس میکروکنترلر همچنان روی 16MHZ تنظیم شده بود. در برد Diecimila دو پین هدر جدید برای ولتاژ 3.3 ولت اضافه شده بود همچنین یک پین هدر برای پایه ریست برای مواقعی که روی دکمه ریست پوشانده شده باشد نیز به برد اضافه شد.مثل ورژن قبل bootloader دو کیلوبایت از حافظه 16KB میکرو را اشغال کرده بود و با باودریت 19200 اجرا میشد. هچنین ریست شدن اتوماتیک نیز به برد اضافه شد که باعث کارکرد راحت تر با برد شد.

arduino_diecimila

در سال 2009 برد Duemilanove تولید شد. در این ورژن نیز چیپ اصلی تغییر کرد و با ATmega328 جایگزین شد و دوباره شاهد دوبرابر شدن حجم حافظه اصلی بودیم. تغییر دیگری که اتفاق افتاد حذف جامپر انتخاب منبع تغذیه بود که در این ورژن به صورت اتوماتیک تغذیه بین پورت USB و جک DC تغییر میکرد. bootloader دو کیلوبایت از حافظه 32KB میکرو را اشغال کرده بود و با باودریت 57600 اجرا میشد.

arduino-duemilanove

در سال 2010 برد UNO منتشر شد. برد Uno همچنان از چیپ ATmega328 استفاده شده بود آردوینو Uno از بوت لودر کم حجم OptiBoot استفاده میکند (باعث میشود تا برای برنامه کاربر فضای بیشتر در دسترس باشد.) همچنین چیب FTDI با چیپ atmega8u2 جایگزین شد که امکان استفاده متفاوت از اینترفیس USB را فراهم می کند. و در آخر یک رگلاتور 3.3 ولت (LP2985) برای داشتن تغذیه 3.3 ولت بهتر اضافه شد.

arduinounotop

چیپ USB جدید

در ورژن های قدیمی آردوینو (قبل از Uno) از چیپ FT232RL استفاده میشدتا سریال TTL را از چیپ آردوینو به USB تبدیل کند. چیپ FT232 امکان آپدیت برنامه میکرو از طریق ارتباط سریال و فرستادن دیتا به میکروکنترلر را امکان پذیر میکرد.

یک بهبود برای جایگزنی چیپ FT232 قابلیت استفاده از برد آردوینو بدون نصب درایور در کامپیوتر های MAC است متاسفانه هنوز ویندوز امکان استفاده از پورت سریال بدون نصب فایل INF رو نمی دهد پس در ویندوز شما مجبور به نصب درایور آردوینو هستید.

یک امکان عالی در مورد چیپ 8U2 امکان استفاده ی کاربران با تجربه از آن به عنوان ابزار های USB متفاوت است. به عنوان مثال می توان آن را طوری برنامه ریزی کرد که به عنوان کیبورد یا موس یا ابزار های دیگری شناخته شود

چرا به جای استفاده از ATmaga32u4 از ATmega328 استفاده شده است؟

در صورت استفاده از چیپ ATmaga32u4 برد ارزان تر میشد ولی دیگر قابلیت تعوض چیپ اصلی برد فراهم نبود به همین خاطر از ATmega328 استفاده شده است. و همچنین بردهایی نیز با چیپ ATmaga32u4 تولید شده است به طور مثال برد Leonardo

چه طور می توان firmware چیپ USB را عوض کرد؟

فریم ور چیپ USB را می توان با یک پروگرامر استاندارد AVR و پین هدر هایی که روی برد برای همین منظور قرار داده شده است آپدیت یا عوض کرد.

چیپ اصلی آردوینو از کریستال استفاده می کند یا از resonator؟

چیپ FT232 دارای اسیلاتور داخلی بوده ولی ATmega8u2 دارای اسیلاتور نیست. به همین خاطر از کریستال 16MHZ برای هماهنگ شدن timing با USB استفاده میکند. ATmaga328 از رزناتور سرامیکی 16MHZ استفاده میکند.

Bootloader جدید؟

بوت لودر جدید دقیقا مثل ورژن قبل کار می کند و از پروتکل STK500 پشتیبانی می کند. تفاوت اصلی در حجم بوت لودر است که یک چهارم بوت لودر قدیمی است و فقط 512B حجم دارد و سرعت پروگرا م کردن این بوت لودر 3 برابر ورژن اصلی است و کل زمانی که برای پروگرم شدن نیاز است به 3 ثانیه کاهش پیدا کرده است. برای اطلاعات بیشتر در مورد بوت لودر جدید به لینک Optiboot مراجعه کنید.

چرا از ATmega8u2 به عنوان پروگرامر استفاده نشده است؟

دلیل اول کاربران کم تجربه هستند در صورت تغیر اشتباه تنظیمات میکرو باعث قفل شدن میکرو میشود و برد آردوینو دیگر قابلیت پروگرم شدن را از دست میدهد. دلیل دوم قابلیت سازگاری با بردهای ورژن قدیمی آردوینو می باشد و دلیل سوم و مهمتر قابلیت پروگرم شدن چیپ آردوینو با یک تبدیل USB به آردوینو است.

چرا چیپ ATmega328 با فرکانس 16MHZ کار میکند در صورتی که قابلیت کار در فرکانس 20MHZ را دارد؟

این سوال رایجی است دلیل اصلی این است که آردوینو ورژن اولیه از چیپ ATmega8 استفاده میکرد و آخرین سرعتی که می تونست پشتیانی کند 16MHZ است به همین خاطر برای سازگاری بین برد ها فرکانس چیپ اصلی تغییری نکرد از دید دیگر برد آردوینو برای کارهایی که نیاز به پردازش سریع دارند نیست و به هر حال یک میکروکنترلر 8 بیتی است و تغییر چندانی هم در صورت استفاده از فرکانس 20MHZ اتفاق نمی افتد.

آیا می توان به فایل های طراحی و کد پروژه آردوینو دسترسی داشت؟

بله پروژه آردوینو به صورت Open source منتشر شده و می توانید فایل در لینک مقابل دسترسی داشته باشید. دسترسی به فایل های آردوینو

پروگرام کردن بوت لودر آردوینو روی میکروکنترلر ATmega328

برای پروگرام کردن تقریبا تمام میکروکنترلرهای avr از پروگرامر ISP که حاوی 6 پین است، استفاده می شود. ISP استانداردی برای پروگرام کردن میکروکنترلرهای AVR هست. این پین ها عبارتند از:

Pins in Arduino UNO Micro Pins ISP Programmer Pins NUMBER
PIN12 MISO MISO 1
VCC VCC VCC 5V 2
PIN 13 SCK SCK 3
PIN 11 MOSI MOSI 4
RES RESET RESET 5
GND GND GND 6

تبدیل آردوینو به پروگرامر ISP

در این روش ابتدا برد آردینو به یک پروگرامر تبدیل خواهد شد.

  • ابتدا برنامه آردینو را باز نمایید:
  • سپس از منوی File گزینه Examples را انتخاب نموده و از آنجا برنامه ی شماره 11 (ArduinoISP) را کلیک نمایید.
  • برنامه را بر روی برد آپلود نمایید.
  • از منوی Tools از قسمت Programmer گزینه Arduino as ISP را انتخاب نمایید سپس گزینه Burn Bootloader رو بزنید.

شماتیک اتصالی پایه های برد آردینو به میکروکنترلر در شکل زیر آورده شده است. توجه شود که میکروکنترلر به کریستال 16 مگا هرتز و هر پایه از آن به خازن های 22 پیکو فاراد متصل شود.

avr-arduino-768x768

تغییر سطح ولتاژ برد آردوینو از 5 ولت به 3.3 ولت

بردهای رسمی آردوینو از ولتاژ 5 ولت استفاده می کنند که برای مدت طولانی ولتاژ 5 ولت به عنوان استاندارد برای میکروکنترلر ها و ماژول های دیگر مورد استفاده قرار می گرفت اما در زمان حال بهترین سنسور ها و نمایشگر ها و چیپ ها با ولتاژ 3.3 ولت سازگار هستند به عنوان مثال SD کارت ها یا شتاب سنج ها همه با ولتاژ 3.3 ولت کار می کنند و در صورت اتصال به 5 ولت آسیب میبنند.

می توان از چیپ 4050 برای تغییر سطح ولتاژ استفاده کرد ولی راحت ترین کار تبدیل ولتاژ خود برد به 3.3 ولت می باشد. برای این کار ما رگلاتور کنار جک DC را تغییر می دهیم و با یک رگلاتور 3.3 ولت جایگزین می کینم و باید تغییراتی ایجاد کنیم تا ولتاژ ورودی پورت USB نیز از رگلاتور 3.3 ولت بگذرد مراحل کار به صورت تصویری در پایین شرح داده شده است.

رگلاتور 5 ولت موجود بر روی برد را با رگلاتور 1117-3.3 ولت تعویض میکنیم. از نوع TO-252-3 است.

رگلاتور جدید را روی برد لیحم کنید.

برای تبدیل ولتاژ 5 ولت USB به 3.3 ولت باید تغییراتی بر روی برد اعمال کنیم اول فیوز را از روی برد جدا میکنیم.

بعد از جدا کردن فیوز آند دیود (دیود قدرت مثل 1N4001) را به پد فیوز که به لبه برد نزدیک تر است لحیم می کنید و پایه دیگر را به پایه ی رگلاتور که روی تصویر مشخص شده لحیم کنید.

آردوینو هنوز هم می تواند بین منبع تغذیه ای که توان بیشتری دارد سویچ کند.

علی عزتی

علی عزتی هستم. رشته ی مهندسی برق الکترونیک رو خوندم. علاقه ی من به یادگیری و به اشتراک گذاشتن چیز هایی که یاد گرفتم. باعث شد تا الکترولب ایجاد بشه. علاقه ی زیادی به الکترونیک دارم. و دوست دارم چیزهای جدید یادبگیرم و بسازم ... :))

نوشته های مشابه

2 دیدگاه

  1. سلام و درود
    ممنون از مطالب مفیدتون
    فقط یک سوال
    اگر بخوام جریان بیشتری از پایه 5 ولت اردوینو بگیرم راهی هست؟
    بعنوان مثال میشه رگولاتور رو خارج کرد و بجاش یه مبدل dc به dc گذاشت تا جریانی در حدود 3 امپر بده؟

    1. چرا تاکید میکنید به گرفتن ولتاژ از طریق پایه آردوینو؟ از یه منبع دیگه تغذیه بگیرید

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

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

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