Arduino ile Uzaktan Sıcaklık İzleme Sistemi
- Arduino ile Uzaktan Sıcaklık İzleme Sistemi
- 1. Proje Amacı
- 2. Kullanılan Temel Bileşenler
- 3. DHT11 Sensörünün Özellikleri
- 4. Proje Çalışma Prensibi
- 5. Donanım Bağlantıları
- DHT11 Sensör Bağlantısı
- ESP8266 Wi-Fi Modülü Bağlantısı
- 6. Arduino IDE Ayarları
- 7. Temel Kod (DHT11 + Seri Monitör)
- 8. ESP8266 ile Wi-Fi Bağlantısı Kurmak
- 9. ThingSpeak ile Veri Gönderimi
- Gerekli Adımlar:
- 10. LCD Ekran Entegrasyonu
- 11. Gerçek Zamanlı Uyarı Sistemi
- 12. Güç Yönetimi ve Kararlılık
- 13. Sık Yapılan Hatalar ve Çözümleri
- 14. Gelişmiş Proje Fikirleri
- 15. Sonuç
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
- DHT11 sensörü, ortam sıcaklığını ölçer.
- Arduino, bu veriyi dijital olarak okur.
- ESP8266 modülü, veriyi internet bağlantısı üzerinden bir web sunucusuna veya IoT platformuna gönderir.
- 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:
- https://thingspeak.com adresine kayıt ol.
- Yeni bir “Channel” oluştur.
- “Write API Key” bilgisini not et.
- 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
- Akıllı Sera İzleme Sistemi
- Sıcaklık ve nem değerine göre fan, nemlendirici veya ısıtıcı kontrolü.
- IoT Termometre Paneli
- Farklı sensörlerden alınan verilerin tek bir web arayüzünde gösterimi.
- Mobil Uygulama Takibi
- MIT App Inventor ile sıcaklık değerlerini telefondan takip etme.
- Veri Kaydı + Grafik Analizi
- ThingSpeak üzerinden uzun dönem sıcaklık değişimlerinin istatistiksel analizi.
- SMS Bildirimli Sistem
- 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.