Arduino ile Uzaktan Sıcaklık İzleme Sistemi

Arduino ile Uzaktan Sıcaklık İzleme Sistemi

Arduino ile Uzaktan Sıcaklık İzleme Sistemi

Günümüzde sıcaklık ölçümü yalnızca laboratuvarlarda değil; akıllı evlerden endüstriyel otomasyona kadar birçok alanda büyük önem taşır.
Ancak bu ölçümleri sadece yerel bir ekranda görmekle kalmayıp, uzaktan izlemek, gerçek anlamda bir IoT (Internet of Things) sisteminin temelini oluşturur.
Bu yazıda, Arduino tabanlı bir uzaktan sıcaklık izleme sistemi tasarlamayı, bağlantılarını, kodlarını, Wi-Fi veri aktarım yöntemlerini, bulut tabanlı sistem entegrasyonlarını ve proje fikirlerini adım adım öğreneceksin.

1. Proje Amacı

Bu projenin temel amacı, Arduino kartı ile sıcaklık ölçümü yaparak veriyi internet üzerinden uzaktan izlenebilir hale getirmektir.
Sistemde DHT11 veya DS18B20 gibi bir sıcaklık sensörü kullanılır, veriler ESP8266 Wi-Fi modülü aracılığıyla internete gönderilir.
Sonuçta kullanıcı, ölçülen sıcaklık değerlerini bir web sayfasında veya mobil uygulamada görebilir.

2. Kullanılan Temel Bileşenler

Proje Bileşenleri
----------------------------------------
1. Arduino UNO / Nano
2. DHT11 veya DS18B20 sıcaklık sensörü
3. ESP8266 Wi-Fi modülü
4. Breadboard
5. Jumper kablolar
6. USB kablosu
7. (İsteğe bağlı) LCD ekran
----------------------------------------

İleri seviye kullanıcılar, ESP32 kartını tek başına kullanarak hem ölçüm hem bağlantı işlemlerini bir arada da yapabilir.
Ancak bu yazıda sistem, klasik Arduino + ESP8266 ikilisi üzerinden anlatılmıştır.

3. DHT11 Sensörünün Özellikleri

DHT11 Teknik Bilgiler
----------------------------------------
Ölçüm Aralığı: 0°C – 50°C
Doğruluk: ±2°C
Nem Ölçüm Aralığı: 20% – 90% RH
Besleme Gerilimi: 3.3V – 5V
Veri Çıkışı: Dijital
Veri Yenileme: 1 saniye
Pin Sayısı: 3 veya 4
----------------------------------------

Bu sensör düşük maliyetli olduğu için IoT projelerinde sıkça tercih edilir.
Daha hassas ölçüm isteyen kullanıcılar DHT22 veya DS18B20 sensörlerini tercih edebilir.

4. Proje Çalışma Prensibi

  1. DHT11 sensörü, ortam sıcaklığını ölçer.
  2. Arduino, bu veriyi dijital olarak okur.
  3. ESP8266 modülü, veriyi internet bağlantısı üzerinden bir web sunucusuna veya IoT platformuna gönderir.
  4. Kullanıcı, bu verileri web tarayıcısı, ThingSpeak veya özel web arayüzünden izleyebilir.

Bu sistemin avantajı, fiziksel olarak o ortamda bulunmadan sıcaklık değişimlerini anlık olarak takip edebilmektir.

5. Donanım Bağlantıları

DHT11 Sensör Bağlantısı

DHT11 Sensör Pin Bağlantısı
----------------------------------------
1. VCC  →  5V
2. DATA →  Arduino Dijital Pin 2
3. GND  →  GND
----------------------------------------

ESP8266 Wi-Fi Modülü Bağlantısı

ESP8266 Modül Pin Bağlantısı
----------------------------------------
VCC   →  3.3V
GND   →  GND
TX    →  Arduino Pin 2
RX    →  Arduino Pin 3
CH_PD →  3.3V (aktif hale getirme)
----------------------------------------
Not: RX hattına 1K–2K direnç bölücü eklenmelidir.
----------------------------------------

6. Arduino IDE Ayarları

Projeyi çalıştırmadan önce Arduino IDE üzerinde şu kütüphaneleri kur:

  • Adafruit DHT Sensor Library
  • Adafruit Unified Sensor
  • ESP8266WiFi Library

Kütüphane yöneticisinden kolayca indirilebilir.
(Eğer ESP8266'yı doğrudan programlamak istersen, Board Manager üzerinden ESP8266 kartlarını eklemen gerekir.)

7. Temel Kod (DHT11 + Seri Monitör)

Önce sensörün doğru çalıştığını görmek için temel sıcaklık okuma kodunu kullan.

#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  dht.begin();
}

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

  Serial.print("Sicaklik: ");
  Serial.print(sicaklik);
  Serial.print(" C  |  Nem: ");
  Serial.print(nem);
  Serial.println(" %");

  delay(2000);
}

Bu kod, sensör verilerini Arduino’nun Seri Monitör ekranına yazdırır.

8. ESP8266 ile Wi-Fi Bağlantısı Kurmak

Artık ölçüm verilerini kablosuz olarak internet üzerinden göndermeye geçebiliriz.

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

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

const char* ssid = "WiFiAdi";
const char* password = "WiFiSifresi";

WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);
  dht.begin();

  Serial.println("WiFi'ya baglaniyor...");
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("");
  Serial.println("Baglanti tamamlandi!");
  Serial.println(WiFi.localIP());

  server.begin();
}

void loop() {
  WiFiClient client = server.available();
  if (!client) return;

  while (!client.available()) delay(1);

  client.readStringUntil('\r');
  client.flush();

  float sicaklik = dht.readTemperature();
  float nem = dht.readHumidity();

  String html = "<!DOCTYPE html><html><head><title>Uzaktan Sicaklik Izleme</title></head><body>";
  html += "<h1>Arduino Sicaklik Izleme</h1>";
  html += "<p>Sicaklik: " + String(sicaklik) + " C</p>";
  html += "<p>Nem: " + String(nem) + " %</p>";
  html += "</body></html>";

  client.print("HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n");
  client.print(html);
  delay(1000);
}

Bu kod, Arduino üzerinden küçük bir web sunucusu oluşturur.
ESP8266 ağa bağlandıktan sonra bilgisayar veya telefondan, modülün IP adresini tarayıcıya yazarak sıcaklık ve nem değerlerini görebilirsin.

9. ThingSpeak ile Veri Gönderimi

ThingSpeak, IoT verilerini saklamak, görselleştirmek ve analiz etmek için kullanılan ücretsiz bir bulut platformudur.

Gerekli Adımlar:

  1. https://thingspeak.com adresine kayıt ol.
  2. Yeni bir “Channel” oluştur.
  3. “Write API Key” bilgisini not et.
  4. Aşağıdaki kodu düzenle ve yükle.
#include <ESP8266WiFi.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

const char* ssid = "WiFiAdi";
const char* password = "WiFiSifresi";
const char* apiKey = "THINGSPEAK_API_KEY";
const char* server = "api.thingspeak.com";

WiFiClient client;

void setup() {
  Serial.begin(115200);
  delay(10);
  dht.begin();

  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi baglantisi kuruldu!");
}

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

  if (client.connect(server, 80)) {
    String postStr = apiKey;
    postStr += "&field1=";
    postStr += String(sicaklik);
    postStr += "&field2=";
    postStr += String(nem);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + String(apiKey) + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);
  }

  client.stop();
  delay(20000); // 20 saniyede bir veri gönderimi
}

Bu sistem sayesinde her 20 saniyede bir sıcaklık ve nem verileri ThingSpeak grafiğinde güncellenir.

10. LCD Ekran Entegrasyonu

#include <LiquidCrystal.h>
#include "DHT.h"

#define DHTPIN 2
#define DHTTYPE DHT11

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  lcd.begin(16, 2);
  dht.begin();
}

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

  lcd.setCursor(0, 0);
  lcd.print("Sicaklik:");
  lcd.print(sicaklik);
  lcd.print(" C");

  lcd.setCursor(0, 1);
  lcd.print("Nem:");
  lcd.print(nem);
  lcd.print(" %");

  delay(2000);
}

Böylece hem yerel LCD ekranda hem de internette sıcaklık değerini takip edebilirsin.

11. Gerçek Zamanlı Uyarı Sistemi

İleri aşamada, sıcaklık belirli bir değeri aştığında e-posta bildirimi veya LED uyarısı gönderebilirsin.
ThingSpeak “React” özelliği bu konuda işe yarar; belirli koşullarda e-posta veya HTTP isteği gönderir.

12. Güç Yönetimi ve Kararlılık

  • 3.3V regülatör (AMS1117) kullanarak ESP8266’ya temiz güç sağla.
  • Breadboard üzerinden besleme yapıyorsan, akım sınırına dikkat et.
  • Sistemi 24/7 çalıştıracaksan, harici adaptör tercih et.

13. Sık Yapılan Hatalar ve Çözümleri

Yaygın Hatalar ve Çözümler
----------------------------------------
1. "Nan" değerleri → DHT sensör bağlantısı hatalı.
2. "WiFi baglanmiyor" → SSID veya şifre yanlış.
3. "ESP yanıyor" → 5V doğrudan bağlanmış (sadece 3.3V kullanılmalı).
4. "ThingSpeak güncellenmiyor" → API Key yanlış veya 20 saniye sınırı ihlal edilmiş.
5. "Veri gecikmeli" → delay süresi çok kısa, en az 15 saniye olmalı.
----------------------------------------

14. Gelişmiş Proje Fikirleri

  1. Akıllı Sera İzleme Sistemi
  2. Sıcaklık ve nem değerine göre fan, nemlendirici veya ısıtıcı kontrolü.
  3. IoT Termometre Paneli
  4. Farklı sensörlerden alınan verilerin tek bir web arayüzünde gösterimi.
  5. Mobil Uygulama Takibi
  6. MIT App Inventor ile sıcaklık değerlerini telefondan takip etme.
  7. Veri Kaydı + Grafik Analizi
  8. ThingSpeak üzerinden uzun dönem sıcaklık değişimlerinin istatistiksel analizi.
  9. SMS Bildirimli Sistem
  10. GSM modülü entegre edilerek sıcaklık kritik seviyeye ulaştığında SMS gönderimi.

15. Sonuç

Bu yazıda, Arduino tabanlı uzaktan sıcaklık izleme sistemi adım adım açıklandı.
Artık sadece yerel değil, internet üzerinden de sıcaklık verilerini izleyebilen bir IoT projesi geliştirebilirsin.
Bu sistemin sunduğu başlıca avantajlar:

  • Gerçek zamanlı veri takibi
  • Web tabanlı arayüz
  • Düşük maliyetli donanım
  • Genişletilebilir yapı (LCD, buzzer, röle vb.)

Kendi ihtiyaçlarına göre sistemi geliştirerek endüstriyel veya ev tipi akıllı sensör uygulamalarına dönüştürebilirsin.