Lojik Seviye Dönüştürücü: 3,3 V ve 5 V Arasında Güvenli Bağlantı
Lojik seviye dönüştürücü nedir? ESP32 ve Pico neden 5 V kaldırmaz, VIH/VIL eşikleri, gerilim bölücü, BSS138 ile I2C, 74HCT entegreleri ve modül tablosu.
Lojik seviye dönüştürücü, 3,3 V ile çalışan bir kartın (ESP32, Raspberry Pi Pico, ESP8266) 5 V ile çalışan bir kart ya da modülle (Arduino Uno, I2C LCD, HC-SR04, WS2812B) güvenle konuşmasını sağlayan küçük bir devredir. 5 V'luk bir çıkışı doğrudan 3,3 V'luk bir pine bağlamak pini yavaş yavaş ya da bir anda bozabilir; ters yönde ise 3,3 V'luk sinyal 5 V'luk girişin gözünde bazen "1" olarak bile görünmez. Hangi durumda dönüştürücü gerektiğini, hangisinin yeterli olduğunu bilmek, karışık gerilimli projelerin yarısındaki gizemli hataları ortadan kaldırır.
Bu yazıda önce VIH ve VIL eşiklerinin ne anlama geldiğini ve ESP32 ile Pico pinlerinin neden 5 V'a dayanmadığını göreceksin. Sonra üç çözümü örnekleriyle inceleyeceğiz: iki dirençli gerilim bölücüyle tek yönlü dönüşüm, I2C için BSS138 MOSFET'li çift yönlü dönüştürücü ve WS2812B ya da SPI gibi hızlı sinyaller için 74HCT entegreleri. En sonda hangi modülün 3,3 V ile doğrudan çalıştığını gösteren bir tablo ve sık yapılan hataların listesi var.

3,3 V ve 5 V lojik seviyeleri nedir?
Dijital bir pin yalnızca 0 ve 1 bilir, ama gerçek dünyada gerilim 0 ile besleme arasında herhangi bir değer olabilir. Bu yüzden her yonganın veri sayfası dört eşik verir. VIH (giriş HIGH), girişin kesin olarak 1 kabul ettiği en düşük gerilimdir. VIL (giriş LOW), kesin 0 kabul edilen en yüksek gerilimdir. Arada kalan bölge belirsizdir: yonga bu gerilimde 0 da okuyabilir, 1 de. Çıkış tarafında VOH, pinin HIGH verirken garanti ettiği en düşük gerilim, VOL ise LOW verirken garanti ettiği en yüksek gerilimdir. İki yonganın sorunsuz konuşabilmesi için gönderenin VOH değeri alıcının VIH değerinin, gönderenin VOL değeri de alıcının VIL değerinin güvenli tarafında kalmalıdır. Kapıların bu eşiklerle nasıl karar verdiğini mantık kapıları yazısında ve mantık kapısı aracında deneyebilirsin.
| Yonga (besleme) | VIL (en fazla) | VIH (en az) | VOL (en fazla) | VOH (en az) | Pin en fazla |
|---|---|---|---|---|---|
| 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 | Yaklaşık 2,6 V | 3,8 V |
| 74HC serisi (5 V) | 1,5 V | 3,5 V | 0,1 V | 4,4 V | 5,5 V |
| 74HCT serisi (5 V) | 0,8 V | 2,0 V | 0,1 V | 4,4 V | 5,5 V |
Tablodan üç önemli sonuç çıkar. Birincisi, 5 V'luk bir Uno'nun HIGH çıkışı (4,2–5 V) ESP32'nin 3,6 V'luk ve Pico'nun 3,8 V'luk sınırını açıkça aşar; bu yönde mutlaka dönüştürme gerekir. İkincisi, ESP32'nin 3,3 V'luk HIGH çıkışı Uno'nun 3,0 V'luk VIH eşiğini genellikle geçer, ama veri sayfasının garanti ettiği en düşük VOH 2,64 V'tur; yani bağlantı çoğu zaman çalışır, ama kablo uzadıkça ya da pin yüklendikçe sınırda kalır. Üçüncüsü, 5 V ile beslenen bir 74HC yongası, PCF8574 gibi 0,7 × VCC eşikli bir I2C genişletici ya da WS2812B LED, 3,5 V'un altını güvenle HIGH saymaz; 3,3 V sinyal bu yongalar için gerçekten yetersizdir. 74HCT serisinin VIH değeri ise 2,0 V'tur; bu yüzden 3,3 V'u 5 V'a çevirmenin en temiz yollarından biridir.
ESP32 ve Pico pinleri neden 5 V kaldırmaz?
3,3 V'luk yongaların her giriş pininde, pini 3,3 V hattına ve GND'ye bağlayan küçük koruma diyotları bulunur. Bu diyotlar statik elektrik gibi çok kısa darbeleri yutmak için tasarlanmıştır, sürekli akım için değil. Pine 5 V uyguladığında üstteki diyot iletime geçer ve 5 V kaynağından 3,3 V hattına doğru bir akım akar. Kaynağın iç direnci küçükse bu akım onlarca miliampere çıkar, diyotu ve pinin çevresindeki devreyi ısıtarak bozar. Akım daha küçükse pin hemen ölmez ama yonga zamanla yıpranır, hatta 3,3 V hattı yukarı itilerek kart pinden beslenmeye başlar: güç kablosunu çektiğin halde ESP32'nin LED'i sönük yanmaya devam eder. ESP32'nin veri sayfası pinler için en fazla besleme + 0,3 V (yaklaşık 3,6 V), RP2040'ınki besleme + 0,5 V (yaklaşık 3,8 V) sınırını verir. Pratikte "bir kez denedim, bozulmadı" demek, pinin 5 V'a dayanıklı olduğu anlamına gelmez.
Hangi durumda ne gerekir?
| Durum | Örnek | Çözüm |
|---|---|---|
| 5 V çıkış → 3,3 V giriş | Uno TX → ESP32 RX, HC-SR04 ECHO → Pico | Gerilim bölücü (yavaş sinyaller) ya da 74LVC tamponu (hızlı sinyaller) |
| 3,3 V çıkış → 5 V giriş (VIH 3 V civarı) | ESP32 TX → Uno RX | Çoğu zaman doğrudan çalışır; kesin güvenlik için 74HCT |
| 3,3 V çıkış → 5 V giriş (VIH 3,5 V) | ESP32 → WS2812B, 5 V'luk 74HC yongası | 74HCT125 / 74AHCT125 gibi bir tampon |
| Çift yönlü, açık akaçlı hat | I2C (SDA, SCL), 1-Wire | BSS138 MOSFET'li dönüştürücü |
| Çift yönlü, hızlı itme-çekme hattı | Paralel veri yolu | Yön pinli 74LVC245 ya da TXS0108E |
Gerilim bölücü ile tek yönlü dönüşüm (5 V → 3,3 V)
5 V'luk bir çıkışı 3,3 V'luk bir girişe taşımanın en basit yolu iki dirençtir. Sinyal üstteki R1'den girer, orta nokta 3,3 V'luk pine gider, alttaki R2 GND'ye bağlanır. Çıkış Vout = 5 V × R2 / (R1 + R2) olur; R2'nin R1'in iki katı olması 5 V'u 3,33 V'a indirir. Bölücü tek yönlüdür: yalnızca yüksek gerilimden düşüğe çalışır ve 3,3 V tarafının cevap vermesi gereken çift yönlü hatlarda kullanılamaz. Ayrıca hızı sınırlıdır, çünkü bölücünün çıkış direnci pinin kapasitansıyla birlikte küçük bir RC filtresi oluşturur ve sinyalin kenarlarını yuvarlar. Değerleri seçerken gerilim bölücü hesaplayıcısını, ayrıntılı anlatım için gerilim bölücü yazısını kullanabilirsin.
| R1 (sinyal tarafı) | R2 (GND tarafı) | 5 V'ta çıkış | Çıkış direnci | Uygun kullanım |
|---|---|---|---|---|
| 1 kΩ | 2 kΩ (iki 1 kΩ seri) | 3,33 V | 667 Ω | Hızlı sinyaller dahil çoğu iş; HIGH'da 1,7 mA çeker |
| 2,2 kΩ | 3,3 kΩ | 3,00 V | 1,3 kΩ | En güvenli pay; UART, HC-SR04 ECHO |
| 10 kΩ | 20 kΩ | 3,33 V | 6,7 kΩ | Az akım; 115200 baud UART ve yavaş sinyaller |
| 4,7 kΩ | 10 kΩ | 3,40 V | 3,2 kΩ | Sınırda; 5 V hattı 5,25 V'a çıkarsa 3,57 V olur, önerilmez |
Örnek: Arduino Uno ile ESP32 arasında UART
Uno'nun sensörleri okuyup ESP32'nin Wi-Fi ile internete taşıdığı projelerde iki kart UART ile konuşur. Uno'nun TX hattı 5 V verdiği için ESP32'nin RX pinine 1 kΩ + 2 kΩ bölücüyle gider. ESP32'nin 3,3 V'luk TX hattı ise Uno'nun RX pinine doğrudan bağlanabilir, çünkü Uno 3,0 V'un üstünü HIGH sayar. Uno'nun USB seri portu (D0, D1) bilgisayara bağlı kalsın diye Uno tarafında SoftwareSerial ile D10 ve D11 kullanılır; ESP32'de ise ikinci donanım seri portu Serial2, GPIO 16 (RX) ve 17 (TX) üzerinde çalışır. İki kartın GND'si mutlaka birbirine bağlanmalıdır.
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}Yüklemeden önce bölücünün orta noktasını multimetreyle ölç: Uno çalışırken ve hiçbir şey göndermezken UART hattı boşta HIGH kaldığı için yaklaşık 3,3 V görmelisin. Uno'nun Seri Monitör'ünde her saniye "ESP32: OK 6" gibi bir satır görüyorsan iletişim iki yönde de çalışıyor demektir. 9600 baud'da bir bit 104 µs sürer; 1 kΩ + 2 kΩ'luk bölücünün oluşturduğu gecikme ise nanosaniyeler mertebesindedir, yani hız açısından hiçbir sorun yoktur.
Örnek: HC-SR04'ü Raspberry Pi Pico'ya bağlamak

HC-SR04 ancak 5 V ile güvenilir çalışır. Pico'yu USB'den besliyorsan sensörün VCC'sini Pico'nun VBUS pinine (pin 40) bağla. TRIG girişi Pico'nun 3,3 V'luk darbesini sorunsuz algılar, bu yüzden GP15'e doğrudan gider. ECHO ise 5 V'luk bir darbe döndürür; 1 kΩ'luk direnç ECHO ile GP14 arasına, 2 kΩ'luk direnç GP14 ile GND arasına girer. Kod, ECHO darbesinin süresini time_pulse_us ile mikrosaniye cinsinden ölçer ve sesin havadaki hızıyla (yaklaşık 343 m/s) mesafeye çevirir.
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)BSS138 çift yönlü seviye dönüştürücü
Piyasada "4 kanal lojik seviye dönüştürücü" adıyla satılan küçük kartların çoğunda her kanal için bir BSS138 N kanallı MOSFET ve iki adet 10 kΩ pull-up direnci vardır. Devre son derece basittir: MOSFET'in gate'i 3,3 V'a (LV) bağlıdır, source ucu düşük gerilim tarafına, drain ucu yüksek gerilim tarafına gider. Her iki tarafın kendi pull-up direnci hattı kendi beslemesine çeker. Bu yapı, hattı yalnızca 0'a çeken ve 1 seviyesini pull-up dirençlerine bırakan I2C gibi açık akaçlı hatlar için tasarlanmıştır ve iki yönde de kendiliğinden çalışır; hangi tarafın konuştuğunu bildiren bir yön pini yoktur.
- İki taraf da boşta: MOSFET'in gate ve source uçları 3,3 V'tadır, aradaki gerilim sıfırdır ve MOSFET kapalıdır. Her iki taraf kendi pull-up direnciyle HIGH olur: LV tarafı 3,3 V, HV tarafı 5 V.
- 3,3 V tarafı LOW'a çeker: Source 0 V'a iner, gate 3,3 V'ta kaldığı için gate-source gerilimi 3,3 V olur ve MOSFET iletime geçer. HV tarafı da MOSFET üzerinden LOW'a çekilir.
- 5 V tarafı LOW'a çeker: MOSFET'in içindeki gövde diyodu iletime geçer ve source'u yaklaşık 0,7 V'a çeker. Gate-source gerilimi yaklaşık 2,6 V'a çıkınca MOSFET tamamen açılır ve LV tarafı da tam LOW olur.
| Modül pini | Bağlanacağı yer | Not |
|---|---|---|
| LV | 3,3 V kartın 3V3 pini | Düşük taraf beslemesi ve MOSFET'lerin gate gerilimi |
| HV | 5 V kaynağı (Uno 5V ya da ESP32 VIN) | Yüksek taraf pull-up beslemesi |
| GND (iki tane) | Her iki kartın GND'si | Ortak toprak şart |
| LV1–LV4 | ESP32 ya da Pico pinleri | 3,3 V tarafı sinyalleri |
| HV1–HV4 | 5 V modülün pinleri | Aynı numaralı LV pinine karşılık gelir |
Örnek: ESP32'yi 5 V'luk I2C LCD'ye bağlamak
16x2 karakter LCD'ler 5 V ile beslenmeden yeterli kontrast vermez ve arkalarındaki PCF8574 I2C modülü SDA ile SCL'yi 4,7 kΩ'luk dirençlerle 5 V'a çeker. Üstelik PCF8574'ün VIH eşiği 0,7 × VCC, yani 5 V'ta 3,5 V'tur; ESP32'nin 3,3 V'u bu eşiğin altında kalır. Bu yüzden I2C LCD ile ESP32 arasında BSS138'li bir dönüştürücü kullanmak hem pinleri korur hem de iletişimi güvenilir kılar. Bağlantı şöyledir: ESP32'nin 3V3 pini LV'ye, VIN (USB'den gelen 5 V) pini HV'ye ve LCD'nin VCC'sine, GND'ler ortak; GPIO 21 LV1'e, HV1 LCD'nin SDA'sına; GPIO 22 LV2'ye, HV2 LCD'nin SCL'sine. Aşağıdaki tarayıcı kodu LCD'yi buluyorsa (genellikle 0x27 ya da 0x3F) dönüştürücü doğru çalışıyordur.
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}74HCT entegreleri: hızlı tek yönlü sinyaller
Bölücü ve BSS138 yavaş kaldığında işin profesyonel çözümü tampon entegreleridir. 74HCT serisi 5 V ile beslenir ama girişlerinin eşiği TTL uyumludur (VIH = 2,0 V); yani ESP32'nin ya da Pico'nun 3,3 V'luk sinyalini rahatça HIGH olarak görür ve çıkışta tam 5 V'luk, keskin kenarlı bir sinyal üretir. En yaygın kullanım, WS2812B şeritlerin veri hattıdır: ESP32'nin pini 74AHCT125'in girişine, çıkışı ise 330 Ω'luk bir direnç üzerinden şeridin DIN ucuna gider; 74AHCT125'in OE (etkinleştirme) pini GND'ye bağlanır. Ters yön için, yani 5 V'luk hızlı bir sinyali 3,3 V'a indirmek için 3,3 V ile beslenen 74LVC125 ya da 74LVC245 kullanılır; bu yongaların girişleri, kendi beslemelerinden bağımsız olarak 5,5 V'a kadar dayanır.
| Çözüm | Besleme | Yön | Kanal | Tipik iş |
|---|---|---|---|---|
| 74AHCT125 / 74HCT125 | 5 V | 3,3 V → 5 V | 4 | WS2812B verisi, SPI, MAX7219 |
| 74HCT245 | 5 V | 3,3 V → 5 V | 8 | Paralel veri yolu, çok sayıda çıkış |
| 74LVC125 / 74LVC245 | 3,3 V | 5 V → 3,3 V | 4 / 8 | 5 V'luk hızlı sensör çıkışları, SD kart modülleri |
| BSS138 modülü | 3,3 V ve 5 V | Çift yönlü | 4 | I2C, 1-Wire, yavaş UART |
| Gerilim bölücü | Yok | 5 V → 3,3 V | 1 | UART RX, HC-SR04 ECHO, buton |
Hangi modül 3,3 V ile doğrudan çalışır?
Aşağıdaki tablo, ESP32 ve Pico projelerinde en sık kullanılan modüllerin 3,3 V'luk bir karta dönüştürücüsüz bağlanıp bağlanamayacağını özetler. "Evet" yazan modülleri 3V3 pininden besleyip sinyal pinlerini doğrudan bağlayabilirsin. Yine de aynı adla satılan modüllerin farklı sürümleri olabilir; kartın üzerinde regülatör ya da seviye dönüştürücü olup olmadığına bak ve emin değilsen VCC açıkken sinyal pinindeki gerilimi multimetreyle ölç.
| Modül | 3,3 V ile doğrudan | Not |
|---|---|---|
| BME280 / BMP280 modülü | Evet | Yonganın kendisi en fazla 3,6 V ister; 3V3'ten besle |
| DHT11 / DHT22 | Evet | 3,3–5,5 V; 3,3 V'ta kabloyu kısa tut |
| DS18B20 | Evet | 3,0–5,5 V; 4,7 kΩ pull-up 3,3 V'a |
| 0,96" OLED (SSD1306) | Evet | Modülde regülatör vardır, 3V3 ile beslemek I2C'yi de 3,3 V'ta tutar |
| MPU6050 (GY-521) | Evet | Modüldeki pull-up dirençleri VCC'ye bağlıdır, 3V3'ten besle |
| RC522 RFID | Evet, yalnız 3,3 V | 5 V ile beslemek modülü bozar |
| nRF24L01 | Evet, yalnız 3,3 V | Beslemeye 10–100 µF kondansatör ekle |
| HC-SR04 | Hayır | 5 V ile besle, ECHO'yu bölücüyle indir; 3,3 V'luk sürüm HC-SR04P'dir |
| I2C 16x2 LCD (PCF8574) | Kısmen | LCD 5 V ister; SDA ve SCL için BSS138 kullan |
| WS2812B LED şerit | Kısmen | 5 V ile beslenir; 3,3 V veri sınırdadır, 74AHCT125 önerilir |
| 5 V röle modülü | Kısmen | Aktif LOW modüllerde 3,3 V HIGH röleyi tam bırakmayabilir; 3,3 V tetiklemeli modül seç |
| SG90 servo | Sinyal evet | Motoru 5 V ile besle; 3,3 V PWM sinyali genelde yeterlidir |
Sık yapılan hatalar ve çözümleri
| Belirti | Olası sebep | Çözüm |
|---|---|---|
| BSS138'li dönüştürücü hiç çalışmıyor | LV ve HV beslemeleri bağlanmamış ya da ters bağlanmış | LV'ye 3,3 V, HV'ye 5 V ver; GND'leri birleştir |
| USB çekildiği halde ESP32'nin LED'i sönük yanıyor | 5 V'luk bir sinyal pinden kartı besliyor | O hatta bölücü ya da dönüştürücü ekle |
| Bölücüden sonra sinyal bozuk ya da yuvarlak | Dirençler çok büyük, hat hızlı | 1 kΩ + 2 kΩ'a in ya da 74LVC tampon kullan |
| WS2812B şeridin ilk LED'i titriyor | 3,3 V veri 3,5 V'luk VIH eşiğinin altında | 74AHCT125 ile 5 V'a çevir, veri hattına 330 Ω ekle |
| I2C bazen çalışıyor, bazen takılıyor | Pull-up'lar 5 V'a, cihazın VIH eşiği yüksek | BSS138 kullan, hızı 100 kHz'e indir |
| Röle hiç bırakmıyor | Aktif LOW röle modülü 3,3 V'u HIGH saymıyor | 3,3 V tetiklemeli modül ya da transistörlü sürücü kullan |
| Dönüştürücüyle UART'ta karakterler kayıyor | Ortak GND yok | İki kartın GND'sini birleştir |
Lojik seviye dönüştürme, kulağa teknik gelse de üç kurala iner: 5 V'tan 3,3 V'a giden hatta mutlaka bir önlem al, 3,3 V'tan 5 V'a giden hatta alıcının VIH eşiğine bak, I2C gibi çift yönlü hatlarda BSS138 kullan. Bu kurallarla Arduino, ESP32 ve Pico'yu aynı projede rahatça bir araya getirebilirsin. BlueGrays uygulamasındaki ESP32 ve Raspberry Pi Pico projelerinde her bağlantı, kartın lojik seviyesine uygun pinlerle ve adım adım devre şemasıyla anlatılır.
Sıkça sorulan sorular
ESP32 5 V'a dayanıklı mı?
Hayır. ESP32'nin veri sayfası GPIO pinleri için en fazla besleme + 0,3 V, yani yaklaşık 3,6 V sınırı verir. 5 V uygulandığında pinin koruma diyotları iletime geçer, akım 3,3 V hattına akar ve pin zamanla ya da hemen bozulabilir. Bir süre çalışıyor görünmesi güvenli olduğu anlamına gelmez.
Arduino ile ESP32 seviye dönüştürücüsüz bağlanır mı?
Kısmen. ESP32'den Arduino'ya giden 3,3 V'luk sinyaller Uno'nun 3,0 V'luk eşiğini genellikle geçtiği için doğrudan bağlanabilir. Arduino'dan ESP32'ye giden 5 V'luk sinyaller ise mutlaka bir gerilim bölücü ya da dönüştürücüden geçmelidir. Her durumda iki kartın GND'si birleştirilmelidir.
I2C için hangi lojik seviye dönüştürücü kullanılmalı?
I2C hatları açık akaçlı olduğu için BSS138 MOSFET'li çift yönlü dönüştürücü en uygun seçimdir; 100 ve 400 kHz'te sorunsuz çalışır. PCA9306 gibi I2C için tasarlanmış yongalar da aynı işi yapar. Gerilim bölücü I2C'de kullanılamaz, çünkü hat iki yönde de veri taşır.
WS2812B, ESP32'nin 3,3 V verisiyle çalışır mı?
Çoğu zaman çalışır ama garantili değildir. 5 V ile beslenen WS2812B, veri girişinde en az 3,5 V bekler ve 3,3 V bu eşiğin altındadır; özellikle kablo uzadığında ya da besleme 5 V'un üstüne çıktığında ilk LED titreyebilir. Güvenilir çözüm, veri hattına 74AHCT125 ya da 74HCT125 gibi bir tampon eklemektir.
Gerilim bölücü mü, seviye dönüştürücü modülü mü kullanmalıyım?
Tek yönlü ve yavaş bir sinyali 5 V'tan 3,3 V'a indireceksen, örneğin UART RX ya da HC-SR04 ECHO, iki direnç yeterlidir ve en ucuz çözümdür. Hat çift yönlüyse (I2C) ya da 3,3 V'u 5 V'a yükseltmen gerekiyorsa bölücü işe yaramaz; BSS138 modülü ya da 74HCT tampon kullanılır. Çok hızlı sinyaller için tampon entegreleri en doğru seçimdir.
Lojik seviye dönüştürücüde HV ve LV ne anlama gelir?
HV (high voltage) yüksek gerilim tarafıdır ve genellikle 5 V'a, LV (low voltage) ise düşük gerilim tarafıdır ve 3,3 V'a bağlanır. HV1–HV4 pinleri 5 V'luk cihazın sinyallerine, aynı numaralı LV1–LV4 pinleri 3,3 V'luk kartın pinlerine gider. İki tarafın GND'si de modülün GND pinlerinde birleştirilir.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
ESP32 ile LED Yakma
ESP32 ile temel GPIO çıkışı kullanımını öğretir. Bir LED'i dijital pinden açıp kapatarak yanıp sönme efekti elde ederiz. Arduino UNO'daki klasik blink projesinin ESP32 versiyonu; Arduino ortamındaki temel blink komutları aynıdır, ancak ESP32'nin pin yerleşimi ve 3,3 V GPIO seviyeleri Arduino UNO'dan farklıdır.

ESP32 Buton ile LED Kontrol (Push)
Butona basılı tutulduğunda LED yanar, bırakıldığında söner. ESP32'nin dijital input pin'i ve dahili pull-up direncinin nasıl kullanıldığını gösterir. INPUT_PULLUP modu sayesinde harici direnç gerekmez.

ESP32 LDR Modülü ile Işık Şiddeti Okuma
LDR modülünün ham ADC değerini ve karanlık/aydınlık referanslarına göre hesaplanan göreli ışık yüzdesini Serial Monitor'da gerçek zamanlı izleme. Bu yüzde lux ölçümü değildir. Modülün kalibrasyon mantığını öğretir. Proje 10'un öncesinde yapılması ideal; çünkü eşik değerini belirlemek için kullanılır.

Raspberry Pi Pico Dahili LED Yakma (Pico ve Pico W)
Raspberry Pi Pico serisinin açılış projesi! Pico'nun üzerindeki yeşil dahili LED'i yakıp söndürerek kartın çalıştığını doğruluyoruz — klasik "Hello World" tarzı ilk deney. Harici bileşene ihtiyaç YOK, sadece Pico ve USB kablosu yeterli. Kod MicroPython ile yazıldı (Raspberry Pi Vakfı'nın resmi olarak desteklediği dil). Thonny IDE ile Pico'yu programlarken machine.Pin sınıfı, Pin.OUT mode, led.on()/off() metodları ve time.sleep() fonksiyonlarını kavrarsın. Seri

ESP32 I2C LCD Ekran (16x2)
Bu projede 16x2 karakter LCD ekranı I2C protokolü üzerinden ESP32'ye bağlayarak metin görüntülüyoruz. I2C sayesinde sadece 2 data pini (SDA ve SCL) ile ekranı kontrol edebiliyoruz; klasik paralel bağlantıdaki 6+ pin israfı ortadan kalkıyor. Kod ilk satıra sabit bir mesaj, ikinci satıra ise her saniye artan bir sayaç yazdırıyor. Ayrıca başlangıçta I2C tarayıcı çalıştırarak ekranın adresini Serial Monitor'a yazdırıyoruz (genelde 0x27 veya 0x3F).

ESP32 HC-SR04 Ultrasonik Mesafe Ölçer
HC-SR04 ultrasonik sensör, gönderdiği ses dalgasının nesneye çarpıp geri dönme süresini (Time of Flight) ölçerek mesafe hesaplar. Bu projede ESP32 ile TRIG pinine 10 mikrosaniyelik darbe gönderip, ECHO pininden gelen yankı süresini pulseIn() ile okuyacağız. Hesaplanan mesafeyi cm cinsinden 16x2 I2C LCD'de göstereceğiz. HC-SR04 5V çalıştığı için ECHO pinine gerilim bölücü zorunludur — aksi halde ESP32'nin 3.3V GPIO'su zarar görür.

ESP32 WS2812B NeoPixel Şerit Kontrolü
WS2812B (NeoPixel) adreslenebilir LED'ler, tek bir veri pini üzerinden zincirleme kontrol edilebilen akıllı RGB LED'lerdir. Bu projede 8 LED'lik bir WS2812B şeridi Adafruit_NeoPixel kütüphanesi ile kontrol edip akıcı bir gökkuşağı animasyonu üreteceğiz. ESP32'nin 3.3V mantık seviyesi çoğu WS2812B partisinde sorunsuz çalışsa da, kararsızlık durumunda 470Ω seri direnç ve 1000µF kondansatör çözümünü göstereceğiz. Animasyon, HSV renk uzayında ton (hue) değerini kaydırarak elde edilir.

Raspberry Pi Pico Harici LED Yakma (Breadboard)
Pico'nun dahili LED'inden sonraki adım: breadboard'a harici LED bağlayıp GP14 pini üzerinden kontrol etmek. Bu proje ile Pico'nun herhangi bir genel amaçlı GPIO pinini output olarak nasıl kullanacağını, LED'in polaritesini (uzun bacak = anot/+, kısa bacak = katot/–) ve neden akım sınırlama direnci (220Ω) şart olduğunu öğreniyorsun. Direnci koymazsan LED'e aşırı akım gider ve yanabilir. Devre çok basit: Pico GP14 → 220Ω direnç → LED (+) → LED (–) → Pico GND. Wokwi'de simüle edebilir, gerçek bread
Diğer yazılar
BlueGrays uygulaması
Bu devreyi telefonunda adım adım kur
Devre şeması, kod ve parça listesi tek ekranda. 200'den fazla Arduino, ESP32 ve Pico projesi seni bekliyor.
Telefonunla tara
Kamerayı koda tut; telefonunun uygulama mağazası açılır.
ya da mağazada aç

