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.

| Malzeme | Görevi |
|---|---|
| Arduino Uno | Projenin ana kontrol kartıdır. |
| USB kablosu | Arduino’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. |
| Breadboard | Devreyi 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
DHT22yazan yeriDHT11olarak 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.

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.

DHT22 bağlantı özeti
| Bağlantı | Nereye bağlanır? |
|---|---|
| DHT22 Pin 1 (VCC) | Arduino 5V |
| DHT22 Pin 2 (DATA) | Arduino D2 |
| DHT22 Pin 3 | Boş 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.

OLED bağlantı özeti
| Bağlantı | Nereye bağlanır? |
|---|---|
| OLED VCC | Arduino 5V |
| OLED GND | Arduino GND |
| OLED SDA | Arduino A4 |
| OLED SCK | Arduino 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:
| Eleman | Arduino bağlantısı |
|---|---|
| DHT22 DATA | D2 |
| OLED SDA | A4 |
| OLED SCK | A5 |
| DHT22 VCC + OLED VCC | 5V |
| DHT22 GND + OLED GND | GND |
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:
- Araçlar → Kart → Arduino AVR Boards → Arduino Uno seçin.
- 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üphane | Görevi |
|---|---|
| DHT sensor library (Adafruit) | DHT22’den sıcaklık ve nem değerlerinin okunmasını sağlar. |
| Adafruit Unified Sensor | DHT kütüphanesinin ihtiyaç duyduğu yardımcı sensör altyapısını sağlar. |
| Adafruit GFX Library | OLED ekrana yazı, şekil, çizgi ve grafik çizilmesini sağlar. |
| Adafruit SSD1306 | SSD1306 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
- 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.
- Arduino Uno’nun bilgisayara bağlı olduğundan emin olun ve Yükle düğmesine basın.
- 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
0x3Cadresini0x3Dolarak 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:
- Arduino Uno çalışmaya başlar, DHT22 ve OLED ekran başlatılır.
- DHT22 sensöründen nem ve sıcaklık değerleri okunur.
- Ölçümlerin geçerli olup olmadığı kontrol edilir.
- OLED ekranın önceki görüntüsü temizlenir.
- Yeni sıcaklık ve nem değerleri ekrana yazılır.
- İki saniye beklenir ve ölçüm yeniden gerçekleştirilir.
Sorun Giderme
| Sorun | Olası çözüm |
|---|---|
| OLED ekranda görüntü yok | Koddaki 0x3C adresini 0x3D yapın. VCC, GND, SDA, SCK bağlantılarını kontrol edin. |
| Ekranda “Sensor okunamadi!” yazıyor | DHT22’nin DATA, GND ve 5V bağlantılarını ve 10 kΩ direnci kontrol edin. |
| Kod yüklenmiyor | Doğru kart ve portun seçili olduğundan, kablonun veri aktarımı desteklediğinden emin olun. |
| Derleme hatası alıyorum | Dö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.