Level Shifter: Menghubungkan Perangkat 3,3 V dan 5 V dengan Aman
Apa itu level shifter? Alasan pin ESP32 dan Pico tidak tahan 5 V, ambang VIH/VIL, pembagi tegangan, BSS138 untuk I2C, chip 74HCT, dan tabel modul.
Level shifter adalah rangkaian kecil yang memungkinkan board dengan tegangan kerja 3,3 V (ESP32, Raspberry Pi Pico, ESP8266) berkomunikasi dengan aman dengan board atau modul yang bekerja pada 5 V (Arduino Uno, I2C LCD, HC-SR04, WS2812B). Menghubungkan output 5 V langsung ke pin 3,3 V dapat merusak pin secara perlahan atau seketika; pada arah sebaliknya, sinyal 3,3 V terkadang bahkan tidak terbaca sebagai “1” oleh input 5 V. Mengetahui kapan konverter diperlukan dan jenis yang memadai menghilangkan gangguan misterius pada separuh proyek yang menggabungkan beberapa tegangan.
Dalam artikel ini, kamu akan lebih dulu melihat arti ambang VIH dan VIL serta alasan pin ESP32 dan Pico tidak tahan 5 V. Lalu kita membahas tiga solusi beserta contohnya: konversi satu arah dengan pembagi tegangan dua resistor, konverter MOSFET BSS138 dua arah untuk I2C, dan chip 74HCT untuk sinyal cepat seperti WS2812B atau SPI. Di bagian akhir ada tabel modul yang langsung bekerja pada 3,3 V serta daftar kesalahan umum.

Apa itu level logika 3,3 V dan 5 V?
Pin digital hanya mengenal 0 dan 1, tetapi dalam dunia nyata tegangannya bisa berada di mana pun antara 0 dan tegangan catu daya. Karena itu, datasheet setiap chip mencantumkan empat ambang. VIH (input HIGH) adalah tegangan terendah yang dijamin terbaca sebagai 1 oleh input. VIL (input LOW) adalah tegangan tertinggi yang dijamin terbaca sebagai 0. Daerah di antaranya tidak terdefinisi: chip bisa membaca 0 atau 1 di sana. Di sisi output, VOH adalah tegangan terendah yang dijamin pin ketika menghasilkan HIGH, dan VOL adalah tegangan tertinggi yang dijaminnya ketika menghasilkan LOW. Agar dua chip dapat berkomunikasi dengan andal, VOH pengirim harus berada cukup jauh di atas VIH penerima, dan VOL pengirim cukup jauh di bawah VIL penerima. Kamu bisa melihat cara gerbang mengambil keputusan berdasarkan ambang ini di artikel gerbang logika dan mencobanya di alat Gerbang logika.
| Chip (catu daya) | VIL (maks.) | VIH (min.) | VOL (maks.) | VOH (min.) | Batas maksimum absolut pin |
|---|---|---|---|---|---|
| ATmega328P, Arduino Uno (5 V) | 1,5 V (0,3 × VCC) | 3,0 V (0,6 × VCC) | 0,9 V | 4,2 V | 5,5 V |
| ESP32 (3,3 V) | 0,83 V (0,25 × VDD) | 2,48 V (0,75 × VDD) | 0,33 V | 2,64 V | 3,6 V |
| RP2040, Raspberry Pi Pico (3,3 V) | 0,8 V | 2,0 V | 0,5 V | Sekitar 2,6 V | 3,8 V |
| Seri 74HC (5 V) | 1,5 V | 3,5 V | 0,1 V | 4,4 V | 5,5 V |
| Seri 74HCT (5 V) | 0,8 V | 2,0 V | 0,1 V | 4,4 V | 5,5 V |
Ada tiga kesimpulan penting dari tabel tersebut. Pertama, output HIGH Uno 5 V (4,2–5 V) jelas melampaui batas 3,6 V ESP32 dan 3,8 V Pico, sehingga konversi wajib dilakukan pada arah ini. Kedua, output HIGH 3,3 V ESP32 biasanya melampaui ambang VIH 3,0 V Uno, tetapi VOH terendah yang dijamin datasheet adalah 2,64 V; jadi koneksi ini sering bekerja, tetapi mendekati batas ketika kabel semakin panjang atau pin mendapat beban. Ketiga, chip 74HC yang diberi daya 5 V, ekspander I2C dengan ambang 0,7 × VCC seperti PCF8574, atau LED WS2812B tidak akan secara andal menganggap tegangan di bawah 3,5 V sebagai HIGH; bagi chip ini, sinyal 3,3 V memang tidak cukup. Seri 74HCT memiliki VIH 2,0 V, sehingga menjadi salah satu cara paling sederhana dan andal untuk mengubah 3,3 V menjadi 5 V.
Mengapa pin ESP32 dan Pico tidak tahan 5 V?
Setiap pin input pada chip 3,3 V memiliki dioda proteksi kecil yang menghubungkan pin ke jalur 3,3 V dan ke GND. Dioda ini dirancang untuk menyerap pulsa sangat singkat seperti pelepasan listrik statis, bukan arus terus-menerus. Ketika kamu memberikan 5 V ke pin, dioda atas menghantarkan arus sehingga arus mengalir dari sumber 5 V ke jalur 3,3 V. Jika hambatan dalam sumber rendah, arusnya mencapai puluhan miliampere dan panasnya merusak dioda serta rangkaian di sekitar pin. Jika arus lebih kecil, pin tidak langsung mati, tetapi chip mengalami kerusakan seiring waktu, dan tegangan jalur 3,3 V bahkan bisa terdorong naik sehingga board mulai mendapat daya melalui pin: kamu mencabut kabel daya tetapi LED ESP32 tetap menyala redup. Datasheet ESP32 menetapkan batas pin sebesar tegangan catu daya + 0,3 V (sekitar 3,6 V), dan RP2040 sebesar tegangan catu daya + 0,5 V (sekitar 3,8 V). “Aku pernah mencobanya sekali dan tidak rusak” bukan berarti pin tersebut tahan 5 V.
Apa yang dibutuhkan untuk setiap kondisi?
| Kondisi | Contoh | Solusi |
|---|---|---|
| Output 5 V → input 3,3 V | Uno TX → ESP32 RX, HC-SR04 ECHO → Pico | Pembagi tegangan (sinyal lambat) atau buffer 74LVC (sinyal cepat) |
| Output 3,3 V → input 5 V (VIH sekitar 3 V) | ESP32 TX → Uno RX | Sering langsung bekerja; gunakan 74HCT untuk margin yang terjamin |
| Output 3,3 V → input 5 V (VIH 3,5 V) | ESP32 → WS2812B, chip 74HC 5 V | Buffer seperti 74HCT125 / 74AHCT125 |
| Jalur open-drain dua arah | I2C (SDA, SCL), 1-Wire | Konverter MOSFET BSS138 |
| Jalur push-pull cepat dua arah | Bus data paralel | 74LVC245 dengan pin arah, atau TXS0108E |
Konversi satu arah dengan pembagi tegangan (5 V → 3,3 V)
Cara paling sederhana untuk memasukkan output 5 V ke input 3,3 V adalah memakai dua resistor. Sinyal masuk melalui resistor atas R1, titik tengah terhubung ke pin 3,3 V, dan resistor bawah R2 terhubung ke GND. Output-nya adalah Vout = 5 V × R2 / (R1 + R2); membuat R2 dua kali R1 menurunkan 5 V menjadi 3,33 V. Pembagi tegangan hanya bekerja satu arah: dari tegangan lebih tinggi ke lebih rendah, sehingga tidak bisa digunakan pada jalur dua arah yang mengharuskan sisi 3,3 V membalas. Kecepatannya juga terbatas karena hambatan output pembagi membentuk filter RC kecil bersama kapasitansi pin dan membuat tepi sinyal melengkung. Gunakan kalkulator pembagi tegangan untuk memilih nilai, dan baca artikel pembagi tegangan untuk penjelasan lengkapnya.
| R1 (sisi sinyal) | R2 (sisi GND) | Output pada 5 V | Hambatan output | Cocok untuk |
|---|---|---|---|---|
| 1 kΩ | 2 kΩ (dua resistor 1 kΩ disusun seri) | 3,33 V | 667 Ω | Sebagian besar kebutuhan termasuk sinyal cepat; menarik 1,7 mA ketika HIGH |
| 2,2 kΩ | 3,3 kΩ | 3,00 V | 1,3 kΩ | Margin paling aman; UART, HC-SR04 ECHO |
| 10 kΩ | 20 kΩ | 3,33 V | 6,7 kΩ | Arus rendah; UART hingga 115200 baud dan sinyal lambat |
| 4,7 kΩ | 10 kΩ | 3,40 V | 3,2 kΩ | Mendekati batas; jika jalur 5 V naik menjadi 5,25 V, output menjadi 3,57 V, tidak disarankan |
Contoh: UART antara Arduino Uno dan ESP32
Dalam proyek yang memakai Uno untuk membaca sensor dan ESP32 untuk mengirim data ke internet lewat Wi-Fi, kedua board berkomunikasi melalui UART. Karena jalur TX Uno menghasilkan 5 V, jalur ini dihubungkan ke pin RX ESP32 melalui pembagi tegangan 1 kΩ + 2 kΩ. Jalur TX 3,3 V ESP32 bisa langsung dihubungkan ke pin RX Uno karena Uno menganggap tegangan di atas 3,0 V sebagai HIGH. Agar port serial USB Uno (D0, D1) tetap tersedia untuk komputer, sisi Uno memakai SoftwareSerial pada D10 dan D11; pada ESP32, port serial perangkat keras kedua Serial2 berjalan pada GPIO 16 (RX) dan 17 (TX). GND kedua board harus dihubungkan bersama.
1// Arduino Uno: SoftwareSerial ile ESP32'ye veri gönder / send data to the ESP32 with SoftwareSerial
2// Uno D11 (TX, 5 V) -> 1k -> ESP32 GPIO 16 ; GPIO 16 -> 2k -> GND
3// ESP32 GPIO 17 (TX, 3,3 V) -> Uno D10 (RX) doğrudan / directly ; GND <-> GND
4#include <SoftwareSerial.h>
5
6SoftwareSerial link(10, 11); // RX, TX
7
8void setup() {
9 Serial.begin(9600); // bilgisayar / computer
10 link.begin(9600); // ESP32 hattı / ESP32 line
11}
12
13void loop() {
14 int raw = analogRead(A0);
15 link.print(F("A0="));
16 link.println(raw); // ör. / e.g. "A0=512"
17
18 unsigned long start = millis();
19 while (millis() - start < 1000) { // 1 sn cevap bekle / wait 1 s for a reply
20 if (link.available()) {
21 String reply = link.readStringUntil('\n');
22 Serial.print(F("ESP32: "));
23 Serial.println(reply);
24 }
25 }
26}1// ESP32: Serial2 ile Uno'dan gelen satırları oku ve cevap ver / read lines from the Uno on Serial2 and reply
2const int RX2_PIN = 16; // bölücünün orta noktası / divider midpoint
3const int TX2_PIN = 17; // Uno D10'a doğrudan / straight to Uno D10
4
5void setup() {
6 Serial.begin(115200);
7 Serial2.begin(9600, SERIAL_8N1, RX2_PIN, TX2_PIN);
8}
9
10void loop() {
11 if (Serial2.available()) {
12 String line = Serial2.readStringUntil('\n');
13 line.trim();
14 Serial.print("Uno: ");
15 Serial.println(line);
16 Serial2.print("OK "); // 3,3 V çıkış Uno için yeterli / 3.3 V output is enough for the Uno
17 Serial2.println(line.length());
18 }
19}Sebelum meng-upload, ukur titik tengah pembagi tegangan dengan multimeter: ketika Uno menyala dan tidak mengirim apa pun, kamu seharusnya melihat sekitar 3,3 V karena jalur UART berada pada HIGH ketika menganggur. Jika Serial Monitor Uno menampilkan baris seperti “ESP32: OK 6” setiap detik, komunikasi dua arah sudah bekerja. Pada 9600 baud, satu bit berlangsung 104 µs, sedangkan jeda yang ditimbulkan pembagi tegangan 1 kΩ + 2 kΩ berada dalam rentang nanodetik, sehingga kecepatan sama sekali bukan masalah.
Contoh: menghubungkan HC-SR04 ke Raspberry Pi Pico

HC-SR04 hanya bekerja dengan andal pada 5 V. Jika kamu memberi daya ke Pico dari USB, hubungkan VCC sensor ke pin VBUS Pico (pin 40). Input TRIG dapat membaca pulsa 3,3 V Pico tanpa masalah, sehingga langsung dihubungkan ke GP15. Namun, ECHO mengembalikan pulsa 5 V; pasang resistor 1 kΩ di antara ECHO dan GP14, serta resistor 2 kΩ di antara GP14 dan GND. Kode mengukur durasi pulsa ECHO dalam mikrodetik dengan time_pulse_us dan mengubahnya menjadi jarak menggunakan kecepatan suara di udara (sekitar 343 m/dtk).
1# Raspberry Pi Pico + HC-SR04 (ECHO bölücüyle) / Raspberry Pi Pico + HC-SR04 (ECHO through a divider)
2# VCC -> VBUS (pin 40), GND -> GND, TRIG -> GP15, ECHO -> 1k -> GP14 -> 2k -> GND
3from machine import Pin, time_pulse_us
4import time
5
6trig = Pin(15, Pin.OUT)
7echo = Pin(14, Pin.IN)
8
9
10def distance_cm():
11 trig.value(0)
12 time.sleep_us(2)
13 trig.value(1) # 10 µs tetik darbesi / 10 µs trigger pulse
14 time.sleep_us(10)
15 trig.value(0)
16 t = time_pulse_us(echo, 1, 30000) # en fazla 30 ms bekle / wait at most 30 ms
17 if t < 0:
18 return None # yankı yok / no echo
19 return t * 0.0343 / 2 # gidiş-dönüş / round trip
20
21
22while True:
23 d = distance_cm()
24 if d is None:
25 print("Olcum yok / No echo")
26 else:
27 print("Mesafe / Distance: {:.1f} cm".format(d))
28 time.sleep(0.5)Level shifter dua arah BSS138
Sebagian besar board kecil yang dijual sebagai “level shifter 4 kanal” memiliki satu MOSFET kanal-N BSS138 dan dua resistor pull-up 10 kΩ per kanal. Rangkaiannya sangat sederhana: gate MOSFET dihubungkan ke 3,3 V (LV), source ke sisi tegangan rendah, dan drain ke sisi tegangan tinggi. Resistor pull-up masing-masing sisi menarik jalur ke tegangan catu daya sisi tersebut. Susunan ini dirancang untuk jalur open-drain seperti I2C, yang hanya menarik jalur ke 0 dan menyerahkan level 1 kepada resistor pull-up, serta bekerja dua arah secara otomatis; tidak ada pin arah untuk menentukan sisi mana yang sedang mengirim.
- Kedua sisi menganggur: Gate dan source MOSFET sama-sama berada pada 3,3 V, beda tegangan keduanya nol, dan MOSFET mati. Masing-masing sisi ditarik HIGH oleh resistornya sendiri: sisi LV ke 3,3 V, sisi HV ke 5 V.
- Sisi 3,3 V menarik LOW: Source turun ke 0 V; karena gate tetap pada 3,3 V, tegangan gate-source menjadi 3,3 V dan MOSFET menyala. Sisi HV ditarik LOW melalui MOSFET.
- Sisi 5 V menarik LOW: Dioda bodi di dalam MOSFET menghantarkan arus dan menarik source turun ke sekitar 0,7 V. Begitu tegangan gate-source mencapai sekitar 2,6 V, MOSFET menyala penuh dan sisi LV juga menjadi LOW sepenuhnya.
| Pin modul | Hubungkan ke | Catatan |
|---|---|---|
| LV | Pin 3V3 board 3,3 V | Catu daya sisi tegangan rendah dan tegangan gate MOSFET |
| HV | Sumber 5 V (Uno 5V atau ESP32 VIN) | Catu daya pull-up sisi tegangan tinggi |
| GND (dua) | GND kedua board | Ground bersama diperlukan |
| LV1–LV4 | Pin ESP32 atau Pico | Sinyal sisi 3,3 V |
| HV1–HV4 | Pin modul 5 V | Masing-masing berpasangan dengan pin LV bernomor sama |
Contoh: menghubungkan ESP32 ke LCD I2C 5 V
LCD karakter 16x2 tidak menghasilkan kontras yang cukup kecuali diberi daya 5 V, dan backpack I2C PCF8574 di belakangnya menarik SDA dan SCL ke 5 V melalui resistor 4,7 kΩ. Selain itu, ambang VIH PCF8574 adalah 0,7 × VCC, yaitu 3,5 V pada catu daya 5 V; tegangan 3,3 V ESP32 berada di bawahnya. Jadi, memakai konverter BSS138 di antara LCD I2C dan ESP32 melindungi pin sekaligus membuat komunikasi andal. Hubungkan seperti ini: pin 3V3 ESP32 ke LV, pin VIN-nya (5 V dari USB) ke HV dan VCC LCD, semua GND bersama; GPIO 21 ke LV1 dan HV1 ke SDA LCD; GPIO 22 ke LV2 dan HV2 ke SCL LCD. Jika kode scanner di bawah menemukan LCD (biasanya pada 0x27 atau 0x3F), konverter sudah bekerja.
1// ESP32 I2C tarayıcı: BSS138 dönüştürücü üzerinden 5 V'luk cihazları bul
2// ESP32 I2C scanner: find 5 V devices through a BSS138 converter
3// GPIO 21 -> LV1 / HV1 -> SDA ; GPIO 22 -> LV2 / HV2 -> SCL ; 3V3 -> LV ; VIN (5 V) -> HV
4#include <Wire.h>
5
6const int SDA_PIN = 21;
7const int SCL_PIN = 22;
8
9void setup() {
10 Serial.begin(115200);
11 Wire.begin(SDA_PIN, SCL_PIN);
12 Wire.setClock(100000); // 100 kHz, BSS138 için rahat hız / comfortable speed for the BSS138
13}
14
15void loop() {
16 int found = 0;
17 for (byte addr = 1; addr < 127; addr++) {
18 Wire.beginTransmission(addr);
19 if (Wire.endTransmission() == 0) { // 0 = ACK, cihaz var / device present
20 Serial.printf("Cihaz / Device: 0x%02X\n", addr);
21 found++;
22 }
23 }
24 if (found == 0) Serial.println("Cihaz yok / No device found");
25 Serial.println("---");
26 delay(3000);
27}Chip 74HCT: sinyal cepat satu arah
Ketika pembagi tegangan atau BSS138 terlalu lambat, solusi profesionalnya adalah chip buffer. Seri 74HCT bekerja pada 5 V, tetapi ambang input-nya kompatibel dengan TTL (VIH = 2,0 V), sehingga mudah membaca sinyal 3,3 V dari ESP32 atau Pico sebagai HIGH dan menghasilkan sinyal 5 V penuh dengan tepi tajam. Penggunaan paling umum adalah jalur data LED strip WS2812B: pin ESP32 dihubungkan ke input 74AHCT125, dan output-nya melewati resistor 330 Ω menuju DIN LED strip; pin OE (enable) 74AHCT125 dihubungkan ke GND. Untuk arah sebaliknya, yaitu menurunkan sinyal cepat 5 V ke 3,3 V, gunakan 74LVC125 atau 74LVC245 dengan catu daya 3,3 V; input chip ini tahan hingga 5,5 V terlepas dari tegangan catu dayanya sendiri.
| Solusi | Catu daya | Arah | Kanal | Penggunaan umum |
|---|---|---|---|---|
| 74AHCT125 / 74HCT125 | 5 V | 3,3 V → 5 V | 4 | Data WS2812B, SPI, MAX7219 |
| 74HCT245 | 5 V | 3,3 V → 5 V | 8 | Bus data paralel, banyak output |
| 74LVC125 / 74LVC245 | 3,3 V | 5 V → 3,3 V | 4 / 8 | Output sensor 5 V cepat, modul kartu SD |
| Modul BSS138 | 3,3 V dan 5 V | Dua arah | 4 | I2C, 1-Wire, UART lambat |
| Pembagi tegangan | Tidak ada | 5 V → 3,3 V | 1 | UART RX, HC-SR04 ECHO, tombol |
Modul mana yang langsung bekerja pada 3,3 V?
Tabel di bawah merangkum apakah modul yang paling sering digunakan dalam proyek ESP32 dan Pico dapat terhubung ke board 3,3 V tanpa konverter. Kamu bisa memberi daya ke modul bertanda “Ya” dari pin 3V3 dan langsung menghubungkan pin sinyalnya. Meski begitu, modul yang dijual dengan nama sama bisa memiliki versi berbeda; periksa apakah board memiliki regulator atau level shifter, dan jika ragu, ukur tegangan pada pin sinyal dengan multimeter ketika VCC mendapat daya.
| Modul | Langsung pada 3,3 V | Catatan |
|---|---|---|
| Modul BME280 / BMP280 | Ya | Chip itu sendiri hanya menerima maksimal 3,6 V; beri daya dari 3V3 |
| DHT11 / DHT22 | Ya | 3,3–5,5 V; gunakan kabel pendek pada 3,3 V |
| DS18B20 | Ya | 3,0–5,5 V; pull-up 4,7 kΩ ke 3,3 V |
| OLED 0,96 inci (SSD1306) | Ya | Modul memiliki regulator; memberi daya dari 3V3 juga menjaga I2C pada 3,3 V |
| MPU6050 (GY-521) | Ya | Pull-up modul terhubung ke VCC; beri daya dari 3V3 |
| RC522 RFID | Ya, hanya 3,3 V | Memberi daya dari 5 V akan merusak modul |
| nRF24L01 | Ya, hanya 3,3 V | Tambahkan kapasitor 10–100 µF pada catu daya |
| HC-SR04 | Tidak | Beri daya dari 5 V dan turunkan ECHO dengan pembagi tegangan; versi 3,3 V adalah HC-SR04P |
| LCD I2C 16x2 (PCF8574) | Sebagian | LCD memerlukan 5 V; gunakan BSS138 untuk SDA dan SCL |
| LED strip WS2812B | Sebagian | Diberi daya dari 5 V; data 3,3 V mendekati batas, disarankan memakai 74AHCT125 |
| Modul relay 5 V | Sebagian | Pada modul aktif LOW, HIGH 3,3 V mungkin tidak melepaskan relay sepenuhnya; pilih modul dengan pemicu 3,3 V |
| Servo SG90 | Ya untuk sinyal | Beri daya motor dari 5 V; sinyal PWM 3,3 V biasanya cukup |
Kesalahan umum dan cara memperbaikinya
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Konverter BSS138 sama sekali tidak bekerja | Catu daya LV dan HV tidak terhubung atau tertukar | Berikan 3,3 V ke LV dan 5 V ke HV; satukan GND |
| LED ESP32 menyala redup ketika USB dicabut | Sinyal 5 V memberi daya ke board melalui pin | Tambahkan pembagi tegangan atau konverter pada jalur tersebut |
| Sinyal terdistorsi atau melengkung setelah pembagi tegangan | Nilai resistor terlalu besar untuk jalur cepat | Turunkan menjadi 1 kΩ + 2 kΩ atau gunakan buffer 74LVC |
| LED pertama pada strip WS2812B berkedip-kedip | Data 3,3 V berada di bawah ambang VIH 3,5 V | Konversikan ke 5 V dengan 74AHCT125 dan tambahkan 330 Ω pada jalur data |
| I2C kadang bekerja, kadang macet | Pull-up ke 5 V dan ambang VIH perangkat yang tinggi | Gunakan BSS138 dan turunkan kecepatan ke 100 kHz |
| Relay tidak pernah lepas | Modul relay aktif LOW tidak membaca 3,3 V sebagai HIGH | Gunakan modul pemicu 3,3 V atau driver transistor |
| Karakter UART menjadi kacau setelah melewati konverter | Tidak ada GND bersama | Hubungkan GND kedua board |
Konversi level logika mungkin terdengar teknis, tetapi intinya ada tiga aturan: selalu lindungi jalur dari 5 V ke 3,3 V, periksa ambang VIH penerima pada jalur dari 3,3 V ke 5 V, dan gunakan BSS138 pada jalur dua arah seperti I2C. Dengan aturan ini, kamu bisa menggabungkan Arduino, ESP32, dan Pico dalam proyek yang sama dengan tenang. Di aplikasi BlueGrays, setiap koneksi dalam proyek ESP32 dan Raspberry Pi Pico dijelaskan dengan pin yang sesuai dengan level logika board serta skema pengkabelan langkah demi langkah.
Pertanyaan umum
Apakah ESP32 tahan 5 V?
Tidak. Datasheet ESP32 menetapkan batas maksimum tegangan catu daya + 0,3 V, sekitar 3,6 V, untuk pin GPIO. Ketika diberi 5 V, dioda proteksi pin menghantarkan arus, arus mengalir ke jalur 3,3 V, dan pin bisa rusak seiring waktu atau seketika. Walaupun terlihat bekerja untuk sementara, bukan berarti koneksi itu aman.
Bisakah aku menghubungkan Arduino ke ESP32 tanpa level shifter?
Sebagian bisa. Sinyal 3,3 V dari ESP32 ke Arduino biasanya melampaui ambang 3,0 V Uno, sehingga bisa langsung dihubungkan. Namun, sinyal 5 V dari Arduino ke ESP32 wajib melewati pembagi tegangan atau konverter. Dalam semua kondisi, GND kedua board harus disatukan.
Level shifter mana yang sebaiknya kupakai untuk I2C?
Karena jalur I2C bersifat open-drain, konverter MOSFET BSS138 dua arah merupakan pilihan terbaik; konverter ini bekerja tanpa masalah pada 100 dan 400 kHz. Chip yang dirancang untuk I2C seperti PCA9306 melakukan fungsi yang sama. Pembagi tegangan tidak bisa dipakai pada I2C karena jalurnya membawa data dalam dua arah.
Apakah WS2812B bekerja dengan data 3,3 V ESP32?
Sering kali ya, tetapi tidak dijamin. WS2812B dengan catu daya 5 V memerlukan minimal 3,5 V pada input data, dan 3,3 V berada di bawah ambang itu; LED pertama mungkin berkedip-kedip, terutama jika kabel lebih panjang atau tegangan catu daya naik di atas 5 V. Solusi yang andal adalah memasang buffer seperti 74AHCT125 atau 74HCT125 pada jalur data.
Sebaiknya aku memakai pembagi tegangan atau modul level shifter?
Jika kamu menurunkan sinyal lambat satu arah dari 5 V ke 3,3 V, seperti UART RX atau HC-SR04 ECHO, dua resistor sudah cukup dan merupakan solusi termurah. Jika jalurnya dua arah (I2C) atau kamu perlu menaikkan 3,3 V ke 5 V, pembagi tegangan tidak membantu; gunakan modul BSS138 atau buffer 74HCT. Untuk sinyal yang sangat cepat, chip buffer adalah pilihan yang tepat.
Apa arti HV dan LV pada level shifter?
HV (high voltage) adalah sisi tegangan tinggi yang biasanya terhubung ke 5 V, sedangkan LV (low voltage) adalah sisi tegangan rendah yang terhubung ke 3,3 V. Pin HV1–HV4 terhubung ke sinyal perangkat 5 V, dan pin LV1–LV4 yang berpasangan terhubung ke pin board 3,3 V. GND kedua sisi disatukan pada pin GND modul.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
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.

Kendali LED dengan Tombol Tekan ESP32 (Tekan)
LED menyala ketika tombol ditekan dan mati ketika dilepas. Menunjukkan cara memakai pin input digital ESP32 dan resistor pull-up internalnya. Mode INPUT_PULLUP membuat resistor eksternal tidak diperlukan.

Membaca Intensitas Cahaya dengan Modul LDR ESP32
Memantau secara real-time di Serial Monitor nilai ADC mentah modul LDR dan persentase cahaya relatif yang dihitung dari nilai acuan gelap dan terang. Persentase ini bukan pengukuran lux. Mengajarkan logika kalibrasi modul. Ideal dikerjakan sebelum Proyek 10, karena dipakai untuk menentukan nilai ambang.

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.

Layar LCD I2C ESP32 (16x2)
Di proyek ini, kita menampilkan teks dengan menyambungkan layar LCD karakter 16x2 ke ESP32 lewat protokol I2C. Berkat I2C, kita bisa mengendalikan layar hanya dengan dua pin data (SDA dan SCL), sehingga tidak perlu memboroskan 6+ pin seperti pada sambungan paralel klasik. Kode mencetak pesan tetap di baris pertama dan penghitung yang naik setiap detik di baris kedua. Selain itu, kita menjalankan pemindai I2C di awal untuk mencetak alamat layar ke Serial Monitor (biasanya 0x27).

Sensor Jarak Ultrasonik HC-SR04 ESP32
Sensor ultrasonik HC-SR04 menghitung jarak dengan mengukur waktu yang dibutuhkan gelombang suara yang dipancarkannya untuk memantul dari benda lalu kembali (Time of Flight). Di proyek ini, kita mengirim pulsa 10 mikrodetik dari ESP32 ke pin TRIG sensor dan membaca durasi pantulan dari pin ECHO dengan pulseIn(). Jarak hasil hitung ditampilkan dalam sentimeter di LCD I2C 16x2. Karena HC-SR04 bekerja di 5V, pembagi tegangan wajib dipasang di pin ECHO.

Kendali Strip NeoPixel WS2812B ESP32
LED addressable WS2812B (NeoPixel) adalah LED RGB pintar yang bisa dikendalikan secara berantai lewat satu pin data. Di proyek ini, kita mengendalikan strip WS2812B 8 LED dengan library Adafruit_NeoPixel untuk membuat animasi pelangi yang halus. Meskipun level logika 3,3V ESP32 bekerja lancar dengan sebagian besar komponen WS2812B, kita menunjukkan solusi dengan resistor seri 470Ω dan kapasitor 1000µF untuk berjaga-jaga jika tidak stabil. Animasinya dibuat dengan menggeser nilai hue.

Raspberry Pi Pico: Mengendalikan LED Eksternal (Breadboard)
Langkah berikutnya setelah LED bawaan Pico: menyambungkan LED eksternal ke breadboard dan mengendalikannya lewat pin GP14. Di proyek ini, kamu belajar memakai pin GPIO serbaguna Pico mana pun sebagai output, polaritas LED (kaki panjang = anoda/+, kaki pendek = katoda/–), dan kenapa resistor pembatas arus (220Ω) diperlukan. Tanpa resistor, arus berlebih mengalir melalui LED dan LED bisa terbakar. Rangkaiannya sangat sederhana: Pico GP14 → resistor 220Ω → LED → GND.
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

