Rehberler · 9 dk okuma

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.

Arduino Uno R3 geliştirme kartı
Arduino Uno R3: 5 V ile çalışan, 8 bitlik ATmega328P işlemcili ve yeni başlayanların en çok kullandığı kart.

Kısa cevap: hangi durumda hangisi?

DurumunÖnerilen kartNeden?
Elektroniğe yeni başlıyorsunArduino Uno5 V, dayanıklı pinler, en çok örnek ve ders
Wi-Fi ya da internet gerekiyorESP32Wi-Fi kartın içinde, ek modül gerekmez
Telefonla Bluetooth bağlantısıESP32Klasik Bluetooth ve BLE yerleşik
5 V modüller ve shield'lar kullanacaksınArduino UnoSeviye dönüştürücü gerekmez
Ekran, çok sayıda LED, büyük veriESP32520 KB RAM (Uno'da 2 KB)
Pille aylarca çalışacak sensörESP32 (düşük tüketimli kart)Derin uykuda yaklaşık 10 µA
Python ile programlamakRaspberry Pi PicoMicroPython desteği çok olgun
En düşük bütçeESP32 ya da PicoUno 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 DevKit geliştirme kartı (ESP-WROOM-32)
ESP32 DevKit: metal kapaklı ESP-WROOM-32 modülünde çift çekirdekli işlemci, Wi-Fi ve Bluetooth bulunur; kart 3,3 V mantık seviyesiyle çalışır.

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

ÖzellikArduino Uno R3ESP32 DevKit (WROOM-32)Raspberry Pi Pico
İşlemciATmega328P, 8 bit AVRXtensa LX6, 32 bit, çift çekirdekRP2040, 32 bit Arm Cortex-M0+, çift çekirdek
Saat hızı16 MHz240 MHz'e kadar133 MHz
RAM (SRAM)2 KB520 KB264 KB
Program belleği (flash)32 KB (0,5 KB'ı önyükleyici)Genellikle 4 MB2 MB
EEPROM1 KBYok (flash üzerinde taklit edilir)Yok (flash üzerinde dosya sistemi)
Mantık gerilimi5 V3,3 V (5 V'a dayanıksız)3,3 V (5 V'a dayanıksız)
BeslemeUSB 5 V ya da 7–12 V (jak/VIN)USB 5 V ya da VIN'den 5 VUSB 5 V ya da VSYS'ten 1,8–5,5 V
Kullanılabilir GPIO20 (14 dijital + 6 analog)Yaklaşık 25 (kısıtlı pinler hariç)26
Analog giriş (ADC)6 kanal, 10 bit18 kanal, 12 bit (Wi-Fi açıkken yalnız ADC1)3 kanal, 12 bit
Analog çıkış (DAC)Yok2 kanal, 8 bitYok
PWM6 pin, 8 bit, 490/980 Hz16 kanal, frekansı ayarlı, neredeyse her pinde16 kanal, tüm GPIO'larda
Wi-FiYok802.11 b/g/n, 2,4 GHzYok (Pico W'de var)
BluetoothYokBluetooth 4.2: Klasik + BLEYok (Pico W'de var)
UART / I2C / SPI1 / 1 / 13 / 2 / 2 (kullanıcıya açık)2 / 2 / 2
Pin başına akım20 mA önerilen (en fazla 40 mA)Yaklaşık 20 mA önerilenVarsayılan 4 mA (12 mA'e kadar ayarlanır)
Kartın tipik akımıYaklaşık 45 mAWi-Fi ile ortalama 50–130 mA, anlık 240 mAYaklaşık 25 mA
En düşük uykuYonga 1 µA altı, kart yaklaşık 30 mADerin uykuda yonga yaklaşık 10 µADormant modda kart yaklaşık 1 mA
ProgramlamaArduino C/C++Arduino C/C++, ESP-IDF, MicroPythonMicroPython, C/C++ SDK, Arduino
Yaklaşık fiyatOrijinal 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ülArduino Uno ileESP32 ileNot
HC-SR04 mesafe sensörüDoğrudanECHO 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ı kapanmazDüşük seviye tetiklemeli modüllerde 3,3 V HIGH röleyi tam bırakmayabilir
SG90 servoDoğrudanSinyal doğrudan, besleme 5 VServoyu 3V3 pininden değil, 5 V'tan (VIN ya da harici kaynak) besle
DHT11 / DHT22Doğrudan3,3 V ile doğrudanİki gerilimde de çalışır
I2C LCD (16x2)Doğrudan5 V besleme, seviye dönüştürücü önerilirModülün pull-up dirençleri hatları 5 V'a çeker
SSD1306 OLEDDoğrudanDoğrudan (3V3)Kartında regülatör vardır
WS2812B şeritDoğrudanÇoğu zaman çalışırKesin sonuç için 74AHCT125 gibi seviye dönüştürücü
MPU6050 (GY-521)DoğrudanDoğrudan (3V3)Kartında 3,3 V regülatörü vardır
ESP32'ye 5 V sinyal veren bir modül bağlayacaksan araya bir gerilim bölücü ya da seviye dönüştürücü koy. Örneğin sinyal hattına seri 1 kΩ, ESP32 pini ile GND arasına 2 kΩ bağlarsan 5 V, 5 × 2 / (1 + 2) = 3,33 V'a iner. Potansiyometre gibi analog kaynakları ESP32'de 5V pinine değil, her zaman 3V3 pinine bağla.

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.

Arduino (C++)
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}
KonuArduino UnoESP32
Dahili LEDPin 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 3Neredeyse tüm pinler (kesme fonksiyonuna IRAM_ATTR ekle)
İkinci seri portSoftwareSerial gerekirDonanımsal Serial2 (GPIO 16 ve 17)
EEPROMGerçek EEPROM, 1 KBFlaş üzerinde; EEPROM.commit() ya da Preferences
Kod yüklemeTek tıkBazı kartlarda BOOT düğmesine basmak gerekir
Derleme süresiBirkaç 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.

Arduino (C++)
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):

MicroPython
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?

ProjeEn uygun kartNeden?
LED, buton ve buzzer ile ilk derslerArduino UnoHataları affeder, 5 V, örnek bol
Robot araba (L298N, HC-SR04)Arduino Uno5 V modüllerle doğrudan uyumlu
Wi-Fi hava istasyonuESP32Veriyi telefona ve internete gönderir
Röle ile akıllı ev otomasyonuESP32Web, MQTT ve sesli asistan bağlantısı
Telefondan Bluetooth kumandaESP32BLE ve klasik Bluetooth yerleşik
Pille çalışan uzak sensörESP32 (düşük tüketimli kart)Derin uyku ve kısa Wi-Fi gönderimi
Python öğrenmekRaspberry Pi PicoMicroPython öncelikli desteklenir
Yüzlerce adreslenebilir LEDESP32 ya da PicoBol RAM, hızlı işlemci
Kamerayla görüntü aktarımıESP32-CAMKamera ve microSD yuvası kartın üzerinde
Motor shield ve 5 V shield'larArduino UnoShield'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.
En iyi yol çoğu zaman ikisini de denemektir: Temelleri Uno (ya da daha küçük kardeşi Nano) ile öğren, Wi-Fi gerektiren ilk projende ESP32'ye geç. Kodun büyük kısmı aynen taşınır, değişen çoğunlukla pin numaraları ve gerilim olur. Bir ESP32 DevKit'in fiyatı çoğu zaman bir Uno klonuyla aşağı yukarı aynı olduğu için başlangıç setine bir tane eklemek mantıklıdır.

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.

Tüm projeleri gör
Led Yakma
#1Başlangıç

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.

4.7(163)
782
ESP32 ile LED Yakma
#103Başlangıç

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.

4.7(36)
92
Raspberry Pi Pico Dahili LED Yakma (GP25 Onboard LED)
#147Başlangıç

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

5.0(1)
9
DHT11 İle Sıcaklık Ve Nem
#55Orta

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.

4.7(47)
60
ESP32 Potansiyometre ile LED Parlaklık (Analog → PWM)
#115Orta
Premium

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.

4.5(19)
32
ESP32 Wi-Fi STA Bağlantısı (LCD Ekranlı)
#127İleri
Premium

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.

4.4(21)
33
ESP32 Async Web Server (LCD'de IP Göstergeli)
#129İleri
Premium

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

4.8(16)
26
ESP32 HTTPClient + Hava Durumu API (LCD Ekranlı)
#133İleri
Premium

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

4.7(13)
20

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ç.

Arduino mu ESP32 mi? Farklar, Karşılaştırma ve Seçim Rehberi | BlueGrays