☁️ 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)

☁️ 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:

📲 Arduino’dan Telefona Bildirim Göndermek: WiFi + IFTTT + Push Notifications (ESP8266 veya ESP32)

📲 Arduino’dan Telefona Bildirim Göndermek: WiFi + IFTTT + Push Notifications (ESP8266 veya ESP32)

📲 Arduino’dan Telefona Bildirim Göndermek: WiFi + IFTTT + Push Notifications (ESP8266 veya ESP32)

Merhaba sevgili Arduino meraklıları! Bu yazımızda, Arduino projelerinizi bir üst seviyeye taşıyacak, hem de oldukça eğlenceli bir konuya değineceğiz: Arduino’dan telefonunuza bildirim gönderme! Evet, yanlış duymadınız! Artık sensörlerinizden gelen verileri, uyarıları veya aklınıza gelebilecek her türlü bilgiyi anında telefonunuzda görebilirsiniz. Hem de WiFi, IFTTT (If This Then That) ve push bildirimleri sayesinde. Hadi başlayalım!

Neden Telefona Bildirim Göndermeliyiz?

Arduino projelerimiz genellikle bir ortamı izler veya bir işlemi kontrol eder. Örneğin, bir sıcaklık sensöründen gelen veriyi okuyup, sıcaklık belirli bir eşiği aştığında uyarı almak isteyebiliriz. Ya da bir sulama sistemini kontrol ediyorsak, toprağın nem seviyesi düştüğünde bildirim almak isteyebiliriz. İşte bu gibi durumlarda telefona bildirim göndermek, projemizi çok daha kullanışlı ve interaktif hale getirir.

Gerekli Malzemeler

  • Bir adet ESP8266 veya ESP32 geliştirme kartı (NodeMCU, Wemos D1 Mini vb.)
  • Arduino IDE
  • WiFi ağı
  • IFTTT hesabı (ücretsiz)

Bağlantılar

Bu projede karmaşık bağlantılara ihtiyacımız yok. ESP8266 veya ESP32 kartımızın gücünü ve WiFi yeteneklerini kullanacağız. Eğer ekstra bir sensör kullanıyorsanız, onu da kartınıza bağlamanız gerekecektir. İşte temel bağlantı şeması (eğer sensör kullanıyorsanız sensörün bağlantısı da dahil edilecektir):

  • **ESP8266/ESP32 VCC -> Arduino VCC (3.3V veya 5V, kartınıza göre değişir)**
  • **ESP8266/ESP32 GND -> Arduino GND**
  • **Eğer Sensör Kullanıyorsanız:**
    • Sensör VCC -> Arduino VCC
    • Sensör GND -> Arduino GND
    • Sensör Data Pin -> Arduino Dijital veya Analog Pin (kullandığınız sensöre göre değişir. Örn: A0)

Adım Adım Uygulama

1. Arduino IDE Kurulumu ve ESP8266/ESP32 Desteği Ekleme

Eğer Arduino IDE'niz kurulu değilse, buradan indirebilirsiniz. ESP8266 veya ESP32 kartınızı Arduino IDE'ye tanıtmak için aşağıdaki adımları izleyin:

ESP8266 için:

  1. Arduino IDE'yi açın.
  2. Dosya -> Tercihler menüsüne gidin.
  3. Ek kart yöneticisi URL'leri kısmına aşağıdaki adresi ekleyin: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  4. Araçlar -> Kart -> Kart Yöneticisi'ne gidin.
  5. "esp8266" araması yapın ve "esp8266 by ESP8266 Community" paketini kurun.

ESP32 için:

  1. Arduino IDE'yi açın.
  2. Dosya -> Tercihler menüsüne gidin.
  3. Ek kart yöneticisi URL'leri kısmına aşağıdaki adresi ekleyin: https://dl.espressif.com/dl/package_esp32_index.json
  4. Araçlar -> Kart -> Kart Yöneticisi'ne gidin.
  5. "esp32" araması yapın ve "esp32 by Espressif Systems" paketini kurun.

2. IFTTT Applet Oluşturma

IFTTT, "Eğer Bu Olursa, Onu Yap" mantığıyla çalışan bir otomasyon platformudur. Biz de bu platformu kullanarak Arduino'muzdan gelen veriyi telefona bildirim olarak göndereceğiz.

  1. IFTTT adresine gidin ve bir hesap oluşturun (eğer yoksa).
  2. "Create" butonuna tıklayın.
  3. "If This" kısmına tıklayın ve "Webhooks" servisini arayın.
  4. "Receive a web request" seçeneğini seçin.
  5. Bir Event Name girin (örneğin: "arduino_uyari"). Bu ismi Arduino kodumuzda da kullanacağız.
  6. "Then That" kısmına tıklayın ve "Notifications" servisini arayın.
  7. "Send a notification from the IFTTT app" seçeneğini seçin.
  8. Bildirim metnini istediğiniz gibi düzenleyin. Örneğin: "Arduino'dan Uyarı: Sıcaklık 30 dereceyi aştı!". İçine "Value1", "Value2", "Value3" gibi değişkenler ekleyerek Arduino'dan gelen farklı verileri de bildirimde gösterebilirsiniz.
  9. Applet'inizi kaydedin.
  10. Webhooks servisinin dokümantasyon sayfasına gidin (Webhooks servisinin ayarlarından bulabilirsiniz). Burada size özel bir API Key verilecektir. Bu keyi not alın, Arduino kodumuzda kullanacağız.

3. Arduino Kodunu Yazma

Şimdi de Arduino kodumuzu yazalım. Aşağıdaki kodu Arduino IDE'nize kopyalayın ve kendi WiFi ağınızın bilgilerini ve IFTTT API Key'inizi girin:


 #include <ESP8266WiFi.h>
 #include <WiFiClientSecure.h>

 const char* ssid     = "YOUR_WIFI_SSID"; // WiFi ağınızın adı
 const char* password = "YOUR_WIFI_PASSWORD"; // WiFi ağınızın şifresi
 const char* iftttApiKey = "YOUR_IFTTT_API_KEY"; // IFTTT Webhooks API Key'iniz
 const char* iftttEventName = "arduino_uyari"; // IFTTT Event Name'iniz

 // Örnek bir sıcaklık sensörü pini
 const int sicaklikPin = A0;

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

  // WiFi'ye bağlan
  Serial.println("WiFi'ye bağlanılıyor...");
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }

  Serial.println("");
  Serial.println("WiFi bağlandı");
  Serial.print("IP adresi: ");
  Serial.println(WiFi.localIP());
 }

 void loop() {
  // Sıcaklık sensöründen değer okuma (örnek)
  int sensorDegeri = analogRead(sicaklikPin);
  float voltaj = sensorDegeri * (5.0 / 1023.0); // 5V referans voltajı varsayımı
  float sicaklik = (voltaj - 0.5) * 100; // LM35 sensör için örnek hesaplama

  Serial.print("Sıcaklık: ");
  Serial.print(sicaklik);
  Serial.println(" °C");

  // Eğer sıcaklık 30 dereceyi aşarsa bildirim gönder
  if (sicaklik > 30) {
  gonderIFTTTBildirimi(String(sicaklik));
  }

  delay(5000); // 5 saniyede bir kontrol et
 }

 void gonderIFTTTBildirimi(String value1) {
  WiFiClientSecure client;
  const int httpsPort = 443;

  Serial.print("IFTTT'ye bağlanılıyor...");

  if (!client.connect("maker.ifttt.com", httpsPort)) {
  Serial.println("Bağlantı hatası");
  return;
  }

  String url = "/trigger/" + String(iftttEventName) + "/with/key/" + String(iftttApiKey);
  Serial.print("İstek gönderiliyor: ");
  Serial.println(url);

  String jsonVerisi = "{\"value1\":\"" + value1 + "\"}";

  String istek = String("POST ") + url + " HTTP/1.1\r\n" +
  "Host: maker.ifttt.com\r\n" +
  "Content-Type: application/json\r\n" +
  "Content-Length: " + String(jsonVerisi.length()) + "\r\n" +
  "Connection: close\r\n\r\n" +
  jsonVerisi + "\r\n";

  client.print(istek);

  Serial.println("İstek gönderildi");

  while (client.connected()) {
  String line = client.readStringUntil('\n');
  if (line == "\r") {
  Serial.println("Başlıklar tamamlandı");
  break;
  }
  }

  String body = client.readStringUntil('\n');
  Serial.println("Yanıt:");
  Serial.println(body);
  Serial.println("Bağlantı kapatılıyor");
 }
 

4. Kodu Yükleme ve Test Etme

Arduino IDE'de doğru kartı (ESP8266 veya ESP32) ve portu seçtiğinizden emin olun. Ardından kodu kartınıza yükleyin. Seri monitörü açarak neler olup bittiğini takip edebilirsiniz. Sıcaklık 30 dereceyi aştığında telefonunuza bir bildirim gelmesi gerekiyor!

Sonuç

Tebrikler! Artık Arduino'dan telefonunuza bildirim gönderebiliyorsunuz. Bu, projelerinize yepyeni bir boyut katacak ve onları çok daha kullanışlı hale getirecek. Farklı sensörler ve IFTTT servisleriyle deneyler yaparak, kendi ihtiyaçlarınıza uygun çözümler geliştirebilirsiniz. Unutmayın, hayal gücünüz sınır tanımıyor!

Umarım bu yazı size faydalı olmuştur. Bir sonraki yazımızda görüşmek üzere!

Etiketler: Arduino, ESP8266, ESP32, IFTTT, Bildirim, Push Notification, WiFi, IoT, Proje, Elektronik

```

0 yorum:

📡 Arduino'dan Web API'ye Veri Göndermek: Thingspeak, IFTTT, Webhook (ESP8266 veya ESP32 ile)

📡 Arduino'dan Web API'ye Veri Göndermek: Thingspeak, IFTTT, Webhook (ESP8266 veya ESP32 ile)

📡 Arduino'dan Web API'ye Veri Göndermek: Thingspeak, IFTTT, Webhook Rehberi (ESP8266/ESP32 ile)

Merhaba sevgili Arduino meraklıları!

Bu yazımızda, Arduino projelerinizden elde ettiğiniz verileri internete aktarmanın ve web API'leri aracılığıyla farklı platformlarla entegre etmenin heyecan verici yollarını keşfedeceğiz. Özellikle, ESP8266 veya ESP32 gibi Wi-Fi özellikli kartları kullanarak, popüler platformlar olan ThingSpeak, IFTTT ve Webhook'lara veri göndermeyi adım adım inceleyeceğiz.

Hazırsanız, veri göndermenin büyülü dünyasına dalalım!

Neden Web API'lerine Veri Göndermeliyiz?

Arduino projeleriniz sadece yerel cihazlarla sınırlı kalmak zorunda değil. Sensörlerden aldığınız sıcaklık, nem, ışık gibi verileri internete göndererek şunları yapabilirsiniz:

  • Verilerinizi gerçek zamanlı olarak takip edebilirsiniz.
  • Verilerinizi analiz edebilir ve anlamlı sonuçlar çıkarabilirsiniz.
  • Başka uygulamalarla entegre edebilir, örneğin bir hava durumu uygulamasında kendi ölçümlerinizi kullanabilirsiniz.
  • Akıllı ev otomasyon sistemleri oluşturabilirsiniz.
  • Uzakta bulunan cihazları kontrol edebilirsiniz.

Gerekli Malzemeler

Bu proje için aşağıdaki malzemelere ihtiyacınız olacak:

  • Arduino (Uno, Nano vb.)
  • ESP8266 veya ESP32 Wi-Fi Modülü
  • Sensörler (Örneğin, sıcaklık ve nem sensörü DHT11/DHT22)
  • Jumper Kablolar
  • Breadboard (isteğe bağlı)
  • Arduino IDE

Donanım Bağlantıları

ESP8266 veya ESP32 modülünü Arduino'ya bağlarken aşağıdaki bağlantıları dikkate alın:

  • ESP8266/ESP32 VCC -> Arduino 3.3V (Önemli: ESP8266/ESP32 3.3V ile çalışır, 5V kullanmayın!)
  • ESP8266/ESP32 GND -> Arduino GND
  • ESP8266/ESP32 TX -> Arduino RX (veya kullanacağınız başka bir dijital pin)
  • ESP8266/ESP32 RX -> Arduino TX (veya kullanacağınız başka bir dijital pin)

Sensör bağlantıları, kullandığınız sensöre göre değişiklik gösterebilir. Örneğin, DHT11 sensörü için tipik bağlantılar şöyledir:

  • DHT11 VCC -> Arduino 5V
  • DHT11 GND -> Arduino GND
  • DHT11 DATA -> Arduino Dijital Pin (örneğin, Pin 2)

Yazılım (Arduino Kodu)

Şimdi kod kısmına geçelim. Aşağıdaki örnek kodlar, ESP8266/ESP32 ile ThingSpeak, IFTTT ve Webhook'lara nasıl veri göndereceğinizi göstermektedir.

ThingSpeak'e Veri Gönderme

ThingSpeak, IoT uygulamaları için popüler bir veri platformudur. Ücretsiz bir hesap oluşturabilir ve kendi "kanalınızı" oluşturabilirsiniz.


 #include <ESP8266WiFi.h>
 #include <HTTPClient.h>

 // WiFi Bilgileri
 const char* ssid = "WiFi_Aginizin_Adi";
 const char* password = "WiFi_Parolaniz";

 // ThingSpeak Bilgileri
 const char* thingSpeakApiKey = "ThingSpeak_API_Anahtariniz";
 const char* thingSpeakChannelId = "ThingSpeak_Kanal_ID'niz";

 // Veri
 float sicaklik = 25.5;
 float nem = 60.2;

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

  WiFi.begin(ssid, password);

  Serial.println("WiFi'ye bağlanılıyor...");
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Bağlandı");
 }

 void loop() {
  // Veriyi ThingSpeak'e gönderme
  String url = "http://api.thingspeak.com/update?api_key=";
  url += thingSpeakApiKey;
  url += "&field1=";
  url += String(sicaklik);
  url += "&field2=";
  url += String(nem);

  HTTPClient http;
  http.begin(url);
  int httpCode = http.GET();

  if (httpCode > 0) {
  Serial.printf("[HTTP] GET... code: %d\n", httpCode);
  if (httpCode == HTTP_CODE_OK) {
  String payload = http.getString();
  Serial.println(payload);
  }
  } else {
  Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
  }

  http.end();

  delay(20000); // 20 saniyede bir veri gönder
 }
 

Önemli: Bu kodu kullanmadan önce, WiFi_Aginizin_Adi, WiFi_Parolaniz, ThingSpeak_API_Anahtariniz ve ThingSpeak_Kanal_ID'niz değişkenlerini kendi bilgilerinizle değiştirmeyi unutmayın.

IFTTT'ye Veri Gönderme

IFTTT (If This Then That), farklı web servislerini birbirine bağlamanızı sağlayan bir platformdur. Bir IFTTT "applet"i oluşturarak, belirli bir olay (örneğin, belirli bir sıcaklığın aşılması) gerçekleştiğinde bir eylem (örneğin, e-posta gönderme) tetikleyebilirsiniz.


 #include <ESP8266WiFi.h>
 #include <HTTPClient.h>

 // WiFi Bilgileri
 const char* ssid = "WiFi_Aginizin_Adi";
 const char* password = "WiFi_Parolaniz";

 // IFTTT Bilgileri
 const char* iftttWebhookName = "IFTTT_Webhook_Adiniz";
 const char* iftttApiKey = "IFTTT_API_Anahtariniz";

 // Veri
 float sicaklik = 25.5;
 float nem = 60.2;

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

  WiFi.begin(ssid, password);

  Serial.println("WiFi'ye bağlanılıyor...");
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Bağlandı");
 }

 void loop() {
  // Veriyi IFTTT'ye gönderme
  String url = "https://maker.ifttt.com/trigger/";
  url += iftttWebhookName;
  url += "/with/key/";
  url += iftttApiKey;
  url += "?value1=";
  url += String(sicaklik);
  url += "&value2=";
  url += String(nem);

  HTTPClient http;
  http.begin(url);
  int httpCode = http.POST("");

  if (httpCode > 0) {
  Serial.printf("[HTTP] POST... code: %d\n", httpCode);
  if (httpCode == HTTP_CODE_OK) {
  String payload = http.getString();
  Serial.println(payload);
  }
  } else {
  Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
  }

  http.end();

  delay(20000); // 20 saniyede bir veri gönder
 }
 

Önemli: Bu kodu kullanmadan önce, WiFi_Aginizin_Adi, WiFi_Parolaniz, IFTTT_Webhook_Adiniz ve IFTTT_API_Anahtariniz değişkenlerini kendi bilgilerinizle değiştirmeyi unutmayın.

Webhook'a Veri Gönderme

Webhook, kendi sunucunuzda çalışan bir API'ye veri göndermenizi sağlar. Bu, verileriniz üzerinde daha fazla kontrol sahibi olmanızı sağlar.


 #include <ESP8266WiFi.h>
 #include <HTTPClient.h>
 #include <ArduinoJson.h> // JSON kütüphanesini ekleyin

 // WiFi Bilgileri
 const char* ssid = "WiFi_Aginizin_Adi";
 const char* password = "WiFi_Parolaniz";

 // Webhook Bilgileri
 const char* webhookUrl = "http://kendi_sunucunuz.com/api/veri_al";

 // Veri
 float sicaklik = 25.5;
 float nem = 60.2;

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

  WiFi.begin(ssid, password);

  Serial.println("WiFi'ye bağlanılıyor...");
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi Bağlandı");
 }

 void loop() {
  // JSON verisi oluşturma
  StaticJsonDocument<200> doc;
  doc["sicaklik"] = sicaklik;
  doc["nem"] = nem;

  String jsonData;
  serializeJson(doc, jsonData);

  // Veriyi Webhook'a gönderme (POST)
  HTTPClient http;
  http.begin(webhookUrl);
  http.addHeader("Content-Type", "application/json"); // JSON formatında veri gönderdiğimizi belirtiyoruz

  int httpCode = http.POST(jsonData); // JSON verisini POST ile gönder

  if (httpCode > 0) {
  Serial.printf("[HTTP] POST... code: %d\n", httpCode);
  if (httpCode == HTTP_CODE_OK) {
  String payload = http.getString();
  Serial.println(payload);
  }
  } else {
  Serial.printf("[HTTP] POST... failed, error: %s\n", http.errorToString(httpCode).c_str());
  }

  http.end();

  delay(20000); // 20 saniyede bir veri gönder
 }
 

Önemli: Bu kodu kullanmadan önce, WiFi_Aginizin_Adi, WiFi_Parolaniz ve http://kendi_sunucunuz.com/api/veri_al değişkenlerini kendi bilgilerinizle değiştirmeyi unutmayın. Ayrıca, Arduino IDE'ye ArduinoJson kütüphanesini yüklemeniz gerekmektedir (Sketch > Library'i Dahil Et > Library'leri Yönet...).

Sonuç

Bu yazımızda, Arduino projelerinizden elde ettiğiniz verileri ThingSpeak, IFTTT ve Webhook gibi web API'lerine göndermenin farklı yollarını öğrendiniz. Bu bilgilerle, projelerinizi internete bağlayabilir ve daha da geliştirebilirsiniz.

Umarım bu rehber sizin için faydalı olmuştur. Başka projelerde görüşmek üzere!

Etiketler: Arduino, ESP8266, ESP32, ThingSpeak, IFTTT, Webhook, HTTPClient, API, IoT, Veri Gönderme, Arduino Projeleri

```

0 yorum:

Arduino ile Web Sunucusu Kurmak: LED'i Tarayıcıdan Aç/Kapat (ESP8266/ESP32)

Arduino ile Web Sunucusu Kurmak: LED'i Tarayıcıdan Aç/Kapat (ESP8266/ESP32)

Arduino ile Web Sunucusu Kurmak: LED'i Tarayıcıdan Aç/Kapat (ESP8266/ESP32)

Merhaba Arduino severler! Bu yazımızda, ESP8266 veya ESP32 geliştirme kartlarınızı kullanarak basit bir web sunucusu oluşturacak ve bu sunucu aracılığıyla bir LED'i tarayıcınızdan açıp kapatabileceksiniz. Bu proje, nesnelerin interneti (IoT) dünyasına harika bir giriş niteliğinde ve Arduino yeteneklerinizi geliştirmek için mükemmel bir başlangıç noktası.

Gereken Malzemeler

  • ESP8266 veya ESP32 geliştirme kartı (NodeMCU, Wemos D1 Mini, vb.)
  • Bir adet LED (tercihen 5mm)
  • 220 Ohm direnç (LED'i korumak için)
  • Breadboard (isteğe bağlı, bağlantıları kolaylaştırmak için)
  • Jumper kablolar

Devre Şeması ve Bağlantılar

Devre oldukça basit. LED'in anot ucunu (uzun bacak) 220 Ohm'luk direnç üzerinden ESP8266/ESP32'nin dijital bir pinine (örneğin, D4 veya GPIO2) bağlayın. LED'in katot ucunu (kısa bacak) ise GND (toprak) pinine bağlayın. İşte bağlantıların özeti:

  • LED Anot (+) -> 220 Ohm Direnç -> ESP8266/ESP32 D4 (GPIO2) pini
  • LED Katot (-) -> ESP8266/ESP32 GND pini

ESP8266 veya ESP32'nizi bilgisayarınıza bağlamayı unutmayın. Genellikle bir USB kablosu yeterli olacaktır.

Arduino Kodu

Şimdi kod kısmına geçelim. Aşağıdaki kodu Arduino IDE'nize kopyalayın. Kodu yüklemeden önce ssid ve password değişkenlerini kendi Wi-Fi ağ bilgilerinizle değiştirmeniz gerektiğini unutmayın!


#include  // ESP32 için
//#include   // ESP8266 için, ESP8266 kullanıyorsanız WiFi.h yerine bu satırı kullanın

const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

WiFiServer server(80); // Web sunucusu 80. porttan yayın yapacak
const int ledPin = 2;  // D4 (GPIO2) pini LED için kullanılıyor

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW); // LED başlangıçta kapalı

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Wi-Fi'ye bağlanıyor...");
  }

  Serial.println("Wi-Fi'ye bağlandı!");
  Serial.print("IP Adresi: ");
  Serial.println(WiFi.localIP());

  server.begin();
}

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

  if (client) {
    Serial.println("Yeni istemci bağlandı");
    String request = client.readStringUntil('\r');
    Serial.println(request);
    client.flush();

    int value = LOW;
    if (request.indexOf("/LEDON") != -1) {
      digitalWrite(ledPin, HIGH);
      value = HIGH;
    } else if (request.indexOf("/LEDOFF") != -1) {
      digitalWrite(ledPin, LOW);
      value = LOW;
    }

    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/html");
    client.println("Connection: close");
    client.println();
    client.println("");
    client.println("");
    client.println("LED Kontrol");
    client.println("");
    client.println("

LED Kontrol Paneli

"); if(value == HIGH){ client.println("

LED AÇIK

"); }else{ client.println("

LED KAPALI

"); } client.println("

"); client.println(""); client.println(""); client.println(""); delay(1); Serial.println("İstemci bağlantısı kesildi"); Serial.println(""); client.stop(); } }

Kodu Yükleme ve Test Etme

  1. Arduino IDE'de "Araçlar" menüsünden doğru kartı (ESP8266 Dev Module veya ESP32 Dev Module) ve portu seçtiğinizden emin olun.
  2. Kodu Arduino'nuza yükleyin.
  3. Seri monitörü açın (115200 baud hızında). Wi-Fi'ye bağlandıktan sonra IP adresini göreceksiniz.
  4. Tarayıcınızda bu IP adresini (örneğin, 192.168.1.100) yazın ve enter tuşuna basın.
  5. Tarayıcınızda LED'i açıp kapatabileceğiniz basit bir web sayfası göreceksiniz.

Çözüm

Tebrikler! Başarıyla bir web sunucusu kurdunuz ve bir LED'i internet üzerinden kontrol ettiniz. Bu proje, ev otomasyonu, uzaktan kontrol sistemleri ve daha pek çok farklı uygulama için bir temel oluşturabilir. İlerleyen zamanlarda bu projeyi daha da geliştirerek sensör verilerini okuyabilir, farklı cihazları kontrol edebilir ve hatta kendi IoT platformunuzu oluşturabilirsiniz.

Unutmayın, bu sadece bir başlangıç. Yaratıcılığınızı kullanarak Arduino ve ESP8266/ESP32'nin sunduğu sonsuz olanakları keşfedebilirsiniz!

İyi kodlamalar!

Etiketler: Arduino, ESP8266, ESP32, Web Sunucusu, LED Kontrolü, WIFIServer, digitalWrite, IoT, internet of things, Arduino proje

```

0 yorum:

🌐 Arduino ile Wi-Fi’ye Bağlanmak: ESP8266/ESP32 Giriş Rehberi (WiFi.begin())

🌐 Arduino ile Wi-Fi’ye Bağlanmak: ESP8266/ESP32 Giriş Rehberi (WiFi.begin())

🌐 Arduino ile Wi-Fi’ye Bağlanmak: ESP8266/ESP32 Giriş Rehberi (WiFi.begin())

Merhaba sevgili Arduino severler!

Bu yazımızda, Arduino projelerinizi internete bağlamak için en popüler yöntemlerden biri olan Wi-Fi bağlantısını ele alacağız. Özellikle ESP8266 ve ESP32 modüllerini kullanarak, Arduino'nuzu kolayca Wi-Fi ağına bağlayabilir ve projelerinizi yepyeni bir boyuta taşıyabilirsiniz. Bu rehberde, WiFi.begin() fonksiyonunu kullanarak temel Wi-Fi bağlantısının nasıl kurulduğunu adım adım inceleyeceğiz.

Neden Wi-Fi?

Arduino'nun Wi-Fi ile bağlantısı, projelerinize inanılmaz olanaklar sunar. Uzaktan kontrol, veri toplama, bulut tabanlı uygulamalar ve daha fazlası Wi-Fi ile mümkün hale gelir. Ev otomasyonundan, hava durumu istasyonlarına, akıllı tarım uygulamalarından, endüstriyel sensör ağlarına kadar geniş bir yelpazede Wi-Fi'ı kullanabilirsiniz.

ESP8266 ve ESP32: Wi-Fi Modülleri

ESP8266 ve ESP32, düşük maliyetli ve güçlü Wi-Fi modülleridir. Arduino ile kolayca entegre edilebilirler ve kendi başlarına da programlanabilirler. ESP32, ESP8266'ya göre daha fazla işlem gücü, daha fazla bellek ve Bluetooth gibi ek özellikler sunar. Her iki modül de Arduino IDE üzerinden programlanabilir, bu da kullanımı oldukça kolaylaştırır.

Gerekli Malzemeler

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • ESP8266 veya ESP32 Wi-Fi Modülü
  • Jumper kablolar
  • (Opsiyonel) Breadboard

ESP8266 Bağlantısı (Arduino Uno ile)

ESP8266'yı Arduino Uno ile bağlamak için aşağıdaki bağlantıları yapmanız gerekir. Bu bağlantılar, ESP8266'nın Arduino ile iletişim kurmasını sağlar.

  • ESP8266 VCC -> Arduino 3.3V
  • ESP8266 GND -> Arduino GND
  • ESP8266 RX -> Arduino Dijital Pin 10 (veya istediğiniz bir pin)
  • ESP8266 TX -> Arduino Dijital Pin 11 (veya istediğiniz bir pin)
  • ESP8266 CH_PD -> Arduino 3.3V (Bu pin, ESP8266'nın etkinleştirilmesini sağlar)
  • ESP8266 RST -> Arduino RESET (Opsiyonel: Bu pin, ESP8266'yı resetlemek için kullanılabilir)

Önemli Not: ESP8266, 3.3V ile çalışır. Arduino Uno'nun 5V çıkışını doğrudan ESP8266'ya bağlamak, modülün zarar görmesine neden olabilir. Bu nedenle, bir voltaj bölücü veya 3.3V regülatör kullanmanız önerilir. Ancak, çoğu durumda Arduino'nun 3.3V pininden güç almak yeterli olacaktır. Ayrıca, RX ve TX pinlerini bağlarken çapraz bağlantı yapmanız gerekir (Arduino RX -> ESP8266 TX ve Arduino TX -> ESP8266 RX). Ancak yazılımda SoftwareSerial kullanacağımız için istediğiniz pinleri kullanabilirsiniz.

ESP32 Bağlantısı (Arduino Uno ile)

ESP32, ESP8266'ya benzer şekilde Arduino ile bağlanabilir, ancak daha fazla pin seçeneği sunar. Genellikle doğrudan Arduino ile iletişim kurmak yerine, kendi başına programlanması daha yaygındır. Ancak, Arduino ile kullanmak isterseniz aşağıdaki bağlantıları yapabilirsiniz:

  • ESP32 VCC -> Arduino 3.3V veya 5V (ESP32'nin versiyonuna göre değişir, datasheet'i kontrol edin)
  • ESP32 GND -> Arduino GND
  • ESP32 RX2 -> Arduino Dijital Pin 10 (veya istediğiniz bir pin)
  • ESP32 TX2 -> Arduino Dijital Pin 11 (veya istediğiniz bir pin)
  • ESP32 EN -> Arduino 3.3V (Enable pin)

Önemli Not: ESP32'nin güç gereksinimleri, ESP8266'ya göre biraz daha yüksektir. Bazı durumlarda, Arduino'nun 3.3V pininden yeterli güç alamayabilirsiniz. Bu durumda, harici bir güç kaynağı kullanmanız gerekebilir. Benzer şekilde ESP32 pinleri Arduino pinlerine doğrudan bağlanabilir.

Arduino IDE Kurulumu

ESP8266 veya ESP32'yi Arduino IDE ile programlamak için öncelikle gerekli kütüphaneleri ve kart tanımlarını yüklemeniz gerekir.

ESP8266 Kurulumu:

  1. Arduino IDE'yi açın.
  2. Dosya -> Tercihler'e gidin.
  3. "Ek Kart Yöneticisi URL'leri" kısmına aşağıdaki adresi ekleyin: http://arduino.esp8266.com/stable/package_esp8266com_index.json
  4. Araçlar -> Kart -> Kart Yöneticisi'ne gidin.
  5. "esp8266" araması yapın ve "esp8266 by ESP8266 Community" seçeneğini kurun.

ESP32 Kurulumu:

  1. Arduino IDE'yi açın.
  2. Dosya -> Tercihler'e gidin.
  3. "Ek Kart Yöneticisi URL'leri" kısmına aşağıdaki adresi ekleyin: https://dl.espressif.com/dl/package_esp32_index.json
  4. Araçlar -> Kart -> Kart Yöneticisi'ne gidin.
  5. "esp32" araması yapın ve "esp32 by Espressif Systems" seçeneğini kurun.

Temel Kod: WiFi.begin() Kullanımı

Şimdi, temel bir Wi-Fi bağlantısı kurmak için gerekli olan Arduino kodunu inceleyelim. Bu kod, WiFi.begin() fonksiyonunu kullanarak Wi-Fi ağına bağlanır ve bağlantı durumunu seri monitörde görüntüler.


 #include <WiFi.h>
 #include <SoftwareSerial.h>

 // Wi-Fi Bilgileri
 const char* ssid = "WiFİ_ADINIZ";
 const char* password = "WiFİ_ŞİFRENİZ";

 // ESP8266 Bağlantı Pinleri (Değiştirilebilir)
 const int RX_PIN = 10;
 const int TX_PIN = 11;

 // SoftwareSerial nesnesi oluşturma
 SoftwareSerial espSerial(RX_PIN, TX_PIN); // RX, TX

 void setup() {
  Serial.begin(115200);
  espSerial.begin(115200); // ESP8266'nın baud hızı (genellikle 115200)
  delay(1000);

  Serial.println("Wi-Fi'ye bağlanılıyor...");

  // Wi-Fi'ye bağlan
  WiFi.init(&espSerial); // SoftwareSerial'i kullanmak için WiFi kütüphanesine belirtiyoruz

  //Check for the presence of the shield
  if (WiFi.status() == WL_NO_SHIELD) {
   Serial.println("Wi-Fi shield bulunamadı");
   while (true);
  }

  WiFi.begin(ssid, password);

  // Bağlantı durumunu kontrol et
  while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
  }

  Serial.println("");
  Serial.println("Wi-Fi'ye bağlandı!");
  Serial.print("IP adresi: ");
  Serial.println(WiFi.localIP());
 }

 void loop() {
  // Burada diğer kodlarınızı çalıştırabilirsiniz
 }
 

Kod Açıklaması:

  • #include <WiFi.h>: Wi-Fi kütüphanesini projeye dahil eder.
  • #include <SoftwareSerial.h>: Eğer ESP8266'yı Arduino'nun donanımsal seri portları yerine farklı pinler üzerinden bağladıysanız (ki bu örnekte öyle), SoftwareSerial kütüphanesini kullanarak bu pinler üzerinden seri iletişimi sağlamanız gerekir.
  • const char* ssid = "WiFİ_ADINIZ"; ve const char* password = "WiFİ_ŞİFRENİZ";: Wi-Fi ağınızın adını (SSID) ve şifresini bu değişkenlere atayın.
  • WiFi.init(&espSerial);: Wi-Fi kütüphanesini başlatır ve ESP8266 ile iletişimi SoftwareSerial üzerinden yapacağını belirtir.
  • WiFi.begin(ssid, password);: Wi-Fi ağına bağlanma işlemini başlatır. Bu fonksiyon, SSID ve şifre bilgilerini kullanarak ağa bağlanmaya çalışır.
  • WiFi.status() != WL_CONNECTED: Wi-Fi bağlantısı kurulana kadar bekler. Bu döngü, bağlantı kurulana kadar sürekli olarak durumu kontrol eder.
  • WiFi.localIP(): Bağlantı kurulduktan sonra, ESP8266'nın aldığı IP adresini seri monitörde görüntüler.

Seri Monitör Çıktısı

Kodu Arduino'nuza yükledikten sonra, seri monitörü açarak bağlantı sürecini ve IP adresinizi görebilirsiniz. Seri monitörde aşağıdaki gibi bir çıktı görmelisiniz:


 Wi-Fi'ye bağlanılıyor...
 .......
 Wi-Fi'ye bağlandı!
 IP adresi: 192.168.1.105
 

Bu çıktı, Arduino'nuzun Wi-Fi ağına başarıyla bağlandığını ve bir IP adresi aldığını gösterir.

Sorun Giderme İpuçları

  • Bağlantı Sorunları: Eğer Wi-Fi'ye bağlanmakta sorun yaşıyorsanız, SSID ve şifrenin doğru olduğundan emin olun. Ayrıca, Wi-Fi sinyalinin yeterince güçlü olduğundan da emin olun.
  • Güç Sorunları: ESP8266 veya ESP32'nin yeterli güç aldığından emin olun. Gerekirse harici bir güç kaynağı kullanın.
  • Seri İletişim Sorunları: Seri monitörde anlamsız karakterler görüyorsanız, baud hızının doğru ayarlandığından emin olun. Hem Arduino kodunda hem de seri monitörde aynı baud hızını kullanmanız gerekir.
  • Kütüphane Sorunları: Kütüphanelerin doğru yüklendiğinden ve güncel olduğundan emin olun.

Sonuç

Bu rehberde, Arduino'nuzu ESP8266 veya ESP32 modüllerini kullanarak Wi-Fi ağına nasıl bağlayacağınızı adım adım öğrendiniz. Artık projelerinizi internete bağlayabilir ve yeni olasılıkların kapılarını aralayabilirsiniz. Deneyerek ve keşfederek, Arduino ve Wi-Fi'nin gücünü birleştirerek harika projeler geliştirebilirsiniz!

Hepinize keyifli kodlamalar!

Etiketler: Arduino, Wi-Fi, ESP8266, ESP32, WiFi.begin, internet, IoT, bağlantı, proje, kodlama

```

0 yorum:

Arduino ile Kablosuz Haberleşme: Bluetooth Modülü Kullanımı

Arduino ile Kablosuz Haberleşme: Bluetooth Modülü Kullanımı

Arduino ile Kablosuz Haberleşme: Bluetooth Modülü Kullanımı

Merhaba sevgili Arduino severler!

Bu yazımızda, Arduino projelerinizde kablosuz haberleşmenin kapılarını aralayacak olan Bluetooth modülünü yakından tanıyacağız. Bluetooth, Arduino'nuzu telefonunuz, bilgisayarınız veya diğer Arduino'lar ile kablosuz olarak konuşturmanın en pratik yollarından biridir. İster uzaktan kontrollü bir robot yapın, ister verilerinizi kablosuz olarak aktarın, Bluetooth modülü size sonsuz olanaklar sunar.

Neden Bluetooth?

Bluetooth modülleri, özellikle HC-05 ve HC-06 gibi modeller, kolay kurulumu, uygun fiyatı ve geniş kullanım alanları sayesinde Arduino projelerinde sıklıkla tercih edilir. Bu modüller sayesinde kablolardan kurtulabilir, projelerinizi daha taşınabilir ve kullanışlı hale getirebilirsiniz.

Gerekli Malzemeler

  • Arduino (Uno, Nano, Mega vb.)
  • Bluetooth Modülü (HC-05 veya HC-06)
  • Jumper Kablolar
  • 5V Güç Kaynağı (Arduino USB üzerinden veya harici)

Bluetooth Modülü Bağlantısı

Bluetooth modülünü Arduino'ya bağlamak oldukça basittir. İşte adım adım bağlantı şeması:

  • VCC pin -> Arduino 5V pinine bağlanır.
  • GND pin -> Arduino GND pinine bağlanır.
  • TXD pin (Bluetooth'un gönderme pini) -> Arduino'nun RXD (Alıcı) pinine (Örneğin, D10 pini) direnç üzerinden bağlanır. (1k direnç kullanılması önerilir.)
  • RXD pin (Bluetooth'un alma pini) -> Arduino'nun TXD (Gönderici) pinine (Örneğin, D11 pini) bağlanır. (1k direnç kullanılması önerilir. Gerilim bölücü devresi kullanılabilir.)
  • STATE/EN pin (Bluetooth'un durum pini - isteğe bağlı) -> Arduino'nun herhangi bir dijital pinine (Örneğin, D2 pini) bağlanabilir. Bağlantı durumu (connected/disconnected) izlemek için kullanılır.

Önemli Not: Bluetooth modülünün RXD ve TXD pinlerini Arduino'nun RXD (D0) ve TXD (D1) pinlerine doğrudan bağlamayın. Aksi takdirde, Arduino'yu programlarken sorun yaşayabilirsiniz. Yazılım Serial (SoftwareSerial) kütüphanesini kullanarak farklı dijital pinleri seri haberleşme için kullanmanız önerilir. Modüllerin gerilim seviyeleri farklı olduğundan dirençler kullanılması yada gerilim bölücü devre kurulması önerilir. Arduino 5V sinyal gönderir, bluetooth modülleri ise genellikle 3.3V ile çalışır.

Arduino Kodu (Örnek)

Aşağıdaki örnek kod, Arduino ile Bluetooth modülü üzerinden basit bir veri alışverişi yapmanızı sağlar. Bu kod, Bluetooth üzerinden gönderilen veriyi seri monitöre yazdırır ve seri monitörden girilen veriyi Bluetooth'a gönderir.


 #include <SoftwareSerial.h>

 // RX, TX pinlerini tanımlayın
 #define RXD 10
 #define TXD 11

 // Bluetooth modülünü SoftwareSerial olarak tanımlayın
 SoftwareSerial bluetooth(RXD, TXD); // RX, TX

 void setup() {
  // Seri iletişimi başlatın
  Serial.begin(9600);
  Serial.println("Bluetooth İletişimi Başladı!");

  // Bluetooth modülünü başlatın
  bluetooth.begin(9600);
  bluetooth.println("Bluetooth Hazır!");
 }

 void loop() {
  // Bluetooth'dan veri gelirse, seri monitöre yazdır
  if (bluetooth.available()) {
   char data = bluetooth.read();
   Serial.print(data);
  }

  // Seri monitörden veri gelirse, Bluetooth'a gönder
  if (Serial.available()) {
   char data = Serial.read();
   bluetooth.print(data);
  }
 }
 

Bu kodu Arduino IDE'nize kopyalayın ve Arduino'nuza yükleyin. Ardından, seri monitörü açın ve Bluetooth bağlantınızı kurun. Artık Arduino'nuz ile kablosuz olarak haberleşebilirsiniz.

Bluetooth Bağlantısı Nasıl Kurulur?

Telefonunuz veya bilgisayarınız üzerinden Bluetooth modülüne bağlanmak için aşağıdaki adımları izleyin:

  1. Telefonunuzun veya bilgisayarınızın Bluetooth özelliğini açın.
  2. Bluetooth cihazları arasında arama yapın.
  3. HC-05 veya HC-06 (veya modülünüzün adı) adlı cihazı bulun ve eşleştirin. Genellikle şifre 1234 veya 0000'dır.
  4. Eşleştirme işlemi tamamlandıktan sonra, bir seri port terminali uygulaması (örneğin, Arduino IDE'nin seri monitörü, CoolTerm, Putty) kullanarak Bluetooth modülüne bağlanın.
  5. Seri port terminalini Bluetooth cihazınızın COM portuna ayarlayın (baud rate'i 9600 olarak ayarlamayı unutmayın).
  6. Artık Arduino'nuz ile kablosuz olarak veri alışverişi yapabilirsiniz.

İpuçları ve Püf Noktaları

  • Bluetooth modülünün menzilini artırmak için, antenli bir model kullanmayı düşünebilirsiniz.
  • Bluetooth modülünün güç tüketimi, projenizin pil ömrünü etkileyebilir. Bu nedenle, enerji tasarrufu sağlamak için uygun güç yönetimi teknikleri kullanın.
  • Bluetooth modülünün AT komutlarını kullanarak çeşitli ayarlarını yapılandırabilirsiniz (baud rate, cihaz adı, şifre vb.).

Sonuç

Umarım bu rehber, Arduino projelerinizde Bluetooth modülünü kullanmaya başlamanıza yardımcı olmuştur. Kablosuz haberleşmenin sunduğu özgürlük ile projelerinizi daha da geliştirmenizi dilerim. Bol Arduino'lu günler!

Etiketler: Arduino, Bluetooth, Kablosuz Haberleşme, HC-05, HC-06, IoT, Proje, Elektronik, Arduino Projeleri, Arduino Bluetooth

```

0 yorum:

🕹️ Daha İleri Bir Proje: Arduino ile Çoklu ve Akıllı Trafik Işıkları Sistemi (Kavşak Işık Modeli)

🕹️ Daha İleri Bir Proje: Arduino ile Çoklu ve Akıllı Trafik Işıkları Sistemi (Kavşak Işık Modeli)

🕹️ Daha İleri Bir Proje: Arduino ile Çoklu ve Akıllı Trafik Işıkları Sistemi (Kavşak Işık Modeli)

Merhaba Arduino severler! Bu yazımızda, Arduino projelerinizi bir üst seviyeye taşıyacak, hem eğlenceli hem de bilgilendirici bir projeye adım atıyoruz: Çoklu ve akıllı trafik ışıkları sistemi. Bu proje, bir kavşaktaki trafik akışını simüle etmenizi ve trafik ışıklarının davranışlarını Arduino ile kontrol etmenizi sağlayacak.

Bu proje ile sadece elektronik bilginizi değil, aynı zamanda programlama becerilerinizi de geliştireceksiniz. Kavşaklardaki trafik akışını anlamak, algoritma oluşturmak ve bunları Arduino'ya aktarmak, problem çözme yeteneğinizi de artıracak.

Neden Bu Proje?

  • Pratik Uygulama: Teorik bilgileri pratiğe dökmek için harika bir fırsat.
  • Problem Çözme: Trafik akışını optimize etmek için farklı algoritmalar deneyebilirsiniz.
  • Elektronik Bilgisi: LED'ler, dirençler ve Arduino arasındaki etkileşimi daha iyi anlayacaksınız.
  • Programlama Becerisi: Arduino IDE'sinde kod yazma ve hata ayıklama becerilerinizi geliştireceksiniz.
  • Eğlenceli ve İlgi Çekici: Kendi trafik ışığı sisteminizi oluşturmak oldukça keyifli olacak.

Gerekli Malzemeler

Bu projeyi gerçekleştirmek için aşağıdaki malzemelere ihtiyacınız olacak:

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • LED'ler (Kırmızı, Sarı, Yeşil) - Her trafik ışığı için bir set (en az 3 set)
  • 220 Ohm dirençler (Her LED için bir adet)
  • Breadboard
  • Jumper kabloları (erkek-erkek)
  • (İsteğe bağlı) Potansiyometre (trafik yoğunluğunu simüle etmek için)

Devre Şeması ve Bağlantılar

Devre şeması oldukça basit. Her trafik ışığı seti için (Kırmızı, Sarı, Yeşil LED'ler), her bir LED'i bir direnç üzerinden Arduino'nun dijital pinlerine bağlayacağız.

Bağlantıları şu şekilde yapabilirsiniz:

  • 1. Trafik Işığı Seti:
    • Kırmızı LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 2'ye
    • Sarı LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 3'e
    • Yeşil LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 4'e
    • LED'lerin katotları (kısa bacakları) GND'ye (toprağa) bağlanacak.
  • 2. Trafik Işığı Seti:
    • Kırmızı LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 5'e
    • Sarı LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 6'ya
    • Yeşil LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 7'ye
    • LED'lerin katotları (kısa bacakları) GND'ye (toprağa) bağlanacak.
  • 3. Trafik Işığı Seti (İsteğe Bağlı - Daha Karmaşık Kavşak Simülasyonu için):
    • Kırmızı LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 8'e
    • Sarı LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 9'a
    • Yeşil LED: 220 Ohm direnç üzerinden Arduino Dijital Pin 10'a
    • LED'lerin katotları (kısa bacakları) GND'ye (toprağa) bağlanacak.
  • Potansiyometre (İsteğe Bağlı - Trafik Yoğunluğunu Simüle Etmek İçin):
    • Potansiyometrenin bir ucu Arduino'nun 5V pinine
    • Potansiyometrenin diğer ucu Arduino'nun GND pinine
    • Potansiyometrenin orta ucu Arduino'nun Analog Pin A0'ına

Bağlantıları yaparken dikkatli olun ve doğru pinlere bağladığınızdan emin olun. Yanlış bağlantılar Arduino'nuza zarar verebilir.

Arduino Kodu

Şimdi sıra geldi Arduino kodunu yazmaya. Aşağıdaki kod, basit bir trafik ışığı döngüsünü simüle eder. Bu kodu temel alarak daha karmaşık algoritmalar geliştirebilirsiniz.


 // LED pinlerini tanımla
 const int redLed1 = 2;
 const int yellowLed1 = 3;
 const int greenLed1 = 4;

 const int redLed2 = 5;
 const int yellowLed2 = 6;
 const int greenLed2 = 7;

 //Bekleme süreleri
 const int greenDuration = 5000; //5 saniye
 const int yellowDuration = 2000; //2 saniye
 const int redDuration = 7000;    //7 saniye

 void setup() {
  // LED pinlerini çıkış olarak ayarla
  pinMode(redLed1, OUTPUT);
  pinMode(yellowLed1, OUTPUT);
  pinMode(greenLed1, OUTPUT);

  pinMode(redLed2, OUTPUT);
  pinMode(yellowLed2, OUTPUT);
  pinMode(greenLed2, OUTPUT);
 }

 void loop() {
  // 1. Trafik ışığı yeşil, 2. trafik ışığı kırmızı
  digitalWrite(greenLed1, HIGH);
  digitalWrite(redLed2, HIGH);
  delay(greenDuration);

  // 1. Trafik ışığı sarı, 2. trafik ışığı kırmızı
  digitalWrite(greenLed1, LOW);
  digitalWrite(yellowLed1, HIGH);
  delay(yellowDuration);

  // 1. Trafik ışığı kırmızı, 2. trafik ışığı kırmızı
  digitalWrite(yellowLed1, LOW);
  digitalWrite(redLed1, HIGH);
  delay(1000); //Kısa bir bekleme

  // 1. Trafik ışığı kırmızı, 2. trafik ışığı yeşil
  digitalWrite(redLed2, LOW);
  digitalWrite(greenLed2, HIGH);
  delay(greenDuration);

  // 1. Trafik ışığı kırmızı, 2. trafik ışığı sarı
  digitalWrite(greenLed2, LOW);
  digitalWrite(yellowLed2, HIGH);
  delay(yellowDuration);

  // 1. Trafik ışığı kırmızı, 2. trafik ışığı kırmızı
  digitalWrite(yellowLed2, LOW);
  digitalWrite(redLed2, HIGH);
  delay(1000); //Kısa bir bekleme
  
   digitalWrite(redLed1, LOW); // 1. Trafik ışığı kırmızı
  digitalWrite(redLed2, LOW);
 }
 

Bu kodu Arduino IDE'sine kopyalayın ve Arduino kartınıza yükleyin. Trafik ışıklarınızın sırasıyla yanıp söndüğünü göreceksiniz.

İleri Seviye: Akıllı Trafik Işıkları

Bu temel projeyi daha da geliştirebilirsiniz. İşte size bazı fikirler:

  • Trafik Yoğunluğu Sensörü: Bir sensör kullanarak trafik yoğunluğunu ölçün ve ışıkların sürelerini buna göre ayarlayın.
  • Buton Kontrolü: Bir butona basıldığında yaya geçidi ışıklarını aktive edin.
  • Zaman Ayarlı Sistem: Farklı zaman dilimlerinde farklı trafik akışlarına göre ışıkları ayarlayın.
  • Daha Fazla Işık: Daha karmaşık bir kavşak simülasyonu için daha fazla trafik ışığı ekleyin.
  • Potansiyometre ile Trafik Akışı Simülasyonu: Potansiyometreden aldığınız analog değeri kullanarak bekleme sürelerini değiştirin. Böylece potansiyometre ile bir nevi trafik yoğunluğunu simule etmiş olursunuz.

Bu proje ile Arduino dünyasına daha derinlemesine bir giriş yapmış oldunuz. Unutmayın, en iyi öğrenme yolu denemek ve yanılmaktır. Kendi projelerinizi geliştirirken yaratıcılığınızı kullanmaktan çekinmeyin!

Hepinize keyifli kodlamalar!

Etiketler: Arduino, trafik ışıkları, proje, elektronik, kodlama, kavşak, LED, sensör, otomasyon, akıllı sistemler

```

0 yorum:

🕹️ Basit Bir Proje: Arduino ile Mini Trafik Işıkları Sistemi

🕹️ Basit Bir Proje: Arduino ile Mini Trafik Işıkları Sistemi

🕹️ Basit Bir Proje: Arduino ile Mini Trafik Işıkları Sistemi

Merhaba sevgili Arduino severler!

Bugün sizlerle hem eğlenceli hem de öğretici bir proje paylaşacağım: Arduino ile mini bir trafik ışıkları sistemi! Bu proje, elektronik ve programlama dünyasına yeni adım atanlar için harika bir başlangıç noktası olacak. Hem temel Arduino kavramlarını öğrenecek, hem de somut bir ürün ortaya çıkarmanın keyfini yaşayacaksınız.

Neye İhtiyacımız Var?

Bu projeyi gerçekleştirmek için aşağıdaki malzemelere ihtiyacımız olacak:

  • 1 x Arduino Uno (veya benzeri bir Arduino kartı)
  • 3 x LED (Kırmızı, Sarı, Yeşil)
  • 3 x 220 Ohm direnç
  • Breadboard (Devre tahtası)
  • Jumper kablolar (erkek-erkek)

Devre Şeması ve Bağlantılar

Şimdi de devre bağlantılarını nasıl yapacağımıza bakalım:

  • Kırmızı LED:
    • LED'in uzun bacağı (anot) -> 220 Ohm direnç -> Arduino'nun 13. pinine
    • LED'in kısa bacağı (katot) -> Breadboard'un eksi (-) hattına (GND)
  • Sarı LED:
    • LED'in uzun bacağı (anot) -> 220 Ohm direnç -> Arduino'nun 12. pinine
    • LED'in kısa bacağı (katot) -> Breadboard'un eksi (-) hattına (GND)
  • Yeşil LED:
    • LED'in uzun bacağı (anot) -> 220 Ohm direnç -> Arduino'nun 11. pinine
    • LED'in kısa bacağı (katot) -> Breadboard'un eksi (-) hattına (GND)
  • Arduino GND: Arduino üzerindeki GND pini -> Breadboard'un eksi (-) hattına

Neden Direnç Kullanıyoruz? LED'ler, belirli bir akım aralığında çalışırlar. Dirençler, LED'lere giden akımı sınırlayarak LED'lerin yanmasını engeller. 220 Ohm direnç, çoğu LED için uygun bir değerdir. Farklı LED'ler için farklı direnç değerleri gerekebilir. Dikkatli olun!

Arduino Kodu

Bağlantıları tamamladıktan sonra, Arduino'ya aşağıdaki kodu yükleyelim:


 const int kirmiziLed = 13;
 const int sariLed = 12;
 const int yesilLed = 11;

 void setup() {
  pinMode(kirmiziLed, OUTPUT);
  pinMode(sariLed, OUTPUT);
  pinMode(yesilLed, OUTPUT);
 }

 void loop() {
  // Yeşil yan
  digitalWrite(yesilLed, HIGH);
  delay(3000); // 3 saniye bekle
  digitalWrite(yesilLed, LOW);

  // Sarı yan
  digitalWrite(sariLed, HIGH);
  delay(1000); // 1 saniye bekle
  digitalWrite(sariLed, LOW);

  // Kırmızı yan
  digitalWrite(kirmiziLed, HIGH);
  delay(3000); // 3 saniye bekle
  digitalWrite(kirmiziLed, LOW);

  // Sarı yan
  digitalWrite(sariLed, HIGH);
  delay(1000); // 1 saniye bekle
  digitalWrite(sariLed, LOW);
 }
 

Kodun Açıklaması:

  • const int kirmiziLed = 13; Bu satır, kırmızı LED'in bağlı olduğu Arduino pinini (13) tanımlar. Diğer LED'ler için de benzer tanımlamalar yapılır.
  • void setup() { ... } Bu fonksiyon, programın başında yalnızca bir kez çalışır. Burada, LED'lerin bağlı olduğu pinleri çıkış (OUTPUT) olarak ayarlıyoruz.
  • void loop() { ... } Bu fonksiyon, program çalışmaya başladığında sürekli olarak tekrarlanır. Trafik ışıklarının sıralı yanma döngüsünü burada tanımlıyoruz.
  • digitalWrite(yesilLed, HIGH); Bu satır, yeşil LED'i yakar (HIGH, yani yüksek voltaj).
  • digitalWrite(yesilLed, LOW); Bu satır, yeşil LED'i söndürür (LOW, yani düşük voltaj).
  • delay(3000); Bu satır, programın 3000 milisaniye (3 saniye) beklemesini sağlar.

Projenin Çalışması

Kodu Arduino'ya yükledikten sonra, trafik ışıklarınızın aşağıdaki gibi çalıştığını göreceksiniz:

  1. Yeşil ışık 3 saniye yanar.
  2. Sarı ışık 1 saniye yanar.
  3. Kırmızı ışık 3 saniye yanar.
  4. Sarı ışık 1 saniye yanar.
  5. Döngü baştan başlar.

Projenizi Geliştirin!

Bu proje sadece bir başlangıç! Trafik ışıklarınızı daha da geliştirmek için şunları deneyebilirsiniz:

  • Buton ekleyerek, trafik ışıklarının döngüsünü başlatıp durdurabilirsiniz.
  • Sensör kullanarak, araç geçişlerini algılayabilir ve trafik ışıklarının buna göre çalışmasını sağlayabilirsiniz.
  • Trafik ışıklarının yanma sürelerini farklı senaryolara göre ayarlayabilirsiniz (örneğin, gece ve gündüz için farklı süreler).
  • Trafik ışıklarının yanma sıralamasını değiştirebilirsiniz (örneğin, bazı ülkelerde kırmızı ve sarı aynı anda yanar).

Umarım bu proje size ilham verir ve Arduino dünyasına adım atmanıza yardımcı olur. İyi eğlenceler!

İpuçları:

  • Eğer LED'leriniz yanmıyorsa, bağlantıları kontrol edin. Özellikle dirençlerin doğru bağlı olduğundan emin olun.
  • Arduino IDE'yi kullanırken, doğru kartı ve portu seçtiğinizden emin olun.
  • Kodda değişiklik yapmaktan ve denemekten çekinmeyin! Arduino, deneme yanılma yoluyla öğrenmek için harika bir platformdur.

Etiketler: Arduino, Trafik Işıkları, LED, Elektronik, Proje, Kodlama, Öğrenme, Başlangıç

```

0 yorum:

🔄 Sensörlerle Çalışmak: DHT11 ile Sıcaklık ve Nem Ölçümü

🔄 Sensörlerle Çalışmak: DHT11 ile Sıcaklık ve Nem Ölçümü

🔄 Sensörlerle Çalışmak: DHT11 ile Sıcaklık ve Nem Ölçümü

Merhaba sevgili Arduino meraklıları!

Bu yazımızda, Arduino projelerinizde sıklıkla kullanabileceğiniz, düşük maliyetli ve kullanımı kolay bir sensör olan DHT11 ile sıcaklık ve nem ölçümünü adım adım inceleyeceğiz. DHT11, hem sıcaklık hem de nem değerlerini ölçebilen, başlangıç seviyesi projeler için ideal bir sensördür. Haydi, bu kullanışlı sensörü yakından tanıyalım ve Arduino ile nasıl kullanacağımızı öğrenelim!

DHT11 Sensörü Nedir?

DHT11, dijital çıkışlı bir sıcaklık ve nem sensörüdür. Basit yapısı ve kolay kullanımı sayesinde Arduino projelerinizde hava durumunu takip etmek, sera otomasyonu yapmak veya evinizdeki ortam koşullarını izlemek gibi çeşitli uygulamalarda kullanabilirsiniz. Sensörün temel özellikleri şunlardır:

  • Sıcaklık Ölçüm Aralığı: 0°C - 50°C
  • Sıcaklık Ölçüm Hassasiyeti: ±2°C
  • Nem Ölçüm Aralığı: %20 - %90 RH
  • Nem Ölçüm Hassasiyeti: ±5% RH
  • Çalışma Gerilimi: 3.3V - 5V

Gerekli Malzemeler

Bu proje için aşağıdaki malzemelere ihtiyacınız olacak:

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • DHT11 Sensörü
  • Jumper Kablolar (erkek-dişi)
  • 10k Ohm Direnç (opsiyonel, ancak daha stabil okumalar için önerilir)

Bağlantı Şeması

DHT11 sensörünü Arduino'ya bağlamak oldukça basittir. Aşağıdaki adımları takip ederek bağlantıları gerçekleştirebilirsiniz:

  1. DHT11 VCC pini -> Arduino 5V pinine bağlanır.
  2. DHT11 DATA pini -> Arduino'nun herhangi bir dijital pinine (örneğin, 2. pine) bağlanır. Bu pin üzerinden veri iletişimi gerçekleşecektir. Eğer daha stabil bir okuma almak istiyorsanız, DATA pini ile VCC pini arasına 10k Ohm'luk bir direnç bağlayabilirsiniz (pull-up direnci).
  3. DHT11 GND pini -> Arduino GND pinine bağlanır.

Arduino Kodu

Şimdi de Arduino'ya yükleyeceğimiz kodu inceleyelim. Bu kod, DHT11 sensöründen sıcaklık ve nem değerlerini okuyup seri monitöre yazdıracaktır.


#include "DHT.h"

#define DHTPIN 2     // DHT11'in bağlı olduğu pin
#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("DHT11 Sicaklik ve Nem Olcumu");
  dht.begin();
}

void loop() {
  delay(2000); // Her 2 saniyede bir okuma yap

  float h = dht.readHumidity();
  float t = dht.readTemperature(); // Celcius

  if (isnan(h) || isnan(t)) {
    Serial.println("DHT11'den okuma hatasi!");
    return;
  }

  Serial.print("Nem: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Sicaklik: ");
  Serial.print(t);
  Serial.print(" *C\n");
}

Bu kodu Arduino IDE'nize kopyalayın ve Arduino kartınıza yükleyin. Yükleme tamamlandıktan sonra seri monitörü açarak sıcaklık ve nem değerlerini görebilirsiniz.

Kodun Açıklaması

  • #include "DHT.h": DHT sensörü kütüphanesini projeye dahil eder. Bu kütüphaneyi Arduino IDE'nizin Kütüphane Yöneticisi aracılığıyla kurmanız gerekmektedir.
  • #define DHTPIN 2: DHT11 sensörünün bağlı olduğu Arduino pinini tanımlar.
  • #define DHTTYPE DHT11: Kullanılan DHT sensörünün tipini belirtir.
  • DHT dht(DHTPIN, DHTTYPE);: DHT nesnesini oluşturur.
  • dht.begin();: DHT sensörünü başlatır.
  • dht.readHumidity();: Nem değerini okur.
  • dht.readTemperature();: Sıcaklık değerini okur (Celsius cinsinden).
  • isnan(h) || isnan(t): Okuma hatası olup olmadığını kontrol eder.
  • Serial.print();: Değerleri seri monitöre yazdırır.

Sorun Giderme

Eğer okuma yaparken sorun yaşıyorsanız, aşağıdaki adımları kontrol edebilirsiniz:

  • Bağlantıları doğru yaptığınızdan emin olun.
  • DHT kütüphanesinin doğru şekilde yüklendiğinden emin olun.
  • Sensörün zarar görmediğinden emin olun.
  • Eğer pull-up direnci kullanıyorsanız, bağlantısının doğru olduğundan emin olun.

Sonuç

Bu yazımızda, DHT11 sensörü ile sıcaklık ve nem ölçümünü nasıl yapacağımızı adım adım öğrendik. Umarım bu proje, Arduino dünyasına yeni adım atanlar için faydalı olmuştur. Bir sonraki projede görüşmek üzere!

Etiketler: Arduino, DHT11, Sıcaklık, Nem, Sensör, Proje, Elektronik, Kodlama, Tutorial, Nasıl Yapılır

```

0 yorum: