pic ile ethernet modul kullanımı ENC28J60

Başlatan bulutay, 30 Kasım 2014, 13:45:06

bulutay

 ENC28J60 ethernet modulünü ccs c ile yada başka yazılımla kullanan var mı arkadaşlar basit bir uygulama örnegi yeterli olur aslında . yardımlarınızı bekliyorum.

Kabil ATICI

#1
Arduino uno 1.5 kodu  ENC28J60 için

Orjinal kodun üzerinde birkaç değişiklik yaptım. 2 led'i  web browser üzerinden yakıp söndürmeye yarıyor.

//yapılan kart ile uyumlu program
//bilgisayar beslemesi ile çalışabilmektedir.

#include <EtherCard.h>

#define LED1PIN  6
#define LED2PIN  7

PROGMEM const prog_char led_off[]= {
             0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0E,
             0x00, 0x00, 0x00, 0x0E, 0x08, 0x04, 0x00, 0x00, 0x00, 0xB5, 0x41, 0xE5, 0x5A, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47,
             0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x02, 0x62, 0x4B, 0x47, 0x44, 0x00, 0xFF, 0x87, 0x8F, 0xCC, 0xBF,
             0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x00, 0x0B, 0x12, 0x01, 0xD2, 0xDD, 0x7E,
             0xFC, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4D, 0x45, 0x07, 0xDC, 0x01, 0x1D, 0x14, 0x21, 0x10, 0xBC, 0x3C, 0xDE, 0x2D,
             0x00, 0x00, 0x00, 0xD2, 0x49, 0x44, 0x41, 0x54, 0x18, 0xD3, 0x75, 0xD0, 0xB1, 0x4A, 0x03, 0x51, 0x10, 0x05, 0xD0, 0xB3,
             0x21, 0x1F, 0x10, 0x04, 0x3B, 0x53, 0x89, 0x5A, 0x09, 0x9B, 0x58, 0xD9, 0x25, 0x5F, 0x60, 0x63, 0x9F, 0x87, 0x5F, 0xE0,
             0x27, 0x6D, 0x7A, 0x5B, 0xC1, 0x6E, 0xF3, 0x01, 0x92, 0x2C, 0x36, 0x56, 0x62, 0x61, 0x23, 0xA4, 0xB1, 0x12, 0xF2, 0x64,
             0xDF, 0x5A, 0xBC, 0x20, 0x5B, 0x98, 0x3B, 0xC5, 0xC0, 0xBD, 0x73, 0xEF, 0x30, 0x53, 0x74, 0x0E, 0x63, 0x48, 0x01, 0xC2,
             0xBD, 0x1B, 0x33, 0xAC, 0x2C, 0xAB, 0x0A, 0x3A, 0x45, 0xA7, 0x10, 0x46, 0xEA, 0x69, 0x39, 0x71, 0x21, 0xD9, 0x78, 0xF5,
             0xD2, 0x98, 0x57, 0x5F, 0x9D, 0x21, 0xA8, 0xEF, 0xCA, 0x53, 0xDF, 0xB6, 0xA2, 0x23, 0xD7, 0xC6, 0xE5, 0x63, 0x6D, 0xC2,
             0x80, 0x10, 0xA6, 0xE5, 0xB9, 0x9D, 0xA4, 0xD5, 0x4A, 0xA2, 0x91, 0xB3, 0x32, 0x04, 0x06, 0x58, 0x5C, 0x89, 0x92, 0x56,
             0xFA, 0xAB, 0x63, 0x16, 0x59, 0x9C, 0x5D, 0xF6, 0xA4, 0xDC, 0x4F, 0x98, 0xC9, 0x3B, 0x33, 0xD5, 0x77, 0x46, 0x64, 0xE7,
             0xAA, 0xE9, 0xD1, 0x79, 0x68, 0xCB, 0x2A, 0x8B, 0xCB, 0x0D, 0xBD, 0xC8, 0x24, 0xF9, 0x60, 0x69, 0x7F, 0xE7, 0xE6, 0xB6,
             0x1C, 0x8B, 0xA2, 0x1F, 0xD1, 0xCE, 0xBB, 0x75, 0x53, 0x4D, 0x3A, 0x03, 0x30, 0x7F, 0x68, 0x9E, 0xBC, 0x29, 0xB4, 0x3E,
             0x3D, 0x5B, 0x37, 0xE6, 0xEC, 0x9D, 0x10, 0x82, 0xC5, 0x3F, 0xEF, 0x3B, 0x8C, 0x5F, 0xC2, 0x84, 0x6A, 0x7B, 0xFB, 0x42,
             0x44, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82
             };
             
PROGMEM const prog_char led_on[]= {
             0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x0E,
             0x00, 0x00, 0x00, 0x0E, 0x04, 0x03, 0x00, 0x00, 0x00, 0xED, 0x66, 0x30, 0xE2, 0x00, 0x00, 0x00, 0x01, 0x73, 0x52, 0x47,
             0x42, 0x00, 0xAE, 0xCE, 0x1C, 0xE9, 0x00, 0x00, 0x00, 0x27, 0x50, 0x4C, 0x54, 0x45, 0x00, 0x00, 0x00, 0xFF, 0xCC, 0x00,
             0xCC, 0x66, 0x00, 0xFF, 0xFF, 0x33, 0xFF, 0x99, 0x00, 0xFF, 0xCC, 0x33, 0xCC, 0x99, 0x66, 0xFF, 0xFF, 0x99, 0xCC, 0x99,
             0x33, 0xCC, 0x99, 0x00, 0xFF, 0xCC, 0x66, 0x99, 0x66, 0x00, 0xFF, 0xCC, 0x99, 0x4A, 0x4E, 0xC9, 0x79, 0x00, 0x00, 0x00,
             0x01, 0x74, 0x52, 0x4E, 0x53, 0x00, 0x40, 0xE6, 0xD8, 0x66, 0x00, 0x00, 0x00, 0x01, 0x62, 0x4B, 0x47, 0x44, 0x00, 0x88,
             0x05, 0x1D, 0x48, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x12, 0x00, 0x00, 0x0B, 0x12, 0x01,
             0xD2, 0xDD, 0x7E, 0xFC, 0x00, 0x00, 0x00, 0x07, 0x74, 0x49, 0x4D, 0x45, 0x07, 0xDC, 0x01, 0x1D, 0x14, 0x23, 0x1C, 0x87,
             0xBC, 0xF0, 0x84, 0x00, 0x00, 0x00, 0x48, 0x49, 0x44, 0x41, 0x54, 0x08, 0xD7, 0x63, 0x60, 0x80, 0x03, 0x26, 0x25, 0x05,
             0x30, 0x95, 0x55, 0x3E, 0x0D, 0xC4, 0xD0, 0x31, 0x16, 0x14, 0x6C, 0x02, 0xD2, 0xC9, 0x86, 0x82, 0x82, 0xD2, 0x40, 0xE1,
             0xC5, 0x40, 0x3A, 0x44, 0x81, 0x81, 0xA9, 0x18, 0x46, 0x0B, 0x0A, 0x8A, 0xBA, 0x00, 0xE9, 0x60, 0x08, 0xCD, 0x90, 0x0C,
             0xA4, 0x9D, 0x80, 0xEA, 0x35, 0x80, 0xD2, 0x20, 0x9A, 0xA9, 0x53, 0xD0, 0x49, 0x01, 0xC9, 0x5C, 0x08, 0x00, 0x00, 0x9A,
             0x56, 0x0B, 0x58, 0x9D, 0x6A, 0x76, 0x99, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82
             };

static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
static byte myip[] = {192,168,1,2};
byte Ethernet::buffer[700];

boolean led1Status;
boolean led2Status;

void setup () {
 
  Serial.begin(57600);
  Serial.println("WebLeds Demo");
 
  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
    Serial.println( "Failed to access Ethernet controller");
 else
   Serial.println("Ethernet controller initialized");
 
  if (!ether.staticSetup(myip))
    Serial.println("Failed to set IP address");

  Serial.println();
  
  pinMode(LED1PIN, OUTPUT);
  pinMode(LED2PIN, OUTPUT);
  
  digitalWrite(LED1PIN, LOW);
  digitalWrite(LED2PIN, LOW);
  
  led1Status = false;
  led2Status = false;  
}
  
void loop() {
 
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);
  
  if(pos) {
    
    if(strstr((char *)Ethernet::buffer + pos, "GET /led_off.png") != 0) 
      send_png_image(led_off, sizeof(led_off));
    else if(strstr((char *)Ethernet::buffer + pos, "GET /led_on.png") != 0)
      send_png_image(led_on, sizeof(led_on));
    
    else {
      
      if(strstr((char *)Ethernet::buffer + pos, "GET /?LED1") != 0) {
        led1Status = !led1Status;
        digitalWrite(LED1PIN, led1Status);  
      }
      
      if(strstr((char *)Ethernet::buffer + pos, "GET /?LED2") != 0) {
        led2Status = !led2Status;
        digitalWrite(LED2PIN, led2Status);          
      }
      //charset=utf-8 türkçe karakter gösterimini sağlamaktadır...
      BufferFiller bfill = ether.tcpOffset();
      bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
 "Content-Type: text/html;charset=windows-1254\r\nPragma: no-cache\r\n\r\n"
  //      "Content-Type: text/html;charset=UTF-8\r\nPragma: no-cache\r\n\r\n"
        "<html><head><title>WebLeds</title>"

        "</head><body>"
        "<h4><center>ENC28J60 ve Atmega328P bilgisayar üzerinden ethernet iletişimi</center></h4>"
        "Uzun zamandır yapmayı planlayıpta bir türlü yapmayı göze alamadığım bir uygulama."
        "Hani yağ ver, şeker var un var helva yapmasana tarzı bir deyişte o veya bu şekilde"
        "sonunda helva haline getirmeye başardığım bir uygulama oldu."
       " </hr>"
        "<p>LED'leri yak söndür: </p>"));
        
      bfill.emit_p(PSTR("<font color=red>Kırmızı</font>   "));
      if(led1Status) bfill.emit_p(PSTR("<a href=\"/?LED1\"><img src=\"led_on.png\">[/url]"));
      else bfill.emit_p(PSTR("<a href=\"/?LED1\"><img src=\"led_off.png\">[/url]"));
      bfill.emit_p(PSTR("[br /]<font color=blue>Mavi </font>"));
      if(led2Status) bfill.emit_p(PSTR("<a href=\"/?LED2\"><img src=\"led_on.png\">[/url]"));
      else bfill.emit_p(PSTR("<a href=\"/?LED2\"><img src=\"led_off.png\">[/url]"));      

      bfill.emit_p(PSTR("</body></html>"));
      ether.httpServerReply(bfill.position());
  }
  }
}

void send_png_image(PGM_P png_image, unsigned int image_size) {
  
  BufferFiller bfill = ether.tcpOffset();
  bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\n"
    "Content-Type: image/png\r\n\r\n"));
  bfill.emit_raw_p(png_image, image_size);
  ether.httpServerReply(bfill.position());  
}



https://github.com/jcw/ethercard
kütüphaneleri

kart olarak soldan 2. üstten ve alttan görünümü.


Ama bunu CSS'e nasıl uyarlarsın bilemem. Yukarıdaki bağlantıdan indireceğin kütüphaneleri göreceksin. Kütüphane içinde ek örnekler de var.
ambar7

baran123

Bu ccs c de bende internet, ethernet vb işlemleri yapmak istiyorum ama daha tam olarak bir şeyler toparlayamadım:)

bulutay

micro c ile mi yaptınız. yaptıgınız işlemleri sıra ile anlatırsanız çok yardımcı olmuş olursunuz

baran123

@ambar7 hocamın paylaştığı örnek Arduino uygulaması

bulutay

micro c ile mi yaptınız. yaptıgınız işlemleri sıra ile anlatırsanız çok yardımcı olmuş olursunuz

Kabil ATICI

#6

donanım bu.

http://elektronikvelemciler.blogspot.com.tr/2014/09/atmega328p-ile-bootloader-yukleme.html

Bu pic değil. ATmega328p tabanlı bir kart (arduino uno eşdeğeri bir kart) ve o yazılımda bu kart üzerinde çalışacak şekilde düzenlenmiştir. (arduino bootloader kullanarak ön yüklemesi yapılmış)

Yaptığımız bir şey yok, oradaki githup doysalısını indirdik Arduino
http://arduino.cc/
sitesinden indirdiğimiz program ile derleyip devreye yükledik,
bilgisayar ile bağlayıp besleme verildiğinde bilgisayar bağlantı sağladı,
zaten bir ip numarası verdi, önce bilgisayardan ping attıp çalıştığını onayladıktan sonra 
web browser üzerinden ip numarasını girdimizde kart üzerindeki  web sayfası açıldı.
Ekranda 2 tane buton çıktı.
Bu uygun butona tıklandığında uygun LED yanıp sönmekte.
ip numarası: 192.168.1.2.
Başka bir ekstrası yok.

Ethernet kartı çıkış noktası
http://www.open-electronics.org/low-cost-ethernet-shield-with-enc28j60/
idi.
ambar7

Firzen

Ben mikroC ile kullanmıştım. Libstockta örneği mevcut.
Kararsız...