Memprogram ESP8266 dengan Arduino Uno

Beberapa waktu yang lalu saya butuh memprogram modul ESP8266 namun entah mengapa selalu gagal. Setelah coba macem2, sepertinya USB-to-Serial adapter yang saya gunakan itu bermasalah. Saya sudah pesan adapter baru namun butuh waktu lama untuk sampai; dan saya gak sabaran xD Untungnya saya menemukan artikel berisi petunjuk menggunakan Arduino Uno atau Nano untuk memprogram modul ESP8266 dan kebetulan saya punya Arduino Uno dan Nano yang bisa dipakai. Inilah cara yang saya pakai.

Perhatian! Panduan berikut ini BUKAN berisi panduan menggunakan ESP8266 dari Arduino, melainkan panduan untuk memprogram.

Arduino Uno dan Nano itu memiliki USB port yang bisa dipakai untuk memprogram dan keduanya memiliki jalur serial TX dan RX. Ternyata andai Arduino dibuat dalam mode Reset dengan cara menghubungkan RESET ke GND, maka si Arduino akan bertingkah sebagai USB-to-Serial adapter!

Sebelum lanjut, menurut yang saya baca, port Arduino itu bekerja dengan 5V sedangkan ESP8266 itu bekerja dengan 3.3V dan tidak memiliki toleransi sampai 5V. Sehingga sinyal dari Arduino yang dikirim ke ESP8266 berpotensi untuk merusak modul ESP8266 tersebut. Kebetulan saya lupa menyadari hal ini namun untungnya modul ESP8266 saya masih bisa berfungsi dengan baik. Supaya aman kita perlu mengubah sinyal 5V dari Arduino menjadi 3.3V sehingga aman dikonsumsi oleh ESP8266. Salah satu caranya adalah dengan membuat voltage divider.

Voltage Divider

Dengan memakai kombinasi R1 = 1KΩ dan R2 = 2KΩ, kita bisa mendapatkan sinyal 3.3V yang berasal dari 5V.

Hal lain yang perlu diperhatikan adalah bagimana memberi pasokan listrik ke modul ESP8266. Menurut sebuah dokumen, ESP8266 dapat memakai arus listrik sampai 215mA sedangkan Arduino hanya dapat memasok sampai 200mA. Walau besar kemungkinan ESP8266 tidak akan memakai arus sebesar itu ketika diprogram, akan lebih baik jika kita menggunakan sumber listrik yang lain. Menurut eksperimen saya, bread board power supply biasa sudah cukup untuk memenuhi kebutuhan pasokan listrik untuk ESP8266.

Mari lanjut dengan menghubungkan Arduino dengan ESP8266. Buat hubungan sebagai berikut.

  • Arduino TX ke ESP8266 TX
  • Arduino RX ke voltage divider input
  • Voltage divider output ke ESP8266 RX
  • Arduino RESET ke GND
  • Hubungkan semua GND
    • Arduino GND
    • ESP8266 GND
    • Voltage divider GND
    • Breadboard power supply GND
  • Breadboard power supply 3.3V ke ESP8266 VCC
  • ESP8266 CH_PD ke 3.3V via resistor 10KΩ
  • Untuk mengaktifkan mode pemrograman, hubungkan ESP8266 GPIO0 ke GND via resistor 10KΩ

Kalau digambarkan, kira2 akan terbentuk hubungan seperti berikut.

Koneksi ESP8266 dengan Arduino

Setelah semua siap, sambungkan Arduino via USB dan nyalakan breadboard power supply dan modul ESP8266 sudah bisa diprogram. Jika menggunakan Arduino IDE, cukup pilih board ESP8266 dan port USB yg dipakai.

Berdasar pengalaman saya, walau konfigurasi di atas ini sudah bisa berfungsi, kadang2 saya masih menemui kegagalan ketika proses pemrograman berlangsung. Saya belum tahu apa sebabnya namun biasanya setelah saya matikan dan nyalakan lagi si breadboard power supply, proses pemrograman berikutnya bisa berjalan lancar.

Have you tried turning it off and on again?

Selamat mencoba!

ESP8266 dan USB-to-Serial adapter abal-abal

Beberapa waktu lalu saya mencoba untuk mengupload aplikasi ke ESP8266, tepatnya ke modul ESP-01. Seperti yang umum disebut di tutorial2 lain, saya menggunakan USB-to-Serial adapter untuk menghubungkan ESP-01 tsb dengan komputer yang saya pakai. Proses upload awalnya berjalan lancar dan aplikasi yang saya pasang bisa berjalan dengan baik. Namun belakangan proses upload sering gagal dengan indikasi proses upload selalu nyangkut di sekitar 99%-100% dan/atau aplikasi tidak dapat bekerja.

Salah satu karakteristik yang saya temukan adalah proses upload gagal ketika ukuran aplikasi sudah melebihi kisaran tertentu (sekitar 25%). Jika ukuran aplikasi sudah melebihi 25%, maka bisa dipastikan proses akan gagal. Jika kurang dari itu, kemungkinan besar proses akar berhasil namun saya juga mengalami beberapa kasus kegagalan.

Kalau saya nyalakan mode pemrograman, yaitu dengan menghubungkan GPIO0 ke GND, lalu mereset si modul, dan memantau data yang dikirim ke serial port, biasanya saya mendapatkan pesan seperti berikut.

ets Jan 8 2013,rst cause:4, boot mode:(3,7)

Setelah ngubek2 internet sana sini, dan juga ngikutin petunjuk memasang modul dengan benar (baca: pakai resistor untuk pull-up/pull-down, pasang capacitor, dsb), tetep aja proses upload ngga pernah berhasil. Sampai akhirnya ada yang menyarankan untuk mengecek USB-to-Serial adapter yang digunakan. Ada yang mencoba mengganti dengan adapter lain dan proses upload langsung berjalan lancar.

Adapter yang saya pakai bentuknya seperti gambar di bawah ini dan beli di AliExpress (atau eBay ya?). Mungkin saja chip yang dipakai (FTDI) adalah barang tiruan berhubung gosipnya FTDI itu relatif tidak murah walau terkenal.

Berhubung yang saya sedang kerjakan dengan modul ESP-01 ini ingin segera saya deploy (baca: pasang), maka akhirnya saya memutuskan untuk membeli model lain di AliExpress. Kali ini menggunakan chip CH340G yang juga terpasang di Arduino Nano clone yang saya miliki dan tidak bermasalah. Adapter yang saya beli kali ini bentuknya seperti gambar di bawah

Sekitar satu-dua hari setelah pemesanan (dan 2-3 minggu sebelum barang biasanya sampai), saya membaca tulisan di dzone.com mengenai memprogram ESP8266 dengan Arduino! Kalau dipikir2, Arduino Uno dan Nano itu kan pastinya berisi USB-to-Serial adapter juga. Ternyata ada caranya supaya kita bisa menggunakan adapter yang terdapat di Arduino Uno/Nano untuk sebagai adapter biasa, yang juga bisa dipakai untuk memprogram ESP8266! Silakan kunjungi tulisan tadi atau tunggu tulisan saja berikutnya 😛