ESP32 Projeleri

WiFi, BLE, çift çekirdek ve deep sleep gibi ESP32'ye özgü donanımları kullanan profesyonel IoT projeleri — her projede hangi donanım özelliğinin neden gerektiği açıklanır.

Platform:
ESP32 DevKit V1 (38 pin)
· 20 proje
#01

OTA Kablosuz Firmware Güncelleme Sistemi

Orta
~1-1,5 saat

ESP32'nin dahili çift OTA (Over-The-Air) flash partisyon şemasını kullanarak, sahaya kurulmuş bir cihaza tekrar USB kablosu takmadan tamamen kablosuz şekilde yeni firmware yüklemeyi öğretir — özellikle tavana, duvara veya erişimi zor bir noktaya monte edilmiş onlarca cihazı yönetirken zaman ve emek kazandıran pratik bir yetenektir. ESP32'nin flash belleği kalkınma sırasında bir 'factory' bölümü ile iki ayrı OTA partisyonuna bölünebilir; cihaz yeni kodu ağdan indirip o an boş olan partisyona yazar, bütünlük kontrolünden geçerse oradan açılış yapar ve önceki çalışan sürüm otomatik olarak yedek konumunda kalır, böylece yarım kalan veya bozuk bir güncelleme cihazı kullanılamaz hale getirmez. Bu iki katmanlı flash mimarisi ESP32'ye özgüdür: Arduino Uno'nun ATmega328P'sinde toplam flash belleği zaten 32KB'dir ve sketch kodunun kendisi bu alanın büyük bölümünü kapladığından ikinci bir tam firmware kopyasına yer kalmaz; kartta WiFi donanımı da bulunmadığından ağ üzerinden güncelleme almak zaten söz konusu değildir.

ESP32 DevKit V1 (38 pin)Durum LED'i220Ω direnç+3
#02

TLS/SSL ile Şifreli MQTT Veri Yayını

Orta
~2 saat (sertifika ayarı dahil)

Sıcaklık/nem verisini, sertifika tabanlı TLS/SSL şifrelemesiyle (WiFiClientSecure) bir MQTT broker'a güvenli şekilde yayınlamayı öğretir — düz metin (plaintext) MQTT'nin aksine veri yolda kimse tarafından okunamaz veya değiştirilemez. ESP32'nin donanımsal AES/SHA kripto hızlandırıcısı, TLS el sıkışmasını (handshake) makul bir sürede tamamlayacak işlem gücünü sağlar; 520KB SRAM'i ise TLS oturum arabelleklerini, sertifika zincirini ve şifreleme durumunu aynı anda bellekte tutabilir. Bu kapasite Arduino Uno'da bulunmaz: kartın sadece 2KB SRAM'i vardır ve tek bir TLS sertifikası bile bu belleğe sığmaz; kripto hızlandırma donanımı ve WiFi radyosu da zaten mevcut değildir, dolayısıyla şifreli bir ağ bağlantısı kurmanın önünde temel bir donanım sınırı vardır.

ESP32 DevKit V1 (38 pin)DHT22 sıcaklık/nem sensörü10kΩ direnç (pull-up, modülsüz DHT22 için)+2
#03

WiFiManager ile Captive Portal Kurulum Sihirbazı

Başlangıç
~45 dk

Cihazı ilk açılışta WiFi ağı bilgisi olmadan bir Erişim Noktası (AP) moduna geçirip, telefon veya bilgisayarla bu ağa bağlanan kullanıcıya otomatik açılan bir web sayfasından (captive portal) ev WiFi bilgilerini girdirmeyi öğretir — kod içine SSID/şifre yazmadan, kutudan çıkar çıkmaz kurulum yapılabilen tüketici ürünlerindeki deneyimin bir benzeri. ESP32'nin WiFi çipi Erişim Noktası (AP) ve İstemci (STA) modları arasında yazılımsal olarak geçiş yapabilir ve bu esnada aynı anda basit bir DNS yönlendirme + web sunucusunu çalıştıracak yeterli RAM'e sahiptir. Bu senaryo Arduino Uno'da kurulamaz: kart hiçbir WiFi radyo donanımı içermez ve harici bir WiFi shield eklense bile 2KB RAM'i, DNS yönlendirme + web sunucusu + form işleme arabelleklerini aynı anda tutmaya yetmez.

ESP32 DevKit V1 (38 pin)Durum LED'i220Ω direnç+2
#04

Watchdog + Otomatik Yeniden Bağlanma ile Endüstriyel Güvenilirlik

Orta
~1,5 saat

ESP-IDF'in görev bazlı donanımsal Task Watchdog Timer'ını (TWDT) kullanarak, ana döngü belirli bir süre 'nefes almazsa' (donarsa) cihazı otomatik olarak yeniden başlatmayı; ayrıca WiFi bağlantısı koptuğunda üstel geri çekilmeyle (exponential backoff) otomatik yeniden bağlanmayı öğretir — insansız çalışan sahadaki bir cihazın kendi kendini toparlaması için endüstriyel projelerde standart kabul edilen bir güvenilirlik desenidir. ESP32'nin FreeRTOS çekirdeği, her görevi (task) ayrı ayrı izleyebilen donanım destekli bir watchdog mekanizması sunar. Bu düzeyde bir izleme Arduino Uno'da kurulamaz: Uno'nun donanımsal watchdog'u (WDT) çok daha kaba bir genel zamanlayıcıdır, görev/task kavramı yoktur (bir RTOS çalıştıramaz) ve zaten yeniden bağlanacak bir WiFi bağlantısı da bulunmaz.

ESP32 DevKit V1 (38 pin)Durum LED'i220Ω direnç+3
#05

FreeRTOS Dual-Core Görev Paylaşımlı Veri Toplama

İleri
~2-3 saat

xTaskCreatePinnedToCore() ile iki farklı sensör okuma görevini ESP32'nin iki fiziksel çekirdeğine (Core 0 ve Core 1) sabitleyerek tamamen paralel çalıştırmayı öğretir — biri yavaş ve bloklayıcı DHT22'yi okurken diğeri hızlı analog LDR okumaya kesintisiz devam eder, ikisi birbirini beklemez. ESP32, iki bağımsız Xtensa LX6 çekirdeğine sahiptir; Arduino sketch'i normalde sadece Core 1'de çalışır, Core 0 ise bilinçli olarak görev atanarak devreye alınabilir. Bu paralellik Arduino Uno'da kurulamaz: ATmega328P tek çekirdekli 8-bit bir mikrodenetleyicidir, ikinci bir çekirdeğe görev atamak donanımsal olarak mümkün değildir ve kart FreeRTOS gibi bir RTOS da çalıştıramaz.

ESP32 DevKit V1 (38 pin)DHT22 sıcaklık/nem sensörü10kΩ direnç (DHT22 pull-up)+4
#06

ESPAsyncWebServer ile Bloklamayan Çoklu İstemci REST API

İleri
~2 saat

Birden fazla tarayıcı veya istemcinin aynı anda, birbirini bloklamadan bağlanıp iki rölenin durumunu okuyup değiştirebildiği asenkron (event-driven) bir REST API sunmayı öğretir — akıllı ev panelleri ve endüstriyel kontrol arayüzlerinde tercih edilen mimarinin küçük ölçekli bir örneğidir. ESPAsyncWebServer, gelen her isteği ayrı ayrı bekletmeden (non-blocking) LwIP ağ yığınıyla doğrudan çalışır; bunun için ESP32'nin ikinci çekirdeği ve yeterli RAM'i (520KB SRAM) devreye girer. Bu mimari Arduino Uno'da kurulamaz: WiFi donanımı yoktur; harici bir WiFi shield eklense bile klasik senkron 'WiFiServer' modeli her isteği sırayla işler ve 2KB RAM, birden fazla eşzamanlı bağlantı arabelleğini aynı anda tutmaya yetmez.

ESP32 DevKit V1 (38 pin)2x Röle modülü (5V, optokuplörlü)Breadboard+2
#07

Deep Sleep + RTC Memory ile Aylarca Pil Ömürlü Sensör İstasyonu

Orta
~1,5 saat (pil ömrü testi ayrıca günler sürer)

ESP32'yi çoğu zaman µA (mikroamper) seviyesinde akım çeken 'deep sleep' modunda tutup, sadece belirli aralıklarla uyanarak sensör okuyup WiFi ile veri gönderdikten sonra tekrar uyutmayı öğretir — bu tek teknik, pille çalışan bir sensörün ömrünü günlerden aylara çıkarabilecek kadar etkilidir. RTC memory (RTC_DATA_ATTR) ana işlemci ve RAM kapansa bile belirli veriyi (örneğin bir okuma sayacını) korur, böylece cihaz her uyanışta kaldığı yerden devam edebilir. Bu düzeydeki enerji verimliliği Arduino Uno'da yakalanamaz: kartın kendi USB-seri çipi ve gerilim regülatörü sürekli mA seviyesinde akım çeker (en 'derin' Uno uykusu bile ESP32 deep sleep'inin binlerce katı akım harcar) ve Uno'nun ana işlemcisi kapandığında hayatta kalan bir RTC memory kavramı da bulunmaz.

ESP32 DevKit V1 (38 pin)DHT22 sıcaklık/nem sensörü10kΩ direnç (pull-up)+3
#08

NTP Zaman Senkronizasyonlu Otomatik Eylem Planlayıcı

Başlangıç
~1 saat

WiFi üzerinden NTP (Network Time Protocol) sunucusuyla gerçek dünya saatini senkronize edip, bu saate göre belirli zamanlarda (örn. her gün 07:00 ve 19:00) bir röleyi otomatik tetiklemeyi öğretir — harici bir RTC modülüne veya manuel saat girişine hiç gerek kalmadan. ESP32'nin WiFi bağlantısı sayesinde configTime() ile saniyeler içinde internetten doğru zamanı alıp dahili saatini senkronize edebilir. Arduino Uno'da aynı otomatiklik sağlanamaz: kartın NTP sunucusuna ulaşacak hiçbir ağ bağlantısı yoktur; zaman bilgisi için mutlaka harici bir pilli RTC modülü (DS3231 gibi) eklenip elle veya USB üzerinden bir kerelik saat ayarlanması gerekir, kendiliğinden senkronizasyon mümkün değildir.

ESP32 DevKit V1 (38 pin)Röle modülü (5V, optokuplörlü)Breadboard+1
#09

ESP-NOW ile Kendini Onaran (Self-Healing) Mesh Ağı

İleri
~2-3 saat (3 kart gerektirir)

ESP32'nin WiFi çipi üzerinde çalışan, yönlendiriciye (router) hiç ihtiyaç duymayan özel ve düşük gecikmeli P2P protokolü ESP-NOW ile, bir düğüm arızalanırsa diğer düğümlerin otomatik olarak birbirinin üzerinden veri yönlendirdiği (mesh) bir ağ kurmayı öğretir — router'ın menzili dışındaki alanlara veri ulaştırmak isteyen sensör ağları için pratik ve dayanıklı bir çözümdür. ESP-NOW, Espressif'in WiFi radyosuna gömülü, bağlantısız (connectionless) özel bir protokoldür ve her cihaz aynı anda hem alıcı hem verici (peer) olabilir. Bu iletişim yöntemi Arduino Uno'da kullanılamaz: ESP-NOW, ESP32/ESP8266'nın WiFi radyo çipine gömülü donanımsal bir özelliktir; Uno'da hiçbir radyo çipi bulunmadığından mesh kurmak bir yana, tek bir ESP-NOW paketi bile gönderilip alınamaz.

3x ESP32 DevKit V1 (38 pin) — mesh'in en az 3 düğümden oluşması gerekirHer düğüm için durum LED'i220Ω direnç (her düğüm için)+2
#10

Fog Computing: Çoklu Sensör Düğümünden Veri Toplayan Ağ Geçidi

İleri
~3 saat

Birden fazla uzak sensör düğümünden ESP-NOW ile gelen ham verileri tek bir 'gateway' ESP32 üzerinde toplayıp, yerel olarak filtreleyip/özetleyerek (fog computing — buluta göndermeden önce kenar/yerel işleme yapmak), sonucu bir OLED ekranda göstermeyi ve toplu halde WiFi ile buluta iletmeyi öğretir. ESP32'nin hem ESP-NOW alıcısını hem WiFi istemcisini hem de I2C ekran sürücüsünü aynı anda, tek çip üzerinde çalıştırabilecek yeterli RAM'i ve iki çekirdeği vardır. Bu çok görevlilik Arduino Uno'da kurulamaz: ne ESP-NOW/WiFi radyosu ne de birden fazla eşzamanlı veri akışını (çoklu düğüm + ekran + bulut gönderimi) işleyecek 2KB RAM'i bulunur.

ESP32 DevKit V1 (38 pin) — gatewaySSD1306 0.96" I2C OLED ekran (128x64)Breadboard+2
#11

mDNS ile Otomatik Cihaz Keşfi (Zero-Config)

Başlangıç
~45 dk

Cihazın IP adresini ezberlemeden, ağdaki herkesin tarayıcıdan sabit bir isimle (örn. http://devreai-lamba.local) erişebilmesini sağlamayı öğretir — DHCP her seferinde farklı bir IP verse bile isim her zaman aynı kalır. ESP32'nin ESPmDNS kütüphanesi, WiFi ağı üzerinden Bonjour/Avahi uyumlu mDNS (multicast DNS) protokolünü çalıştıracak ağ yığınına ve işlem gücüne sahiptir. Bu protokol Arduino Uno'da çalıştırılamaz: mDNS bir ağ protokolüdür ve çalışması için TCP/IP yığını ile bir ağ arayüzü gerekir, Uno'da ikisi de bulunmaz.

ESP32 DevKit V1 (38 pin)Durum LED'i220Ω direnç+2
#12

Şifreli BLE ile Kimlik Doğrulamalı Akıllı Kilit

İleri
~2,5 saat

BLE (Bluetooth Low Energy) bonding/pairing ile bir telefonun kimliğini bir kez eşleştirip, sonraki bağlantılarda ESP32'nin donanımsal AES şifrelemesiyle korunan bir kanaldan 'kilidi aç' komutunu doğrulamayı ve bir servo ile fiziksel kilidi açmayı öğretir. ESP32'nin dahili BLE radyosu, Secure Connections (LE Secure Connections) ile şifreli eşleştirme yapabilecek donanımsal kripto desteğine sahiptir. Bu güvenlik düzeyi Arduino Uno'da kurulamaz: kart hiçbir Bluetooth radyosu (Classic veya BLE) içermez ve kripto hızlandırma donanımı da yoktur; harici bir BLE modülü (HM-10 gibi) eklense bile bu modüller genelde bonding/güvenli eşleştirmeyi tam desteklemez.

ESP32 DevKit V1 (38 pin)SG90 mikro servo motorDurum LED'i+4
#13

WiFi Promiscuous Mode ile Cihaz Varlığı/MAC Analizi

İleri
~1,5 saat

ESP32'nin WiFi çipini 'promiscuous mode'a alarak, kendisine yönelik olmayan tüm WiFi paketlerini (yönetim/beacon çerçeveleri dahil) pasif olarak dinlemeyi ve ortamdaki telefon/laptop gibi cihazların MAC adreslerini ve sinyal gücünü (RSSI) tespit etmeyi öğretir — kalabalık yoğunluğu tahmini veya varlık algılama gibi gerçek uygulamalarda kullanılan bir tekniktir. ESP32'nin WiFi baseband çipi, düşük seviyeli esp_wifi_set_promiscuous() API'siyle normalde işletim sisteminin gizlediği ham 802.11 çerçevelerine erişim sağlar. Bu erişim Arduino Uno'da mümkün değildir: kartın dinleyecek hiçbir WiFi radyosu yoktur.

ESP32 DevKit V1 (38 pin)SSD1306 0.96" I2C OLED ekran (isteğe bağlı, canlı sayaç göstermek için)Breadboard+1
#14

ESP32-CAM ile Edge AI Yüz/Nesne Tanıma (ESP-WHO)

İleri
~3-4 saat (harici programlayıcı kurulumu dahil)

Kameradan alınan görüntü üzerinde, veriyi buluta göndermeden doğrudan cihaz üzerinde (edge AI) yüz tespiti yapmayı öğretir; Espressif'in ESP-WHO/esp-dl çerçevesi, kamera modülünün PSRAM'ini kullanarak görüntü karelerini tamponlayıp önceden eğitilmiş küçük bir sinir ağı modelini gerçek zamanlı çalıştırır. ESP32-CAM'in özel kamera arayüzü (DVP) ve harici PSRAM çipi, görüntü karelerini ve model ağırlıklarını aynı anda bellekte tutabilecek kapasiteyi sağlar. Bu tür bir işlem Arduino Uno'da gerçekleştirilemez: kamera bağlamak için gereken paralel DVP arayüzü hiç yoktur, PSRAM'i yoktur ve 2KB dahili RAM'i tek bir düşük çözünürlüklü görüntü karesini bile tutmaya yetmez — bir yapay sinir ağı modelini çalıştırmak ise bambaşka bir kapasite gerektirir.

ESP32-CAM (AI-Thinker) modülü — DİKKAT: standart 'ESP32 DevKit V1' KARTI DEĞİLDİR, ayrı bir kamera modülüdür, farklı pin yerleşimine sahiptirFTDI USB-TTL programlayıcı (ESP32-CAM'de USB portu yoktur, programlamak için ZORUNLUDUR)OV2640 kamera (modülle birlikte gelir, entegre)+2
#15

Bluetooth Classic A2DP ile Kablosuz Ses Akışı Alıcısı

Orta
~1 saat

ESP32'yi bir Bluetooth hoparlör gibi davranan A2DP (Advanced Audio Distribution Profile) alıcısına dönüştürüp, telefondan gelen kablosuz ses akışını I2S dijital ses arayüzü üzerinden bir harici DAC/amplifikatöre aktarmayı öğretir. ESP32'nin dahili Bluetooth Classic (BR/EDR) radyosu A2DP profilini donanımsal olarak destekler ve I2S çevre birimi, gelen ses verisini örnekleme hatası olmadan gerçek zamanlı olarak harici bir DAC'a aktarabilir. Bu ses akışı Arduino Uno'da işlenemez: ne Bluetooth Classic radyosu ne de I2S çevre birimi bulunur; Uno'nun tek ses çıkışı seçeneği tone() ile basit kare dalga üretmektir, gerçek zamanlı bir ses akışını işleyemez.

ESP32 DevKit V1 (38 pin)PCM5102 I2S DAC modülü (veya MAX98357A I2S amplifikatör)Küçük hoparlör (MAX98357A kullanılıyorsa doğrudan, PCM5102 kullanılıyorsa aktif hoparlör/kulaklık)+2
#16

SPIFFS/LittleFS ile Dahili Dosya Sisteminden Web Üzerinden Medya Streaming

Orta
~1,5 saat

ESP32'nin 4MB'lık dahili flash belleğinin bir kısmını LittleFS dosya sistemi olarak bölümleyip, içine yüklenen bir ses veya görüntü dosyasını WiFi üzerinden HTTP ile parça parça (chunked) akış olarak tarayıcıya sunmayı öğretir — harici bir SD kart olmadan, cihazın kendi hafızasından medya sunumu yapılabilmesini sağlar. ESP32'nin yeterli dahili flash'ı LittleFS gibi gerçek bir dosya sistemi partisyonuna ayırabilir ve WiFi ile bu dosyaları HTTP response olarak akıtabilecek bir ağ yığınına sahiptir. Bu senaryo Arduino Uno'da kurulamaz: toplam 32KB flash zaten sketch koduna gittiğinden bir medya dosyası bir yana, birkaç kilobaytlık bir metin dosyası için bile dosya sistemi partisyonu ayıracak yer kalmaz; WiFi de bulunmadığından zaten akıtacak bir ağ arayüzü de yoktur.

ESP32 DevKit V1 (38 pin)Durum LED'i220Ω direnç+3
#17

Fauxmo ile Alexa/Google Home Sesli Kontrol Entegrasyonu

Orta
~1 saat

ESP32'yi, Amazon Alexa veya Google Home'un zaten tanıdığı bir Philips Hue/Belkin Wemo akıllı priz gibi taklit ederek (fauxmoESP kütüphanesiyle UPnP/SSDP protokolü üzerinden), herhangi bir bulut hesabı veya geliştirici kaydı olmadan 'Alexa, lambayı aç' gibi sesli komutlarla röle kontrolü yapmayı öğretir. ESP32'nin WiFi ağ yığını, UDP multicast (SSDP keşif) ve yerel bir HTTP sunucusunu aynı anda çalıştırabilecek yeterli RAM ve ağ desteğine sahiptir. Bu senaryo Arduino Uno'da kurulamaz: WiFi donanımı olmadığından ne UDP multicast dinleyebilir ne de Alexa'nın yerel ağ taramasına yanıt verebilecek bir HTTP sunucusu çalıştırabilir.

ESP32 DevKit V1 (38 pin)2x Röle modülü (5V, optokuplörlü)Breadboard+3
#18

SD Kart + Bulut Senkronizasyonlu Kesintisiz Veri Kayıt Sistemi

İleri
~2,5 saat

Sensör verisini sürekli olarak SPI üzerinden bir SD karta yazıp, WiFi bağlantısı müsait olduğunda kaydedilmiş verileri toplu halde buluta senkronize etmeyi öğretir — bağlantı kesilse bile veri kaybı olmadan çalışan, sahadaki gerçek IoT sistemlerinde aranan bir kayıt mimarisidir. ESP32'nin iki çekirdeği, bir tarafta SD karta yazma (SPI, göreceli yavaş) işlemini yaparken diğer tarafta WiFi/HTTP senkronizasyonunu eşzamanlı ve birbirini bloklamadan yürütebilir. Bu mimari Arduino Uno'da kurulamaz: SD kartı SPI ile teorik olarak bağlamak mümkün olsa da WiFi donanımı olmadığından buluta senkronizasyon yapılamaz; ayrıca 2KB RAM, SD dosya sistemi arabellekleriyle birlikte bir ağ yığınını aynı anda çalıştırmaya yetmez.

ESP32 DevKit V1 (38 pin)MicroSD kart modülü (SPI arayüzlü)MicroSD kart (FAT32 formatlı)+4
#19

WebSocket ile Çoklu İstemci Senkronize Canlı Kontrol Paneli

İleri
~2 saat

Birden fazla tarayıcının aynı anda açık kalıcı bir WebSocket bağlantısıyla bir RGB LED'in rengini canlı kontrol edip, bir istemcideki değişikliğin tüm diğer istemcilerde anında (polling olmadan) görünmesini sağlamayı öğretir. ESP32'nin ikinci çekirdeği, her biri açık kalan onlarca WebSocket bağlantısını sensör okuma döngüsünü hiç bloklamadan yönetebilecek yeterli RAM ve async ağ yığınına sahiptir. Bu eşzamanlı bağlantı yönetimi Arduino Uno'da kurulamaz: WiFi donanımı yoktur; olsaydı bile kalıcı, çift yönlü (full-duplex) birden fazla soket bağlantısını aynı anda açık tutmak 2KB RAM'i fazlasıyla aşar.

ESP32 DevKit V1 (38 pin)RGB LED (ortak katot)3x 330Ω direnç+2
#20

Firebase Cloud Functions ile Sunucusuz Otomasyon Mantığı

İleri
~2,5 saat (Firebase kurulumu dahil)

ESP32'nin sadece ham sensör verisini (ışık seviyesi) HTTPS ile Firebase Realtime Database'e yazıp, 'ışık şu eşiğin altına düşerse röleyi aç' gibi karar mantığını cihaz üzerinde değil, bulutta çalışan bir Firebase Cloud Function'da (sunucusuz/serverless) tutmayı öğretir — cihaz koduna hiç dokunmadan bulut tarafındaki otomasyon kuralını değiştirebilme esnekliği sunar. ESP32'nin donanımsal kripto hızlandırması ve yeterli RAM'i, Firebase'in gerektirdiği TLS/HTTPS bağlantısını ve JSON işlemeyi sorunsuz yürütür. Bu tür bir bulut entegrasyonu Arduino Uno'da kurulamaz: WiFi yoktur; olsaydı bile TLS handshake için gereken kripto işlemi ve JSON ayrıştırma belleği 2KB SRAM'e hiç sığmaz.

ESP32 DevKit V1 (38 pin)LDR (fotodirenç)10kΩ direnç (gerilim bölücü)+3