Arduino ve Ethernet Modülü ENC28J60 ile LED Kontrolü

Arduino ve ethernet modülü ENC28J60 kullanımı, internete bağlanma, arduino projeler, enc28j60 library, kütüphane, enc28j60 kullanımı, web server, example, örnek, şematik, devre, bağlantı, led yakma

Arduino kartlarını ethernet modülleri aracılığıyla internete veya kurduğumuz yerel ağlara bağlayabilir ve projelerimize göre led, motor kontrolü, sensör değerleri okuma, veri paylaşma, kendi ev otomasyon sistemimizi kurma gibi farklı işlemler yapabiliriz.

Bu yazımızda ethernet shieldlara göre daha ucuz olan ethernet modülü enc28j60 ile arduino kartına bağlı olan harici bir ledin, bir web sayfası üzerinden on-off şeklinde kontrolünü paylaşıyoruz.

ENC28J60 Nedir ?

ENC28J60 Ethernet Modülü, ağ protokolü gereksinimlerinin çoğunu karşılayacak bir dizi özelliğe sahip Microchip ENC28J60 Bağımsız Ethernet Denetleyicisi IC’sini kullanır.

Pek çok işlemciye standart SPI bağlantısı ile 20MHz’e kadar varan transfer hızı ile bağlanır.

Özellikleri:

  1. Arduino / AVR / LPC / STM3 için Ethernet LAN Modülü
  2. Ağ Arayüzü: HR911105A
  3. Besleme Gerilimi: 3.3 V (5V Toleranslı DIO)
  4. 25 Mhz kristal osilatör
  5. Boyut (U x G x Y): Yaklaşık. 2,3 x 1,3 x 0,7 inç / 58 x 34 x 17 mm

Kullanılacak Ekipmanlar

1x Arduino Uno

1x Ethernet Modülü ENC28J60

1x 3mm LED

1x 150ohm direnç

1x Router/modem

2x Ethernet kablosu

Yeteri kadar jumper kablo

Arduino ve ENC28J60 Ethernet Modülü Bağlantısı

Ethernet modülü ile Arduino‘muz arasında aşağıdaki gibi bağlantı kurulur.

ENC28J60 Ethernet ModülüArduino
CS10
SI11
SO12
SCK13
VCC3.3V
GNDGND
Arduino ile ENC28J60 Modülü Bağlantısı 
ENC28J60 kullanımı, ethernet modülü ile internete bağlanma, projeler, enc28j60 ethernet, library, kütüphane, enc28j60 kullanımı, web server, example, örnek, şematik, devre, bağlantı
Arduino ve ENC28J60 Ethernet Modülü Bağlantısı

Arduino Kodu

Aşağıdaki kod (sketch) açılan Arduino‘nun kod sayfasına kopyalanır ve derlenip&yüklenerek çalıştırılır. Kod çalıştırmadan önce ethernet modülü için gerekli olan kütüphane EtherCard BURADAN indirilerek programın başına eklenir.

#include <EtherCard.h> //EtherCard kütüphanesi ekleme

//Ledi yakıp söndürmek için kısayollar
//http://192.168.2.34/?LED=OFF
//http://192.168.2.34/?LED=ON


#define STATIC 0 // DHCP'yi kullanım dışı bırakmak için 1 yapılır (myip/gwip değerlerini aşağıda ayarlanır)

// mac adresi
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
// ethernet ip adresi
static byte myip[] = { 192,168,0,200 };
// gateway ip adresi
static byte gwip[] = { 192,168,0,1 };

// Kontrol edilecek LED pini
int ledPin = 5; //Arduino D5 pini ile GND arasına LED ve 150ohm direnç bağlanır.

byte Ethernet::buffer[700];

//web arayüzü
char const page[] PROGMEM =
"HTTP/1.0 503 Service Unavailable\r\n"
"Content-Type: text/html\r\n"
"Retry-After: 600\r\n"
"\r\n"
"<html>"
"<head><title>"
"Service Temporarily Unavailable"
"</title></head>"
"<body>"
"<h3>LED KONTROL PROGRAMI</h3>"
"<p><em>"
"LED kontrolu icin Arduino'ya iletilecek komutlar.<br />"
"Sintaks yapisi: http://192.168.0.XX/?LED=OFF or ON"
"</em></p>"
"</body>"
"</html>"
;

void setup () 
{
    pinMode(ledPin, OUTPUT);
    
    Serial.begin(9600);
    Serial.println("Trying to get an IP...");
    
    Serial.print("MAC: ");
    for (byte i = 0; i < 6; ++i) 
    {
        Serial.print(mymac[i], HEX);
        if (i < 5)
        Serial.print(':');
    }
    Serial.println();
    
    if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
    {
        Serial.println( "Failed to access Ethernet controller");
    }
    else
    {
        Serial.println("Ethernet controller access: OK");
    }
;

#if STATIC
    Serial.println( "Getting static IP.");
    if (!ether.staticSetup(myip, gwip))
    {
      Serial.println( "could not get a static IP");
      blinkLed(); // blink forever to indicate a problem
    }
#else

    Serial.println("Setting up DHCP");
    if (!ether.dhcpSetup())
    {
        Serial.println( "DHCP failed");
        blinkLed(); // blink forever to indicate a problem
    }
#endif

    ether.printIp("My IP: ", ether.myip);
    ether.printIp("Netmask: ", ether.netmask);
    ether.printIp("GW IP: ", ether.gwip);
    ether.printIp("DNS IP: ", ether.dnsip);
}

void loop () 
{
    word len = ether.packetReceive();
    word pos = ether.packetLoop(len);

    // IF LED=ON turn it ON
    if(strstr((char *)Ethernet::buffer + pos, "GET /?LED=ON") != 0) 
    {
        Serial.println("Received ON command");
        digitalWrite(ledPin, HIGH);
    }
    
    // IF LED=OFF turn it OFF
    if(strstr((char *)Ethernet::buffer + pos, "GET /?LED=OFF") != 0) 
    {
        Serial.println("Received OFF command");
        digitalWrite(ledPin, LOW);
    }
    
    // show some data to the user
    memcpy_P(ether.tcpOffset(), page, sizeof page);
    ether.httpServerReply(sizeof page - 1);
}

void blinkLed()
{
    while (true)
    {
        digitalWrite(ledPin, HIGH);
        delay(500);
        digitalWrite(ledPin, LOW);
        delay(500);
    }
}

WEB Sayfasından LED Kontrolü

Yukarıda verilen kod Arduino‘ya yüklenip çalıştırıldıktan sonra seri monitör açılarak ethernet modülüne tanımlanan (DHCP aktif ise) IP adresi kopyalanır ve bir internet tarayıcı sayfasına gidilerek kodun başında verilen IP adresleri yerine yazılarak LED on veya off konumuna getirilir.

Ethernet Modülü ve Arduino Seri Monitör
Ethernet Modülü ve Arduino Seri Monitör
Led Kontrolü İçin Web Sayfası Görünümü
Led Kontrolü İçin Web Sayfası Görünümü
Arduino Uno ile ENC28J60 İle LED Kontrolü
Arduino Uno ve ENC28J60 İle LED Kontrolü
Arduino Uno ile ENC28J60 İle LED Kontrolü 
ENC28J60 kullanımı, internete bağlanma, projeler, enc28j60 ethernet, library, kütüphane, enc28j60 kullanımı, web server, example, örnek, şematik, devre, bağlantı
Arduino Uno ve ENC28J60 İle LED Kontrolü

Arduino ve Röle İle Motor Dönüş Yönü Kontrolü içeriğimiz de ilginizi çekebilir.

2 Comments

  1. selim suat Mayıs 17, 2020 Reply
    • admin Mayıs 17, 2020 Reply

Yorum Yazın