• Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
Kamis, Juni 26, 2025
mikroavr.com
No Result
View All Result
  • Login
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
  • Arduino
    • Sensor
    • program Arduino
  • Project
  • Produk
  • IOT
No Result
View All Result
mikroavr
No Result
View All Result
Home Arduino

Mengenal Pin Out ESP32 Agar Tidak Salah Dalam Penggunaan nya

Jimmi Sitepu by Jimmi Sitepu
Oktober 2, 2020
0 0
2
Mengenal Pin Out ESP32 Agar Tidak Salah Dalam Penggunaan nya
0
SHARES
13.2k
VIEWS
Share on FacebookShare on Twitter

Pin Esp32 Mana Yang Harus Kita Gunakan?

Bagi yang terbiasa menggunakan Arduino Uno dan Arduino Mega, akan terlihat sedikit asing jika ingin menggunakan ESP32. Sama seperti saya ketika migrasi dari Arduino mega ke ESP32 karena Alasan keterbatasan Speed dan Memory pada Arduino Mega. Namun ketika mencoba menggunakan ESP32 ini, ada karakteristik khusus yang membuat dia berbeda dari pada Arduino pada umum nya.

Apa saja kah perbedaan yang mencolok pada pin out ESP32 ini? hal yang mencolok adalah sebagai berikut:

READ ALSO

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

  • Pin Hardware Serial Terdiri dari 3 channel, Serial1 dan Serial2 bisa di swap ke pin lain lain nya
  • Pin I2C ada 2 Channel, Pin ini juga bisa di swap ke pin pin lain
  • PIN SPI ada 3 channel, saya sendiri hanya pernah mengunakan 2 channel, satu sebagai LoRa dan Satu lagi Sebagai SD Card ( atau terkadang Ethernet)
  • Ada pin yang hanya berfungsi sebagai input dan harus di pullup
  • Ada pin yang di fungsi kan sebagai wake up ketika ESP32 dalam mode Sleep
  • Toleransi Pin ada di 3.3v, bukan di 5v
  • Ada pin yang tidak bisa di gunakan sebagai input, jika di gunakan akan masuk mode flash ketika start, sehingga tidak bisa di gunakan ESP32

Kehati-hatian kita dalam memilih pin pada ESP32 akan mengurangi resiko kesalahan dalam design hardware yang menggunakan ESP32. Nah dari point di atas, yuk kita jadi kan dari pembahasan fungsi-fungsi Pin out ESP32.

Pin Hardware Serial

Pada ESP32 ada 3 channel pin Serial. Serial0 default di gunakan sebagai jalur upload Program dari Usb to Serial, kemudan Serial1 dan Serial2 bisa di swap seperti layak nya software Serial pada Arduino Uno dan Mega. Di case saya sebagai pengguna chip esp32, pin yang bisa di fungsikan sebagai hardware serial adalah pin yang bisa kita gunakan sebagai output. Pin mana kah itu?

GPIOFUNCTIONGPIOFUNCTION
GPIO32RX/TXGPIO15RX/TX
GPIO33RX/TXGPIO21RX/TX
GPIO25RX/TXGPIO22RX/TX
GPIO26RX/TXGPIO17RX/TX
GPIO27RX/TXGPIO16RX/TX
GPIO14RX/TX
GPIO13RX/TX
Tabel Pin Serial Esp32

Nah bagaimana kah penggunakan Hardware Serial1 dan Serial2 di Arduino? Just simple, code program nya hanya seperti di bawah ini

 
// ganti sesukamu sesuai table
#define RXD1 17
#define TXD1 16

// ganti sesukamu sesuai table
#define RXD2 27
#define TXD2 26

#define BAUD 115200
#define PROTOCOL SERIAL_8N1

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  Serial1.begin(BAUD, PROTOCOL, RXD1, TXD1);
  Serial2.begin(BAUD, PROTOCOL, RXD2, TXD2);
}
void loop() {
  // put your main code here, to run repeatedly:
  Serial.println("hi mikroavr");
  Serial1.println("hi mikroavr");
  Serial2.println("hi mikroavr");
}

Ada beberapa protokol Serial yang support pada ESP32, list nya sebagai berikut:

  • SERIAL_5N1 5-bit No parity 1 stop bit
  • SERIAL_6N1 6-bit No parity 1 stop bit
  • SERIAL_7N1 7-bit No parity 1 stop bit
  • SERIAL_8N1 (the default) 8-bit No parity 1 stop bit
  • SERIAL_5N2 5-bit No parity 2 stop bits
  • SERIAL_6N2 6-bit No parity 2 stop bits
  • SERIAL_7N2 7-bit No parity 2 stop bits
  • SERIAL_8N2 8-bit No parity 2 stop bits
  • SERIAL_5E1 5-bit Even parity 1 stop bit
  • SERIAL_6E1 6-bit Even parity 1 stop bit
  • SERIAL_7E1 7-bit Even parity 1 stop bit
  • SERIAL_8E1 8-bit Even parity 1 stop bit
  • SERIAL_5E2 5-bit Even parity 2 stop bit
  • SERIAL_6E2 6-bit Even parity 2 stop bit
  • SERIAL_7E2 7-bit Even parity 2 stop bit
  • SERIAL_8E2 8-bit Even parity 2 stop bit
  • SERIAL_5O1 5-bit Odd parity 1 stop bit
  • SERIAL_6O1 6-bit Odd parity 1 stop bit
  • SERIAL_7O1 7-bit Odd parity 1 stop bit
  • SERIAL_8O1 8-bit Odd parity 1 stop bit
  • SERIAL_5O2 5-bit Odd parity 2 stop bit
  • SERIAL_6O2 6-bit Odd parity 2 stop bit
  • SERIAL_7O2 7-bit Odd parity 2 stop bit
  • SERIAL_8O2 8-bit Odd parity 2 stop bit

Nah, Mudah bukan? jadi dengan swap pin serial ini, kita bisa mengurangi kesalahan dalam design pcb atau mudah dalam mentrace jalur PCB.

PIN i2C ESP32

Pin i2C satu channel pada Mikrokontroller sesungguh nya bisa mendrive banyak slave (device). Namun ada beberapa device i2c yang tidak bisa dirubah address nya. Sehingga kita membutuhkan I2c lebih dari satu channel. Contoh nya ada pada sensor SUHU SHT25. Untuk itu, terkadang kita membutuhkan MCU yang memiliki dua channel i2C atau ic mulpilexer i2C.

arsitektur i2C

default pin i2C yaitu GPIO21 Sebagai SDA , GPIO22 sebagai SCL

Semua pin pada Table Serial di atas bisa digunakan sebagai i2C. Untuk configurasi pin di program RTClib ( DS3231) Adalah Sebagai Berikut

#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

#define I2C_SDA 16 // ganti sesukamu
#define I2C_SCL 17 // ganti sesukamu

void setup () {
  Serial.begin(115200);
  Wire.begin(I2C_SDA,I2C_SCL);
  
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    Serial.flush();
    abort();
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, let's set the time!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop () {
    DateTime now = rtc.now();
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    Serial.print("Temperature: ");
    Serial.print(rtc.getTemperature());
    Serial.println(" C");
    Serial.println();
    delay(3000);
}

Program di Atas menjelaskan bahwa pin SDA DS3231 di hubungkan ke pin GPIO16 dan Pin SCL DS3231 dihubungkan ke pin GPIO17

PIN SPI ESP32

ESP32 memiliki banyak SPI. Ada yang di sebut VSPI dan ada juga yang di sebut HSPI. Untuk config pin nya bisa kita lihat pada tabel di bawah ini

HSPIFungsiVSPIfungsi
GPIO14SCKGPIO18SCK
GPIO15MOSIGPIO19MOSI
GPIO2MISOGPIO23MISO
Dua channel SPI ESP32

Contoh Pengguanaan nya bisa di lihat pada program LoRa di bawah ini

#include <SPI.h>
#include <LoRa.h>
int counter = 0;
SPIClass spiLoRa(HSPI);
#define SCK_LORA 14
#define MISO_LORA 2
#define MOSI_LORA 15
#define SS_LORA 5
#define FREQ_LORA 923E6
#define resetPin 18
#define irqPin 19

void setup() {
  Serial.begin(9600);
  while (!Serial);
  spiLoRa.begin(SCK_LORA,MISO_LORA,MOSI_LORA,SS_LORA);
  LoRa.setSPI(spiLoRa);
  LoRa.setPins(SS_LORA, resetPin, irqPin);
  if (!LoRa.begin(FREQ_LORA)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  Serial.println();
  Serial.println();
  Serial.println("LoRa success init");
}
void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);
  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();
  counter++;
  delay(5000);
}

Atau Contoh lain pada SD card bisa dilihat pada program di bawah ini

#include "FS.h"
#include "SD.h"
#include "SPI.h"
SPIClass spiSD(HSPI);
#define SD_CS 27
#define SDSPEED 27000000
File root;

void setup(){
  Serial.begin(115200);
  spiSD.begin(14,2,15,27);//SCK,MISO,MOSI,ss // инициализируем HSPI1
  if(!SD.begin( SD_CS, spiSD, SDSPEED)){
  // if(!SD.begin()){
  Serial.println("Card Mount Failed");
  return;
  }
  Serial.println("found SD card");
  root = SD.open("/");
  printDirectory(root, 0);
  Serial.println("SD card Done");  
}
void loop() {  
}
void printDirectory(File dir, int numTabs) {
  while (true) {
    File entry =  dir.openNextFile();
    if (! entry) {
      // no more files
      break;
    }
    for (uint8_t i = 0; i < numTabs; i++) {
      Serial.print('\t');
    }
    Serial.print(entry.name());
    if (entry.isDirectory()) {
      Serial.println("/");
      printDirectory(entry, numTabs + 1);
    } else {
      // files have sizes, directories do not
      Serial.print("\t\t");
      Serial.println(entry.size(), DEC);
    }
    entry.close();
  }
}

PIN Input Ony PullUp

Ada 4 pin ESP32 yang hanya bisa di gunakan Sebagai Input Only. Namun harus di pullup dengan resistor 10k jika ingin menggunakan nya. Pin nya adalah sebagai berikut

Input Only ESP32

Pin nya hanya ada 4pcs yaitu, GPIO39, GPIO36, GPIO34 dan GPIO35. Bisa di pastikan jika teman-teman menggunakan ke empat pin ini sebagai pin out maka akan terjadi error pada ESP32.

Oke teman-teman, mungkin ini dulu pin yang sering saya gunakan dalam design ESP32 custome denga fungsi khusus. Ada beberapa pin lain yang belum kita bahas, mungkin akan di update di kemudian hari, Seperti pin ADC dan pin RTC.

Semoga Bermanfaat, Thanks

Sumber Link

ESP32 Pinout Reference: Which GPIO pins should you use?
ShareTweet
Previous Post

Merubah ATmega128 menjadi Arduino ATmega128

Next Post

Memproteksi Program Esp32 dengan Chip Id

Jimmi Sitepu

Jimmi Sitepu

Hobbyist Embedded System, Robotic, IOT and write all about them. So we have nice quote "Learning and Sharing"

Related Posts

sensor URM14 Arduino
ESP32

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega
Arduino

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Mendapatkan Waktu Akurat dengan NTP GPS
ESP32

Mendapatkan Waktu Akurat dengan NTP GPS

Mei 8, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32
Arduino

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
ethernet arduino
Arduino

Arduino Ethernet Tutorial, Project dengan Arduino Uno dan Mega

Februari 24, 2022
solder i2c arduino lcd
Arduino

Tutorial Program Arduino Lcd i2c dan Library nya

Februari 24, 2022
Next Post
Memproteksi Program Esp32 dengan Chip Id

Memproteksi Program Esp32 dengan Chip Id

Mengirim Data Sensor Suhu dengan Komunikasi LoRa

Mengirim Data Sensor Suhu dengan Komunikasi LoRa

Please login to join discussion

Tulisan Terbaru

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
Mendapatkan Waktu Akurat dengan NTP GPS

Mendapatkan Waktu Akurat dengan NTP GPS

Mei 8, 2022
Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

Custome GPS Logger Arduino dengan Akeses Internet SIM7600 4G

April 14, 2022
Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Tutorial Menggunakan Weather Station DFRobot SEN0186 dengan Arduino ESP32

Maret 9, 2022
ethernet arduino

Arduino Ethernet Tutorial, Project dengan Arduino Uno dan Mega

Februari 24, 2022

Browse by Category

  • Arduino
  • Ebook
  • ESP32
  • IOT
  • jasa
  • Komponen
  • PCB
  • Produk
  • program Arduino
  • Project
  • Rangkaian
  • Sensor
  • Tips
  • Uncategorized

Recent News

sensor URM14 Arduino

Membaca Sensor URM14 RS485 dengan ESP32 Arduino

Juli 7, 2022
4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

4G GSM Modul Arduino SIM7600 Cocok Untuk ESP32, STM32 atau Arduino Mega

Juni 13, 2022
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.

Welcome Back!

Sign In with Google
OR

Login to your account below

Forgotten Password?

Retrieve your password

Please enter your username or email address to reset your password.

Log In

Add New Playlist

No Result
View All Result
  • About US
  • Blog
  • MIKROAVR

© 2020 mikroavr.com - Learning and sharing.