📡 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: