avrdude stk500_getsync()
Artikel sebelumnya telah membahas permasalahan dan solusi pada Arduino. Pembahasan artikel tersebut mengarah pada kesalahan penulisan kode. Artikel kali ini membahas permasalahan umum yang sering muncul pada Arduino. Namun permasalahan kali ini mengarah pada kesalahan komunikasi antara Komputer dengan Arduino. Kesalahan komunikasi atau Upload error tidaklah serumit kesalahan kode, namun karena sifatnya yang mengarah ke fisik, biasanya mengarah ke papan Arduino. Dan dalam kasus yang fatal, Mikrokontroller (MCU) harus diganti. Jika anda menemukan masalah seperti ini, jangan langsung mengambil kesimpulan terparah, pelajari dulu masalah yang menyebabkan kesalahan komunikasi tersebut. Artikel kali ini memaparkan permasalahan yang terjadi dan solusinya jika terjadi kesalahan avrdude: stk500_getsync(): not in sync: resp=0x00
.
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 uploading) tapi ternyata terjadi kesalahan sinkronisasi (not in sync). Keadaan seperti ini artinya kode berhasil dikompilasi 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?
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.
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 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.
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 bagi pengguna Linux dan Mac.
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.
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.
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.
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
.
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 maka IC akan 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 sumber listrik. 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¶
- Arduino Software Release Notes
- avrdude: stk500_getsync(): not in sync: resp=0x00
- Installing an Arduino Bootloader
- How to Install FTDI Drivers
- Fix Bootloader