ESP32, Espressif Systems tarafından üretilen güçlü bir mikrodenetleyicidir. Wi-Fi ve Bluetooth entegrasyonu, düşük güç tüketimi ve zengin GPIO seçenekleriyle IoT ve akıllı ev projeleri için ideal bir platformdur.
ESP32 Özellikleri
- İşlemci: Dual-core Xtensa LX6 (240MHz)
- RAM: 520KB SRAM
- Flash: 4-16MB (modele göre)
- Wi-Fi: 802.11 b/g/n (2.4GHz)
- Bluetooth: Classic + BLE 4.2/5.0
- GPIO: 34 programlanabilir pin
- ADC: 18 kanal (12-bit)
- DAC: 2 kanal (8-bit)
- PWM: 16 kanal
- I2C, SPI, UART: Çoklu interface
Geliştirme Ortamları
- Arduino IDE: Başlangıç için kolay
- PlatformIO: Profesyonel IDE (VS Code)
- ESP-IDF: Espressif official framework
- MicroPython: Python ile hızlı prototip
- ESPHome: YAML tabanlı, Home Assistant entegrasyonu
Akıllı Ev Projeleri
1. Akıllı Priz
// Arduino - Röle kontrol
#include <WiFi.h>
#include <WebServer.h>
const int relayPin = 5;
WebServer server(80);
void setup() {
pinMode(relayPin, OUTPUT);
WiFi.begin("SSID", "password");
server.on("/on", []() {
digitalWrite(relayPin, HIGH);
server.send(200, "text/plain", "ON");
});
server.on("/off", []() {
digitalWrite(relayPin, LOW);
server.send(200, "text/plain", "OFF");
});
server.begin();
}
void loop() {
server.handleClient();
}
2. Sıcaklık/Nem Sensörü (DHT22)
#include <DHT.h>
#include <WiFi.h>
#include <PubSubClient.h>
DHT dht(4, DHT22);
WiFiClient espClient;
PubSubClient mqtt(espClient);
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
String payload = "{\"temperature\":" + String(temp) +
",\"humidity\":" + String(hum) + "}";
mqtt.publish("home/bedroom/climate", payload.c_str());
delay(60000); // Her dakika
}
3. Hareket Sensörü (PIR)
const int pirPin = 27;
const int ledPin = 2;
void IRAM_ATTR motionDetected() {
digitalWrite(ledPin, HIGH);
// MQTT bildirim gönder
}
void setup() {
pinMode(pirPin, INPUT);
pinMode(ledPin, OUTPUT);
attachInterrupt(pirPin, motionDetected, RISING);
}
4. LED Strip Kontrolü (WS2812B)
#include <FastLED.h>
#define NUM_LEDS 60
#define DATA_PIN 5
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
}
void rainbow() {
for (int i = 0; i < NUM_LEDS; i++) {
leds[i] = CHSV((i * 256 / NUM_LEDS + millis() / 10) % 256, 255, 255);
}
FastLED.show();
}
ESPHome ile Kolay Entegrasyon
# esphome/bedroom-sensor.yaml
esphome:
name: bedroom-sensor
esp32:
board: esp32dev
wifi:
ssid: "MyNetwork"
password: "secret"
api:
password: "api_password"
sensor:
- platform: dht
pin: GPIO4
temperature:
name: "Bedroom Temperature"
humidity:
name: "Bedroom Humidity"
binary_sensor:
- platform: gpio
pin: GPIO27
name: "Bedroom Motion"
device_class: motion
Güç Yönetimi
- Deep Sleep: 10µA tüketim, pil projelerinde ideal
- Light Sleep: Hızlı uyanma, Wi-Fi korunur
- Modem Sleep: CPU aktif, Wi-Fi kapalı
// Deep sleep örneği
#define uS_TO_S_FACTOR 1000000
#define TIME_TO_SLEEP 300 // 5 dakika
void setup() {
// Sensör oku, MQTT gönder
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
esp_deep_sleep_start();
}
Güvenlik
- OTA güncellemeleri için şifre kullanın
- MQTT için TLS/SSL
- API endpoint'leri için authentication
- Hassas verileri flash'ta şifreli saklayın
ESP32, akıllı ev projelerinin temel yapı taşıdır. Düşük maliyeti ve güçlü özellikleriyle DIY IoT'un geleceğini şekillendirir.