نکات، ترفندها و تکنیک های آردوینو
تاریخچه آردوینو
اولین برد آردوینو با پورت سریال RS232 طراحی شده بود این برد آردوینو هیچ گاه در اختیار عموم قرار نگرفت و فقط توسط گروه طراح آردوینو استفاده و تست شد.
اولین برد با قابلیت استفاده عمومی که به تولید رسید آردوینو NG نام داشت. NG مخفف (New Generation) بود. برد NG از چیپ ATmega8 با فرکانس 16MHZ و چیپ FT232 برای تبدیل USB به سریال تشکیل شده بود. bootloader دو کیلوبایت از حافظه 8KB میکرو را اشغال کرده بود و با باودریت 19200 اجرا میشد.
ورژن بعدی برد آردوینو Diecimila نام داشت در برد Diecimila چیپ ATmaga8 با چیپ ATmega168 جایگزین شده بود. بهترین تغییر در این برد دو برابر شدن حافظه میکروکنترلر بود فرکانس میکروکنترلر همچنان روی 16MHZ تنظیم شده بود. در برد Diecimila دو پین هدر جدید برای ولتاژ 3.3 ولت اضافه شده بود همچنین یک پین هدر برای پایه ریست برای مواقعی که روی دکمه ریست پوشانده شده باشد نیز به برد اضافه شد.مثل ورژن قبل bootloader دو کیلوبایت از حافظه 16KB میکرو را اشغال کرده بود و با باودریت 19200 اجرا میشد. هچنین ریست شدن اتوماتیک نیز به برد اضافه شد که باعث کارکرد راحت تر با برد شد.
در سال 2009 برد Duemilanove تولید شد. در این ورژن نیز چیپ اصلی تغییر کرد و با ATmega328 جایگزین شد و دوباره شاهد دوبرابر شدن حجم حافظه اصلی بودیم. تغییر دیگری که اتفاق افتاد حذف جامپر انتخاب منبع تغذیه بود که در این ورژن به صورت اتوماتیک تغذیه بین پورت USB و جک DC تغییر میکرد. bootloader دو کیلوبایت از حافظه 32KB میکرو را اشغال کرده بود و با باودریت 57600 اجرا می شد.
در سال 2010 برد UNO منتشر شد. برد Uno همچنان از چیپ ATmega328 استفاده شده بود آردوینو Uno از بوت لودر کم حجم OptiBoot استفاده میکند (باعث می شود تا برای برنامه کاربر فضای بیشتر در دسترس باشد.) همچنین چیب FTDI با چیپ atmega8u2 جایگزین شد که امکان استفاده متفاوت از اینترفیس USB را فراهم می کند. و در آخر یک رگلاتور 3.3 ولت (LP2985) برای داشتن تغذیه 3.3 ولت بهتر اضافه شد.
چیپ 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 پیکو فاراد متصل شود.
تغییر سطح ولتاژ برد آردوینو از 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) را به پد فیوز که به لبه برد نزدیک تر است لحیم می کنید و پایه دیگر را به پایه ی رگلاتور که روی تصویر مشخص شده لحیم کنید.
آردوینو هنوز هم می تواند بین منبع تغذیه ای که توان بیشتری دارد سویچ کند.