IoT Sistem Tasarımı 2- Arduino İle Sıcaklık ve Nem Verilerini Web Sunucusuna Gönderme

IoT Sistem Tasarımı 2- Arduino İle Sıcaklık ve Nem Verilerini Web Sunucusuna Gönderme

Arduino, gömülü sistemler ve elektronik projeler için yaygın olarak kullanılan bir platformdur.

Bu projelerde genellikle çeşitli sensörlerle çevresel verileri okumak ve bu verileri internet üzerindeki bir sunucuya iletmek isteyebiliriz. Bu makalede, Arduino kullanarak DHT11 sıcaklık ve nem sensöründen alınan verilerin, bir Wi-Fi modülü (ESP 12F) kullanılarak bir web sunucusuna nasıl gönderileceğini öğreneceksiniz.
 

Kullanılan Bileşenler
Arduino (örneğin Arduino Uno)
ESP 12F Wi-Fi Modülü
DHT11 Sıcaklık ve Nem Sensörü


Arduino Kodunun Açıklamaları


#include <SoftwareSerial.h>
#include <dht11.h>

// Wi-Fi bağlantı bilgileri
const char* ssid = "pointx";
const char* password = "123456789";

// Web sunucusu bilgileri
const char* server = "iot.milivolt.com.tr"; // Web sunucusunun adresi
const int serverPort = 80; // HTTP portu
const char* path = "/receive_data.php"; // GET isteği yolu

SoftwareSerial espSerial(10, 11); // ESP12f modülünün RX ve TX pinleri

#define DHT11PIN 2
dht11 DHT11;

void setup() {
  Serial.begin(9600);
  espSerial.begin(115200);

  connectWiFi(); // Wi-Fi bağlantısı yapılır
}

void loop() {
  int chk = DHT11.read(DHT11PIN);

  float humd = (float)DHT11.humidity;
  float temp = (float)DHT11.temperature;

  sendDataToServer(temp, humd); // Veriler sunucuya gönderilir

  delay(5000); // 5 saniye beklenir
}

// Wi-Fi ağına bağlanmayı sağlar
void connectWiFi() {
  espSerial.println("AT+RST"); // ESP12f modülü resetlenir
  delay(1000);

  espSerial.println("AT+CWMODE=1"); // Modül istemci (client) moduna alınır
  delay(1000);

  espSerial.print("AT+CWJAP=\"");
  espSerial.print(ssid);
  espSerial.print("\",\"");
  espSerial.print(password);
  espSerial.println("\"");
  delay(5000); // 5 saniye beklenir
}

// Sensör verilerini web sunucusuna gönderir
void sendDataToServer(float value1, float value2) {
  espSerial.println("AT+CIPMUX=0"); // Tek bağlantı modu seçilir
  delay(1000);

  String getRequest = "GET " + String(path) + "?deg1=" + String(value1) + "&deg2=" + String(value2) + " HTTP/1.1\r\n" +
                      "Host: " + String(server) + "\r\n\r\n";

  espSerial.println("AT+CIPSTART=\"TCP\",\"" + String(server) + "\"," + String(serverPort));
  delay(3000); // Sunucuya bağlanma işlemi için beklenir

  espSerial.println("AT+CIPSEND=" + String(getRequest.length()));
  delay(1000);

  espSerial.println(getRequest);
  delay(1000);

  espSerial.println("AT+CIPCLOSE"); // Bağlantı kapatılır
}

Kodun İşleyişi
1. Kullanılan kütüphaneler import edilir (#include ifadeleri).
2. Wi-Fi ağına bağlanmak için gerekli fonksiyonlar tanımlanır (connectWiFi()).
3. Ana setup() fonksiyonunda seri iletişim hızları başlatılır, ESP 12f modülü resetlenir ve istemci moduna alınır.
4. loop() fonksiyonu sürekli olarak çalışır:
DHT11 sensöründen sıcaklık ve nem verileri okunur.
sendDataToServer() fonksiyonu kullanılarak bu veriler web sunucusuna iletilir.
Belirli bir süre (5 saniye) beklenir.
5. sendDataToServer() fonksiyonu, ESP 12f modülünü kullanarak HTTP GET isteği oluşturur ve sunucuya gönderir. Bağlantı sonlandırılır.