[ESP8266] Mengubah Fungsi Pin Tx/Rx Menjadi GPIO
Pada dasarnya, pin TX dan RX pada ESP8266 adalah merupakan GPIO. Yaitu GPIO1 untuk TX dan GPIO3 untuk RX.
Anda dapat merubah pin fungsi TX/RX menjadi GPIO dengan menambahkan beberapa baris kode di void setup(). Tambahkan baris-baris di bawah ini di awal fungsi setup().
//----Ganti pin ke GPIO----
//GPIO 1 (TX) menukar pin ke GPIO.
pinMode(1, FUNCTION_3);
//GPIO 3 (RX) menukar pin ke GPIO.
pinMode(3, FUNCTION_3);
//----Ganti pin ke GPIO----

Perlu diingat bahwa karena Anda mengubah fungsi pin RX TX, ini berarti Anda tidak dapat mengakses monitor serial setelah ini.
Juga jika Anda ingin mem-flash esp8266 maka itu dapat dilakukan dalam mode flash yang mengubah GPIO kembali menjadi RX dan TX dan ketika Anda mem-boot esp8266 dalam mode normal, ia akan merubah RX TX sebagai GPIO kembali.

Jika Anda ingin kembali ke fungsi RX TX normal maka ganti baris di atas dengan yang berikut:

//----Ganti pin ke Tx/Rx lagi----
//GPIO 1 (TX) menukar pin ke TX.
pinMode(1, FUNCTION_0);
//GPIO 3 (RX) menukar pin ke RX.
pinMode(3, FUNCTION_0);
//----Ganti pin ke TX/RX lagi----

Jika Anda perlu menggunakan GPIO1 (TX) sebagai input atau GPIO3 (RX) sebagai output, maka Anda hanya perlu memanggil pinMode() yang sesuai, baik INPUT, INPUT_PULLUP, atau OUTPUT.
Ingat bahwa ESP8266 SELALU mengeluarkan pesan awal pada GPIO1 (TX), jadi untuk waktu yang singkat itu GPIO1 SELALU menjadi OUTPUTt.
Jadi, pastikan untuk menambahkan resistor seri 330R antara GPIO1 dan output apa pun yang menggerakkan input tersebut untuk mencegah terjadinya hubungan arus pendek selama pesan awal.

Menetapkan GPIO3 (RX) sebagai OUTPUT, TIDAK DIREKOMENDASIKAN jika Anda dapat menghindarinya karena mudah terjadi korsleting saat pemrograman ulang berikutnya.
Catat dengan saksama:
Jika Anda menggunakan GPIO3 (RX) sebagai output, tambahkan resistor kecil, katakanlah 330R secara seri untuk mencegah korsleting secara tidak sengaja saat Anda memasang kabel pemrograman.
Setelah Anda mulai menggunakan GPIO1 (TX) dan GPIO3 (RX) sebagai I/O normal, jangan panggil Serial.begin(19200); karena akan membingungkan (tetapi lihat selanjutnya untuk alternatif).
Jadi tidak dapat men-debug menggunakan koneksi Serial. Namun Anda masih dapat men-debug melalui GPIO2 (hanya TX) dengan memulai Serial1.begin(19200);, bukan Serial.begin(19200)

Bagaimana debugging saat menggunakan RX sebagai pin GPIO normal?
Untuk menjaga debugging tetap sederhana, Anda juga dapat memilih untuk tetap menggunakan TX sebagai keluaran debug standar sambil membebaskan RX (GPIO3) sebagai input dengan menggunakan pernyataan Serial.begin() Serial.begin(19200,SERIAL_8N1,SERIAL_TX_ONLY);
Ini memungkinkan Anda untuk menggunakan RX sebagai I/O normal, sambil tetap menulis pesan debug ke Serial.

Atau gunakan Serial.begin(115200,SERIAL_8N1,SERIAL_RX_ONLY); yang memungkinkan Anda menerima masukan Serial tetapi tidak mengirimkan keluaran, tetapi membiarkan GPIO1 tersedia untuk penggunaan I/O umum.
Sekali lagi tambahkan resistor 330 ohm antara kabel RX ke koneksi TX programmer Flash untuk melindungi terhadap hubungan arus pendek pada pin programmer atau ESP jika terhubung saat RX merupakan output.