☁️ Arduino ile Gerçek Zamanlı Hava Durumu Gösterimi (OpenWeatherMap API ve ESP8266/ESP32)
☁️ Arduino ile Gerçek Zamanlı Hava Durumu Gösterimi (OpenWeatherMap API ve ESP8266/ESP32)
Merhaba sevgili Arduino severler! Bu yazımızda, ESP8266 veya ESP32 kullanarak gerçek zamanlı hava durumu verilerini nasıl elde edip gösterebileceğinizi adım adım anlatacağım. Hem eğlenceli, hem de pratik bir proje olacak. Hazırsanız, başlayalım!
Gereken Malzemeler
- ESP8266 (NodeMCU) veya ESP32 geliştirme kartı
- Arduino IDE (En güncel sürümü)
- OpenWeatherMap API anahtarı (Ücretsiz hesap oluşturarak alabilirsiniz)
- LCD ekran (16x2 veya benzeri) ve I2C modülü (Opsiyonel, ekran kullanmak isterseniz)
- Jumper kablolar
OpenWeatherMap API Anahtarı Nasıl Alınır?
Öncelikle, OpenWeatherMap sitesine giderek ücretsiz bir hesap oluşturun. Hesabınızı oluşturduktan sonra, API anahtarınızı (API key) almanız gerekiyor. Bu anahtar, hava durumu verilerini çekmek için kullanacağınız kimlik bilgisi olacak.
Bağlantılar (Eğer LCD Ekran Kullanıyorsanız)
LCD ekran kullanıyorsanız, I2C modülü ile ESP8266/ESP32 arasındaki bağlantıları aşağıdaki gibi yapın:
- ESP8266 (NodeMCU)
- SDA (D2) -> I2C SDA
- SCL (D1) -> I2C SCL
- VCC (3.3V) -> I2C VCC
- GND -> I2C GND
- ESP32
- SDA (21) -> I2C SDA
- SCL (22) -> I2C SCL
- VCC (3.3V) -> I2C VCC
- GND -> I2C GND
Arduino IDE Kurulumu ve Gerekli Kütüphaneler
Arduino IDE'nizin kurulu olduğundan emin olun. Eğer kurulu değilse, Arduino'nun resmi sitesinden indirebilirsiniz. Ardından aşağıdaki kütüphaneleri kurmanız gerekiyor:
- ArduinoJson: JSON verilerini ayrıştırmak için kullanacağız. Araçlar -> Kütüphaneleri Yönet... kısmından aratarak kurabilirsiniz.
- LiquidCrystal_I2C: LCD ekran kullanıyorsanız, bu kütüphane ekranı kontrol etmek için gereklidir. (Eğer LCD Kullanıyorsanız)
- WiFi (ESP8266WiFi or WiFi): WiFi bağlantısı için gerekli.
Kod Kısmı
Şimdi, Arduino kodumuzu yazmaya başlayabiliriz. Aşağıdaki kodu dikkatlice inceleyin ve kendi API anahtarınızı ve şehir adınızı (CITY_NAME) eklemeyi unutmayın!
#include
#include //ESP8266 için
//#include // ESP32 için
#include
#include // LCD kullanıyorsanız
// WiFi Bilgileri
const char* WIFI_SSID = "WiFi_ADINIZ";
const char* WIFI_PASSWORD = "WiFi_ŞİFRENİZ";
// OpenWeatherMap API Bilgileri
const char* API_KEY = "SİZİN_API_ANAHTARINIZ"; // OpenWeatherMap API anahtarınızı buraya girin
const char* CITY_NAME = "Istanbul"; // Şehir adınızı buraya girin
const char* WEATHER_URL = "http://api.openweathermap.org/data/2.5/weather?q=" CITY_NAME "&appid=" API_KEY "&units=metric";
// LCD Bilgileri (LCD kullanıyorsanız)
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD adresinizi ve boyutunu kontrol edin
void setup() {
Serial.begin(115200);
// WiFi'ye bağlan
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("WiFi'ye bağlanılıyor...");
}
Serial.println("WiFi'ye bağlandı!");
// LCD başlatma (LCD kullanıyorsanız)
lcd.init();
lcd.backlight();
lcd.clear();
lcd.print("Hava Durumu...");
}
void loop() {
// Hava durumu verilerini al
HTTPClient http;
http.begin(WEATHER_URL);
int httpCode = http.GET();
if (httpCode > 0) {
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
Serial.println(payload);
// JSON verilerini ayrıştır
DynamicJsonDocument doc(2048);
deserializeJson(doc, payload);
float temperature = doc["main"]["temp"];
String description = doc["weather"][0]["description"];
Serial.print("Sıcaklık: ");
Serial.print(temperature);
Serial.println(" °C");
Serial.print("Açıklama: ");
Serial.println(description);
// LCD'ye yazdırma (LCD kullanıyorsanız)
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Sicaklik: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print(description);
} else {
Serial.printf("HTTP Hata: %d\n", httpCode);
}
} else {
Serial.printf("Bağlantı Hatası: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
delay(60000); // 60 saniyede bir güncelle
}
Kodu Yükleme
Kodu Arduino IDE'nize kopyalayın, gerekli düzenlemeleri (WiFi bilgileri, API anahtarı, şehir adı) yapın ve ESP8266/ESP32 kartınıza yükleyin. Seri monitörden sonuçları takip edebilirsiniz. Eğer LCD ekran kullanıyorsanız, hava durumu bilgileri ekranda görünecektir.
Ek Notlar ve İpuçları
- API anahtarınızı ve WiFi bilgilerinizi kodun içine doğrudan yazmak yerine, EEPROM'a veya SPIFFS'e kaydetmek daha güvenli bir yöntemdir.
- Hava durumu verilerini daha sık güncellemek isterseniz, `delay()` fonksiyonundaki değeri değiştirebilirsiniz. Ancak, OpenWeatherMap'in kullanım koşullarını ihlal etmemeye dikkat edin.
- Projenizi daha da geliştirmek için, farklı hava durumu parametrelerini (nem, rüzgar hızı, vb.) de gösterebilirsiniz.
- Eğer LCD ekranınızda karakterler düzgün görünmüyorsa, LCD adresinizi kontrol edin. Genellikle 0x27 veya 0x3F olur.
Umarım bu rehber, Arduino ile gerçek zamanlı hava durumu gösterimi projenizi başarıyla tamamlamanıza yardımcı olur. Herhangi bir sorunuz olursa, yorumlarda belirtmekten çekinmeyin. İyi kodlamalar!
Etiketler: Arduino, ESP8266, ESP32, Hava Durumu, OpenWeatherMap, API, ArduinoJson, IoT, LCD, Proje
```
0 yorum: