Modul mikrokontroler Arduino sangat mudah digunakan, salah satunya karena pada modul Arduino sudah disertakan rangkaian pemrograman yang mudah dipakai, dan juga terintegrasi dengan perangkat lunak Arduino yang dipakai untuk membuat software.
Berikut ini diuraikan rangkaian programmer pada Arduino UNO dan Arduino Nano. Kedua jenis Arduino ini sangat mirip, menggunakan komponen yang sama, hanya bentuknya berbeda. Komponen paling penting adalah mikrokontroler ATMega328.
Berikut ini gambar konektor pada Arduino UNO:
Konektor yang terkait pemrograman adalah USB-Plug dan In Circuit Serial Programmer (ICSP). Seringnya yang dipakai untuk pemrograman adalah USB Plug, sedangkan ICSP jarang dipakai.
Pada Arduino Nano konektor untuk pemrograman adalah USB Mini dan ICSP (In Circuit Serial Programmer).
Konektor ICSP yang dipakai pada Arduino UNO dan Nano menggunakan header 3×2, dengan daftar pin sebagai berikut:
Pin yang dipakai adalah MISO, MOSI, SCK, Reset, GND dan +5V. Semua pin ini terhubung langsung ke ATMega328:
- MISO (pin 18 / PB4)
- MOSI (pin 17 / PB3)
- SCK (pin 19 / PB5)
- Reset (pin 1 / PC6)
- GND (pin 8 & pin 22)
- +5V (pin 7 / VCC)
Pin-pin ini sesuai dengan rangkaian dasar pemrograman ISP sebagai berikut:
Cara lain untuk pemrograman Arduino UNO dan Nano adalah menggunakan port USB. Port USB ini masuk ke suatu konverter USB ke Serial, kemudian pin serial TX dan RX dihubungka ke pin RX dan TX pada ATMega, jadi program dikirim melalui port serial pada ATMega. Selain itu pin DTR juga dipakai untuk melakukan reset pada ATMega.
Supaya program dapat dimasukkan melalui port serial, perlu ada software bootloader yang dimasukkan ke dalam flash memory di ATMega. Program bootloader ini belum ada pada ATMega yang keluaran pabrik, jadi bootloader ini perlu dimasukkan dulu ke dalam ATMega melalui programmer ISP (In System Programming) atau programmer paralel, seperti dijelaskan lebih lanjut di artikel “Programmer AVR“.
Bootloader ini memakai sebagian kecil memori flash, kurang lebih 512 byte, jadi memori aplikasi yang tersisa adalah 32 kilobyte dikurangi memori yang terpakai untuk bootloader. Diagram memori bootloader dan aplikasi dapat dilihat pada gambar berikut: