Arduino Ethernet Uygulaması

guclusat

Tanınmış Üye
Süper Moderatör
Arduino_EthernetShield1-230x230.jpg

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.

ard_internet.png

Ş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.

ard_int2.png

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");
  }
}
 
Geri
Yukarı