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();
}
