Skip to Content
ProjelerArduino ProjeleriArduino Uno ile OLED Ekranlı Dijital Sıcaklık ve Nem Ölçer

Arduino Uno ile OLED Ekranlı Dijital Sıcaklık ve Nem Ölçer

Bu projede kendi mini hava istasyonunuzu yapacaksınız! Arduino Uno ve DHT22 sensörü ile ortamın sıcaklık ve nem değerlerini ölçecek, sonuçları şık bir OLED ekranda gerçek zamanlı olarak göstereceksiniz.

DHT22, hem sıcaklığı hem de bağıl nemi tek başına ölçebilen dijital bir sensördür. Arduino, sensörden gelen verileri okur ve I2C haberleşmesi ile OLED ekrana aktarır. Ekranda değerler her 2 saniyede bir güncellenir; böylece odanızın anlık durumunu masanızın üzerinden takip edebilirsiniz.

Bu proje, sensör okuma ve ekran kullanımını bir arada öğrenmek isteyenler için ideal bir başlangıç projesidir. Tamamladığınızda çalışan bir cihazınız olacak — üstelik bu cihazı ilerleyen projelerde saat, alarm veya veri kaydedici gibi özelliklerle geliştirebilirsiniz.

Projenin Amacı

Bu projenin amacı, Arduino Uno ile dijital bir sensörden veri okuyup bu veriyi OLED ekranda anlamlı şekilde görselleştiren bir ölçüm cihazı oluşturmaktır.

Bu çalışma sonunda:

  • Arduino ile dijital sensör (DHT22) okumayı,
  • OLED ekran kullanmayı ve ekrana yazı yazdırmayı,
  • I2C haberleşme protokolünün temel mantığını,
  • Arduino IDE’ye kütüphane eklemeyi,
  • Pull-up direncinin ne işe yaradığını,
  • Breadboard üzerinde çok bileşenli devre kurmayı,
  • Sensör hatalarını kontrol eden güvenilir kod yazmayı öğrenebilirsiniz.

Gerekli Malzemeler

Aşağıdaki görselde proje için kullanılacak temel malzemeler yer almaktadır.

Arduino OLED sıcaklık ve nem ölçer gerekli malzemeler

MalzemeGörevi
Arduino UnoProjenin ana kontrol kartıdır.
USB kablosuArduino’yu bilgisayara bağlamak ve kod yüklemek için kullanılır.
DHT22 sıcaklık ve nem sensörüOrtamın sıcaklık ve bağıl nem değerlerini ölçer.
1.3 inç 128×64 OLED ekran (SSD1306, I2C, 4 pin)Ölçüm sonuçlarını gerçek zamanlı gösterir.
BreadboardDevreyi lehim yapmadan kurmak için kullanılır.
10 kΩ dirençDHT22’nin veri hattında pull-up direnci olarak kullanılır.
Jumper kablolar (7 adet)Arduino ve breadboard arasında bağlantı kurmak için kullanılır.

Not: DHT22 yerine DHT11 sensörünüz varsa aynı bağlantılarla kullanabilirsiniz. Kodda yalnızca DHT22 yazan yeri DHT11 olarak değiştirmeniz yeterlidir.

1. Adım: OLED Ekranı ve DHT22 Sensörünü Breadboard’a Yerleştirme

İlk olarak OLED ekranı ve DHT22 sensörünü breadboard üzerine yerleştirin.

Parçaları takarken pinlerin breadboard üzerindeki farklı bağlantı sıralarına girdiğinden emin olun. Böylece pinler birbirine kısa devre yapmaz ve jumper kablolar kolayca bağlanabilir.

Yerleşim önerisi:

  • OLED ekranı breadboard’un sol tarafına,
  • DHT22 sensörünü sağ tarafına yerleştirin.

DHT22 sensörünün ön yüzündeki delikli bölüm size bakarken pinler soldan sağa doğru VCC, DATA, boş ve GND şeklindedir.

OLED ekran ve DHT22 sensörünün breadboard yerleşimi

Not: Parçaları breadboard’a bastırırken fazla güç uygulamayın. Pinlerin eğilmemesine ve bağlantı deliklerine düzgün şekilde girmesine dikkat edin.

2. Adım: DHT22 Sensörünün Bağlantılarını Yapma

DHT22 sensörünün delikli ön yüzü size bakacak şekilde tutulduğunda pinler soldan sağa doğru numaralandırılır.

Bağlantıları şu şekilde yapın:

  • Sensörün 1 numaralı pinini (VCC) Arduino’nun 5V pinine bağlayın. Bu bağlantı sensöre enerji sağlar.
  • 2 numaralı DATA pinini Arduino’nun D2 dijital pinine bağlayın. Sıcaklık ve nem bilgileri bu kablo üzerinden Arduino’ya gönderilir.
  • 3 numaralı pin kullanılmaz, boş bırakılır.
  • 4 numaralı pini Arduino’nun GND pinine bağlayın.

DHT22’nin kararlı çalışması için 10 kΩ direnci pin 1 ile pin 2 arasına yerleştirin. Bu direnç, veri hattını yüksek seviyede tutan bir pull-up direncidir; sensörün Arduino ile sağlıklı haberleşmesini sağlar.

Arduino DHT22 sensör bağlantısı

DHT22 bağlantı özeti

BağlantıNereye bağlanır?
DHT22 Pin 1 (VCC)Arduino 5V
DHT22 Pin 2 (DATA)Arduino D2
DHT22 Pin 3Boş bırakılır
DHT22 Pin 4 (GND)Arduino GND
10 kΩ dirençPin 1 ile Pin 2 arasına

Dikkat: Sensörü ters bağlamak sensöre zarar verebilir. Bağlantıları yapmadan önce pin sırasını tekrar kontrol edin.

3. Adım: OLED Ekranın Bağlantılarını Yapma

OLED ekran üzerinde dört bağlantı pini bulunur: VCC, GND, SDA ve SCK.

Bağlantıları şu şekilde yapın:

  • Ekranın VCC pinini Arduino’nun 5V pinine bağlayın. Bu bağlantı OLED ekranın enerji almasını sağlar.
  • Ekranın GND pinini Arduino üzerindeki GND pinlerinden birine bağlayın.
  • Ekranın SDA pinini Arduino’nun A4 pinine bağlayın.
  • Ekranın SCK pinini Arduino’nun A5 pinine bağlayın.

OLED ekran, Arduino Uno ile I2C haberleşmesi kullanır. I2C, yalnızca iki kabloyla (SDA veri hattı ve SCK saat hattı) veri aktarımı yapılmasını sağlayan pratik bir haberleşme yöntemidir. Arduino Uno’da bu hatlar A4 ve A5 pinlerine sabitlenmiştir.

Arduino OLED ekran tam devre bağlantısı

OLED bağlantı özeti

BağlantıNereye bağlanır?
OLED VCCArduino 5V
OLED GNDArduino GND
OLED SDAArduino A4
OLED SCKArduino A5

Dikkat: OLED ekranların pin sıralaması modele göre değişebilir. Kabloları bağlamadan önce ekran kartı üzerindeki VCC, GND, SDA ve SCK yazılarını mutlaka kontrol edin. Yanlış besleme bağlantısı ekrana zarar verebilir.

Devre Bağlantı Özeti

Tüm bağlantılar tamamlandığında Arduino üzerindeki temel pinler şu şekilde kullanılır:

ElemanArduino bağlantısı
DHT22 DATAD2
OLED SDAA4
OLED SCKA5
DHT22 VCC + OLED VCC5V
DHT22 GND + OLED GNDGND

4. Adım: Arduino IDE’yi Hazırlama ve Kütüphaneleri Yükleme

Devre bağlantılarını tamamladıktan sonra Arduino Uno’yu USB kablosuyla bilgisayara bağlayın. Arduino üzerindeki güç ışığının yanması, kartın bilgisayardan enerji aldığını gösterir.

Kart ve Port Seçimi

Arduino IDE’yi açın ve üst menüden şu adımları izleyin:

  1. Araçlar → Kart → Arduino AVR Boards → Arduino Uno seçin.
  2. Araçlar → Port menüsünden Arduino’nun bağlı olduğu portu seçin.

Port adı bilgisayara göre değişebilir. Windows’ta genellikle COM3, COM4 veya COM5 gibi görünür.

Not: Port seçeneği görünmüyorsa USB kablosunu çıkarıp yeniden takın. Ayrıca kullandığınız USB kablosunun yalnızca şarj kablosu değil, veri aktarımını destekleyen bir kablo olduğundan emin olun.

Kütüphaneleri Yükleme

OLED ekranın ve DHT22 sensörünün çalışabilmesi için dört hazır kütüphanenin yüklenmesi gerekir.

Arduino IDE’de Araçlar → Kütüphaneleri Yönet yolunu izleyerek Kütüphane Yöneticisini açın. (Bazı sürümlerde Taslak → Kütüphane Ekle → Kütüphaneleri Yönet olarak bulunur.)

Arama kutusunu kullanarak aşağıdaki kütüphaneleri tek tek aratın ve Yükle düğmesine basın:

KütüphaneGörevi
DHT sensor library (Adafruit)DHT22’den sıcaklık ve nem değerlerinin okunmasını sağlar.
Adafruit Unified SensorDHT kütüphanesinin ihtiyaç duyduğu yardımcı sensör altyapısını sağlar.
Adafruit GFX LibraryOLED ekrana yazı, şekil, çizgi ve grafik çizilmesini sağlar.
Adafruit SSD1306SSD1306 sürücülü OLED ekranın Arduino tarafından kontrol edilmesini sağlar.

Dikkat: Aynı isimde farklı geliştiricilere ait kütüphaneler bulunabilir. Kurulum yaparken mümkün olduğunca Adafruit tarafından yayımlanan kütüphaneleri seçin.

Tüm kütüphaneler yüklendikten sonra Kütüphane Yöneticisini kapatabilirsiniz. Kurulumun sorunsuz tamamlandığından emin olmak için Arduino IDE’yi kapatıp yeniden açmanız faydalı olabilir.

Arduino Kodu

Aşağıdaki kod, DHT22 sensöründen sıcaklık ve nem değerlerini okuyarak OLED ekranda gösterir. Sensör okunamazsa ekranda uyarı mesajı görüntülenir.

#include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <DHT.h> #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 #define OLED_ADDRESS 0x3C #define DHT_PIN 2 #define DHT_TYPE DHT22 Adafruit_SSD1306 display( SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET ); DHT dht(DHT_PIN, DHT_TYPE); void setup() { Serial.begin(9600); dht.begin(); if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDRESS)) { Serial.println("OLED ekran bulunamadi."); while (true); } display.clearDisplay(); display.setTextColor(SSD1306_WHITE); display.setTextSize(1); display.setCursor(15, 25); display.println("Sistem basliyor..."); display.display(); delay(2000); } void loop() { float nem = dht.readHumidity(); float sicaklik = dht.readTemperature(); // Sensor okunamadiysa hata mesaji goster if (isnan(nem) || isnan(sicaklik)) { Serial.println("DHT22 okunamadi!"); display.clearDisplay(); display.setTextSize(1); display.setCursor(10, 25); display.println("Sensor okunamadi!"); display.display(); delay(2000); return; } Serial.print("Sicaklik: "); Serial.print(sicaklik, 1); Serial.print(" C Nem: "); Serial.print(nem, 1); Serial.println(" %"); display.clearDisplay(); // Baslik display.setTextSize(1); display.setCursor(20, 0); display.println("ORTAM OLCUMU"); display.drawLine(0, 12, 127, 12, SSD1306_WHITE); // Sicaklik (sol taraf) display.setTextSize(1); display.setCursor(0, 20); display.println("Sicaklik"); display.setTextSize(2); display.setCursor(0, 35); display.print(sicaklik, 1); display.print(" C"); // Nem (sag taraf) display.setTextSize(1); display.setCursor(82, 20); display.println("Nem"); display.setTextSize(2); display.setCursor(82, 35); display.print(nem, 0); display.print("%"); display.display(); delay(2000); }

Kodu Arduino Uno’ya Yükleme

  1. Kodu Arduino IDE’ye yapıştırın ve sol üstteki Doğrula düğmesine basın. Kodda hata bulunmuyorsa derleme işlemi tamamlanır.
  2. Arduino Uno’nun bilgisayara bağlı olduğundan emin olun ve Yükle düğmesine basın.
  3. Yükleme tamamlandığında Arduino IDE’nin alt kısmında Yükleme tamamlandı mesajı görüntülenir.

Not: OLED ekranda görüntü oluşmazsa kod içerisindeki 0x3C adresini 0x3D olarak değiştirip tekrar deneyin. Bazı OLED modelleri farklı I2C adresi kullanır.

Projenin Çalışması

Arduino Uno’ya enerji verildiğinde program çalışmaya başlar. OLED ekranda kısa süreyle başlangıç mesajı görüntülenir, ardından ölçüm ekranına geçilir.

Sıcaklık değeri ekranın sol tarafında, nem değeri sağ tarafında gösterilir:

ORTAM OLCUMU ───────────────────── Sicaklik Nem 23.6 C 48%

Projenin çalışma sırası şöyledir:

  1. Arduino Uno çalışmaya başlar, DHT22 ve OLED ekran başlatılır.
  2. DHT22 sensöründen nem ve sıcaklık değerleri okunur.
  3. Ölçümlerin geçerli olup olmadığı kontrol edilir.
  4. OLED ekranın önceki görüntüsü temizlenir.
  5. Yeni sıcaklık ve nem değerleri ekrana yazılır.
  6. İki saniye beklenir ve ölçüm yeniden gerçekleştirilir.

Sorun Giderme

SorunOlası çözüm
OLED ekranda görüntü yokKoddaki 0x3C adresini 0x3D yapın. VCC, GND, SDA, SCK bağlantılarını kontrol edin.
Ekranda “Sensor okunamadi!” yazıyorDHT22’nin DATA, GND ve 5V bağlantılarını ve 10 kΩ direnci kontrol edin.
Kod yüklenmiyorDoğru kart ve portun seçili olduğundan, kablonun veri aktarımı desteklediğinden emin olun.
Derleme hatası alıyorumDört kütüphanenin de (Adafruit sürümleri) yüklü olduğunu kontrol edin.

Bu Projeyi Geliştirmek İster misiniz?

Cihazınız çalıştıktan sonra şu eklemeleri deneyebilirsiniz:

  • Sıcaklık belirli bir değeri aştığında uyarı veren bir buzzer ekleyin.
  • Ekrana gün içindeki en yüksek ve en düşük değerleri yazdırın.
  • Ölçümleri belirli aralıklarla Seri Monitör üzerinden kaydedip grafiğe dökün.