صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 10 از 18
Like Tree15 لایک

موضوع: ماژول شبکه enc28j60

  1. #1
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138

    Lightbulb ماژول شبکه enc28j60

    ماژول شبکه ENC28J60
    ماژول اترنت ENC28J60 ، ماژولی کوچک و مناسب است که با بهره گیری از آی سی کنترلر اترنت ENC28J60 دارای ویژگی هایی است که امکان استفاده از پروتکل های شبکه را فراهم می کند.این ماژول بصورت مستقیم و با استفاده از رابط SPI به آردوینو متصل می شود و ارتباط شبکه را با سرعت 10Mbps پشتیبانی می کند. این ماژول به شما این امکان را می دهد که برد آردوینو خود را آنلاین کنترل کنید.شما با استفاده از 10 سیم می توانید این ماژول را به آردوینو خود متصل کنید.

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 1.jpg
مشاهده: 452
حجم: 25.9 کیلو بایت

    مشخصات
    چیپ اترنت ENC28J60 ،پکیج SOP28
    رابط SPI
    کانکتور RJ45
    نشانگر تغذیه LED
    ولتاژ 3.3V
    سازگار با آردوینو

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: 2.jpg
مشاهده: 699
حجم: 25.3 کیلو بایت

    کاربردها
    سنسورهاي تحت شبكه
    مونيتورينگ تجهيزات پزشكي و آزمايشگاهي
    كنترل سيستم ها و تجهيزات برقي و الكترونيكي از طريق اينترنت
    شبكه كردن مجموعه اي از ميكروكنترلرهايي كه با فاصله زياد از هم قرار دارند
    وب سرورهاي اينترنتي

    مثال
    در این مثال با استفاده از ماژول اترنت می توانید آردوینو خود را به کامپیوتر متصل کرده و یک وب سرور ایجاد کنید.

    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: ENC28J60 Ethernet module_bb.jpg
مشاهده: 1139
حجم: 85.1 کیلو بایت

    کد:
    #include "Ethernet.h" // change MAC and IP address if necessary static uint8_t mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x24}; static uint8_t myip[4] = {192,168,0,15}; static char baseurl[]="http://192.168.0.15/"; static uint16_t mywwwport =80; #define BUFFER_SIZE 500 static uint8_t buf[BUFFER_SIZE+1]; #define STR_BUFFER_SIZE 22 static char strbuf[STR_BUFFER_SIZE+1]; Ethernet es = Ethernet(); // prepare the webpage by writing the data to the tcp send buffer uint16_t print_webpage(uint8_t *buf); int8_t analyse_cmd(char *str); void setup(){ /*initialize enc28j60*/ es.E_enc28j60Init(mymac); es.E_enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz delay(10); /* Magjack leds configuration, see enc28j60 datasheet, page 11 */ // LEDA=greed LEDB=yellow // 0x880 is PHLCON LEDB=on, LEDA=on // enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00); es.E_enc28j60PhyWrite(PHLCON,0x880); delay(500); // 0x990 is PHLCON LEDB=off, LEDA=off // enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00); es.E_enc28j60PhyWrite(PHLCON,0x990); delay(500); // 0x880 is PHLCON LEDB=on, LEDA=on // enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00); es.E_enc28j60PhyWrite(PHLCON,0x880); delay(500); // 0x990 is PHLCON LEDB=off, LEDA=off // enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00); es.E_enc28j60PhyWrite(PHLCON,0x990); delay(500); // 0x476 is PHLCON LEDA=links status, LEDB=receive/transmit // enc28j60PhyWrite(PHLCON,0b0000 0100 0111 01 10); es.E_enc28j60PhyWrite(PHLCON,0x476); delay(100); //init the ethernet/ip layer: es.E_init_ip_arp_udp_tcp(mymac,myip,80); } void loop(){ uint16_t plen, dat_p; int8_t cmd; plen = es.E_enc28j60PacketReceive(BUFFER_SIZE, buf); // plen will ne unequal to zero if there is a valid packet if(plen!=0){ // arp is broadcast if unknown but a host may also verify // the mac address by sending it to a unicast address. if(es.E_eth_type_is_arp_and_my_ip(buf,plen)){ es.E_make_arp_answer_from_request(buf); return; } // check if ip packets are for us: if(es.E_eth_type_is_ip_and_my_ip(buf,plen)==0){ return; } if(buf[IP_PROTO_P]==IP_PROTO_ICMP_V && buf[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V){ es.E_make_echo_reply_from_request(buf,plen); return; } // tcp port www start, compare only the lower byte if (buf[IP_PROTO_P]==IP_PROTO_TCP_V && buf[TCP_DST_PORT_H_P]== 0 && buf[TCP_DST_PORT_L_P]== mywwwport){ if (buf[TCP_FLAGS_P] & TCP_FLAGS_SYN_V){ // make_tcp_synack_from_syn does already send the syn,ack es.E_make_tcp_synack_from_syn(buf); return; } if (buf[TCP_FLAGS_P] & TCP_FLAGS_ACK_V){ es.E_init_len_info(buf); // init some data structures dat_p=es.E_get_tcp_data_pointer(); if (dat_p==0){ // we can possibly have no data, just ack: if (buf[TCP_FLAGS_P] & TCP_FLAGS_FIN_V){ es.E_make_tcp_ack_from_any(buf); } return; } if (strncmp("GET ",(char *)&(buf[dat_p]),4)!=0){ // head, post and other methods for possible status codes // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html plen=es.E_fill_tcp_data_p(buf, 0, PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>200 OK</h1>")); goto SENDTCP; } if (strncmp("/ ",(char *)&(buf[dat_p+4]),2)==0){ plen=print_webpage(buf); goto SENDTCP; } cmd=analyse_cmd((char *)&(buf[dat_p+5])); if (cmd==1){ plen=print_webpage(buf); } // send ack for http get SENDTCP: es.E_make_tcp_ack_from_any(buf); // send data es.E_make_tcp_ack_with_data(buf,plen); } } } } // The returned value is stored in the global var strbuf uint8_t find_key_val(char *str,char *key) { uint8_t found=0; uint8_t i=0; char *kp; kp=key; while(*str && *str!=' ' && found==0){ if (*str == *kp){ kp++; if (*kp == '\0'){ str++; kp=key; if (*str == '='){ found=1; } } }else{ kp=key; } str++; } if (found==1){ // copy the value to a buffer and terminate it with '\0' while(*str && *str!=' ' && *str!='&' && i<STR_BUFFER_SIZE){ strbuf[i]=*str; i++; str++; } strbuf[i]='\0'; } return(found); } int8_t analyse_cmd(char *str) { int8_t r=-1; if (find_key_val(str,"cmd")){ if (*strbuf < 0x3a && *strbuf > 0x2f){ // is a ASCII number, return it r=(*strbuf-0x30); } } return r; } uint16_t print_webpage(uint8_t *buf) { uint16_t plen; plen=es.E_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n")); plen=es.E_fill_tcp_data_p(buf,plen,PSTR("<center><p><h1>Welcome to Enc28j60 Ethernet Module</h1></p> ")); plen=es.E_fill_tcp_data_p(buf,plen,PSTR("<hr><br> <h2><font color=\"blue\">-- Your Arduino is online now -- ")); plen=es.E_fill_tcp_data_p(buf,plen,PSTR("<br> Control digital outputs ")); plen=es.E_fill_tcp_data_p(buf,plen,PSTR("<br> Read digital analog inputs HERE ")); plen=es.E_fill_tcp_data_p(buf,plen,PSTR(" <br></font></h2> ") ); plen=es.E_fill_tcp_data_p(buf,plen,PSTR("</center><hr> <a href=\"http://www.elechouse.com\">www.elechouse.com<a>")); return(plen); }
    مرجع:
    Elechouse, Arduino Play House
    ENC28J60 Ethernet Module Arduino Compatible | eBay

    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط hesam.time : 11-23-2013 در ساعت 02:57 PM

  2. #2
    Senior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    183
    سلام
    میشه پورت های این ماژولو برای Mega هم بگین؟

  3. #3
    Senior Member
    تاریخ عضویت
    Mar 2013
    محل سکونت
    Iran
    نوشته ها
    138
    سلام
    اینم واسه Arduino Due/UNO/Mega
    برای دیدن سایز بزرگ روی عکس کلیک کنید

نام: Capture.JPG
مشاهده: 488
حجم: 17.5 کیلو بایت
    ویرایش توسط hesam.time : 11-22-2013 در ساعت 06:39 PM

  4. #4
    Senior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    183
    فکر کنم این ماژول با من مشکلداره 10 تا برنامه بیشتر رو براش ریختم هر چیرو هم بگین چک کردم از اتصالات ، کابل ، آی پی ، وصل کردن به مودم با DHCP وصل کردن مستقیم هم با کابل کراس هم کابل شبکه و.........
    ولی دیونم کرده چرا کار نمیکنه آخه؟

  5. #5
    Senior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    183
    حالا دست دست
    پس از ریاضت های مدید و کوبیدن سر به دیوار تونستم راش بندازم
    فقط چند نکته رو بگم اول اینکه کلا کتابخونه بالا با شماتیک پایه هایی که بالا گذاشتین مربوط به این ماژول نیست حالا شماتیک مهم نیست چون رو خوده ماژول نوشته ولی از همه مهم تر کتابخونه است که این ماژول یکی مخصوص داره که بعد از زیرورو کردن کل یوتیب و GitHub یافتمش
    هم کد وهم کتابخونه رو میزارم تا بقیه دوستان هم استفاده کنند

  6. #6
    Senior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    183

    کتابخانه وکد ره اندازی

    شماتیک پایه ها واسه Mega 2560
    mosi <-> 51
    miso <-> 50
    sck <-> 52
    ss <-> 15
    rst <-> reset
    int <->
    CLK <->
    Vcc <-> 5v
    gnd <-> gnd

    چند تا توضیح واسه راحت تر کار کردن اونم اینکه
    1- در خط 6 ثابتی به نام STATIC وجود داره که مقدار نوشته شده جلوش 1 هست یعنی اینکه نیاز به تنظیم آی پی نداره و DHCP زحمت آی پی دادنشو میکشه اگر نمیخواین این طور باشه و میخواین خودتون بهش آی پی بدین اون عدد رو به 0 تبدیل کنید و بعد آی پی تونو داخل آرایه myip بنویسین
    2- در خط 14 در بین پارمترهای تابع عدد 15 وجود داره که تعیین کننده ی پایه ss ماژول هست که وصل کردین به پین 15 و خیلی خیلی مهم هست اگر هر برنامه نمونه ای از کتابخون رو باز کنید این کد رو حتما حتما باید اضافه کنید در غیر این صورت مشکل میخورید هر جا این کد نبود یک (کاما) , بزارید و عدد 15 رو بنویسید
    (در ضمن اگر ss رو به پین 53 مگا وصل کنید نیازی به این کد نیست ولی من خودم نتیجه نگرفتم و خیلی الافم کرد بهتره از 15 استفاده کنید )


    کد:
    // Present a "Will be back soon web page", as stand-in webserver.
    // 2011-01-30 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php
     
    #include <EtherCard.h>
    
    #define STATIC 1  // set to 1 to disable DHCP (adjust myip/gwip values below)
    
    #if STATIC
    // ethernet interface ip address
    static byte myip[] = { 192,168,1,200 };
    // gateway ip address
    static byte gwip[] = { 192,168,1,1 };
    #endif
    
    // ethernet mac address - must be unique on your network
    static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
    
    byte Ethernet::buffer[500]; // tcp/ip send and receive buffer
    
    char 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>This service is currently unavailable</h3>"
        "<p><em>"
          "The main server is currently off-line.<br />"
          "Please try again later."
        "</em></p>"
      "</body>"
    "</html>"
    ;
    
    void setup(){
      Serial.begin(57600);
      Serial.println("\n[backSoon]");
      if (ether.begin(sizeof Ethernet::buffer, mymac,15) == 0) 
        Serial.println( "Failed to access Ethernet controller");
    #if STATIC
      ether.staticSetup(myip, gwip);
    #else
      if (!ether.dhcpSetup())
        Serial.println("DHCP failed");
    #endif
    
      ether.printIp("IP:  ", ether.myip);
      ether.printIp("GW:  ", ether.gwip);  
      ether.printIp("DNS: ", ether.dnsip);  
    }
    
    void loop(){
      // wait for an incoming TCP packet, but ignore its contents
      if (ether.packetLoop(ether.packetReceive())) {
        memcpy_P(ether.tcpOffset(), page, sizeof page);
        ether.httpServerReply(sizeof page - 1);
      }
    }
    شب همگی خوش هر چند که باید گفت صبح بخیر
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط navidnkh : 11-23-2013 در ساعت 01:15 AM

  7. #7
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    نقل قول نوشته اصلی توسط navidnkh نمایش پست ها
    شماتیک پایه ها واسه Mega 2560
    mosi <-> 51
    miso <-> 50
    sck <-> 52
    ss <-> 15
    rst <-> reset
    int <->
    CLK <->
    Vcc <-> 5v
    gnd <-> gnd

    چند تا توضیح واسه راحت تر کار کردن اونم اینکه
    1- در خط 6 ثابتی به نام STATIC وجود داره که مقدار نوشته شده جلوش 1 هست یعنی اینکه نیاز به تنظیم آی پی نداره و DHCP زحمت آی پی دادنشو میکشه اگر نمیخواین این طور باشه و میخواین خودتون بهش آی پی بدین اون عدد رو به 0 تبدیل کنید و بعد آی پی تونو داخل آرایه myip بنویسین
    2- در خط 14 در بین پارمترهای تابع عدد 15 وجود داره که تعیین کننده ی پایه ss ماژول هست که وصل کردین به پین 15 و خیلی خیلی مهم هست اگر هر برنامه نمونه ای از کتابخون رو باز کنید این کد رو حتما حتما باید اضافه کنید در غیر این صورت مشکل میخورید هر جا این کد نبود یک (کاما) , بزارید و عدد 15 رو بنویسید
    (در ضمن اگر ss رو به پین 53 مگا وصل کنید نیازی به این کد نیست ولی من خودم نتیجه نگرفتم و خیلی الافم کرد بهتره از 15 استفاده کنید )


    کد:
    // Present a "Will be back soon web page", as stand-in webserver.
    // 2011-01-30 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php
     
    #include <EtherCard.h>
    
    #define STATIC 1  // set to 1 to disable DHCP (adjust myip/gwip values below)
    
    #if STATIC
    // ethernet interface ip address
    static byte myip[] = { 192,168,1,200 };
    // gateway ip address
    static byte gwip[] = { 192,168,1,1 };
    #endif
    
    // ethernet mac address - must be unique on your network
    static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
    
    byte Ethernet::buffer[500]; // tcp/ip send and receive buffer
    
    char 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>This service is currently unavailable</h3>"
        "<p><em>"
          "The main server is currently off-line.<br />"
          "Please try again later."
        "</em></p>"
      "</body>"
    "</html>"
    ;
    
    void setup(){
      Serial.begin(57600);
      Serial.println("\n[backSoon]");
      if (ether.begin(sizeof Ethernet::buffer, mymac,15) == 0) 
        Serial.println( "Failed to access Ethernet controller");
    #if STATIC
      ether.staticSetup(myip, gwip);
    #else
      if (!ether.dhcpSetup())
        Serial.println("DHCP failed");
    #endif
    
      ether.printIp("IP:  ", ether.myip);
      ether.printIp("GW:  ", ether.gwip);  
      ether.printIp("DNS: ", ether.dnsip);  
    }
    
    void loop(){
      // wait for an incoming TCP packet, but ignore its contents
      if (ether.packetLoop(ether.packetReceive())) {
        memcpy_P(ether.tcpOffset(), page, sizeof page);
        ether.httpServerReply(sizeof page - 1);
      }
    }
    شب همگی خوش هر چند که باید گفت صبح بخیر
    ممنون از نکات مفید شما دوست عزیز کار مارو هم راه انداختی

  8. #8
    Junior Member
    تاریخ عضویت
    Nov 2013
    نوشته ها
    4
    با سلام
    لطفا پورتهای این ماژول برای برد مینی پرو توضیح دهید

  9. #9
    Junior Member
    تاریخ عضویت
    Mar 2014
    نوشته ها
    3

    Angry

    سلام
    من از این ماژول می خوام برای خواندن اطلاعات یک سنسور دما و رطوبت از طریق اینترنت استفاده کنم.
    اما متأسفانه هرکاری کردم تنونستم اونی رو که از این سایت خریدم راه بندازم و چند روزه که شدیداً درگیرم کرده.
    البته از Arduino استفاده نمی کنم و اون رو به یک ATMega8 وصل کردم.
    برنامه پیوست هم یکی از کدهایی هست که باهاش ماژول رو تست کردم. (کامپایل شده با Atmel Studio 6)

    نکته ای که من رو شک انداخته جریان مصرفی 140mA ماژول هست ! خود چیپ 28J60 هم داغ می کنه. این طبیعی هست یا ماژول مشکل داره ؟ (LEDهای پاور و شبکه کار می کنه و چشمک هم می زنه)
    ممنون اگر راهنمایی کنید.
    فایل های پیوست شده فایل های پیوست شده

  10. #10
    Junior Member
    تاریخ عضویت
    Sep 2014
    نوشته ها
    2
    با سلام
    خواهش میکنم آموزش کار با این ماژول و کلا ماژول هایی که کار کردن با آنها به نوعی با استاندارد آردوینو متفاوت است را در قالب یک پروژه ساده تنها جهت راه اندازی توضیح دهید. به شخصه این ماژول را 3 هفته میباشد که خریداری کردم اما هنوز نتوانستم آنرا راه اندازی کنم .

صفحه 1 از 2 12 آخرینآخرین

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO