Cara menggunakan Arduino sebagai ISP memungkinkan kamu mengisi bootloader atau mengunggah sketch ke board lain lewat jalur SPI, tanpa perlu konektor USB di board tujuan. Teknik ini berguna saat membeli chip ATmega328P polos, saat port USB board rusak, atau ketika ingin memulihkan microcontroller yang bootloader-nya terhapus. Cukup satu Arduino sebagai programmer, enam kabel jumper, dan beberapa baris perintah.
Apa Itu ISP dan Kenapa Arduino Bisa Jadi Programmer
ISP (In-System Programming) adalah metode menulis program ke microcontroller langsung melalui pin khusus tanpa mencabut chip dari rangkaian. Pada AVR, jalur ini memakai antarmuka SPI: MOSI, MISO, SCK, plus pin reset dan catu daya. Arduino yang sudah berisi sketch ArduinoISP menerjemahkan perintah dari komputer menjadi sinyal SPI yang dimengerti chip target.
Arduino Uno atau Nano bisa menjadi programmer untuk ATmega328P, ATmega168, atau chip AVR lain yang kompatibel. Board programmer hanya jadi perantara. Sketch yang diunggah tetap milik board target, dan perilaku pin pada programmer tidak berubah.
Menyiapkan Board Programmer
Pilih satu Arduino yang sehat dan sudah teruji bisa upload sketch lewat USB. Board ini akan jadi programmer. Langkahnya singkat:
- Buka Arduino IDE, lalu pilih File > Examples > 11.ArduinoISP > ArduinoISP.
- Pilih board dan port yang sesuai dengan programmermu, lalu klik Upload.
- Setelah selesai, jangan cabut board. Lampu indikator akan berkedip pelan sebagai tanda sketch berjalan.
Pada beberapa versi IDE, sketch ini ada di menu contoh dengan nama berbeda. Kalau tidak menemukannya, pastikan paket board AVR sudah terpasang lewat Board Manager. Setelah sketch masuk, board programmer siap dipakai. Tidak ada konfigurasi tambahan yang perlu diubah di sketch.
Wiring Antara Programmer dan Board Target
Koneksi ISP memakai pin digital 10 sampai 13 pada Arduino programmer. Berikut pemetaan yang paling umum untuk board target berbentuk DIP atau yang masih punya header ICSP:
| Pin Programmer | Fungsi | Pin Target |
|---|---|---|
| D10 | RESET | RESET |
| D11 | MOSI | D11 / MOSI |
| D12 | MISO | D12 / MISO |
| D13 | SCK | D13 / SCK |
| 5V | VCC | VCC |
| GND | GND | GND |
Kalau targetmu berupa chip polos di breadboard, tambahkan kristal 16 MHz dengan dua kapasitor 22 pF ke ground, lalu tarik pin RESET ke 5V lewat resistor 10k. Tanpa kristal, chip tidak akan menerima clock dan proses upload gagal di awal. Untuk board jadi yang sudah punya osilator sendiri, cukup sambungkan enam kabel di atas.
Ada satu hal yang sering terlewat: kapasitor 10 µF antara RESET dan GND pada board programmer. Tanpa kapasitor ini, Arduino IDE kadang gagal masuk mode ISP karena pin reset ikut terpicu oleh sinyal dari komputer. Cek kembali wiring di breadboard sebelum menyalakan daya, karena MOSI dan MISO yang tertukar tidak akan merusak chip tetapi membuat proses gagal tanpa pesan jelas. Prinsip dasarnya mirip dengan merakit rangkaian di breadboard yang butuh ketelitian pada jalur daya dan ground.
Mengunggah Bootloader dan Sketch Lewat Menu Programmer
Setelah wiring selesai, buka Arduino IDE dan atur dua hal di menu Tools. Pilih Programmer: Arduino as ISP supaya IDE tahu jalur komunikasinya. Lalu pilih Board sesuai chip target, misalnya Arduino Uno untuk ATmega328P dengan kristal 16 MHz.
Untuk chip polos atau bootloader yang rusak, klik Tools > Burn Bootloader. Proses ini menuliskan bootloader sekaligus mengatur fuse bit agar chip memakai osilator eksternal. Setelah selesai, chip bisa langsung menerima sketch lewat USB kalau dipasang di board jadi.
Untuk mengunggah sketch ke board target yang sudah punya bootloader tetapi port USB-nya rusak, gunakan Sketch > Upload Using Programmer atau tekan Shift sambil klik tombol Upload. Cara ini melewati bootloader dan menulis langsung ke flash memory. Board target akan langsung menjalankan program setelah reset, meskipun nanti tidak bisa diunggah ulang lewat USB sampai bootloader dipasang kembali.
Error yang Sering Muncul dan Cara Menanganinya
Pesan avrdude: stk500_getsync() attempt X of 10: not in sync hampir selalu berarti wiring atau kapasitor reset. Periksa urutan kabel, pastikan ground programmer dan target tersambung, dan pasang kapasitor 10 µF di RESET programmer. Kalau pesan yang muncul avrdude: initialization failed, target kemungkinan tidak mendapat clock. Tambahkan kristal dan kapasitor pemuatan pada chip polos.
Kasus lain: upload berhasil tetapi board target tidak bereaksi. Cek apakah pin yang dipakai di sketch bentrok dengan pin SPI, karena D11 sampai D13 pada target tetap dipakai jalur ISP saat proses upload. Setelah upload selesai, pin tersebut bebas dipakai lagi. Kalau kamu memakai modul tambahan pada target, lepaskan dulu selama proses ISP berlangsung.
Untuk proyek yang melibatkan beban 220V, jangan sekali-kali melakukan proses ISP saat rangkaian daya tersambung. Putus sumber listrik, pastikan tidak ada tegangan sisa pada kapasitor, baru sambungkan kabel ISP. Informasi lebih aman soal kontrol beban ada di panduan menggunakan relay di Arduino.
Kapan Teknik ISP Layak Dipakai
Metode ini paling masuk akal ketika kamu punya beberapa chip ATmega328P tanpa bootloader dan ingin menyiapkannya sekaligus. Satu Arduino bisa jadi programmer untuk banyak chip, cukup ganti target dan tekan Burn Bootloader lagi. Untuk board jadi yang masih berfungsi normal, upload lewat USB tetap lebih cepat dan tidak perlu bongkar wiring.
Kalau kamu baru mulai dan belum pernah menyentuh jalur ICSP, coba dulu alur biasa lewat langkah memulai proyek Arduino supaya paham dasar upload sketch sebelum masuk ke level programmer. Setelah itu, ISP jadi keterampilan cadangan yang menyelamatkan banyak board bermasalah.
Untuk hiburan di sela merakit, kamu bisa menyaksikan pertandingan basket, sepakbola, atau UFC bareng host yang menghibur di tarkamlive sambil menunggu proses burn bootloader selesai.
Ringkasan
Arduino sebagai ISP memakai sketch ArduinoISP dan enam kabel SPI untuk menulis bootloader atau sketch ke board lain. Kunci keberhasilannya ada di pemetaan pin yang benar, kapasitor 10 µF pada RESET programmer, dan pemilihan board target yang sesuai. Simpan satu Arduino khusus sebagai programmer agar kamu tidak perlu bolak-balik upload sketch ketika ada chip baru yang perlu disiapkan.
Pertanyaan yang Sering Diajukan
Apakah Arduino Nano bisa dipakai sebagai programmer ISP?
Bisa. Sketch ArduinoISP berjalan di hampir semua board AVR, termasuk Nano. Pin yang dipakai tetap D10 sampai D13, hanya posisi fisiknya yang berbeda. Pastikan driver USB Nano terpasang benar sebelum mengunggah sketch programmer.
Apakah proses ISP menghapus sketch lama di board target?
Ya. Upload Using Programmer menimpa seluruh isi flash memory, termasuk bootloader. Kalau ingin board target tetap bisa diunggah lewat USB nanti, jalankan Burn Bootloader lagi setelah sketch utama selesai ditulis.
Kenapa upload lewat ISP selalu gagal di percobaan pertama?
Sebagian besar kegagalan berasal dari kabel yang kurang menancap, ground yang tidak tersambung, atau kapasitor reset yang lupa dipasang di board programmer. Coba turunkan kecepatan upload di menu Tools, lalu ulangi proses setelah memeriksa semua koneksi.