TAKEN FROM μDESK OF DEDE HENDRIONO

Solusi avrdude stk500_getsync() pada Arduino

Bagi para pemula seperti halnya penulis, pasti pernah merasakan atau bahkan sedang mengalami masalah kegagalan komunikasi antara Komputer (Arduino IDE) dengan papan Arduino. Kegagalan komunikasi ini membuat kode yang kita buat tidak bisa di upload ke papan Arduino. Ini yang pada artikel sebelumnya disebut Upload Error (Kesalahan Unggah). Ketika terjadi Upload Error maka kita dapat mengetahuinya dari kotak pesan kesalahan pada area hitam (text message console) seperti dibawah ini:

Done uploading.
avrdude: stk500_getsync(): not in sync: resp=0x00

Jika diperhatikan dari pesan kesalahan yang muncul maka kita dapat melihat status kode bahwa kode berhasil diupload (Done uploaing) tapi ternyata terjadi kesalahan sinkronisasi (not in sync). Keadaan seperti ini artinya kita berhasil mengkompilasi kode tapi gagal meng-upload kode ke dalam papan Arduino. Solusi permasalahan seperti ini sebenarnya mudah untuk dipecahkan dan dibawah ini dijelaskan permasalah dari yang sering terjadi hingga masalah yang terberat. Bagaimana solusi untuk permasalahan Upload Error ini?


Solusi Upload Error pada Arduino


[1] Driver USB to UART Tidak Terpasang

Permasalahan ini merupakan salah satu kasus yang populer, terutama bagi pengguna sistem operasi Windows. Hal ini terjadi karena jenis koneksi atau jenis chip yang digunakan untuk berkomunikasi antara komputer dengan mikrokontroler ternyata berbeda-beda.

Atmega16U2

Jika anda memiliki papan Arduino R3 Original ataupun Clone yang menggunakan konverter USB to Serial (UART) dengan chip Atmega16U2 maka biasanya tidak terjadi masalah komunikasi. Hal ini karena firmware Atmega16U2 yang digunakan sebagai media komunikasi (USB Serial Converter) akan mampu menciptakan Virtual COM Port dengan driver standar USB COM sehingga tidak membutuhkan driver eksternal.

Gambar 1. Arduino Uno dengan Chip Atmega16U2

Bagi anda pengguna Windows 8, ternyata driver Arduino (Arduino IDE Versi 1.0.5) belum tersertifikasi sehingga pada beberapa jenis papan Arduino masih saja mengalami kegagalan Upload. Untuk menyelesaikan masalah tersebut silahkan Unduh Arduino IDE 1.0.6 yang sudah diperbaiki Signatur Driver-nya atau tonton Video dibawah ini:

Chip FTDI FT232

Pada beberapa jenis papan Arduino masih ada yang menggunakan komunikasi USB to UART menggunakan chip FTDI atau FT232. Misal Arduino Nano buatan Gravitech, atau Arduino Pro Micro yang membutuhkan tambahan perangkat USB to UART yang biasanya direkomendasikan menggunakan FTDI Friend. Jenis komunikasi serial USB to UART yang menggunakan chip FTDI (biasanya FT232) memerlukan driver eksternal yang harus dipasang pada sistem operasi kita secara manual. Kita harus mengunduh driver-nya sendiri dan kemudian memasangnya pada komputer kita. Unduh driver FTDI FT232 disini.

Gambar 2. Arduino Nano dengan Chip FT232

Chip CH340

Komunikasi serial selain menggunakan FT232 ternyata baru-baru ini beredar papan Arduino murah dengan komunikasi serial menggunakan chip CH340. Chip jenis ini juga sama memerlukan driver eksternal untuk menciptakan Virtual COM Port yang berfungsi sebagai jalur komunkasi serial. Unduh driver CH340 dari situs resminya disini atau disini bagi pengguna Linux dan Mac.

Gambar 3. Arduino Uno dengan Chip CH340

Chip CH340 adalah jenis USB to UART yang belum lama digunakan. Chip CH340 lebih murah dari pada FT232 sehingga papan Arduino yang menggunakan chip China ini harganya lebih murah. Papan Arduino yang menggunakan Chip CH340 terkenal dengan nama produk DCcduino.

Jika kita berhasil memasang driver USB to UART pada komputer tapi ternyata masih muncul masalah avrdude: stk500_getsync(): not in sync: resp=0x00 maka kesalahan mungkin ada pada penjelasan berikutnya.


[2] Kesalahan Board dan Serial Port

Permasalahan ini adalah hal biasa, baik bagi pemula atau pun yang sudah profesional. Bagi pemula biasanya terjadi karena masih bingung dalam mengenali Arduino, tapi bagi profesional biasanya karena kurang teliti. Memiliki beberapa tipe papan Arduino kadang membuat proses pemindahan tipe papan Arduino menjadi terlupakan dan munculah kegagalan komunikasi. Solusinya mudah saja, setelah selesai menulis kode Arduino dan sebelum melakukan compile serta upload kode pastikan bahwa pemilihan papan Arduino pada perangkat lunak sudah sesuai dengan tipe papan Arduino yang akan menjadi target. Jika anda menggunakan Arduino Uno sebagai target, pastikan bahwa Arduino IDE juga di set pada Arduino Uno. Untuk menyesuaikan papan Arduino dengan Arduino IDE maka klik menu Tools > Board > Pilih sesuai dengan tipe Papan Arduino yang anda miliki.

Gambar 4. Sinkronisasi Papan Arduino

Setelah sinkronisasi tipe papan Arduino antara perangkat lunak dengan perangkat keras, maka selanjutnya memastikan jalur komunikasi serial yang digunakan antara komputer (Arduino IDE) dengan papan Arduino. Periksalah USB Serial Port (COM) yang digunakan oleh papan Arduino pada Device Manager di komputer anda.

Gambar 5. Arduino USB Serial Port

Setelah yakin dengan jalur komunikasi serial antara papan Arduino dengan komputer, maka selanjutnya menyamakan USB Serial Port antara yang ada pada Device Manager dengan Arduino IDE. Jika jalur komunikasi yang digunakan pada Device Manager adalah COM3 maka pastikan Arduino IDE juga menggunakan COM3. Klik menu Tools > Serial Port > Pilih COM yang digunakan sesuai dengan yang ada pada Device Manager.

Jika sinkronisasi antara komputer dengan papan Arduino sudah benar tapi ternyata masih muncul masalah avrdude: stk500_getsync(): not in sync: resp=0x00 maka kesalahan mungkin ada pada penjelasan berikutnya.


[3] Penggunaan Pin 0 (RX)

Permasalahan ini sepertinya bukan permasalahan populer karena memang jarang terjadi. Hal ini karena pin 0 (RX) yang tersedia pada Arduino jarang sekali digunakan. Hati-hatilah jika menggunakan pin 0, karena jika pin 0 ini terhubung dengan perangkat lain, baik itu sensor atau module maka akan terjadi kesalahan target data. Pin 0 (RX) itu sangat dibutuhkan pada saat proses upload data dari komputer ke chip mikrokontroler (misal ATmega328). Pin 0 Arduino adalah jalur penerimaan data dari komputer melalui chip USB to UART.

Gambar 6. Rangkaian Pin 0 dan Pin 1 pada Arduino

Pada gambar rangkaian diatas terlihat bahwa Pin 0 (RX) terhubung ke chip USB to UART yang ditahan dengan Resistor 1KOhm. Pada saat proses upload kode ke chip Arduino, maka Pin 0 ini digunakan sebagai jalur penerimaan data. Seandainya pin 0 terhubung lagi (dirangkai paralel) ke perangkat lain (module atau sensor) maka data yang seharusnya masuk ke chip Arduino justru terbagi menuju ke target lain. Makanya kemudian muncul pesan avrdude: stk500_getsync(): not in sync: resp=0x00.

Gambar 7. Pin RX TX pada Arduino Uno

Pastikan untuk tidak menggunakan (membebaskan) pin 0 (RX) pada saat proses upload kode ke Arduino. Jika setelah pin 0 (RX) ini dibebaskan tapi ternyata masih muncul masalah avrdude: stk500_getsync(): not in sync: resp=0x00 maka kesalahan mungkin ada pada penjelasan berikutnya.


[4] Arduino IDE Korup

Permasalahan ini bisa saja terjadi karena keadaan komputer yang tidak sehat baik dari sisi perangkat keras maupun dari sisi perangkat lunak. Pastikan bahwa perangkat keras pada komputer kita dalam keadaan baik terutama prosesor, RAM, ROM, BIOS, USB Port, atau perangkat keras yang lainnya. Perangkat keras atau hardware kita harus dalam keadaan sehat karena perangkat keras yang tidak sehat mempengaruhi kinerja perangkat lunak yang berjalan pada sistem operasi dan mempengaruhi kualitas komunikasi data antara komputer dengan papan Arduino.

Pastikan juga bahwa perangkat lunak yang ada pada komputer kita dalam keadaan sehat terutama Sistem Operasi dan Arduino IDE. Proses install dan uninstall perangkat lunak yang terlalu sering pada komputer juga mempengaruhi kesehatan sistem operasi. Pastikan tidak ada virus pada komputer kita, ini biasanya terjadi pada para pengguna sistem operasi Windows. Virus berpengaruh terhadap kinerja perangkat lunak bahkan bisa menyebabkan sistem operasi korup. Ketika sistem operasi tidak sehat maka perangkat lunak yang berjalan diatasnya juga tidak sehat, terutama Arduino IDE.

Untuk meyakinkan bahwa sebenarnya tidak ada masalah pada papan Arduino, maka cobalah papan Arduino pada komputer lain. Jika pada komputer lain ternyata papan Arduino berjalan baik, berarti masalah ada pada komputer kita. Cobalah untuk meng-uninstall (menghapus) perangkat lunak Arduino IDE pada komputer kita dan kemudian meng-install ulang. Hubungkan papan Arduino pada komputer kita dan cobalah untuk mengupload kode. Jika masih gagal juga berarti komputer kita tidak sehat, cobalah untuk menginstall ulang sistem operasi. Jika setelah install ulang sistem operasi dan perangkat lunak Arduino IDE masih tetap bermasalah, berarti perangkat keras kita ada yang tidak sehat terutama USB Port.

Jika setelah papan Arduino dicoba pada komputer lain tapi ternyata masih muncul masalah avrdude: stk500_getsync(): not in sync: resp=0x00 maka kesalahan mungkin ada pada penjelasan berikutnya.


[5] Bootloader Rusak atau Hilang

Akhirnya sampai juga pada permasalahan yang terberat. Permasalahan bootloader merupakan permasalahan yang rumit terutama bagi para pemula. Pada permasalahan yang sangat fatal, kita harus mengganti IC mikrokontroler, itu pun jika papan Arduino kita menggunakan IC jenis non-SMD. Jika jenisnya SMD, maka belilah papan Arduino baru. Tapi jangan cepat mengambil kesimpulan bahwa kita harus membeli papan baru, perhatikan gejalanya dan cobalah untuk memperbaikinya.

Apa Bootloader?

Bootloader pada dasarnya adalah file hex berukuran kecil yang akan berjalan saat kita menghidupkan papan Arduino. Bootloader hampir mirip dengan BIOS pada komputer. Sekarang perhatikan komputer anda. Jika kita membuat data pada perangkat lunak tertentu kemudian menyimpannya maka sebenarnya kita sedang meng-upload data pada IC (atau media pengimpanan) tertentu tetapi dilokasi yang telah ditetapkan tanpa harus menimpa BIOS. Demikian juga dengan Arduino, pada saat kita melakukan upload pada papan Arduino maka kode-kode hasil kompilasi tersebut akan disimpan pada memori IC tanpa menimpa bootloader. Jika proses upload sudah selesai makan IC akan dimatikan dan dihidupkan ulang untuk membaca kode-kode hasil kompilasi yang baru saja di upload ke dalam IC. Hal ini terjadi karena bootloader hanya berjalan saat papan dihidupkan. Setelah bootloader menjalankan tugasnya maka selanjutnya adalah kode-kode yang sudah tersimpan dalam memori akan dijalankan secara berulang dan terus menerus selama papan masih memiliki kekuatan (tersedia daya yang cukup). Jika bootloader hilang atau rusak, lalu apa yang akan mengatur semua proses yang terjadi?

Memeriksa Bootloader

Pemeriksaan bootloader secara visual sebenarnya mudah. Matikan sumber daya papan Arduino kemudian hidupkan lagi. Perhatikan led yang terhubung dengan pin 13 (tertulis huruf L), harusnya lampu led ini berkedip. Jika berkedip, maka bootloader dalam keadaan baik-baik saja. Jika tidak, maka bootloader mungkin hilang atau rusak. Jika permasalahan ini terjadi maka saya menyarankan anda untuk membaca artikel yang dibuat oleh Sparkfun dengan judul “Installing an Arduino Bootloader”. (Ah, itu berbahasa Inggris). Jika mau bersabar, penulis akan membahasnya pada artikel terpisah.


Referensi

  1. Arduino Software Release Notes
  2. avrdude: stk500_getsync(): not in sync: resp=0x00
  3. Error When Uploading a Sketch
  4. Installing an Arduino Bootloader
  5. How to Install FTDI Drivers
  6. Fix Bootloader

Artikel Terkait

Apa itu Arduino?

Arduino adalah pengendali mikro (mikrokontroler) papan tunggal yang bersifat open-source (sumber terbuka), diturunkan dan dikembangkan dari platform Wiring, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya menggunakan prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri dengan antar-muka diambil dari Processing....

Codebender Alternatif Arduino IDE

Biasanya kita menggunakan Arduino IDE standar bawaan Arduino yang sampai hari ini telah mencapai versi 1.0.5. Namun ternyata ada antarmuka Arduino IDE yang berbasis cloud web. Hal ini memudahkan kita untuk menulis kode-kode Arduino secara online, membagikan kepada orang lain atau berkontribusi pada kode-kode Arduino yang telah dibuat oleh pengguna lain didunia. Kita bisa secara langsung meng-upload kode kedalam papan Arduino yang kita miliki dan bahkan kita bisa meng-upload kode yang telah kita tulis menggunakan AVR Programmer....

Kesalahan dan Solusi Kode Arduino

Mencari kesalahan yang terjadi pada Arduino memang merupakan hal yang sangat menguras waktu dan pikiran, terkadang kita dibuat bingung dengan kesalahan tersebut. Entah itu kesalahan penulisan kode ataupun kesalahan komunikasi data. Walaupun perangkat lunak Arduino menyertakan konsol pesan (text message console) namun tetap saja kesalahan tersebut terkadang sulit untuk ditemukan. Untuk memudahkan dalam mencari dan menemukan kesalahan, artikel kali ini akan membahas cara menyederhanakan kesalahan-kesalahan yang terjadi pada Arduino agar lebih mudah dalam menemukan dan menyelesaikan permasalahan pada kode Arduino....

Mengenal Arduino Leonardo

Arduino Leonardo adalah papan mikrokontroler berbasis ATmega32u4. Arduino Leonardo memiliki 20 digital pin input/output (yang mana 7 pin dapat digunakan sebagai output PWM dan 12 pin sebagai input analog), 16 MHz kristal osilator, koneksi micro USB, jack power suplai tegangan, header ICSP, dan tombol reset. Ini semua yang diperlukan untuk mendukung mikrokontroler. Cukup dengan menghubungkannya ke komputer melalui kabel USB atau power dengan adaptor AC-DC atau baterai untuk mulai mengaktifkannya....

Mengenal Arduino Mega2560

Arduino Mega2560 adalah papan mikrokontroler berbasiskan ATmega2560 (datasheet ATmega2560). Arduino Mega2560 memiliki 54 pin digital input/output, dimana 15 pin dapat digunakan sebagai output PWM, 16 pin sebagai input analog, dan 4 pin sebagai UART (port serial hardware), 16 MHz kristal osilator, koneksi USB, jack power, header ICSP, dan tombol reset. Ini semua yang diperlukan untuk mendukung mikrokontroler. ...

Memilih Arduino Uno Untuk Pemula

Arduino Uno Original, Arduino Compatible dan Arduino Clone menjadi sangat membingungkan bagi para pemula yang hendak belajar tentang pemrograman Arduino. Arikel ini membahas tips dan trik menentukan pilihan papan Arduino Uno yang tepat terutama bagi pemula. Tepat sesuai dengan tujuan penggunaan dan tepat sesuai dengan dana yang dimiliki oleh penggunanya. Informasi tentang jenis-jenis Arduino yang ada dipasaran Indonesia tidak terlalu jelas, bahkan beberapa penjual Arduino sengaja tidak memberikan informasi detail tentang Arduino Uno yang dijualnya....

Mengenal Arduino Nano

Papan pengembangan elektronika mikrokontroler yang diberi nama Arduino ini memiliki banyak sekali turunannya. Baik itu yang diturunkan langsung dari pihak Arduino sendiri atau pihak ketiga yang ikut mengembangkan papan Arduino. Hal ini karena Arduino bersifat Open Source Hardware (OSH), karena sifatnya yang terbuka ini maka membuat para pengembang tidak perlu takut dengan Hak Atas Kekayaan Intelektual. Siapapun dapat membangun papan Arduino dengan versi sendiri dan disesuaikan dengan kebutuhan sendiri atau bahkan disesuaikan dengan dana yang dimiliki, namun tetap bekerja normal layaknya papan Arduino aslinya. Salah satu papan Arduino yang dikembangkan pihak ke tiga dan dapat diterima oleh pasar dengan baik adalah Arduino Nano. Seperti apa Arduino Nano?...

Mengenal Arduino Pro Mini

Satu lagi anggota keluarga Arduino yang cukup populer, yaitu Arduino Pro Mini. Merupakan keluarga Arduino yang murah, sederhana dan ukurannya yang kecil membuat popularitas Arduino Pro Mini hampir mengalahkan Arduino Uno. Selain itu, Arduino Pro Mini hadir dalam 2 versi yaitu versi 3,3 Volt 8 Mhz dan versi 5 Volt 16 MHz yang membuatnya mudah untuk dipilih sesuai kebutuhan. Dimensi yang kecil membuat Arduino Pro Mini bisa langsung ditanamkan pada proyek-proyek robotika. Kelemahan Arduino Pro Mini adalah tidak ditanamkannya USB Adapter pada papan sehingga para pengguna harus menyediakan sendiri USB Adapter terpisah....

Mengenal Arduino Uno

Arduino Uno adalah papan mikrokontroler berbasis ATmega328. Arduino Uno memiliki 14 digital pin input/output, dimana 6 pin digunakan sebagai output PWM, 6 pin input analog, 16 MHz resonator keramik, koneksi USB, jack catu daya eksternal, header ICSP, dan tombol reset. Sebuah ATmega16U2 yang terdapat pada papan digunakan sebagai media komunikasi serial melalui USB dan muncul pada hardware komputer sebagai COM Port Virtual untuk berkomunikasi dengan perangkat lunak pada komputer. Firmware 16U2 menggunakan driver standar USB COM, sehingga tidak membutuhkan driver eksternal....

Silahkan Berkomentar