Arduino ile İnternete Bağlanmak (ESP8266 ile)

Arduino ile İnternete Bağlanmak (ESP8266 ile)

Arduino ile İnternete Bağlanmak (ESP8266 ile)

Arduino projeleri yalnızca sensörlerden veri almakla sınırlı değildir.
Eğer bu verileri internete aktarmak, bir web sayfasına yüklemek ya da uzaktan kontrol sağlamak istiyorsan, çözüm oldukça basit: ESP8266 Wi-Fi modülü.
Bu yazıda Arduino ile internete bağlanmak, ESP8266 bağlantısı, kod örnekleri, AT komutları, hata çözümleri ve örnek IoT projeleri dahil olmak üzere her şeyi adım adım öğreneceksin.

1. ESP8266 Nedir?

ESP8266, Wi-Fi özelliği eklemek için kullanılan düşük maliyetli bir mikroçiptir.
Arduino’ya internet erişimi kazandırmak için en çok tercih edilen çözümlerden biridir.
Temel Özellikleri:

  • Wi-Fi 802.11 b/g/n desteği
  • Dahili TCP/IP yığını
  • Seri iletişim (UART) ile Arduino’ya bağlanır
  • 3.3V ile çalışır
  • AT komut setiyle kontrol edilir

ESP8266’nın NodeMCU veya Wemos D1 Mini gibi kart versiyonları da vardır.
Ancak bu yazıda doğrudan ESP-01 modülü ile bağlantı anlatılmaktadır.

2. Gerekli Malzemeler

İnternet bağlantılı bir Arduino projesi yapmak için şunlara ihtiyacın olacak:

  • Arduino UNO veya Nano
  • ESP8266 Wi-Fi modülü (ESP-01)
  • Breadboard
  • 3.3V güç kaynağı veya seviye dönüştürücü
  • Jumper kablolar
  • USB kablosu (programlama için)

Not: ESP8266’nın RX/TX pinleri 3.3V toleranslıdır, bu nedenle Arduino’nun 5V TX hattı doğrudan bağlanmamalıdır.
Bu yüzden direnç bölücü veya seviye dönüştürücü kullanmak gerekir.

3. ESP8266 Pin Yapısı

ESP-01 modülünde yalnızca birkaç pin bulunur.

[ESP8266 (ESP-01) Pin Tanımları]
--------------------------------
VCC    → 3.3V (5V değil!)
GND    → Toprak (GND)
CH_PD  → 3.3V (aktif hale getirmek için)
TX     → Arduino RX
RX     → Arduino TX (direnç bölücü ile)
RST    → Reset pini (isteğe bağlı)
GPIO0  → Programlama modu (LOW)
GPIO2  → Normal çalışma modu
--------------------------------

4. Arduino ESP8266 Bağlantı Şeması

ESP8266 modülünü Arduino UNO ile bağlamak için şu bağlantıyı kullanabilirsin:

[Arduino – ESP8266 Bağlantısı]
--------------------------------
ESP8266 VCC    → 3.3V
ESP8266 GND    → GND
ESP8266 CH_PD  → 3.3V
ESP8266 TX     → Arduino Pin 10
ESP8266 RX     → Arduino Pin 11 (direnç bölücü ile)
--------------------------------

Not:

  • Arduino’nun kendi 3.3V çıkışı yetersiz olabilir (ESP8266 akım çeker).
  • Harici 3.3V regülatör (AMS1117 gibi) kullanmak daha güvenlidir.

5. Arduino Kodu (AT Komutları ile Test)

ESP8266, varsayılan olarak “AT Komut Seti” ile kontrol edilir.
Yani modüle seri port üzerinden metin komutları gönderilerek Wi-Fi bağlantısı sağlanır.
Aşağıdaki basit örnek, ESP8266’nın yanıt verip vermediğini test etmek içindir.

#include <SoftwareSerial.h>

SoftwareSerial esp(10, 11); // RX, TX

void setup() {
  Serial.begin(9600);
  esp.begin(115200); // bazı modüller 9600 olabilir
  Serial.println("ESP8266 Test Basladi...");
}

void loop() {
  if (esp.available()) {
    Serial.write(esp.read());
  }
  if (Serial.available()) {
    esp.write(Serial.read());
  }
}

Kullanım:

  1. Arduino’yu bilgisayara bağla.
  2. Seri Monitör’ü aç (her iki taraf 9600 baud seçili olmalı).
  3. “AT” komutunu gönder.
  4. Eğer modül yanıt verirse OK yazısını göreceksin.

Bu, Arduino ESP8266 bağlantısının başarılı olduğunu gösterir.

6. ESP8266 ile Wi-Fi Ağına Bağlanma

Artık kablosuz ağa bağlanabiliriz.
Aşağıdaki AT komutlarını sırasıyla göndererek ESP8266’yı Wi-Fi’ye tanıtabilirsin:

AT              → modülü test eder
AT+CWMODE=1     → STA (client) modu
AT+CWJAP="SSID","SIFRE"   → ağa bağlanma
AT+CIFSR         → IP adresini gösterir

Eğer doğru bağlandıysa, 192.168.x.x gibi bir IP adresi görünecektir.
Artık Arduino’nun internet erişimi vardır.

7. Web Sunucusuna Veri Gönderme (GET İsteği)

Bir sensör verisini (örneğin sıcaklık) internetteki bir web sayfasına göndermek için GET isteği kullanılabilir.
Aşağıdaki örnek, basit bir sıcaklık değerini bir PHP dosyasına gönderir:

#include <SoftwareSerial.h>
SoftwareSerial esp(10, 11);

void setup() {
  Serial.begin(9600);
  esp.begin(115200);
  Serial.println("WiFi Baglantisi Baslatiliyor...");
  
  esp.println("AT+RST");
  delay(2000);
  esp.println("AT+CWMODE=1");
  delay(1000);
  esp.println("AT+CWJAP=\"WiFi_ADI\",\"WiFi_SIFRE\"");
  delay(5000);
}

void loop() {
  int sicaklik = 25; // örnek veri

  String cmd = "AT+CIPSTART=\"TCP\",\"example.com\",80";
  esp.println(cmd);
  delay(2000);

  String httpGet = "GET /veri.php?sicaklik=" + String(sicaklik) + " HTTP/1.1\r\nHost: example.com\r\n\r\n";
  esp.print("AT+CIPSEND=");
  esp.println(httpGet.length());
  delay(2000);

  if (esp.find(">")) {
    esp.print(httpGet);
  }

  delay(10000);
}

Bu şekilde Arduino’dan sunucuya veri gönderimi yapılabilir.
Sunucu tarafında “veri.php” dosyasıyla veriyi kaydedebilirsin.

8. ESP8266 ile Web Sunucusu Oluşturma

ESP8266 yalnızca istemci olarak değil, aynı zamanda sunucu (server) olarak da çalışabilir.
Yani internete bağlı başka bir cihazdan Arduino’yu kontrol edebilirsin.
Aşağıdaki örnek, basit bir LED kontrol arayüzü oluşturur.

#include <SoftwareSerial.h>
SoftwareSerial esp(10, 11);
int ledPin = 8;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
  esp.begin(115200);
  Serial.println("Web sunucusu baslatiliyor...");
  
  esp.println("AT+CWMODE=2");       // Access Point modu
  delay(2000);
  esp.println("AT+CWSAP=\"ESP8266_LED\",\"12345678\",5,3");
  delay(3000);
  esp.println("AT+CIPMUX=1");
  delay(1000);
  esp.println("AT+CIPSERVER=1,80"); // 80 portundan dinle
}

void loop() {
  if (esp.available()) {
    String gelen = esp.readString();
    Serial.println(gelen);
    
    if (gelen.indexOf("/LED=ON") != -1) {
      digitalWrite(ledPin, HIGH);
    }
    if (gelen.indexOf("/LED=OFF") != -1) {
      digitalWrite(ledPin, LOW);
    }
  }
}

Artık başka bir cihazdan ESP8266’nın oluşturduğu Wi-Fi ağına bağlanarak LED’i kontrol edebilirsin.
Tarayıcıya 192.168.4.1/LED=ON yazarsan LED yanar.

9. ESP8266 ile Sensör Verilerini İnternette Gösterme

ESP8266, IoT (Internet of Things) projeleri için mükemmel bir bileşendir.
Örneğin, sıcaklık ve nem sensörlerinden alınan verileri bir web sayfasına gönderebilirsin.

Örnek: DHT11 ile Hava Durumu Gönderimi

#include <SoftwareSerial.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
SoftwareSerial esp(10, 11);

void setup() {
  Serial.begin(9600);
  esp.begin(115200);
  dht.begin();
  Serial.println("ESP8266 ve DHT11 Basladi");
  
  esp.println("AT+CWMODE=1");
  delay(1000);
  esp.println("AT+CWJAP=\"SSID\",\"SIFRE\"");
  delay(5000);
}

void loop() {
  float sicaklik = dht.readTemperature();
  float nem = dht.readHumidity();

  if (isnan(sicaklik) || isnan(nem)) {
    Serial.println("Sensör hatası!");
    return;
  }

  String cmd = "AT+CIPSTART=\"TCP\",\"example.com\",80";
  esp.println(cmd);
  delay(2000);

  String veri = "GET /hava.php?sicaklik=" + String(sicaklik) + "&nem=" + String(nem) + " HTTP/1.1\r\nHost: example.com\r\n\r\n";
  esp.print("AT+CIPSEND=");
  esp.println(veri.length());
  delay(2000);

  if (esp.find(">")) {
    esp.print(veri);
  }

  delay(20000); // 20 saniyede bir veri gönder
}

Bu şekilde Arduino ESP8266 sensör verisi gönderimi yapılabilir.
Sunucu tarafında “hava.php” dosyasıyla sıcaklık ve nem verilerini veritabanına kaydedip bir grafik arayüzde görüntüleyebilirsin.

10. Yaygın Hatalar ve Çözümleri

[ESP8266 Kullanımında Yaygın Hatalar]
---------------------------------------
1. "ESP Yanıt Vermiyor" → 3.3V güç yetersiz olabilir.
2. "AT Komutuna OK Gelmiyor" → Baud hızı uyuşmuyor (115200 yerine 9600 deneyin).
3. "Bağlantı Kopuyor" → CH_PD pini bağlı değil veya voltaj kararsız.
4. "No IP Adresi" → Wi-Fi SSID veya şifre yanlış girilmiş.
5. "ESP Çok Isınıyor" → 5V’a doğrudan bağlanmış olabilir.
---------------------------------------

11. ESP8266 ile IoT Uygulama Önerileri

Arduino ve ESP8266 kullanarak yapılabilecek bazı örnek projeler:

  1. Kablosuz Hava İstasyonu:
  2. Sıcaklık ve nem verilerini online olarak paylaşır.
  3. Akıllı Ev Sistemi:
  4. Web veya telefon üzerinden ışık, fan veya priz kontrolü yapılır.
  5. Veri Kaydı (Data Logger):
  6. Sensör verileri Google Sheets veya Thingspeak’e gönderilir.
  7. Uzaktan İzleme:
  8. Toprak nemi sensörüyle tarım alanlarını uzaktan gözlemleme.
  9. Web Tabanlı Güvenlik Alarmı:
  10. Hareket sensörü verilerini internete aktarır ve alarm bildirimi gönderir.

12. Sonuç: Arduino + ESP8266 ile Gerçek IoT Gücü

Artık Arduino ile internete bağlanmak senin için bir gizem değil.
Bu yazıda, ESP8266 modülünün nasıl bağlandığını, nasıl programlandığını ve internete veri gönderebileceğini öğrendin.
ESP8266, düşük maliyeti, kolay kullanımı ve güçlü kablosuz özellikleriyle Arduino projelerini bir üst seviyeye taşır.
Bir sıcaklık sensörü, akıllı priz ya da hava istasyonu fark etmez — tümünü internete bağlamak artık mümkün.