Arduino ile İnternet Üzerinden Led Kontrolü

guclusat

Tanınmış Üye
Süper Moderatör
Bu çalışmamızda hem sayfaya veri yazdıracağız hemde sayfadaki komuta göre arduino üzerine takdığımız ledi kontrol edeceğiz. Yani ethernet led uygulamasını yaparak artık ethernet shield ile herşeyi yapabileceğimizi göstermiş olacağız.

Eğer projemizde Şekil 1′ deki gibi ethernet shieldı kullanıyorsak bağlantı için kabloya vs. ihtiyaç duymuyoruz. Sadece arduino kartımızın üzerine yerleştirmemiz yeterli oluyor.

Ancak Şekil 2’deki gibi sadece ethernet modülünü yani ENC28J60 devre kartını kullanıyorsak ilgili pinleri arduino üzerine jumperlar kullanarak takmalıyız. ENC28J60 modülü ve arduino bağlantıları şu tabloda gösterilmiştir.

ardi.jpg


Kod:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177); // yerel ağ bağlantısına göre değiştirilmesi gereken ip adresi
EthernetServer server(80);
String HTTP_req;
boolean led_durum = 0; // ledin ON yada OFF olduğunu tutan değişken
int led=8; // ledin bağlanacağı arduino pini
void setup()
{
    Ethernet.begin(mac, ip);
    server.begin();
    Serial.begin(9600);      
    pinMode(led,OUTPUT);
}
void loop()
{
    EthernetClient net_alc = server.available();
    if (net_alc) {
        boolean satir_kontrol = true;
        while (net_alc.connected()) {
            if (net_alc.available()) {
                char c = net_alc.read();
                HTTP_req += c;
                if (c == '\n' && satir_kontrol) {
                  // Alttaki satrlar HTML programlama ile ilgilidir.
                  // HTML kaynak kodlarına bakmanızda fayda var.
                    net_alc.println("HTTP/1.1 200 OK");
                    net_alc.println("Content-Type: text/html");
                    net_alc.println("Connection: close");
                    net_alc.println();
                    net_alc.println("<!DOCTYPE html>");
                    net_alc.println("<html>");
                    net_alc.println("<head>");
                    net_alc.println("<title>Arduino Internet Led Kontrol</title>");
                    net_alc.println("</head>");
                    net_alc.println("<body>");
                    net_alc.println("<h1>ADUINO ILE INTERNET UZERINDEN LED YAKIP SONDURME</h1>");
                    net_alc.println("<p>Ledi acip kapatmak icin kutucuga tiklayiniz.</p>");
                    net_alc.println("<form method=\"get\">");
                    LedKontrol(net_alc);
                    net_alc.println("<p>Blogu ziyaret ediniz:</p>");
                    net_alc.println("<div style=\"font-size:25px;\">golmuhendis.blogspot.com.tr</div>");
                    net_alc.println("</form>");
                    net_alc.println("</body>");
                    net_alc.println("</html>");
                    Serial.print(HTTP_req);
                    HTTP_req = "";
                    break;
                }
                if (c == '\n') {
                    satir_kontrol = true;
                }
                else if (c != '\r') {
                    satir_kontrol = false;
                }
            }
        }
        delay(1);
        net_alc.stop();
    }
}
void LedKontrol(EthernetClient deger)
{
    if (HTTP_req.indexOf("LED=1") > -1) {
        if (led_durum) {
            led_durum = 0;
        }
        else {
            led_durum = 1;
        }
    }
    if (led_durum) {
        digitalWrite(led, HIGH);
        deger.println("<input type=\"radio\" name=\"LED\" value=\"1\" \
        onclick=\"submit();\" checked>LED");
    }
    else {
        digitalWrite(led, LOW);
        deger.println("<input type=\"radio\" name=\"LED\" value=\"1\" \
        onclick=\"submit();\">LED");
    }
}
 
Son düzenleme:
Geri
Yukarı