Friday, June 10, 2016

ASPduino

Baca sampai habis dulu ya. Unduh di sini
ARDUINO UNO R3 menggunakan mikrokontroler ATmega16U2 sebagai fungsi USB to serial. Karena mikrokontroler maka fungsinya juga dapat di ubah sebagai downloader. Downloader tersebut dapat digunakan untuk menulis bootloader ATmega328P pada ARDUINO tersebut dan juga dapat digunakan untuk download mikrokontroler AVR yang lain. ATmega16U2 diprogram sebagai:
  1.  ATmega16U2 berfungsi sebagai USB to serial seperti lazimnya ARDUINO UNO R3
  2.  Jika dibutuhkan, ATmega16U2 dapat berfungsi sebagai USBasp.
Switching atara fungsi USB to serial dengan USBasp cukup dilakukan dengan mudah yaitu cukup menancapkan Konektor tanpa harus mencabut USB dari PC. Dipilihnya USBasp adalah karena dukungan software yang banyak.  Anda tidak perlu susah-susah untuk mebeli USBasp karena cukup ARDUINO UNO R3 sudah dapat difungsikan sebagai ARDUINO juga USBasp. Untuk membuatnya tambahkan dahulu header pada konektor JP2 seperti Gambar di bawah ini:



Masukan program ASPduino.hex (firmware, gratis 10x pakai) yang terlampir ke mikro ATmega16U2 ARDUINO. Anda dapat menggunakan downloader yang  ada, misalkan USBasp, USBISP atau bisa juga dengan ARDUINO yang lain. Hubungkan MISO, MOSI, SCK, RESET, GROUND dan Vcc pada ARDUINO ke USBasp. Seperti Gambar di bawah ini:



Hubungkan USBasp ke USB PC. Buka AVR programmer. Anda dapat menggunakan berbagai macam aplikasi programmer. Yang digunakan pada tutorial ini adalah PROGISP (ver 1.72).


Langkahnya adalah sebagai berikut:
  1. Buka aplikasi PROGISP
  2. Pilih mikrokontroler ATmega16U2
  3. Tekan tombol RD untuk memastikan PROGISP dapat membaca ID mikrokontroler dan memastikan bahwa mikrokontroler tersebut adalah ATmega16U2, dengan ditandai Read ID Succesfully.
  4. Pastikan yang tercentang pada check box; Chip Erase, Program FLASH dan Verify FLASH.
  5. Tekan Auto dan selesai.
Lepaskan ARDUINO UNO R3 dari USBasp lalu tancapkan pada USB PC, buka Device Manager. Pada PC akan dikenali sebagai;
- Arduino Uno (COMx) atau
-Arduino UNO R3 (COMx) atau
- Serial Port (COMx) atau apapun sebagai port serial (COM)


Lho..kok sama saja dengan ARDUINO UNO R3 sebelumnya? Apa yang berubah? Jawabannya ada di bawah. Biasakan untuk sabar ya J
Mari kita hubungkan port-port dalam ICSP dan ICSP1 seperti gambar berikut ini:



Sekarang coba anda lihat Device Manager. Lho Arduino Uno (COM5) hilang dari Device Manager. Apa kurang benar hubungan USB-nya? Sebentar coba lihat lagi. Ada hardware USBasp terdaftar pada Device Manager. Apa ARDUINO UNO R3 berubah jadi USBasp? Jawabannya BENAR. Dengan formasi hubungan pin-pin ICSP dan ICSP1 di atas ATmega16U2 berfungsi sebagai pengganti master ATmega8 dalam USBasp standard. Dan ATmega328P adalah IC mikrokontroler yang siap untuk di-diwnload.



Sekarang cabut jumper yang menghubungkan JP2.PIN2 dengan JP2.PIN4, tanpa mencabut USB dari ARDUINO UNO R3. Difinisi ARDUINO UNO R3 anda akan kembali ke USB to serial (normal) kembali. Anda dapat mencoba menancapkan kembali jemper JP2.PIN2 dengan JP2.PIN4, dan akan kembali ARDUINO UNO R3 anda berubah menjadi USBasp lagi, tanpa perlu mencabut USB, apa lagi merubah2 program ATmega16U2 lagi. COOOL kan?! J

Port JP2 dan ICSP1 sekarang menjadi Port-port USBasp.
  
  1. Pin1 ICSP1 berguna sebagai MISO
  2. Pin4 ICSP1 berguna sebagai MOSI
  3. Pin3 ICSP1 berguna sebagai SCK
  4. Pin1 JP2 berguna sebagai RESET
  5. Pin2 dan Pin4 Jika dihubungkan ARDUINO UNO R3 anda akan berubah menjadi USBasp dan jika dibiarkan terbuka akan tetap menjadi ARDUINO UNO R3
  6. Pin3 dapat digunakan menjadi GND jika akan mendownload IC mikrokontroler diluar board ARDUINO UNO R3 tersebut.

Sekarang kita coba untuk memasukan bootloader ke mikrokontroler ATmega328P baru yang belum ada bootloadernya.
  1. Hubungkan Port JP2, ICSP1 dengan ICSP seperti petunjuk di atas.


  1. Buka sketch baru. Yang dapat dipakai adalah versi 1.0 ke atas, karena di bawah versi tersebut belum mendukung USBasp. Pilih Board-nya adalah Arduino Uno dan Programmer adalah USBasp.



  1. Lalu tekan Burn Bootloader, tunggu hingga ada pesan penulisan bootloader selesai (done burning bootloader)

  1. Cabut jamper-jamper yang menghubungkan Port JP2, ICSP1 dengan ICSP. Anda tidak usah mencabut USB. Dan ARDUINO UNO R3 anda telah kembali dikenali sedagai USB to serial. ATmega328P juga telah berisi bootloader. Sekarang waktunya mencobanya. Buka sketch Blink dan Upload. Selamat berhasil… J.
 

Untuk memudahkan agar tidak harus mengingat-ingat pin apa terhubung ke pin apa, lebih mudah jika pin-pin tersebut di gabung dalam kabel konektor seperti berikut ini:


Oh iya ada yang tanya, gimana ngriping kabelnya? Gak usah susah-susah, 7 kabel jumper female to female kita dapatkan dari kabel 40pin female to female, yang menjual ketengan juga ada.
 
Ambil 7 kabel, lepaskan black housing bawannya semua. Ganti dengan 2x3 black housing dan diujung lain dengan 2x4 black housing.


Bahan yang diperlukan adalah:
  1. Kabel jamper female to female 7pcs
  2. Black housing 1x3 dua dan 1x4 dua. Jika ada lebih baik black housing 2x3 dan 2x4. Sayangnya di Indonesia tidak ada yang jual.
  3. Double tape, jika tidak ada black housing 2x3 dan 2x4.
Rangkai dua black housing 1x3 menjadi black housing 2x3 dan dua black housing 1x4 menjadi black housing 2x4. (nunggu juragan2 toped ngimpor nih barang J)
Untuk mempermudah, berikut ini peta hubungan antara black housing 2x4 dengan black housing 2x3.

Switch digunakan untuk mengubah ARDUINO UNO R3 menjadi USBasp jika dihubungkan dan USB to serial jika tidak dihubungkan. Kalo digunakan untuk download ATmega328P pada board yg sama, Gnd dan Vcc tidak harus dihubungkan.

ARDUINO UNO R3 menjadi USB to serial jika konektor 2x4pin tidak terhubung



ARDUINO UNO R3 menjadi USBasp jika konektor 2x4pin terhubung

 

Selain kepraktisan di atas, USBasp-nya punya kelemahan yaitu tidak semua aplikasi di internet dapat menulis EEPROM mikrokontroler yang akan di download, tapi jika hanya untuk download FLASH bisa. Diantaranya yang tidak bisa adalah; progisp, extremburner, khazama dan lain-lain. Sebabnya program-program tersebut mengirim 100H x byte data EEPROM yang harus di tulis pada mikrokontroler. Tentu memerlukan waktu lebih dari 1detik. Sedangkan ATmega16U2 menggunakan USB 2.0 dan memiliki timeout sekitar 260ms. Tentu akan membangkitkan timeout.

Tapi tenang saja aplikasi yang lancar menggunakan USBasp ini banyak dan mainstream, selain ARDUINO adalah program-program yang berbasis AVRDUDE. Ada avrdudess, GUI4avrdude dll. Sebabnya avrdude Cuma mengirim 4 byte data sekali tulis ke EEPROM. Bahkan jika gagal menulis 4 byte tersebut, avrdude akan menulis satu persatu EEPROM. ARDUINO berbasis pada AVRDUDES tentu lancar.
Oh ya setelah berhasil membuatnya, anda bisa menggunakan sebagai USBasp 10x gratis. Setelah itu ARDUINO UNO R3 anda akan tetap menjadi USB to serial walaupun konektor atau switch dihubungkan.  Jika ingin menggunakannya kembali anda harus memasukan Passcode. Untuk memasukan ikuti langkah-langkah berikut;
  1. ARDUINO UNO R3 anda sebagai USB to serial. Lepaskan konektor 2x4pin
  2. Buka aplikasi ASPduino yang disertakan pada paket firmware. Buka serial tempat arduino terhubung.

  1. Generate Code. Copy kode yang tampil dan kirim pesan ke https://www.facebook.com/adhopraz atau WA ke 087859746799


  1. Nanti jawaban dari saya adalah berupa kode yang dimasukan ke edit Passcode. Missal:
B01AF774A3C7B567BFC3FEE382CF729E00FA1CC1E0558D0693C1

  1. Kode tersebut masukan ke edit passcode dan tekan tombol Pass Code.

  1. Tidak langsung dimasukan pada kesempatan yang sama juga tidak apa-apa, asalkan board ARDUINO-nya sama. Siapa tahu jawaban saya baru 1-2hari. Misalkan kemarin ngirim code baru hari ini terima passcode. Langsung saja masukan passcode setelah serial terhubung dan tekan Pass Code.
 

  1. Dan hasilnya adalah:

Jika status PASS maka tidak ada batasan lagi anda menggunakannya. Simpan Pass Code yang anda terima. Satu kode akan berlaku untuk satu board dengan ATmega16U2 yang sama. Mahar Pass Code murah cuma seharga satu bungkus nasi padang @Rp10.000 beli 10 @Rp5.000.

MAJULAH EMBEDED INDONESIA





Baca SelengkapnyaASPduino

Tuesday, June 7, 2016

Sekilas ARDUINO UNO R3 dan Pemrogramman bootloadernya

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.

ARDUINO UNO R3
Ada beberapa cara memasukan (download) program ke dalam ATmega328P, yaitu;

  1. Melalui Paralel programmer.
  2. Melalui ISP (in System Programmer), contoh programmernya; USBasp, UnivISP, AVR ISP MKII, JTAG IC, USB ISP, dan lain-lain.
  3. 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;
  1. 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.

Lalu tekan Burn Bootloader hingga terdapat pesan Done burning bootloader.





Selesai prose burning bootloader.

  1. 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:

Buka sketch, pastikan programmer-nya adalah Arduino as ISP





Dan lakukan download bootloader seperti cara nomer satu di atas. Untuk cara ini lebih jelasnya kunjungi https://www.arduino.cc/en/Tutorial/ArduinoISP

  1. 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.

  1. 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:
  1. Hubungkan ARDUINO UNO R3 ke PC.
  2. 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:
a.       Download aplikasi FLIP http://www.atmel.com/tools/FLIP.aspx dan instal pada PC.
b.      Download file hex AVRISP MKII
c.       Tancapkan ARDUNIO ke USB PC, hubungkan sesaat  pin5 dan pin6 pada port ICSP1 agar masuk ke bootloader.
d.      Buka aplikasi FLIP, select device dan pilih ATmega16U2, communication pilih USB dan Open
                      

e.      Load Hex file AVRISP MKII yang kita download tadi, dan Run.                                                                                          

                                    

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.

                                             

k. Lalu tekan Burn Bootloader dan selesai.

Untuk mengembalikan ATmega16U2 agar dapat menjadi USB to serial kembali maka langkahnya adalah:
  1. Masuk ke bootloader kembali seperti cara di atas.
  2. Jalankan FLIP dan Load file Arduino-usbserial-atmega16u2-Uno-Rev3.hex
  3. Run. Selesai

Untuk lebih jelasnya cara ini bersumber dari:
dan


Kesimpulan
  1. Cara pertama mudah, tapi perlu bantuan downloader. pada contoh perlu USBasp.
  2. Cara ke dua perlu pertolongan ARDUINO UNO yang lain. Kalo Cuma punya satu harus pinjam teman J.
  3. ARDUINO UNO R3 sudah gak pake chip USB to serial. Dan juga harus sabar tingkat dewa karena kecepatan download pake bigbang lama bro.
  4. 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. 
Baca SelengkapnyaSekilas ARDUINO UNO R3 dan Pemrogramman bootloadernya