Arduino mu ESP32 mi? Farklar, Karşılaştırma ve Seçim Rehberi
Arduino mu ESP32 mi? Uno ve ESP32'yi hız, RAM, Wi-Fi, 5 V/3,3 V, ADC, pin ve pil ömrüyle karşılaştır; Pico kıyası, ortak kod ve proje bazlı seçim tablosu.
Arduino mu ESP32 mi? Kısa cevap şu: Projen Wi-Fi, Bluetooth, internet ya da yüksek işlem gücü gerektiriyorsa ESP32; elektroniğin temellerini öğreniyorsan, 5 V'luk sensör ve modüllerle sorunsuz çalışmak ve her örneği birebir takip etmek istiyorsan Arduino Uno seç. İki kart da Arduino IDE ile, aynı digitalWrite, analogRead ve Serial komutlarıyla programlanır. Asıl fark donanımdadır: hız, bellek, çalışma gerilimi, pinler ve kablosuz bağlantı.
Bu rehberde Arduino Uno R3 ile en yaygın ESP32 kartı olan ESP32 DevKit'i (ESP-WROOM-32 modüllü) gerçek sayılarla karşılaştırıyoruz: İşlemci ve bellek farkı pratikte ne anlama gelir, 5 V ile 3,3 V farkı hangi modülleri etkiler, analog okuma ve PWM nasıl değişir, pil ile hangisi kaç saat çalışır? Ardından aynı kodu iki kartta çalıştıracak, Raspberry Pi Pico'yu da kısaca kıyaslayacak ve proje türüne göre hangi kartı seçmen gerektiğini bir tabloyla özetleyeceğiz.

Kısa cevap: hangi durumda hangisi?
| Durumun | Önerilen kart | Neden? |
|---|---|---|
| Elektroniğe yeni başlıyorsun | Arduino Uno | 5 V, dayanıklı pinler, en çok örnek ve ders |
| Wi-Fi ya da internet gerekiyor | ESP32 | Wi-Fi kartın içinde, ek modül gerekmez |
| Telefonla Bluetooth bağlantısı | ESP32 | Klasik Bluetooth ve BLE yerleşik |
| 5 V modüller ve shield'lar kullanacaksın | Arduino Uno | Seviye dönüştürücü gerekmez |
| Ekran, çok sayıda LED, büyük veri | ESP32 | 520 KB RAM (Uno'da 2 KB) |
| Pille aylarca çalışacak sensör | ESP32 (düşük tüketimli kart) | Derin uykuda yaklaşık 10 µA |
| Python ile programlamak | Raspberry Pi Pico | MicroPython desteği çok olgun |
| En düşük bütçe | ESP32 ya da Pico | Uno klonu fiyatına çok daha fazla özellik |
Arduino Uno ve ESP32 nedir?
Arduino Uno R3, İtalya'da geliştirilen Arduino platformunun en bilinen kartıdır. Kalbinde 8 bitlik, 16 MHz'te çalışan ATmega328P mikrodenetleyicisi bulunur. Kart 5 V ile çalışır ve pin dizilimi yıllardır aynıdır; bu sayede yüzlerce shield (üstüne takılan genişletme kartı), kitap ve ders onunla uyumludur. Yapısı basit olduğu için ne olduğunu tam olarak görürsün: bir pine HIGH yazdığında orada gerçekten 5 V vardır. Yeni çıkan Uno R4 ise 48 MHz'lik 32 bit bir Arm işlemci ve 32 KB RAM ile gelir, R4 WiFi sürümü kartın üzerine bir ESP32-S3 ekleyerek kablosuz bağlantı da sunar; bu yazıda "Uno" derken hâlâ en yaygın olan R3'ü kastediyoruz. Platformu daha yakından tanımak için Arduino Nedir? yazısına bakabilirsin.

ESP32 ise Espressif firmasının 2016'da çıkardığı, Wi-Fi ve Bluetooth'u aynı yongada barındıran 32 bitlik bir sistem yongasıdır (SoC). Elimize aldığımız kart, bu yongayı taşıyan bir geliştirme kartıdır: üzerinde USB-seri dönüştürücü, 3,3 V regülatörü, EN ve BOOT düğmeleri bulunur. Önemli bir ayrıntı: ESP32 bir Arduino değildir, ama Espressif'in hazırladığı Arduino çekirdeği sayesinde Arduino IDE'de tıpkı bir Arduino gibi programlanır. Kurulum ve ilk projeler için ESP32 Nedir? yazısı iyi bir başlangıçtır.
Büyük karşılaştırma tablosu: Arduino Uno, ESP32 ve Raspberry Pi Pico
| Özellik | Arduino Uno R3 | ESP32 DevKit (WROOM-32) | Raspberry Pi Pico |
|---|---|---|---|
| İşlemci | ATmega328P, 8 bit AVR | Xtensa LX6, 32 bit, çift çekirdek | RP2040, 32 bit Arm Cortex-M0+, çift çekirdek |
| Saat hızı | 16 MHz | 240 MHz'e kadar | 133 MHz |
| RAM (SRAM) | 2 KB | 520 KB | 264 KB |
| Program belleği (flash) | 32 KB (0,5 KB'ı önyükleyici) | Genellikle 4 MB | 2 MB |
| EEPROM | 1 KB | Yok (flash üzerinde taklit edilir) | Yok (flash üzerinde dosya sistemi) |
| Mantık gerilimi | 5 V | 3,3 V (5 V'a dayanıksız) | 3,3 V (5 V'a dayanıksız) |
| Besleme | USB 5 V ya da 7–12 V (jak/VIN) | USB 5 V ya da VIN'den 5 V | USB 5 V ya da VSYS'ten 1,8–5,5 V |
| Kullanılabilir GPIO | 20 (14 dijital + 6 analog) | Yaklaşık 25 (kısıtlı pinler hariç) | 26 |
| Analog giriş (ADC) | 6 kanal, 10 bit | 18 kanal, 12 bit (Wi-Fi açıkken yalnız ADC1) | 3 kanal, 12 bit |
| Analog çıkış (DAC) | Yok | 2 kanal, 8 bit | Yok |
| PWM | 6 pin, 8 bit, 490/980 Hz | 16 kanal, frekansı ayarlı, neredeyse her pinde | 16 kanal, tüm GPIO'larda |
| Wi-Fi | Yok | 802.11 b/g/n, 2,4 GHz | Yok (Pico W'de var) |
| Bluetooth | Yok | Bluetooth 4.2: Klasik + BLE | Yok (Pico W'de var) |
| UART / I2C / SPI | 1 / 1 / 1 | 3 / 2 / 2 (kullanıcıya açık) | 2 / 2 / 2 |
| Pin başına akım | 20 mA önerilen (en fazla 40 mA) | Yaklaşık 20 mA önerilen | Varsayılan 4 mA (12 mA'e kadar ayarlanır) |
| Kartın tipik akımı | Yaklaşık 45 mA | Wi-Fi ile ortalama 50–130 mA, anlık 240 mA | Yaklaşık 25 mA |
| En düşük uyku | Yonga 1 µA altı, kart yaklaşık 30 mA | Derin uykuda yonga yaklaşık 10 µA | Dormant modda kart yaklaşık 1 mA |
| Programlama | Arduino C/C++ | Arduino C/C++, ESP-IDF, MicroPython | MicroPython, C/C++ SDK, Arduino |
| Yaklaşık fiyat | Orijinal 25–30 $, klon 5–10 $ | Klon DevKit 4–8 $ | 4 $ (Pico W 6 $) |
İşlemci ve bellek: sayılar pratikte ne anlama geliyor?
Uno'nun işlemcisi saniyede yaklaşık 16 milyon komut işler ve her seferinde 8 bitlik sayılarla çalışır; 32 bitlik bir long ya da float işlemi için onlarca komut gerekir ve donanımsal kayan nokta birimi (FPU) yoktur. ESP32 ise 240 MHz'te, 32 bitlik sayılarla ve tek duyarlıklı bir FPU ile çalışır. Bu yüzden float ağırlıklı bir hesapta ESP32, Uno'dan onlarca hatta yüzlerce kat hızlı olabilir. LED yakmak ya da bir sensörü saniyede birkaç kez okumak için bu fark hissedilmez; ama filtreleme, ses işleme, şifreleme ya da yüzlerce LED için animasyon hesaplamak gibi işlerde belirleyici olur. Küçük bir ipucu: ESP32'nin FPU'su yalnız float içindir, double işlemler yazılımla yapılır ve belirgin şekilde yavaştır.
Bellek farkı ise çok daha sık karşına çıkar. Uno'nun 2 KB RAM'i değişkenler, Serial tamponları ve kütüphanelerin ayırdığı alanlar arasında paylaşılır. RAM bittiğinde derleyici çoğu zaman uyarmaz; program rastgele kilitlenir ya da tuhaf davranır. Uno'da RAM'in hızla tükendiği tipik durumlar şunlardır:
- OLED ekran: 128×64 SSD1306 ekranın görüntü tamponu tek başına 1 KB, yani RAM'in yarısıdır (bkz. OLED Ekran Kullanımı).
- Adreslenebilir LED'ler: Her WS2812B LED'i 3 bayt tutar; 300 LED'lik bir şerit 900 bayt eder (bkz. WS2812B NeoPixel).
- İnternetten veri: Bir hava durumu servisinin döndürdüğü JSON birkaç KB olabilir; Uno'ya sığmaz, ESP32'de rahatça işlenir.
- String birleştirme: Döngü içinde büyüyen String nesneleri küçük RAM'i parçalar ve saatler sonra çökmeye yol açabilir.
- SD kart: SD kütüphanesi 512 baytlık bir sektör tamponu ayırır; ekran ve sensör kütüphaneleriyle birlikte sınıra çabuk gelinir.
Gerilim farkı: 5 V ve 3,3 V
En sık gözden kaçan fark budur. Uno'nun pinleri 5 V mantıkla çalışır: HIGH çıkış 5 V'tur ve 3 V'un üzerindeki girişler HIGH kabul edilir. ESP32'nin pinleri ise 3,3 V mantıkla çalışır ve 5 V'a dayanıklı değildir. Bir pine 5 V uygulamak ESP32'yi hemen bozmayabilir, ama iç koruma diyotlarını zorlar ve yongayı zamanla ya da bir anda kalıcı olarak öldürebilir. Tersi daha az dertlidir: ESP32'nin 3,3 V'luk HIGH sinyali Uno'nun 3 V'luk eşiğini kıl payı aştığı için çoğu zaman HIGH okunur, ama bu da güvenli bir tasarım sayılmaz. Sık kullanılan modüllerin iki kartla durumu şöyle:
| Modül | Arduino Uno ile | ESP32 ile | Not |
|---|---|---|---|
| HC-SR04 mesafe sensörü | Doğrudan | ECHO hattına gerilim bölücü | ECHO pini 5 V çıkış verir |
| 5 V röle modülü | Doğrudan | Çoğu çalışır, bazıları kapanmaz | Düşük seviye tetiklemeli modüllerde 3,3 V HIGH röleyi tam bırakmayabilir |
| SG90 servo | Doğrudan | Sinyal doğrudan, besleme 5 V | Servoyu 3V3 pininden değil, 5 V'tan (VIN ya da harici kaynak) besle |
| DHT11 / DHT22 | Doğrudan | 3,3 V ile doğrudan | İki gerilimde de çalışır |
| I2C LCD (16x2) | Doğrudan | 5 V besleme, seviye dönüştürücü önerilir | Modülün pull-up dirençleri hatları 5 V'a çeker |
| SSD1306 OLED | Doğrudan | Doğrudan (3V3) | Kartında regülatör vardır |
| WS2812B şerit | Doğrudan | Çoğu zaman çalışır | Kesin sonuç için 74AHCT125 gibi seviye dönüştürücü |
| MPU6050 (GY-521) | Doğrudan | Doğrudan (3V3) | Kartında 3,3 V regülatörü vardır |
Pinler, analog okuma ve PWM
Uno'da 20 pinin hepsi aşağı yukarı aynı davranır: her biri giriş ya da çıkış olabilir, 20 mA'e kadar akımı rahatça verir ve kartın açılışını etkilemez. ESP32 DevKit'te kâğıt üzerinde daha çok pin vardır, ama hepsi eşit değildir: GPIO 6–11 dahili flaş belleğe bağlıdır ve kullanılamaz, GPIO 34–39 yalnızca giriştir, GPIO 0, 2, 5, 12 ve 15 ise açılış sırasında belirli seviyelerde olmalıdır. Pratikte rahatça kullanabileceğin pin sayısı 20–25 civarındadır. Kartının pin haritasını Pinout aracında görebilirsin.
Analog okumada Uno'nun 10 bitlik ADC'si 0–5 V aralığını 1024 adıma böler; her adım yaklaşık 4,9 mV'tur ve okuma oldukça doğrusaldır. ESP32'nin 12 bitlik ADC'si 4096 adım verir, ama varsayılan ayarda yaklaşık 0,15 V'un altını ve 3,1 V'un üstünü ayırt edemez, gürültülüdür ve Wi-Fi açıkken ADC2 pinleri hiç çalışmaz. Doğru gerilim istiyorsan ESP32'de analogReadMilliVolts() kullan ve sensörü ADC1 pinlerine (GPIO 32–39) bağla. PWM'de ise ESP32 öndedir: Uno'da yalnız 6 pin 490 ya da 980 Hz'de 8 bitlik PWM verirken ESP32, frekansı ve çözünürlüğü ayarlanabilen 16 kanalı neredeyse her çıkış pinine yönlendirebilir. Ayrıca gerçek analog gerilim üreten 2 DAC'ı (GPIO 25 ve 26) vardır. PWM'in temelleri için PWM Nedir? yazısına göz at.
Aynı kod iki kartta: neler değişir?
İyi haber şu: Arduino'da öğrendiğin her şey ESP32'de de geçerlidir. Aşağıdaki kod bir potansiyometreyi okur, gerilimi Seri Monitör'e yazar ve değer yarıyı geçince kartın üzerindeki LED'i yakar. #if defined(ESP32) satırı, kodun hangi kart için derlendiğini anlar ve yalnızca pin numarasını, referans gerilimini ve ADC çözünürlüğünü değiştirir. Potansiyometrenin uçlarını Uno'da 5V ile GND'ye, ESP32'de ise 3V3 ile GND'ye bağla; orta ucunu Uno'da A0'a, ESP32'de GPIO 34'e tak ve Seri Monitör'ü 115200 baud'da aç. Kodun dışında değişen başlıca noktalar tablodadır.
1// Aynı kod Uno ve ESP32'de çalışır / The same sketch runs on Uno and ESP32
2#if defined(ESP32)
3const int LED_PIN = 2; // DevKit dahili LED / DevKit onboard LED
4const int POT_PIN = 34; // ADC1 pini, Wi-Fi ile de çalışır / ADC1 pin, works with Wi-Fi too
5const float VREF = 3.3; // ESP32 pinleri 3,3 V / ESP32 pins are 3.3 V
6const int ADC_MAX = 4095; // 12 bit
7#else
8const int LED_PIN = 13; // Uno dahili LED / Uno onboard LED
9const int POT_PIN = A0;
10const float VREF = 5.0; // Uno referansı 5 V / Uno reference is 5 V
11const int ADC_MAX = 1023; // 10 bit
12#endif
13
14void setup() {
15 Serial.begin(115200);
16 pinMode(LED_PIN, OUTPUT);
17}
18
19void loop() {
20 int raw = analogRead(POT_PIN);
21 float volts = raw * VREF / ADC_MAX;
22 Serial.print("Ham / raw: ");
23 Serial.print(raw);
24 Serial.print(" Gerilim / voltage: ");
25 Serial.println(volts, 2);
26 digitalWrite(LED_PIN, raw > ADC_MAX / 2 ? HIGH : LOW); // yarıdan fazlaysa LED yanar / LED on above half
27 delay(250);
28}| Konu | Arduino Uno | ESP32 |
|---|---|---|
| Dahili LED | Pin 13 | Çoğu klon DevKit'te GPIO 2 (Espressif DevKitC'de yok) |
| analogRead aralığı | 0–1023 (10 bit) | 0–4095 (12 bit) |
| Harici kesme (attachInterrupt) | Yalnız pin 2 ve 3 | Neredeyse tüm pinler (kesme fonksiyonuna IRAM_ATTR ekle) |
| İkinci seri port | SoftwareSerial gerekir | Donanımsal Serial2 (GPIO 16 ve 17) |
| EEPROM | Gerçek EEPROM, 1 KB | Flaş üzerinde; EEPROM.commit() ya da Preferences |
| Kod yükleme | Tek tık | Bazı kartlarda BOOT düğmesine basmak gerekir |
| Derleme süresi | Birkaç saniye | İlk derleme bir dakikayı bulabilir |
Wi-Fi, Bluetooth ve internet
ESP32'yi asıl ayıran özellik kablosuz bağlantıdır. Kart 2,4 GHz Wi-Fi ağına bağlanır, kendi erişim noktasını kurabilir, web sunucusu çalıştırır, MQTT ile bir akıllı ev sistemine veri gönderir, NTP ile internetten saati alır ve yazılımını kablosuz (OTA) güncelleyebilir. Bluetooth tarafında hem klasik Bluetooth (seri port profili) hem de düşük enerjili BLE desteklenir; ESP-NOW ile birden fazla ESP32 modem olmadan da haberleşebilir. Uno'da bunların hiçbiri yerleşik değildir: Bluetooth için HC-05 gibi bir modül, Wi-Fi için ESP-01 gibi ayrı bir yonga ve AT komutlarıyla uğraşmak gerekir. Aşağıdaki kod aynı potansiyometreyi bu kez Wi-Fi üzerinden okur: Seri Monitör'de görünen adresi aynı ağa bağlı telefonunun tarayıcısında açınca gerilimi milivolt olarak görürsün, sayfa da iki saniyede bir kendini yeniler.
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
5const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
6const int POT_PIN = 34; // ADC1 pini / ADC1 pin
7
8WebServer server(80);
9
10void handleRoot() {
11 uint32_t mv = analogReadMilliVolts(POT_PIN); // kalibre edilmiş mV / calibrated mV
12 String html = "<meta name='viewport' content='width=device-width'>"
13 "<meta http-equiv='refresh' content='2'>"
14 "<h1>ESP32</h1><p>Pot: ";
15 html += mv;
16 html += " mV</p>";
17 server.send(200, "text/html", html);
18}
19
20void setup() {
21 Serial.begin(115200);
22 WiFi.begin(ssid, password);
23 while (WiFi.status() != WL_CONNECTED) delay(500);
24 Serial.print("Telefonda aç / open on your phone: http://");
25 Serial.println(WiFi.localIP());
26 server.on("/", handleRoot);
27 server.begin();
28}
29
30void loop() {
31 server.handleClient();
32}Güç tüketimi ve pil ile çalışma
Kâğıt üzerinde ESP32 hem en çok hem en az tüketen karttır. Wi-Fi ile veri gönderirken anlık olarak 240 mA'e kadar akım çeker; zayıf bir USB portunda "Brownout detector was triggered" hatasıyla yeniden başlaması bundandır. Buna karşılık derin uyku modunda yonga yaklaşık 10 µA harcar. Uno kartı ise hiçbir şey yapmadan yaklaşık 45 mA tüketir; ATmega328P uyutulsa bile USB-seri yonga, regülatör ve güç LED'i 30 mA civarında harcamaya devam eder. Bir örnekle hesaplayalım: 2000 mAh'lik bir pil, sürekli çalışan bir Uno'yu yaklaşık 2000 / 45 ≈ 44 saat besler. Wi-Fi'si hep açık bir ESP32 (ortalama 100 mA) yaklaşık 20 saat dayanır. Ama ESP32 her 10 dakikada bir 3 saniyeliğine uyanıp 120 mA ile ölçüm gönderir, kalan 597 saniyeyi 10 µA ile uyuyarak geçirirse ortalama akım (3 × 120 + 597 × 0,01) / 600 ≈ 0,61 mA olur ve aynı pil teorik olarak 3000 saatten fazla, yani dört aydan uzun dayanır. Bu sonuç için düşük tüketimli bir kart ya da çıplak modül gerekir; standart DevKit'lerdeki regülatör ve USB yongası uykuda bile birkaç mA harcar. Kendi senaryonu pil ömrü aracıyla hesaplayabilirsin.
Raspberry Pi Pico nerede duruyor?
Üçüncü güçlü seçenek Raspberry Pi Pico'dur. RP2040 yongası iki adet 133 MHz Cortex-M0+ çekirdeğe, 264 KB RAM'e ve 2 MB flaşa sahiptir; fiyatı yaklaşık 4 dolardır. ESP32 gibi 3,3 V ile çalışır ve 26 GPIO sunar, ama yalnızca 3 analog girişi vardır. En büyük artıları MicroPython desteğinin çok olgun olması, bilgisayara USB bellek gibi görünerek kolayca yazılım yüklenmesi ve PIO adı verilen, hassas zamanlamalı protokolleri işlemciyi yormadan üreten birimleridir. Kablosuz bağlantı istiyorsan Pico W (Wi-Fi ve Bluetooth), daha fazla güç istiyorsan RP2350 yongalı Pico 2 seçilebilir; ayrıntılar Raspberry Pi Pico Nedir? yazısında. Aynı potansiyometre okuma işi Pico'da MicroPython ile şöyle yazılır (orta uç GP26'ya, diğer uçlar 3V3 ve GND'ye):
1from machine import ADC, Pin
2import time
3
4pot = ADC(26) # GP26 = ADC0, potansiyometre orta ucu / pot wiper
5led = Pin("LED", Pin.OUT) # dahili LED (Pico ve Pico W) / onboard LED (Pico and Pico W)
6
7while True:
8 raw = pot.read_u16() # 0–65535 (12 bit ölçüm ölçeklenir / 12-bit reading, scaled)
9 volts = raw * 3.3 / 65535
10 print("Ham / raw:", raw, " Gerilim / voltage: {:.2f}".format(volts))
11 led.value(raw > 32767) # yarıdan fazlaysa yanar / on above half
12 time.sleep(0.25)Fiyat ve öğrenme kolaylığı
Fiyat tek başına nadiren belirleyicidir. Orijinal bir Uno R3 yaklaşık 25–30 dolardır, CH340 USB yongalı klonları ise 5–10 dolara bulunur; klon ESP32 DevKit'ler 4–8 dolar, Pico ise 4 dolardır. Yani ESP32 ile bir Uno klonu arasında fiyat farkı neredeyse yoktur; asıl maliyet yan malzemelerde çıkar: ESP32 ile 5 V'luk modül kullanacaksan birkaç direnç ya da 1–2 dolarlık bir seviye dönüştürücü, Uno'ya Wi-Fi eklemek istersen ayrı bir modül gerekir. Öğrenme tarafında Uno öndedir: Kartı seçip yükle düğmesine basman yeterlidir, hata mesajları ve örnekler yıllardır aynıdır, 5 V'luk modüllerle gerilim uyumsuzluğu derdi de yoktur. ESP32'de önce Espressif kart paketini ve gerekiyorsa USB yongasının (CP2102 ya da CH340) sürücüsünü kurman, doğru kart modelini seçmen, bazı kartlarda yükleme sırasında BOOT düğmesini basılı tutman gerekir; ayrıca internetteki örneklerin bir kısmı eski çekirdek sürümleri için yazıldığından derlenmeyebilir (örneğin 3.x çekirdekte ledcSetup yerine ledcAttach kullanılır). Bunlar birkaç saatte aşılan engellerdir; ama ilk kez devre kuruyorsan bir sorunun koddan mı yoksa bağlantıdan mı kaynaklandığını Uno'da ayırt etmek daha kolaydır.
Hangi proje için hangisi?
| Proje | En uygun kart | Neden? |
|---|---|---|
| LED, buton ve buzzer ile ilk dersler | Arduino Uno | Hataları affeder, 5 V, örnek bol |
| Robot araba (L298N, HC-SR04) | Arduino Uno | 5 V modüllerle doğrudan uyumlu |
| Wi-Fi hava istasyonu | ESP32 | Veriyi telefona ve internete gönderir |
| Röle ile akıllı ev otomasyonu | ESP32 | Web, MQTT ve sesli asistan bağlantısı |
| Telefondan Bluetooth kumanda | ESP32 | BLE ve klasik Bluetooth yerleşik |
| Pille çalışan uzak sensör | ESP32 (düşük tüketimli kart) | Derin uyku ve kısa Wi-Fi gönderimi |
| Python öğrenmek | Raspberry Pi Pico | MicroPython öncelikli desteklenir |
| Yüzlerce adreslenebilir LED | ESP32 ya da Pico | Bol RAM, hızlı işlemci |
| Kamerayla görüntü aktarımı | ESP32-CAM | Kamera ve microSD yuvası kartın üzerinde |
| Motor shield ve 5 V shield'lar | Arduino Uno | Shield'lar Uno pin dizilimine göre yapılır |
Sık yapılan hatalar ve yanlış bilinenler
- "ESP32 her zaman daha iyidir": Daha güçlüdür, ama 3,3 V pinleri, açılışı etkileyen pinleri, BOOT düğmesi ve güç dalgalanmaları yeni başlayanı yorabilir. Temelleri öğrenmek için Uno daha az sürpriz içerir.
- 5 V sensörü doğrudan ESP32'ye bağlamak: HC-SR04'ün ECHO çıkışı gibi 5 V sinyalleri bölücü olmadan bağlamak pine zarar verebilir.
- Wi-Fi açıkken ADC2 pinini okumak: GPIO 0, 2, 4, 12–15 ve 25–27 Wi-Fi çalışırken analog okumaz; sensörü GPIO 32–39'a taşı.
- Uno'nun RAM'ini unutmak: Kod derleniyor ama kart rastgele kilitleniyorsa RAM bitmiş olabilir; sabit metinleri F("...") içine al ve döngüde String birleştirmekten kaçın.
- ESP32'yi zayıf USB ile beslemek: Wi-Fi açılınca kart yeniden başlıyorsa kaliteli bir veri kablosu ve en az 1 A veren bir adaptör kullan.
- Pico ile Pico W'yi karıştırmak: Düz Pico'da Wi-Fi yoktur; kablosuz bir proje için adında W harfi olan modeli al.
Kısacası Arduino Uno öğrenmenin, ESP32 bağlanmanın, Raspberry Pi Pico ise Python ile denemenin kartıdır. Arduino ailesinde hangi modelin sana uyduğunu merak ediyorsan Hangi Arduino'yu Almalıyım? yazısına göz atabilirsin. BlueGrays uygulamasında Arduino, ESP32 ve Pico için LED yakmadan Wi-Fi web sunucusuna, NTP saatten hava durumu ekranına kadar onlarca projeyi adım adım devre şeması ve koduyla bulabilirsin.
Sıkça sorulan sorular
ESP32 Arduino'dan daha mı iyi?
Ham güç, bellek ve kablosuz bağlantı açısından evet: ESP32 240 MHz'te çalışır, 520 KB RAM'i, Wi-Fi'si ve Bluetooth'u vardır. Ancak 3,3 V pinleri, kısıtlı GPIO'ları ve daha karmaşık açılışı nedeniyle yeni başlayanlar için Arduino Uno daha az sürprizlidir. Hangisinin daha iyi olduğu projenin ihtiyacına bağlıdır.
ESP32 Arduino IDE ile programlanır mı?
Evet. Arduino IDE'ye Espressif'in esp32 kart paketini ekledikten sonra ESP32'yi Arduino komutlarıyla programlayabilirsin. pinMode, digitalWrite, analogRead, Serial ve Wire gibi fonksiyonlar aynen çalışır; değişen çoğunlukla pin numaraları ve gerilim seviyeleridir.
Arduino kodları ESP32'de çalışır mı?
Çoğu kod küçük değişikliklerle çalışır. Pin numaralarını ESP32'ye göre güncellemen, analogRead değerlerinin 0–4095 aralığında olduğunu hesaba katman ve AVR'ye özel register erişimi yapan kodları ya da SoftwareSerial gibi kütüphaneleri ESP32 karşılıklarıyla değiştirmen gerekir.
Arduino Uno'ya Wi-Fi eklenebilir mi?
Eklenebilir: ESP-01 (ESP8266) gibi bir modül seri port üzerinden AT komutlarıyla kullanılabilir ya da Wi-Fi'li Uno R4 WiFi alınabilir. Ancak ESP-01 için 3,3 V besleme ve seviye dönüştürme gerekir, Uno'nun 2 KB RAM'i de web işlerinde zorlanır. Bu yüzden çoğu durumda doğrudan bir ESP32 kullanmak daha basit ve ucuzdur.
Arduino mu Raspberry Pi Pico mu?
C/C++ ile Arduino ekosisteminde kalmak, 5 V modüllerle çalışmak ve en çok örneğe ulaşmak için Arduino Uno; Python ile programlamak, düşük fiyat ve PIO ile hassas zamanlama için Raspberry Pi Pico daha uygundur. Pico 3,3 V ile çalıştığı için 5 V sinyallere ESP32'deki gibi dikkat etmek gerekir.
ESP32 5 V sensörlerle kullanılabilir mi?
Sensör 3,3 V ile de çalışıyorsa onu 3V3 pininden beslemek en kolay çözümdür. Yalnızca 5 V ile çalışıp 5 V çıkış veren sensörlerde çıkış hattına gerilim bölücü ya da seviye dönüştürücü koymalısın. ESP32 pinlerine doğrudan 5 V vermek yongaya zarar verebilir.
Bu yazıdan sonra yapabileceğin projeler
Tüm projeleri gör
Led Yakma
Arduino ile tek bir LED'i belirli aralıklarla yakıp söndüren temel giriş projesi. digitalWrite ve delay fonksiyonlarının kullanımını öğretir.

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; pin haritası ve syntax aynı kalır, fark sadece pin numaralarında.

Raspberry Pi Pico Dahili LED Yakma (GP25 Onboard LED)
Raspberry Pi Pico serisinin açılış projesi! Pico'nun üzerindeki dahili LED'i (GP25 pinine bağlı yeşil LED) 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

DHT11 İle Sıcaklık Ve Nem
DHT11 sensörü ile ortam sıcaklığı ve nem değerini ölçerek I2C LCD ekranda gösteren proje. Dijital sıcaklık/nem sensörü kullanımını öğretir.

ESP32 Potansiyometre ile LED Parlaklık (Analog → PWM)
Bu projede bir potansiyometre ile LED parlaklığını analog olarak kontrol ediyoruz. ESP32'nin ADC pini potansiyometreden gelen 0-3.3V gerilimi okur, ardından bu değer PWM (Pulse Width Modulation) sinyaline çevrilerek LED'e gönderilir. Böylece potansiyometreyi çevirdikçe LED kademeli olarak parlar ve söner. Arduino Core 3.0+ ile `analogWrite()` doğrudan kullanılabilir; ESP32-S2/S3'te ADC çözünürlüğü 12-bit'e sabitlenir.

ESP32 Wi-Fi STA Bağlantısı (LCD Ekranlı)
Bu projede ESP32'yi Station (STA) modunda evdeki Wi-Fi ağına güvenli ve hata toleranslı şekilde bağlıyoruz. SSID/şifreyi `secrets.h` dosyasına ayırarak Git'e sızmasını önlüyor, otomatik yeniden bağlanma mekanizması kuruyor, RSSI sinyal seviyesini ve IP adresini I2C LCD ekranda gösteriyoruz. Dahili LED durum göstergesi olarak çalışır. Üretim seviyesi bir bağlantı yöneticisidir.

ESP32 Async Web Server (LCD'de IP Göstergeli)
Bu projede ESP32'yi aynı Wi-Fi ağındaki telefonunuzdan veya bilgisayarınızdan kontrol edebileceğiniz **asenkron bir web sunucusuna** dönüştürüyoruz. ESPAsyncWebServer kütüphanesi sayesinde sunucu birden fazla isteği aynı anda işleyebiliyor (klasik `WebServer.h` gibi tek istekte bloklamıyor). Tarayıcıdan ESP32'nin IP adresine `/control` ile bağlanıp butonlara basarak GPIO 5'e bağlı LED'i açıp kapatabileceksiniz. HTML arayüzü `PROGMEM` ile flash belleğe gömülü olduğundan ayrıca dosya sistemi gerek

ESP32 HTTPClient + Hava Durumu API (LCD Ekranlı)
Bu projede ESP32 ile internet üzerinden hava durumu API'sine (wttr.in) `HTTPClient.h` kullanarak REST API çağrısı yapıyoruz. ArduinoJson v7 ile dönen JSON cevabını parse edip şehir, sıcaklık, nem, hava durumu ve rüzgar bilgilerini I2C LCD ekranda hem Türkçe hem İngilizce gösteriyoruz. wttr.in ücretsizdir, API key gerektirmez — herhangi bir şehir ismini yazarak o şehrin anlık hava durumunu çekebilirsiniz. 30 dakikada bir otomatik güncelleme, LED ile her ekran için farklı görsel feedback ve eksiks
Diğer yazılar
Arduino Uno ile ESP32 arasındaki gerçek farkları sayılarla öğren: hız, bellek, gerilim, analog okuma, Wi-Fi ve pil ömrü. Aynı kodu iki kartta çalıştır, Pico ile kıyasla ve projen için doğru kartı seç.

