آموزش ArduinoISP
آموزش ArduinoISP
تبدیل آردوینو به پروگرامر ISP برای پروگرام کردن میکروکنترلرهای AVR
ArduinoISP چیست؟
ArduinoISP یک اسکچ داخلی در Arduino IDE است که به شما اجازه میدهد یک برد Arduino (مثل Uno یا Mega2560) را به یک پروگرامر ISP (In-System Programmer) تبدیل کنید. با این روش میتوانید میکروکنترلرهای AVR را بدون نیاز به بوتلودر پروگرام کنید، بوتلودر بریزید یا فیوز بیتها را تنظیم کنید.
! نکات مهم قبل از شروع
- این آموزش برای بردهای Arduino Uno و Mega2560 مناسب است
- برد Arduino Leonardo و Due با این روش سازگار نیستند
- از برد Arduino as ISP استفاده کنید، نه ArduinoISP
- خازن ۱۰ میکروفاراد روی پایههای Reset و GND برد Arduino اصلی اجباری است
1 آمادهسازی برد Arduino (پروگرامر)
اسکچ ArduinoISP را آپلود کنید
- Arduino IDE را باز کنید
- به منوی File → Examples → 11.ArduinoISP → ArduinoISP بروید
- برد Arduino خود (Uno/Mega) را با کابل USB به کامپیوتر وصل کنید
- پورت و برد صحیح را از منوی Tools انتخاب کنید
- روی دکمه Upload کلیک کنید
تصویر ۱: آپلود اسکچ ArduinoISP روی برد Arduino
تبریک! برد Arduino شما الان به یک پروگرامر ISP تبدیل شده است.
2 اتصال مدار (سیمکشی)
اتصال برد Arduino به میکروکنترلر هدف
برد Arduino (پروگرامر) را طبق جدول زیر به میکروکنترلر هدف وصل کنید. میتوانید از سوکت ICSP (در صورت وجود) یا پایههای دیجیتال استفاده کنید:
تصویر ۲: پایههای سوکت ICSP روی برد Arduino
تصویر ۳: اتصال دو برد Arduino Uno برای ISP
تصویر ۴: جزئیات اتصال سیمها
تصویر ۵: سیمکشی کامل Arduino ISP
! خازن روی برد Arduino (پروگرامر) - اجباری!
برای جلوگیری از ریست خودکار برد Arduino در هنگام پروگرام کردن، یک خازن ۱۰ میکروفاراد (یا ۱ تا ۱۰۰ میکروفاراد) بین پایههای Reset و GND برد Arduino (نه میکروکنترلر هدف) وصل کنید.
نکته: پایه منفی خازن به GND و پایه مثبت به Reset وصل شود.
3 پروگرام کردن میکروکنترلر هدف
آمادهسازی Arduino IDE
- اسکچ مورد نظر خود را که میخواهید روی میکروکنترلر هدف بریزید، باز کنید
- از منوی Tools → Programmer، گزینه "Arduino as ISP" را انتخاب کنید
تصویر ۶: لیست پروگرامرهای ISP در Arduino IDE
! دقت کنید: گزینه "ArduinoISP" (بدون "as") را انتخاب نکنید! آن مربوط به پروگرام کردن بوتلودر است، نه اسکچ.
- برد مورد نظر خود را از منوی Tools → Board انتخاب کنید (مثلاً Arduino Uno یا ATmega328P)
آپلود اسکچ روی میکروکنترلر هدف
به جای دکمه Upload معمولی، از منوی Sketch → Upload Using Programmer استفاده کنید (یا کلید میانبر Ctrl+Shift+U):
موفق! اسکچ شما روی میکروکنترلر هدف پروگرام شد. میتوانید میکروکنترلر را از مدار جدا کرده و به صورت مستقل استفاده کنید.
4 ریختن بوتلودر (Bootloader Burning)
پروگرام کردن بوتلودر روی ATmega328P جدید
اگر میکروکنترلر شما کاملاً جدید است و بوتلودر ندارد، میتوانید با همین روش بوتلودر Arduino را روی آن بریزید:
- اتصالات را مانند مرحله قبل برقرار کنید
- از منوی Tools → Board، برد مورد نظر را انتخاب کنید
- از منوی Tools → Programmer، "Arduino as ISP" را انتخاب کنید
- روی Tools → Burn Bootloader کلیک کنید
تصویر ۷: ریختن بوتلودر با گزینه "Burn Bootloader"
تصویر ۸: نقشه حافظه و محل قرارگیری بوتلودر
نکته: بعد از ریختن بوتلودر، میتوانید میکروکنترلر را با کابل USB-Serial (مثل CH340) مستقیماً پروگرام کنید، بدون نیاز به ArduinoISP.
* اتصالات دیگر
اتصال Mega2560 به Uno
تصویر ۹: اتصال Arduino Mega2560 به Uno
اتصال MKR1000 به Uno
تصویر ۱۰: اتصال Arduino MKR1000 به Uno
! عیبیابی مشکلات رایج
تصویر ۱۱: LEDهای وضعیت ArduinoISP
خطا: "avrdude: stk500_getsync(): not in sync"
- اتصالات سیمها را بررسی کنید
- خازن ۱۰µF را روی پایه Reset و GND برد Arduino قرار دهید
- از منوی Programmer گزینه "Arduino as ISP" انتخاب شده باشد
خطا: "avrdude: Yikes! Invalid device signature"
- ممکن است میکروکنترلر هدف خراب باشد
- اتصال GND را بررسی کنید (باید مشترک باشد)
- ممکن است میکروکنترلر هدف نیاز به تنظیم فیوز بیت داشته باشد
LED روی برد Arduino چشمک میزند
این طبیعی است! LED متصل به پایه ۹ برد Arduino نشاندهنده فعالیت پروگرامر است:
- چشمک زن سریع = در حال ارتباط با میکروکنترلر
- روشن ثابت = آماده برای کار
- خاموش = خطا یا عدم اتصال
خلاصه مراحل
- اسکچ ArduinoISP را روی برد Arduino (Uno/Mega) آپلود کنید
- با سیمکشی جدول، Arduino را به میکروکنترلر هدف وصل کنید
- خازن ۱۰µF بین Reset و GND برد Arduino وصل کنید
- در Arduino IDE، Tools → Programmer → "Arduino as ISP" را انتخاب کنید
- از Sketch → Upload Using Programmer برای پروگرام کردن استفاده کنید
- برای ریختن بوتلودر از Tools → Burn Bootloader استفاده کنید