Failed Uploading: No Upload Port Provided? Cara Mengatasi Kode Arduino yang Gagal Di-upload
Arduino menampilkan no upload port provided atau avrdude not in sync? Atasi port COM yang tidak muncul, driver CH340, Old Bootloader di Nano, tombol BOOT ESP32, dan BOOTSEL di Pico.
Kode Arduino tidak mau ter-upload dan muncul error avrdude berwarna merah di jendela output? Tenang: hampir tidak ada masalah seperti ini yang berarti board-mu rusak. Penyebabnya adalah kabel USB yang hanya untuk mengecas, driver CH340 yang belum terinstal, board atau port yang salah, modul yang terhubung ke pin 0 dan 1, atau program lain yang sedang memakai port. Periksa semuanya dengan urutan yang benar dan biasanya masalahnya beres dalam beberapa menit; bahkan kalau board-nya memang rusak, ada cara sederhana untuk membuktikannya.
Di panduan ini kamu akan melihat dulu apa yang terjadi di balik layar ketika upload dan cara membaca pesan error-nya. Setelah itu kita persempit masalahnya langkah demi langkah dengan tabel diagnosis berisi gejala, penyebab, dan solusi. Kami juga membahas pengaturan ATmega328P (Old Bootloader) di Arduino Nano, Serial Monitor dan program lain yang mengunci port, error Failed to connect di ESP32 dan tombol BOOT, serta metode BOOTSEL dan UF2 di Raspberry Pi Pico. Setiap bagian dilengkapi sketch uji singkat supaya kamu bisa mengecek board-mu setelah masalahnya selesai.

Cara kerja upload: error kompilasi atau error upload?
Ketika kamu menekan Upload, ada dua hal terpisah yang terjadi. Pertama, IDE mengompilasi kodemu; kalau berhasil, jendela output menampilkan baris yang memberi tahu berapa byte yang dipakai sketch (Sketch uses 924 bytes). Lalu program bernama avrdude membuka port yang kamu pilih, me-restart board dengan sinyal DTR, dan berjabat tangan dengan program pemuat kecil di dalam board, yaitu bootloader. Setelah reset, bootloader hanya mendengarkan selama kira-kira satu detik; kalau tidak ada data yang datang, program lama di board terus berjalan. Pesan error memberi tahu mata rantai mana yang putus. Kalau tulisan merah muncul ketika kompilasi, masalahnya ada di kodemu dan tidak ada hubungannya dengan board atau kabel.
| Tahap | Yang terjadi | Pesan yang muncul kalau gagal |
|---|---|---|
| 1. Kompilasi | Kode diterjemahkan menjadi kode mesin untuk prosesor | Compilation error: 'x' was not declared in this scope (error di kode, bukan masalah upload) |
| 2. Membuka port | IDE membuka port COM yang dipilih | “no upload port provided, can't open device, Access is denied” |
| 3. Reset | Sinyal DTR me-restart board | “programmer is not responding” |
| 4. Jabat tangan | avrdude dan bootloader menyelaraskan diri | “stk500_getsync(): not in sync: resp=0x00” |
| 5. Tulis dan verifikasi | Program ditulis ke flash, dibaca kembali, lalu dibandingkan | “verification error, first mismatch at byte” |
Error avrdude yang paling umum dan artinya
| Pesan error (bagian kunci) | Artinya | Yang dicek lebih dulu |
|---|---|---|
| “stk500_recv(): programmer is not responding” | Port terbuka, tetapi board tidak pernah menjawab | Pilihan port, kabel, pin 0 dan 1, Old Bootloader di Nano |
| “stk500_getsync() attempt 1 of 10: not in sync: resp=0x00” | Tidak ada data di jalur, bootloader tidak pernah ikut berjabat tangan | Pengaturan Processor, auto-reset, bootloader |
| not in sync: nilai selain resp=0x00 (misalnya 0xfe) | Ada yang menjawab, tetapi bukan bootloader | Modul di pin 0, output serial dari sketch yang sedang berjalan, baud rate tidak cocok |
| “ser_open(): can't open device "\\.\COM3": Access is denied.” | Program lain sedang memakai port | Serial Monitor, jendela IDE kedua, PuTTY, Cura, dan program sejenis |
| “ser_open(): can't open device ... The system cannot find the file specified.” | Port yang dipilih sudah tidak ada | Board tercabut atau nomor port berubah; pilih port lagi |
| “Failed uploading: no upload port provided” | Belum ada port yang dipilih sama sekali | Tools > Port atau pemilih board di bagian atas |
| “Device signature = 0x1e950f ... Expected signature for ATmega2560” | Chip board yang dipilih berbeda dengan chip yang terpasang | Pilih board target dengan benar di menu board (0x1e950f adalah ID ATmega328P); baris ini biasanya muncul ketika burn bootloader lewat ISP |
| “stk500v2_ReceiveMessage(): timeout” | Mega 2560 dipilih, tetapi board tidak menjawab | Apakah board-nya benar-benar Mega, dan apakah port-nya benar? |
| “verification error, first mismatch at byte 0x0000” | Yang ditulis berbeda dengan yang dibaca kembali | Kabel, USB hub, catu daya lemah, flash yang sudah aus |
Tabel diagnosis langkah demi langkah: gejala, penyebab, solusi
Baca tabel dari atas ke bawah; baris-baris pertama adalah masalah yang paling umum dan paling mudah diatasi. Coba upload lagi setelah setiap perubahan. Kalau kamu mengubah beberapa hal sekaligus, kamu tidak akan pernah tahu mana yang menyelesaikannya, dan error yang sama akan menjebakmu lagi lain kali.
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Tidak ada LED yang menyala ketika board dicolokkan | Port USB atau kabel tidak memberi daya, atau ada korsleting di board | Coba port dan kabel lain, lepas semua modul, ukur antara 5V dan GND |
| LED power menyala, tetapi Tools > Port abu-abu atau kosong | Kabel khusus cas atau driver belum terinstal | Pakai kabel data; kalau Device Manager menampilkan USB2.0-Serial dengan tanda kuning, instal driver CH340 |
| Ada beberapa port COM di daftar | Port virtual dari Bluetooth dan sistem | Cabut lalu colokkan lagi board-nya, pilih port yang hilang lalu muncul kembali |
| “Failed uploading: no upload port provided” | Belum ada port yang dipilih | Pilih port di pemilih board di bagian atas atau di Tools > Port |
| Access is denied, port sedang dipakai | Port terbuka di program lain | Tutup jendela IDE kedua, Serial Plotter, PuTTY, Cura, dan skrip Python, lalu colokkan ulang board-nya |
| not in sync: resp=0x00 di Nano | Board memakai bootloader lama | Tools > Processor > ATmega328P (Old Bootloader) |
| Error yang sama dengan modul di D0 atau D1 | Modul berkomunikasi di jalur serial dan merusak jabat tangan | Cabut kabel D0 dan D1 ketika upload, pindahkan modul ke pin lain dengan SoftwareSerial |
| Error yang sama tanpa ada yang terhubung | Board atau port salah, auto-reset rusak, bootloader terhapus | Cek pengaturan, coba reset manual, jalankan loopback test, burn bootloader jika perlu |
| ID tak terduga di baris Device signature | Model yang salah dipilih di menu board | Pilih board yang sesuai dengan tulisan yang tercetak di chip |
| Upload berhenti di tengah jalan, verification error | Kabel jelek, USB hub, arus yang ditarik motor atau servo | Kabel pendek berkualitas bagus, port langsung di komputer, daya eksternal untuk motor |
| Komputer mematikan port USB ketika board dicolokkan | Korsleting atau arus berlebih di rangkaian | Lepas semua kabel, uji board sendirian, pasang lagi rangkaiannya sedikit demi sedikit |
| ESP32: Connecting... lalu Failed to connect | Board tidak bisa masuk ke mode download | Tahan tombol BOOT ketika Connecting muncul |
| Pico: tidak ada port atau No drive to deploy | Board tidak dalam mode BOOTSEL | Tahan BOOTSEL sambil mencolokkan kabel USB |
Daftar periksa cepat dan sketch uji upload
- Lepas semuanya dari board: shield, modul, dan kabel di pin 0 dan 1. Sisakan hanya kabel USB yang terhubung.
- Colokkan board langsung ke port USB di bagian belakang komputer; hindari hub, kabel perpanjangan, dan soket di panel depan.
- Buka Tools > Port dan lihat daftarnya. Cabut lalu colokkan lagi board-nya dan catat port mana yang hilang lalu muncul kembali. Kalau daftarnya tidak pernah berubah, masalahnya ada di kabel atau driver.
- Pilih model board-mu yang tepat di Tools > Board; untuk Nano, pilih juga bootloader yang benar di Tools > Processor.
- Pastikan tidak ada program lain atau jendela IDE kedua yang memakai port; kalau ragu, tutup semuanya.
- Aktifkan verbose output untuk upload lalu upload sketch uji kecil di bawah ini. Menguji dengan kode yang kamu tahu bebas error menyingkirkan kemungkinan masalah kompilasi.
- Masih gagal? Tekan tombol reset: kalau LED L berkedip cepat sekali atau beberapa kali, bootloader-nya masih hidup. Setelah itu lanjut ke loopback test di bawah.
- Coba komputer lain atau board lain. Kalau masalahnya ikut board, berarti ada di board; kalau tetap di komputer, berarti ada di driver atau pengaturan sistem operasi.
1// Yükleme testi: LED yanıp söner, sayaç yazılır / Upload test: blinks the LED, prints a counter
2unsigned long sayac = 0; // çalışma sayacı / run counter
3
4void setup() {
5 pinMode(LED_BUILTIN, OUTPUT); // Uno ve Nano'da pin 13 / pin 13 on Uno and Nano
6 Serial.begin(9600);
7 Serial.println("Yukleme basarili / Upload OK");
8}
9
10void loop() {
11 digitalWrite(LED_BUILTIN, HIGH);
12 delay(200); // yanma süresi: değiştirip tekrar yükle / on time: change it and re-upload
13 digitalWrite(LED_BUILTIN, LOW);
14 delay(800);
15 Serial.println(sayac++); // Seri Monitör 9600 baud / Serial Monitor at 9600 baud
16}Kalau upload berhasil, LED L berkedip sebentar lalu mati lebih lama, dan penghitungnya naik ketika kamu membuka Serial Monitor di 9600 baud. Untuk memastikan kode baru benar-benar sampai ke board, ubah delay(200) menjadi delay(50) lalu upload lagi: kalau ritme kedipannya tidak berubah, program lama masih berjalan. Kalau kamu melihat karakter acak di Serial Monitor, pengaturan baud rate Serial Monitor tidak cocok dengan kodenya; itu bukan error upload.
Port COM tidak muncul: kabel USB dan driver CH340, CP2102
Kalau menu port abu-abu atau kosong, kabel adalah tersangka pertama. Banyak kabel tipis bawaan charger ponsel hanya punya dua kabel daya; kabel data D+ dan D- sama sekali tidak ada. Dengan kabel seperti itu, LED power board tetap menyala, yang bisa menyesatkan, tetapi komputer tidak melihat perangkat apa pun dan bahkan tidak memutar suara koneksi. Uji kabelmu dengan mentransfer file ke ponsel atau dengan board lain yang kamu tahu berfungsi. Kabel tipe B yang tebal milik Uno jarang bermasalah seperti ini; masalah ini sangat umum di kabel mini USB Nano serta kabel micro USB atau USB-C board ESP32 dan Pico.
Kalau kabelnya baik, driver adalah tersangka kedua. Baca tulisan di chip sebelah soket USB: board Arduino Uno dan Mega original memakai ATmega16U2, board Uno dan Nano klon kebanyakan memakai CH340G atau CH340C, dan board pengembangan ESP32 biasanya memakai CP2102 atau CH340. Di Windows, buka Device Manager: kalau board dikenali, board akan muncul di bawah Ports (COM & LPT). Kalau kamu melihat USB2.0-Serial dengan tanda seru kuning di bawah Other devices, driver CH340 belum terinstal.

| Chip USB | Ada di | Nama di Windows | Nama port di macOS dan Linux |
|---|---|---|---|
| ATmega16U2 | Uno R3 original, Mega 2560 | Arduino Uno (COMx) | /dev/cu.usbmodem… (macOS), /dev/ttyACM0 (Linux) |
| CH340G, CH340C | Uno, Nano, Mega klon, sebagian board ESP32 | USB-SERIAL CH340 (COMx) | /dev/cu.usbserial-… (macOS), /dev/ttyUSB0 (Linux) |
| CP2102, CP2104 | ESP32 DevKit, NodeMCU | “Silicon Labs CP210x USB to UART Bridge (COMx)” | /dev/cu.SLAB_USBtoUART atau /dev/cu.usbserial-… (macOS), /dev/ttyUSB0 (Linux) |
| FT232RL | Nano original lama, adaptor FTDI | USB Serial Port (COMx) | /dev/cu.usbserial-… (macOS), /dev/ttyUSB0 (Linux) |
| CH9102 | Board pengembangan ESP32 yang lebih baru | USB-Enhanced-SERIAL CH9102 (COMx) | /dev/cu.wchusbserial… atau /dev/cu.usbmodem… (macOS), /dev/ttyACM0 (Linux) |
| USB native (RP2040, ATmega32U4) | Raspberry Pi Pico, Leonardo, Micro | USB Serial Device atau nama board (COMx) | /dev/cu.usbmodem… (macOS), /dev/ttyACM0 (Linux) |
Windows 10 dan 11 biasanya menginstal driver CH340 dan CP2102 sendiri lewat Windows Update. Kalau tidak, unduh driver CH341SER untuk CH340 atau driver CP210x VCP untuk CP2102 dari situs pembuat chip-nya, instal, lalu cabut dan colokkan lagi board-nya. Versi macOS terbaru sudah menyertakan driver untuk kedua chip; menumpuk driver lama dari berbagai sumber biasanya malah memperburuk keadaan. Di Linux, driver-nya sudah ada di kernel, tetapi untuk memakai port kamu harus menambahkan user-mu ke grup dialout (sudo usermod -a -G dialout $USER) lalu log out dan masuk lagi; kalau tidak, kamu akan mendapat error Permission denied. Kalau port langsung hilang setelah board CH340 dicolokkan di Ubuntu 22.04 atau yang lebih baru, biang keladinya biasanya paket pembaca layar brltty; kalau kamu tidak memakainya, hapus dengan sudo apt remove brltty.
Board, processor, atau port yang dipilih salah
Di Arduino IDE 2, board dan port dipilih dari drop-down di bilah atas atau dari menu Tools > Board dan Tools > Port. Di Windows kamu mungkin melihat COM1 atau beberapa port Bluetooth virtual di daftar; cara termudah menemukan yang benar adalah mencabut board dan melihat port mana yang hilang. Kalau model yang salah dipilih di menu board, misalnya Mega dan bukan Uno atau Leonardo dan bukan Nano, avrdude tidak mendapat jawaban sama sekali atau melihat ID chip yang tak terduga di baris Device signature. Satu hal lagi: pakai Ctrl+U untuk upload biasa. Sketch > Upload Using Programmer mengharapkan programmer ISP eksternal dan, kalau berhasil, menghapus bootloader di board; setelah itu board tidak lagi menerima upload lewat USB.
Arduino Nano tidak mau di-upload: ATmega328P (Old Bootloader)
Sebagian besar board Nano murah di pasaran adalah klon berbasis CH340, dan banyak di antaranya masih memakai bootloader lama. Di awal 2018, Arduino mengganti bootloader Nano dengan Optiboot yang lebih kecil dan lebih cepat seperti di Uno, dan sejak itu opsi bawaan ATmega328P di IDE berkomunikasi di 115200 baud. Bootloader lama mengharapkan 57600 baud. Ketika kecepatannya tidak cocok, board seolah tidak menjawab sama sekali dan error not in sync: resp=0x00 berulang sampai sepuluh percobaan. Solusinya cukup satu pengaturan menu: Tools > Processor > ATmega328P (Old Bootloader). Kalau kamu tidak yakin mana yang benar, coba opsinya satu per satu; pilihan yang salah tidak merusak board.
| Opsi Processor | Bootloader | Kecepatan upload | Kapan dipilih |
|---|---|---|---|
| ATmega328P | Optiboot (baru) | 115200 baud | Nano original dan board dengan bootloader yang sudah diperbarui |
| ATmega328P (Old Bootloader) | ATmegaBOOT (lama) | 57600 baud | Sebagian besar Nano klon CH340 |
| ATmega168 | ATmegaBOOT (lama) | 19200 baud | Board lama dengan tulisan ATmega168 di chip-nya |
Modul di pin 0 dan 1 menghalangi upload
Di Uno dan Nano, chip USB ke serial terhubung ke ATmega328P melalui resistor 1 kΩ di pin D0 (RX) dan D1 (TX). Selama upload, jalur ini milik komputer. Kalau modul serial seperti modul Bluetooth HC-05, GPS, ESP-01, atau sensor sidik jari terhubung ke pin-pin ini, modul itu akan mengirim datanya sendiri ke jalur atau menahan jalur di level tetap, sehingga merusak jabat tangan bootloader. Hasilnya lagi-lagi programmer is not responding atau not in sync. Solusi tercepat adalah mencabut kabel D0 dan D1 ketika upload; solusi permanennya adalah memindahkan modul ke pin lain dengan SoftwareSerial:
1#include <SoftwareSerial.h>
2
3// HC-05 TX -> D10, HC-05 RX <- D11 (gerilim bölücüyle / through a voltage divider)
4SoftwareSerial bt(10, 11); // RX, TX pinleri / RX, TX pins
5
6void setup() {
7 Serial.begin(9600); // USB: Seri Monitör / USB: Serial Monitor
8 bt.begin(9600); // HC-05 veri modu hızı / HC-05 data mode baud rate
9 Serial.println("Hazir / Ready");
10}
11
12void loop() {
13 if (bt.available()) Serial.write(bt.read()); // telefondan bilgisayara / phone to PC
14 if (Serial.available()) bt.write(Serial.read()); // bilgisayardan telefona / PC to phone
15}Di sketch ini, TX HC-05 masuk ke D10 dan RX-nya ke D11. Input RX HC-05 bekerja di 3,3 V, jadi pasang pembagi tegangan dari resistor 1 kΩ dan 2 kΩ di antara input itu dan D11. Sekarang kamu bisa upload dengan modul tetap terhubung dan mengirim apa pun yang kamu ketik di Serial Monitor ke ponselmu. Untuk pengkabelan lengkap dan mode perintah AT, lihat panduan Modul Bluetooth HC-05. Di Mega kamu tidak butuh SoftwareSerial: board ini punya port serial hardware tambahan seperti Serial1 (TX1 = D18, RX1 = D19).
Serial Monitor dan program yang membuat port tetap sibuk
Port serial hanya bisa dibuka oleh satu program dalam satu waktu. Itulah sebabnya Windows menampilkan Access is denied, sedangkan macOS dan Linux menampilkan Resource busy. Arduino IDE biasanya menjeda Serial Monitor-nya sendiri selama upload, tetapi ini tidak selalu sempurna di setiap versi dan setiap board, terutama ESP32; kalau kamu mendapat error ini, tutup dulu tab Serial Monitor. Lebih sering lagi, port ditahan oleh program lain: jendela IDE kedua, Serial Plotter yang terbuka, PuTTY, software printer 3D seperti Cura, monitor PlatformIO di VS Code, atau skrip Python yang berjalan di latar belakang. Tutup semuanya, cabut dan colokkan lagi board-nya, lalu coba lagi. Di Linux kamu bisa melihat program mana yang menahan port dengan sudo lsof /dev/ttyUSB0.
Apakah board-nya rusak? Loopback test dan burn bootloader
Kalau kamu sudah mencoba semua cara di atas dan tetap tidak bisa upload, kamu perlu mencari tahu apakah masalahnya di sisi USB atau di prosesor utama. Metode klasik untuk Uno dan Nano adalah loopback test: prosesor utama ditahan dalam kondisi reset, lalu chip USB ke serial dibiarkan berbicara dengan dirinya sendiri. Kamu tidak perlu meng-upload kode apa pun untuk tes ini.
- Lepas semua kabel dari board dan sisakan hanya kabel USB yang terhubung.
- Pakai kabel jumper untuk menghubungkan pin RESET ke GND; ini menahan ATmega328P dalam kondisi reset sehingga tidak ikut di jalur.
- Pakai kabel kedua untuk menghubungkan pin D0 dan D1.
- Pilih port board di IDE lalu buka Serial Monitor; baud rate tidak berpengaruh untuk tes ini.
- Ketik beberapa karakter di kotak lalu kirim. Kalau teksmu langsung kembali, kabel, driver, dan chip USB ke serial dalam keadaan baik, dan masalahnya ada di prosesor utama atau bootloader. Kalau tidak ada yang kembali, masalahnya ada di sisi USB.
- Jangan lupa melepas kedua kabel itu setelah selesai.
Kalau loopback test lolos tetapi upload tetap gagal, dan LED L tidak berkedip sebentar ketika reset ditekan, mungkin bootloader-nya terhapus atau chip-nya sudah diganti. Kamu bisa burn bootloader lagi dengan Uno kedua. Upload File > Examples > 11.ArduinoISP > ArduinoISP ke Uno yang akan berperan sebagai programmer. Lalu hubungkan D10 programmer ke pin RESET target, D11, D12, dan D13 ke pin target dengan nomor yang sama, serta 5V dan GND ke pasangannya. Pasang kapasitor 10 µF di antara RESET dan GND di Uno programmer; ini mencegahnya me-reset dirinya sendiri. Terakhir, pilih Tools > Programmer > Arduino as ISP, pilih board target di menu board, dan jalankan Tools > Burn Bootloader. Metode ini juga bisa kamu pakai untuk memberi Nano klon Optiboot yang baru.
ESP32 tidak mau di-upload: Failed to connect dan tombol BOOT
Di ESP32, upload dilakukan oleh esptool, bukan avrdude. Output pertama-tama menampilkan baris Connecting........_____..... ketika esptool mencoba memasukkan board ke mode download. Kalau gagal, kamu mendapat error yang diawali A fatal error occurred: Failed to connect to ESP32. Di versi esptool terbaru, kalau board ternyata boot secara normal, pesannya berlanjut dengan Wrong boot mode detected (0x13)! The chip needs to be in download mode.; 0x13 berarti board mulai di mode boot normal, bukan di mode download. Kalau board sama sekali tidak menjawab, pesannya berakhir dengan No serial data received; versi lama melaporkannya sebagai Timed out waiting for packet header. Kalau board tidak bisa masuk ke mode download sendiri, kamu yang melakukannya secara manual.

- Klik Upload di IDE dan perhatikan jendela output.
- Begitu Connecting... muncul, tekan dan tahan tombol BOOT di board.
- Kalau masih tidak terhubung, tekan dan lepas EN sekali sebentar sambil tetap menahan BOOT.
- Lepas BOOT ketika baris yang diawali Writing at dan persentase upload mulai bergulir di output.
- Upload berakhir dengan Hard resetting via RTS pin.... Kalau program tidak mulai, tekan EN sekali.
Kenapa ini terjadi? Untuk masuk ke mode download, pin GPIO0 ESP32 harus LOW pada momen board boot. Rangkaian auto-reset dua transistor di board pengembangan melakukannya secara otomatis dengan sinyal DTR dan RTS dari chip USB; di board murah, rangkaian ini bisa meleset pewaktuannya. Kalau kamu bosan menekan BOOT setiap kali, ada solusi permanen: pasang kapasitor elektrolit 10 µF di antara pin EN dan GND board (kaki negatif ke GND). Kapasitor ini memperlambat naiknya jalur EN dan memberi rangkaian auto-reset waktu untuk menahan GPIO0 tetap LOW.
| Pesan error ESP32 | Kemungkinan penyebab | Solusi |
|---|---|---|
| “Wrong boot mode detected (0x13)” | Rangkaian auto-reset tidak bisa memasukkan board ke mode download | Tombol BOOT; untuk solusi permanen, 10 µF di antara EN dan GND |
| “No serial data received” atau “Timed out waiting for packet header” | Tidak ada data sama sekali dari board: kabel khusus cas, port yang salah, atau board tidak pernah masuk ke mode download | Kabel data, port yang benar di Tools > Port, tombol BOOT |
| “This chip is ESP32-S3 not ESP32. Wrong --chip argument?” | Model ESP32 yang dipilih di Tools > Board berbeda dengan yang ada di board-mu | Pilih model yang sesuai dengan modul di board (ESP32, ESP32-S3, dan ESP32-C3 adalah board yang berbeda) |
| Could not open COM3: port sedang dipakai atau tidak ada | Serial Monitor atau program lain menahan port | Tutup Serial Monitor dan program lain, cabut dan colokkan lagi board-nya |
| “Invalid head of packet: Possible serial noise or corruption” | Kabel panjang atau jelek, catu daya lemah, kecepatan upload terlalu tinggi | Turunkan Tools > Upload Speed dari 921600 ke 115200 |
| Upload berhasil, tetapi ketika boot muncul flash read err, 1000 | GPIO12 tertarik HIGH ketika boot, sehingga tegangan flash yang dipilih salah | Pindahkan modul di GPIO12 ke pin lain |
| Port hilang setelah upload (ESP32-S3, ESP32-C3) | Di board dengan USB native, program crash atau mematikan USB | Colokkan USB sambil menahan BOOT; Tools > USB CDC On Boot: Enabled |
1// ESP32 yükleme testi / ESP32 upload test
2const int LED_PIN = 2; // birçok DevKit kartında dahili LED / onboard LED on many DevKit boards
3
4void setup() {
5 pinMode(LED_PIN, OUTPUT);
6 Serial.begin(115200); // Seri Monitör 115200 baud / Serial Monitor at 115200 baud
7 delay(500);
8 Serial.print("Model: ");
9 Serial.println(ESP.getChipModel()); // ör. ESP32-D0WD-V3 / e.g. ESP32-D0WD-V3
10 Serial.print("Flash (MB): ");
11 Serial.println(ESP.getFlashChipSize() / (1024 * 1024));
12 Serial.print("CPU (MHz): ");
13 Serial.println(getCpuFrequencyMhz());
14}
15
16void loop() {
17 digitalWrite(LED_PIN, !digitalRead(LED_PIN)); // LED'i tersle / toggle the LED
18 delay(500);
19}Raspberry Pi Pico: upload dengan BOOTSEL dan UF2
Pico tidak punya chip USB ke serial terpisah; RP2040 punya pengendali USB sendiri, dan bootloader-nya berada di ROM chip yang tidak bisa dihapus. Itu membuat Pico hampir mustahil dirusak lewat software. Kalau kamu menahan tombol BOOTSEL sambil mencolokkan kabel USB, Pico muncul di komputermu sebagai flash drive bernama RPI-RP2 (di Pico 2, drive-nya bernama RP2350). File .uf2 apa pun yang kamu seret ke drive ini akan ditulis ke board, lalu board me-restart sendiri; dengan cara ini juga kamu menginstal MicroPython.
Kalau kamu memprogram Pico dengan Arduino IDE, belum ada port COM untuk upload pertama; colokkan board sambil menahan BOOTSEL lalu klik Upload. Setelah sketch pertama, board membuka port serial dan upload berikutnya tidak butuh BOOTSEL. Kalau kodemu crash atau mematikan USB, port-nya hilang lagi dan kamu mendapat error No drive to deploy; kembali saja ke metode BOOTSEL. Kalau kamu memakai MicroPython, MicroPython (Raspberry Pi Pico) harus dipilih sebagai interpreter di pojok kanan bawah Thonny. Untuk pin dan pengaturan Pico, lihat panduan Apa Itu Raspberry Pi Pico?
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Drive RPI-RP2 tidak pernah muncul | Kabel khusus cas, atau BOOTSEL ditekan setelah kabel dicolokkan | Pakai kabel data; tekan BOOTSEL dulu, lalu colokkan kabel, lepas ketika drive muncul |
| Arduino IDE: “No drive to deploy” | Board tidak dalam mode BOOTSEL dan tidak ada port serial | Colokkan ulang sambil menahan BOOTSEL, lalu klik Upload |
| Thonny: “Couldn't find the device automatically” | MicroPython belum terinstal atau board masih dalam mode BOOTSEL | Instal UF2 dengan opsi Install or update MicroPython di Thonny |
| Thonny: “Device is busy or does not respond” | main.py terjebak di loop sibuk dan mengabaikan perintah | Tekan tombol Stop atau Ctrl+C; kalau gagal, cabut dan colokkan lagi board-nya |
| Kodenya jalan, tetapi board tidak menjalankannya sendiri | File tidak disimpan ke Pico sebagai main.py | Simpan file ke lokasi Raspberry Pi Pico sebagai main.py |
| Board terus macet dan tidak ada yang bisa di-upload | File rusak atau program bermasalah di flash | Hapus flash dengan flash_nuke.uf2, lalu instal ulang MicroPython |
1import time
2from machine import Pin
3
4time.sleep(3) # açılışta 3 sn bekle, Thonny durdurabilsin / wait 3 s so Thonny can stop the script
5
6led = Pin("LED", Pin.OUT) # Pico ve Pico W dahili LED / onboard LED on Pico and Pico W
7sayac = 0
8while True:
9 led.toggle()
10 print("Calisiyor / running", sayac)
11 sayac += 1
12 time.sleep(0.5)Penyebab kecil tapi licik yang mudah terlewat
- Leonardo, Micro, dan Uno R4: Di board dengan USB native ini, port bisa berubah sebentar selama upload. Kalau upload macet, klik Upload lalu tekan tombol reset sekali begitu kompilasi selesai dan tahap upload dimulai (dua kali cepat di Uno R4); board akan menunggu di bootloader beberapa waktu dan kode ter-upload ketika itu.
- Auto-reset rusak: Kalau auto-reset tidak berfungsi di Uno atau Nano, tahan tombol reset, klik Upload, lalu lepas begitu baris berisi ukuran sketch muncul di output.
- Shield dan rangkaian eksternal: Shield driver motor atau rangkaian yang membebani jalur 5V bisa membuat tegangan catu daya turun selama upload dan memutus penulisan di tengah jalan.
- Port yang salah di macOS: /dev/cu.Bluetooth-Incoming-Port dan /dev/cu.debug-console di daftar port bukan board-mu, melainkan port sistem. Nama port board-mu mengandung usbmodem, usbserial, atau wchusbserial; kalau tidak yakin, cabut dan colokkan lagi board-nya lalu lihat mana yang hilang.
- Karakter non-ASCII di nama user: Kalau folder user Windows-mu berisi huruf beraksen atau huruf non-Latin, alat kompilasi dan upload di beberapa paket board, terutama paket ESP32, bisa gagal menemukan file. Pindahkan sketchbook-mu ke path tanpa karakter seperti itu di Preferences; kalau masalahnya tetap ada, buat user Windows baru.
- Sketch terlalu besar: Peringatan Sketch too big bukan error upload; peringatan ini mengatakan kodemu tidak muat di flash Uno yang tersisa sekitar 31,5 KB setelah bootloader. Pangkas library dan string panjang, atau pindah ke board yang lebih besar.
- Port macet setelah sleep: Setelah komputer bangun dari sleep, port bisa macet; me-restart IDE atau mencolokkan board ke port USB lain biasanya menyelesaikannya.
Upload berhasil: lalu apa?
- Rangkaian pertama: Buat rangkaian Blink sendiri dengan LED dan resistor, lalu tambahkan tombol untuk proyek interaktif pertamamu.
- Komunikasi serial: Sekarang setelah kamu tahu bagaimana pin 0 dan 1 memengaruhi upload, coba nyalakan LED dari ponselmu dengan modul Bluetooth HC-05.
- Membaca sensor: Pakai Panduan Sensor Arduino untuk memilih proyek pertamamu yang mengukur suhu, jarak, dan cahaya.
- Beralih ke nirkabel: Buat proyek dengan ESP32 yang terhubung ke Wi-Fi dan dikendalikan dari ponselmu; berkat OTA, nanti kamu juga bisa meng-upload kode secara nirkabel.
- Memilih board yang tepat: Kalau kamu tidak bisa memutuskan antara Uno, Nano, dan Mega, baca Arduino Mana yang Sebaiknya Kubeli?.
Error upload memang menyebalkan ketika pertama kali kamu temui, tetapi masing-masing punya penyebab yang logis, dan hampir semuanya ditemukan dengan urutan yang sama: kabel, driver, port, pengaturan board, jalur serial, dan terakhir bootloader. Ingat urutan itu dan kamu akan menyelesaikan error berikutnya dalam hitungan menit. Begitu board-mu menerima kode, aplikasi BlueGrays punya banyak proyek untuk Arduino, ESP32, dan Raspberry Pi Pico, dari mengedipkan LED sampai Wi-Fi dan update OTA nirkabel, masing-masing dengan skema rangkaian langkah demi langkah dan kode siap pakai, jadi board-mu bisa langsung kamu pakai.
Pertanyaan umum
Kenapa kodeku tidak mau ter-upload ke Arduino?
Penyebab paling umum adalah kabel USB yang hanya untuk mengecas, driver CH340 yang belum terinstal, board atau port yang salah, dan modul yang terhubung ke pin 0 dan 1. Di board Nano klon, pengaturan Processor juga harus ATmega328P (Old Bootloader). Cek semuanya secara berurutan, dan hampir selalu board-mu ternyata baik-baik saja.
Bagaimana cara mengatasi avrdude stk500_getsync not in sync resp=0x00?
Error ini berarti komputer tidak bisa menyelesaikan jabat tangan dengan bootloader di board. Pertama, pilih port dan board yang benar, coba opsi Old Bootloader di Processor kalau kamu memakai Nano, dan cabut kabel apa pun di D0 dan D1. Kalau masih berlanjut, cek sisi USB dengan loopback test dan burn bootloader lagi jika perlu.
Kenapa Arduino-ku tidak muncul di komputer?
Kalau Tools > Port kosong, kabelnya tidak membawa data atau driver untuk chip USB ke serial belum terinstal. Coba kabel data lain dan cek di Device Manager Windows apakah board muncul di bawah Ports (COM & LPT). Kalau kamu melihat USB2.0-Serial dengan tanda kuning di bawah Other devices, instal driver CH340.
Bagaimana cara menginstal driver CH340?
Windows 10 dan 11 biasanya menginstalnya secara otomatis; kalau tidak, unduh dan jalankan paket CH341SER dari pembuatnya, WCH, lalu colokkan ulang board-nya. Versi macOS terbaru sudah menyertakan driver-nya, dan di Linux driver-nya sudah ada di kernel. Di Linux kamu cukup menambahkan user-mu ke grup dialout.
Kapan tombol BOOT ditekan untuk upload ke ESP32?
Tahan BOOT begitu Connecting... muncul di output dan lepas ketika persentase upload mulai bergulir. Ini memasukkan ESP32 ke mode download. Kalau kamu harus melakukannya di setiap upload, kapasitor 10 µF di antara EN dan GND biasanya menyelesaikan masalahnya untuk selamanya.
Apa yang harus kulakukan kalau Raspberry Pi Pico-ku tidak dikenali?
Tahan tombol BOOTSEL lalu colokkan Pico ke komputermu dengan kabel data; Pico harus muncul sebagai drive bernama RPI-RP2. Dalam mode ini kamu bisa menyeret dan melepas file UF2 MicroPython atau meng-upload kode dari Arduino IDE. Kalau tidak ada drive yang muncul, kabelnya tidak membawa data; bootloader Pico ada di ROM, jadi software tidak bisa merusaknya.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
LED Berkedip
"Halo" pertama di dunia elektronika: menyalakan dan mematikan satu LED. Arduino menyalakan dan mematikan LED dengan jeda singkat, sehingga cahayanya berkedip cepat. Kamu melihat dengan cara paling sed

LED Berkedip dengan ESP32
Mengajarkan penggunaan output GPIO dasar dengan ESP32. Kita membuat efek berkedip dengan menyalakan dan mematikan LED dari pin digital. Versi ESP32 dari proyek blink klasik di Arduino UNO; perintah blink dasar di lingkungan Arduino sama, tetapi susunan pin ESP32 dan level GPIO 3,3 V-nya berbeda dengan Arduino UNO.

Kedipan LED Bawaan ESP32
Mengedipkan LED biru bawaan di ESP32 DevKit V1. Tidak perlu komponen eksternal! Proyek pertama yang sebaiknya kamu coba ketika membeli ESP32. GPIO 2 tersambung ke LED bawaan.

Kedip LED Bawaan Raspberry Pi Pico (Pico dan Pico W)
Proyek pembuka seri Raspberry Pi Pico! Kita mengedipkan LED hijau bawaan untuk memastikan board bekerja; percobaan "Hello World" klasik. TANPA komponen eksternal, hanya Pico dan kabel USB. Kodenya ditulis dalam MicroPython (bahasa resmi dari Raspberry Pi Foundation). Pelajari kelas machine.Pin, mode Pin.OUT, metode led.on()/off(), dan time.sleep() di Thonny IDE, dan ikuti setiap perubahan di output Serial (REPL). Juga pas untuk menguji firmware MicroPython.

Pengukuran Jarak HC-SR04 (Tampilan Serial)
Sensor HC-SR04 bekerja persis seperti kelelawar yang mencari jalan dalam gelap: ia mengirim suara yang tidak bisa kamu dengar, mendengarkan pantulannya, dan mengukur seberapa jauh benda di depannya. A

Kendalikan LED dari Ponselmu lewat Bluetooth
Latihan kecil untuk menyalakan dan mematikan lampu kamarmu dari ponsel. Modul Bluetooth meneruskan huruf yang dikirim dari ponselmu ke Arduino; satu huruf menyalakan LED merah, huruf lain menyalakan L

Komunikasi Satu Arah Antara 2 Arduino
Kamu membuat dua Arduino berbicara lewat satu kabel: tekan tombol di satu board dan LED di board lain menyala, tekan lagi dan LED mati. Board pengirim melaporkan tekanan tombol dengan pesan singkat, d

Pembaruan OTA ESP32: Instal Firmware Tanpa Kabel (dengan Layar LCD)
Di proyek ini, kamu belajar cara meng-upload firmware baru ke ESP32 lewat Wi-Fi tanpa kabel USB. Dengan library ArduinoOTA, ESP32 terlihat di jaringan dan otomatis tercantum sebagai bluegrays-ota di tab "Network port" Arduino IDE. Upload pertama dilakukan lewat USB, dan semua pembaruan berikutnya tanpa kabel; fitur penting untuk perangkat di lapangan. Layar LCD I2C menampilkan status Wi-Fi, alamat IP, nama host, persentase upload OTA, dan pesan error.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

