Arduino UNO Ethernet Shield POST

Merhabalar

Uzun zamandır aklımda olan, ancak bir turlu fırsat bulup basına oturamadıgım calısmamı gerceklestirebildim :)

arduino ile okudugum bir takım verileri bir sunucuya nasıl post edebilirim derken ortaya guzel bir calısma cıktı. Aşağıda detaylarını verecegim uygulamada DHT11 ile sicaklık ve nem verilerini elde edip yazmıs oldugum basit bir wepServise post ettim. Post aşamasından sonra verileri veri tabanına kaydetmek yerine şimdilik text file yazdırdım. Ayrıca sistemimde bir DHCP olmadıgı için Ethernet Shielde Sabit IP tanımlayarak kullandım. Otomatik Ip ile kullanmak istenirse, acıklama satırı seklinde tanımlanmış olan Dinamik Ip kısmı kullanılmalıdır. Verileri 10 sn de bir sunucuya post ettim.

 

#include <dht11.h>		//sicaklik-nem 
#include <SPI.h>		//seriport 
#include <Ethernet.h>	//ethernet

dht11 DHT;	//sensörü tanımlandı
#define DHT11_PIN 2//sesörün arduino da baglı olan data pini

//ethernet shield mac adresi
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

//bilgileri post edecegim sunucu IP (bir url de olabilir)
char serverName[] = "192.168.1.26"; //"172.22.5.108";
//iletişim port bilgisi
int serverPort = 80;
//http işlemleri için kullanılacak client nesnesi
EthernetClient client;


///Static Ip
void setup() {

	Serial.begin(9600);

	byte ip[] = { 192,168,1,25 };
	byte gateway[] = { 192,168,1,1 };
	byte subnet[] = { 255,255,255,0 };
	byte dns[] = { 8,8,8,8 };
	Ethernet.begin(mac, ip, dns, gateway, subnet);

	Serial.println(Ethernet.localIP());
	delay(1000);
}


///Dynamic Ip 
//void setup() {
//	Serial.begin(9600);
//
//	if (Ethernet.begin(mac) == 0) {
//		while (true);
//	}
//	else {
//		Serial.println(Ethernet.localIP());
//	}
//	delay(1000);
//}



void loop() {
	/*if (Serial.available() > 0) {
		String incoming = Serial.readString();
		Serial.println(incoming);
		insertToDb();
	}*/

        //post etme süresi
	delay(10000);
	insertToDb();
}

void insertToDb() {

	DHT.read(DHT11_PIN);
	/*String nem = String(DHT.humidity);
	String sic = String(DHT.temperature);*/

	String data1 = "{\"nem\": "+ String(DHT.humidity) +" ,\"sicaklik\":"+ String(DHT.temperature) +" }";
	Serial.println(data1);
	Serial.println("connecting...");
	if (client.connect(serverName, serverPort)) {
		Serial.println("connected");
		client.println("POST /Home/Save/ HTTP/1.1");
		client.println("Host: 192.168.1.26");
		client.println("Content-Type: application/json");
		client.print("Content-Length: ");
		client.println(data1.length());
		client.println();
		client.print(data1);
		Serial.println("insert conmplete");
		
                // sunucudan gelen cevabı görüntülenmek
                // istenirseaşağıdaki kod kullanılabilir
		/*while (client.connected())
		{
			
			if (client.available()) {
				char c = client.read();
				Serial.print(c);
			}
		}
		Serial.println();*/
	}
	else {
		Serial.println("connection failed");
	}

	Serial.println("client Stop");
	client.stop();
}

 

Müellifi: Hüsrev YILDIZ
Yayın Tarihi : 11.5.2019

Hüsrev YILDIZ