Arduino ile internet üzerinden birşeyleri kontrol etmek fikri son zamanlarda oldukça yaygınlaştı. Bu yazımızda birşeyleri kontrol etmeden önce arduino ile ethernet shieldın nasıl kullanılacağını inceleyeceğiz. Çünkü ilk aşamada ethernet shieldı çalıştırmak kod hazır dahi olsa emek istemektedir. Ne yapacağımızı bilemediğimiz bir durumdur aslında.
Herşeyden önce Ethernet kütüphanesini indirmeniz gerekmektedir. İndirdiğiniz kütüphane dosyasını Library klasörüne attıktan sonra IDE’ yi çalıştırabilirsiniz.
Sırasıyla File / Sketchbook yada Examples / Ethernet / Web Server komutlarına tıkladığınızda bu çalışmada yapacağınız uygulamanın kodunu açmış olacaksınız. Yada direk aşağıda göreceğiniz yorum satırları ile yapacağınız işi anlaşılır kılmaya çalışan kodu çalıştırabilirsiniz.
Şimdi gelelim benim bu işteki katkıma
Öncelikle kodun yorum satırlarında da görebileceğiniz gibi kod içerisinde bulunan IP Adresini değiştirmeniz gerekmektedir. Bağlı olduğunuz internet bağlantısı üzerinden bağlantı IPv4 adresinizi öğrenmelisiniz. Bu adresin sadece son hanesini değiştirerek kod içerisindeki ip adresi karşısına yazacaksınız. Örneğin bağlantınızın IP adresi 192.168.1.15 ise siz koda 192.168.1.20 yazmalısınız.
Bir diğer husus ethernet shieldı bağladığınız internet ile kod içerisine yazdığınız IP adresini aratmanızdır. Yani kullandığınız internet hattı bu çalışmada aynı olmalıdır.
Yorum satırları eklenmiş uygulama kodu:
Kod:
/*
Web Server = Web sunucusu : Hosting, web sayfalarının internet
üzerinde yayınlanması için gerekli alanların kiralanması
anlamına gelmektedir. Yani internet üzerinden yayınlanmak istenen
döküman, resim, sayfa vb. verilerin kullanıcıların erişebileceği
bir bilgisayarda tutulmasıdır. İşte bu verilerin tutulduğu -
saklandığı internete hızlı bağlantısı olan web verilerini tutan
bilgisayarlara web sunucusu denir.
Bu çalışmada arduino üzerindeki analog pinlerin değerleri
basit bir web server da gösterilecektir. Bu çalışmada arduino uno
ve ethernet shield kullanılmaktadır.
Devre ayak bağlatıları:
NOT: Eğer ethernet kitiniz shield halinde değilse yani arduino
kartınız üzerine direk olarak bağlanamıyorsa şu piner
kullanılacaktır:
* Ethernet shieldı arduino üzerindeki bağlanacağı pinler:
10, 11, 12, 13
* Analog girişlerinizi (A0...A5) potansiyometre gibi analog
aygıtlara-sensörlere bağlayabilirsiniz.
*/
#include <SPI.h>
#include <Ethernet.h>
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,89); // IP adresi yerel bağlantınızın
// yani kullandığınız internetin IP adresi ile uyumlu olmalıdır.
// Buna Ağ ve Paylaşım Merkezini Aç/ (İnternete bağlandığınız) Ağ
// Bağlantısı / Ayrıntılar komutlarına tıklayarak IPv4 Adresi linki
//karşısında görebilirsiniz. Burada gördüğünüz IP adresinin sadece
//son hanesini değiştirerek kod içerisindeki kısmı doldurmalısınız.
//Örneğin benim IPv4 adresim 192.168.1.86 idi ancak kod içerisine
//192.186.1.89 yazdım. Kod içerisine yazdığınız IP adresini web
// browser yani chrome yada Internet Explorer da aratınız.
//Tabi arduino ya bu kodu yüklemiş ve internet shielda internet
//kablosunu bağlamış olmanız gerekmektedir.
EthernetServer server(80); // HTTP için tanımlanmış port numarası
void setup() {
Serial.begin(9600); //Seri haberleşme açıldı
while (!Serial) {
; // Seri porta bağlantının yapılmasını bekler
}
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the response
client.println("Refresh: 5"); // refresh the page automatically every 5 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}