Seperti telah kita ketahui bersama, ARDUINO sudah menjadi
standar belajar mikrokontroler. Pemula akan sangat senang belajar
mikrokontroler jika menggunakan ARDUINO. Hal tersebut dikarenakan banyaknya
library yang disediakan dan banyaknya dukungan hardware tambahan (shield) . Dari
keluarga ARDUINO yang paling banyak digunakan sekarang adalah ARDUINO UNO R3.
ARDUINO UNO R3 terdiri dari mikrokontroler ATmega328P sebagai inti dan
ATmega16U2 sebagai USB to Serial yang berguna untuk download program ke
ATmega328P dan juga berguna sebagai komunikasi ATmega328P ke PC. Untuk bekerja,
ATmega328P butuh program yang harus dimasukan ke dalam Flash-nya.
Ada beberapa cara memasukan (download) program ke dalam
ATmega328P, yaitu;
- Melalui Paralel programmer.
- Melalui ISP (in System Programmer), contoh programmernya; USBasp, UnivISP, AVR ISP MKII, JTAG IC, USB ISP, dan lain-lain.
- Melalui bootloader, ATMEL FLIP, ARDUINO dan lain-lain.
ATmega328P baru, dijual dalam keadaan Flash dan EEPROM yang
kosong, belum terisi program apapun. Mikro baru ini hanya bisa diisi dengan dua
cara pertama di atas yaitu; melalui paralel programmer atau ISP programmer. Ya
ATmega328P baru tidak dapat digunakan langsung pada ARDUINO. Mengapa? Karena programmer
melalui bootloader memerlukan suatu program di dalam mikrokontroler yang
menerima aliran data kemudian di masukan ke dalam Flash dalam alamat tertentu.
Untuk ARDUINO UNO R3 aliran data diterima melalui serial
port ATmega328P lalu disimpan pada alamat Flash 0000H, 0001H, …… dan
seterusnya. Contoh lain ARDUINO LEONARDO. ARDUINO LEONARDO menerima aliran data
langsung lewat USB lalu disimpan dalam alamat Flash. Nah proses menerima dan memasukan inilah tugas
program bootloader. Bootloader disimpan dalam Flash juga, tetapi pada alamat
atas, untuk ATmega328P ARDUINO UNO R3 pada alamat 7E00H sampai akhir alamat
Flash 7FFFH. Seperti anak tiri ya dikasih di ujung Flash. Ya karena fungsinya hanya untuk
memasukan program utama pada Flash, setelah itu tidak diperlukan lagi.
Dari PC program akan dialirkan ke ATmega328P melalui USB,
lalu diubah ke serial port yang selanjutnya diterima oleh bootloader
ATmega328P. Pada ARDUINO terdahulu, proses mengubah aliran data USB ke serial
port dilakukan oleh chip FT232RL produksi pabrik FTDI. Contohnya ARDUINO
DUEMILANOVE. Pada ARDUINO UNO R3 tugas mengubah aliran data dari USB ke serial
port dipercayakan kepada ATmega16U2.
Jika FT232RL adalah IC yang yang berfungsi seba USB to Serial, sedangkan
ATmega16U2 adalah mikrokontroler yang diprogram menjadi fungsi USB to serial.
Karena mikrokontroler ATmega16U2 dapat di modifikasi menjadi fungsi apapun
sesuai dengan kemauan pemrogram.
Jika kita membeli ARDUINO UNO R3 maka kita akan mendapatkan
satu board minimum yang telah tertanam ATmega16U2 dengan program USB to serial
dan ATmega328P dengan program bootloader. Board tersebut telah siap digunakan
untuk mendukung proyek-proyek anda. Dalam mengerjakan proyek tentu ada saja
komponen yang rusak atau program yang hilang. Mungkin pada suatu saat
ATmega328P pada ARDUINO rusak, atau bootloader pada ATmega328P hilang. Para pemula
akan binggung dan cukup panik jika hal ini terjadi, karena tidak cukup membeli
ATmega328P baru lalu dimasukan ke soket pada ARDUINO. Sebelum dapat digunakan dalam
board ARDUINO UNO R3, ATmega328P harus diprogram bootloader terlebihdahulu.
Banyak cara yang digunakan untuk memasukan bootloader ke ATmega328P,
diantaranya;
- Menggunakan downloader
konvensional.
Dengan programmer konvensional
kita dapat memrogram bootloader ke ATmega328P. Misalkan USBasp yang kita
gunakan. Yang dibutuhkan adalah; USBasp, kabel jumper, ARDUINO dengan ATmega328P
baru, serta PC. Rangkai seperti gambar di bawah
Buka sketch ARDUINO dan pastikan
Programmer adalah USBasp.
Selesai prose burning bootloader.
- Menggunakan bantuan
ARDUINO lain.
Cara yang ke-2 meminta pertolongan
ARDUINO yang lain yang digunakan sebagai downloader. Hubungkan ARDUINO yg di
tolong dan penolong seperti gambar di bawah ini:
Dan lakukan download
bootloader seperti cara nomer satu di atas. Untuk cara ini lebih jelasnya kunjungi
https://www.arduino.cc/en/Tutorial/ArduinoISP
- Menggunakan USB to serial
dijadikan programmer (AVR big bang programmer)
AVR big bang programmer adalah
cara memrogram AVR dengan memodifikasi USB to serial menjadi programmer. Port serial
terdapat beberapa pin data dan kendali, antara lain TX, RX, RTS, CTS, DTR.
Pin-pin tersebut dimanfaatkan sebagai pin-pin ISP yaitu MISO, MOSI, SCK dan
RESET. Pertama-tama ARDUINO dirangkai dengan USB to serial seperti berikut ini:
Setelah itu anda harus
memodifikasi file programmer.txt. Untuk lebih jelasnya silahkan kunjungi https://learn.adafruit.com/ftdi-friend/programming-the-arduino-bootloader
Satu lagi yang harus diketahui,
cara ini membutuhkan waktu yang sangat lama untuk memprogram dibandingkan jika
menggunakan programmer konvensional.
- Menggunakan ATmega16U2
sebagai programmer.
Cara ke empat ini memanfaatkan
ATmega16U2 yang merupakan mikrokontroler. Karena USB to serial berupa
mikrokontroler maka bisa dong ATmega16U2 diubah menjadi programmer. Satu yang
ada di internet adalah ATmega16U2 diubah menjadi AVRISP MKII. Prosesnya adalah
mengganti program USB to serial menjadi AVRISP MKII dengan bantuan bootloader
pada ATmega16U2. Ya ATmega16U2 juga dibekali dengan bootloader. Gunanya untuk
memasukan program selain menggunakan soket ICSP1.
Sebelum lebih jauh membahas proses
download dengan cara ini, terlebih dahulu kita bahas ARDUINO UNO R3 yang ada di
pasaran. Tidak semua ARDUINO UNO R3 yang ada di pasaran dapat menggunakan
bootloader ATmega16U2. Kalo program bootloader pasti terdapat pada semua
ATmega16U2 ARDUINO UNO R3. Lalu apanya? Ya fuse bit-nya. Fuse bit normalnya
adalah; Lfuse:0xFF Hfuse:0xD9 Efuse:0xF4 Lebih jelasnya seperti gambar di
bawah ini:
Tapi ada fuse ATmega16U2 ARDUINO
UNO R3 yang memiliki nilai; Lfuse:0xFF Hfuse:0xD9
Efuse:0xFC. Bedanya di mana? Mari kita
lihat gambar di bawah ini:
Perbedaannya ada pada HWBE. Jika menurut
versi asli ARDUINO HWBE aktif, sedang versi lainya HWBE tidak aktif. Jika HWBE
tidak aktif maka pada waktu booting ATmega16U2 tidak mungkin dapat masuk ke bootloader,
karena fuse HWBE yang akan mengarahkan reset ke bootloader. Trus bagaimana cara
mengecek ARDUINO-ku bisa masuk bootloader atau tidak? Caranya adalah sebagi
berikut:
- Hubungkan ARDUINO UNO R3
ke PC.
- Hubungkan pin5 dan pin6 pada
port ICSP1, lalu lepas. Tidak harus pake jumper. Cukup disentuh pakai ujung
tespen atau ujung cuter kedua pin tersebut bersamaan, dan tidak perlu
lama-lama.
ATmega16U2 akan reset dan karena pin
PD7 pull down oleh RN2D maka akan masuk ke bootloader. Pada PC bukan lagi
dikenali sebagai USB to serial tetapi ATmega16U2 di bawah driver libusb-win32
device atau PC minta install hardware baru jika belum dikenal.
Gambar di bawah ini device manager bila ATmega16U2 masuk ke bootloader mode.
Jika ARDUINO tetap dikenali sebagai
USB to serial seperti gambar di bawah ini maka berarti gagal masuk bootloader.
Kerugian jika tidak dapat masuk ke
bootloader adalah; tidak dapat menggunakan bootloader sebagai downloader
program ke dalam mikro ATmega16U2.
Keuntungannya adalah ARDUINO UNO
R3 tidak pernah masuk ke bootloader. ARDUINO UNO R3 akan tetap dikenali sebagai
USB to serial. Tentu tidak akan membingungkan pemula, tidak akan mengacaukan system
jika system menggunakan komunikasi USB to serial untuk mengirim/menerima data
dari PC.
Sepertinya cukup pengetahuan
tentang bootloader ARDUINO UNO R3. Selanjutnya bahasan tentang menggunakan
ATmega16U2 sebagai downloader. Yang perlu disiapkan adalah:
c. Tancapkan
ARDUNIO ke USB PC, hubungkan sesaat pin5
dan pin6 pada port ICSP1 agar masuk ke bootloader.
f.
Lepaskan ARDUINO UNO R3 dari USB dan
tancapkan lagi, dan wala….. jadi deh AVRISP MKII. Ya ARDUINO UNO R3 sudah jadi
AVRISP MKII.
g. Sebelum
dapat digunakan driver yg digunakan harus diubah ke libusb-win32 devices. Sebabnya
ARDUINO tidak kenal dengan jungo. Dengan bantuan zadig.exe kita rubah drivernya
menjadi libusb-win32 devices. Zadig dapat di
download di sini.
h. Sebagai
pin-pin programernya menggunakan pin-pin pada port ICSP1, dan satu pin JP2 sebagai reset. Karena
menggunakan JP2, sedangkan JP2 pada ARDUINO UNO R3 belum terdapat header-nya.
Beri header dulu seperti gambar di bawah ini
i. Lalu hubungkan pin-pin ICSP1 sebagai
pin-pin programmer AVRISP MKII ke pin-pin ISP ATmega328P seperti gambar di
bawah ini.
j. Pastikan board yang digunakan adalah ARDUINO UNO
dan Programmer-nya AVRISP mkII.
Untuk mengembalikan ATmega16U2
agar dapat menjadi USB to serial kembali maka langkahnya adalah:
- Masuk ke bootloader
kembali seperti cara di atas.
- Jalankan FLIP dan Load file
Arduino-usbserial-atmega16u2-Uno-Rev3.hex
- Run. Selesai
Untuk lebih jelasnya
cara ini bersumber dari:
dan
Kesimpulan
- Cara pertama mudah, tapi
perlu bantuan downloader. pada contoh perlu USBasp.
- Cara ke dua perlu
pertolongan ARDUINO UNO yang lain. Kalo Cuma punya satu harus pinjam teman
J.
- ARDUINO UNO R3 sudah gak
pake chip USB to serial. Dan juga harus sabar tingkat dewa karena
kecepatan download pake bigbang lama bro.
- Cara ke empat repot abis……!
Setelah selesai download harus ngembalikan ke USB to serial yang
merepotkan lagi. Jika ingin mengisi bootloader kembali, ya harus mulai
dari awal. Repoooot Bro.
Bagai mana agar tidak repot? Solusinya
ada di tutorial selanjutnya.
No comments:
Post a Comment