آموزش 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 را آپلود کنید

  1. Arduino IDE را باز کنید
  2. به منوی File → Examples → 11.ArduinoISP → ArduinoISP بروید
  3. برد Arduino خود (Uno/Mega) را با کابل USB به کامپیوتر وصل کنید
  4. پورت و برد صحیح را از منوی Tools انتخاب کنید
  5. روی دکمه Upload کلیک کنید
Load ArduinoISP Sketch

تصویر ۱: آپلود اسکچ ArduinoISP روی برد Arduino

تبریک! برد Arduino شما الان به یک پروگرامر ISP تبدیل شده است.

2 اتصال مدار (سیم‌کشی)

اتصال برد Arduino به میکروکنترلر هدف

برد Arduino (پروگرامر) را طبق جدول زیر به میکروکنترلر هدف وصل کنید. می‌توانید از سوکت ICSP (در صورت وجود) یا پایه‌های دیجیتال استفاده کنید:

ICSP Header Pinout

تصویر ۲: پایه‌های سوکت ICSP روی برد Arduino

پایه Arduino (پروگرامر) پایه میکروکنترلر هدف توضیحات
Pin 10 (یا ICSP-5) Reset (RST) سیگنال ریست
Pin 11 (یا ICSP-4) MOSI داده خروجی (Master Out Slave In)
Pin 12 (یا ICSP-1) MISO داده ورودی (Master In Slave Out)
Pin 13 (یا ICSP-3) SCK کلاک
5V (یا ICSP-2) VCC تغذیه ۵ ولت
GND (یا ICSP-6) GND زمین
Arduino UNO to UNO ISP Connection

تصویر ۳: اتصال دو برد Arduino Uno برای ISP

Uno Connection Detail

تصویر ۴: جزئیات اتصال سیم‌ها

Arduino ISP Wires Connection

تصویر ۵: سیم‌کشی کامل Arduino ISP

! خازن روی برد Arduino (پروگرامر) - اجباری!

برای جلوگیری از ریست خودکار برد Arduino در هنگام پروگرام کردن، یک خازن ۱۰ میکروفاراد (یا ۱ تا ۱۰۰ میکروفاراد) بین پایه‌های Reset و GND برد Arduino (نه میکروکنترلر هدف) وصل کنید.

نکته: پایه منفی خازن به GND و پایه مثبت به Reset وصل شود.

3 پروگرام کردن میکروکنترلر هدف

آماده‌سازی Arduino IDE

  1. اسکچ مورد نظر خود را که می‌خواهید روی میکروکنترلر هدف بریزید، باز کنید
  2. از منوی Tools → Programmer، گزینه "Arduino as ISP" را انتخاب کنید
ISP Programmers List

تصویر ۶: لیست پروگرامرهای ISP در Arduino IDE

! دقت کنید: گزینه "ArduinoISP" (بدون "as") را انتخاب نکنید! آن مربوط به پروگرام کردن بوت‌لودر است، نه اسکچ.

  1. برد مورد نظر خود را از منوی Tools → Board انتخاب کنید (مثلاً Arduino Uno یا ATmega328P)

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

به جای دکمه Upload معمولی، از منوی Sketch → Upload Using Programmer استفاده کنید (یا کلید میانبر Ctrl+Shift+U):

موفق! اسکچ شما روی میکروکنترلر هدف پروگرام شد. می‌توانید میکروکنترلر را از مدار جدا کرده و به صورت مستقل استفاده کنید.

4 ریختن بوت‌لودر (Bootloader Burning)

پروگرام کردن بوت‌لودر روی ATmega328P جدید

اگر میکروکنترلر شما کاملاً جدید است و بوت‌لودر ندارد، می‌توانید با همین روش بوت‌لودر Arduino را روی آن بریزید:

  1. اتصالات را مانند مرحله قبل برقرار کنید
  2. از منوی Tools → Board، برد مورد نظر را انتخاب کنید
  3. از منوی Tools → Programmer، "Arduino as ISP" را انتخاب کنید
  4. روی Tools → Burn Bootloader کلیک کنید
Burn Bootloader

تصویر ۷: ریختن بوت‌لودر با گزینه "Burn Bootloader"

Memory Map

تصویر ۸: نقشه حافظه و محل قرارگیری بوت‌لودر

نکته: بعد از ریختن بوت‌لودر، می‌توانید میکروکنترلر را با کابل USB-Serial (مثل CH340) مستقیماً پروگرام کنید، بدون نیاز به ArduinoISP.

* اتصالات دیگر

اتصال Mega2560 به Uno

Mega to UNO Connection

تصویر ۹: اتصال Arduino Mega2560 به Uno

اتصال MKR1000 به Uno

MKR1000 to UNO ISP

تصویر ۱۰: اتصال Arduino MKR1000 به Uno

! عیب‌یابی مشکلات رایج

Arduino ISP LEDs OK

تصویر ۱۱: 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 نشان‌دهنده فعالیت پروگرامر است:

  • چشمک زن سریع = در حال ارتباط با میکروکنترلر
  • روشن ثابت = آماده برای کار
  • خاموش = خطا یا عدم اتصال

خلاصه مراحل

  1. اسکچ ArduinoISP را روی برد Arduino (Uno/Mega) آپلود کنید
  2. با سیم‌کشی جدول، Arduino را به میکروکنترلر هدف وصل کنید
  3. خازن ۱۰µF بین Reset و GND برد Arduino وصل کنید
  4. در Arduino IDE، Tools → Programmer → "Arduino as ISP" را انتخاب کنید
  5. از Sketch → Upload Using Programmer برای پروگرام کردن استفاده کنید
  6. برای ریختن بوت‌لودر از Tools → Burn Bootloader استفاده کنید