Low cost Ethernet shield with ENC28J60

By on June 30, 2012
Pin It

Economical alternative to original Arduino ethernet shields, allows data rates up to 10 Mbps and is achieved with a traditional assembly components.

One of the most interesting shield that you can mount on the Arduino platform is certainly the ethernet shield, because enable numerous networking applications such as remote control of systems and users, web access and publication of data, and more yet, the simplicity of finding and integrating open-source libraries on Arduino IDE does the rest. The usefulness of LAN connectivity has meant that the market would respond by offering different ethernet shield, first of all the original Arduino Ethernet Shield, which was accompanied by the good shield by Seeed Studio, both of these circuits are based on the chipset WIZnet W5100, allow multiple socket connections and can work at 100 Mbps

This ethernet shield is low-cost thanks to components used: all traditional mounting (THT). This feature makes the circuit accessible to those who haven’t the equipment to assemble SMD components. The data-rate is limited to 10 Mbps.

 

Wiring diagram

The shield is based on a Microchip ENC28J60 chip that interfaces with Arduino and data conversion according to the ethernet protocol. It integrates the MAC controller, an 8 KB Transmit / Receive Packet Dual Port Buffer and a circular FIFO managed at the hardware level, allows the programming of data retransmission in case of collision.
The MAC controller supports both Unicast, Multicast and Broadcast packets, has a programmable 64-byte pattern within a margin allowed to the user and programmable wake-up on multiple packet formats (Magic Packet, Unicast, Multicast, Broadcast, specific packet match or any packet).

 

In the circuit we see that over all’ENC28J60 there are a standard RJ45 jack with integrated LEDs, filters and line transformers, and a voltage level shifter for the SPI interface to communicate with the Arduino.

MISO is the output data of the slave device and the input of Arduino, while MOSI is the opposite; SCK is the clock that marks the two-way communication on the SPI bus and RESET the reset line, which is also connected to a button that allows you to reset the Ethernet interface, if necessary, manually. The digital D10 and D2 lines of Arduino are used, respectively, for the control of CS (Chip Select, active logic zero) and the reading of INT. U3B is used to adapt the logic levels 0/3, 3 V to those of Arduino 0/5 V.







The ENC28J60 operates with a clock of 25 MHz, defined by the quartz Q1 connected between the pins 23 and 24; the capacitor connected to pin VCAP filters the output voltage (2.5 V) of the internal controller and should preferably be of the type low ESR (low series resistance parasite). The resistor connected to RBIAS is used to bias the LAN transceiver that is part of the pin TPIN + / – and TPOUT + / -.

We conclude the analysis of the circuit diagram of the shield with the power that is drawn by Arduino 5V and Vin through the strip: the first provides the 5 volts continuous stabilized points of the circuit that require them (basically the 74HC125 and the resistance of pull Line-up reset and Chip Select) and the second give power to the integrated regulator U2, which creates the 3.3 volts needed to power the microcontroller and circuits contained in the RJ45 jack.


BOM

[code]

R1: 47 ohm
R2: 47 ohm
R3: 18 ohm
R4: 47 ohm
R5: 47 ohm
R6: 270 ohm
R7: 270 ohm
R8: 2,7 kohm
R9: 10 kohm
R10: 10 kohm
R11: 10 kohm

C1: 100 nF
C2: 100 nF
C3: 100 nF
C4: 100 nF
C5: 470 µF 16 VL
C6: 10 µF 63 VL
C7: 15 pF
C8: 15 pF
C9: 470 µF 16 VL
C10: 100 nF

U1: ENC28J60
U2: LD1086-V33
U3: 74HC125

RST: Microswitch

Q1: 25 MHz

RJ45: RJ45 (RJ45EM)

– chip holder 7+7
– chip holder  14+14
– Strip M/F 6 (2 pz.)
– Strip M/F 8 (2 pz.)
– Strip F 2×3

[/code]

The library for ENC28J60

 

The original library from which we derived can be downloaded from the site https://github.com/jcw/ethercard ; from our site you can download the library itself but with a higher number of application examples.

Here you will find a sketch example to build a Web Server, in particular, in the current web page you will see the hours: minutes: seconds elapsed from the ignition of Arduino.

 

 


Download ZIP File







Library Ethernet shield with ENC28J60 

Download ZIP File

Gerber File

Store



jlcpcb.com



About Boris Landoni

Boris Landoni is the technical manager of Open-Electronics.org. Skilled in the GSM field, embraces the Open Source philosophy and its projects are available to the community.

60 Comments

  1. Ashwani

    June 30, 2012 at 6:13 PM

    Hi,

    This will really help in controlling stuff from internet like wireless ac/dc switches.

    Regards,
    Ashwani Sihag

  2. Peter

    July 11, 2012 at 9:22 AM

    Are you willing to share the eagle/kicad files?

    Peter

  3. Boris Landoni

    July 11, 2012 at 9:25 AM

    I’m sorry but I haven’t the Eagle file.
    If it’s fine for you I can share the gerber file of course.

  4. Pingback: Cerix's Blog » Arduino Ethernet shield economico

  5. Matt

    July 11, 2012 at 1:43 PM

    Is there a parts list you’d share with us?
    I’d really like to try and make my own.

  6. Boris Landoni

    July 11, 2012 at 1:48 PM

    @ Matt
    Sorry I forgot the BOM.
    Now is on line ;-)

  7. Boris Landoni

    July 11, 2012 at 4:33 PM

    And I add the Gerber files

  8. peter

    July 11, 2012 at 8:47 PM

    Thanks for the gerbers, what CAD package did you use to design it? ny chance of sharing the source files?

    Peter

  9. Boris Landoni

    July 12, 2012 at 8:28 AM

    I used Easy PC (number One system).
    http://www.numberone.com/
    It isn’t a free sfw.
    I can share the source without problem.
    Do you can open it?

  10. Pingback: .NET i jiné ... : Odkazy z prohlížeče – 19.7.2012

  11. NMS

    August 10, 2012 at 10:56 AM

    How comes that in the ENC28J60 DATASHEET they say to use coils in TPIN and TPOUT ports and you don’t use them in this shield? their picture (http://i48.tinypic.com/mlio00.png)

    Btw nice project! Thanks.

  12. gordon

    August 17, 2012 at 5:20 PM

    Why we need the 3.3 voltage regulator? for arduino old versions?

    the arduino uno already have 3v3.

    I’m very interested in build this, I’ll do it on my vacations.

    TIP: Microchip can send you a couple of free sample of ENC28J60…

  13. ankush tripathi

    August 23, 2012 at 12:55 PM

    can we replace the LD1086-V33 integrated regulator with LD11173.3V

  14. Boris Landoni

    August 28, 2012 at 8:59 AM

    @NMS
    hi we use an RJ45 port with coils inside

  15. Boris Landoni

    August 28, 2012 at 9:03 AM

    @gordon
    The arduino 3.3V regulator can provide
    “DC Current for 3.3V Pin 50 mA”
    The ENC28J60 required
    “IDD Operating Current — 250 mA, VDD = 3.45V, FCLK = 10 MHz, SO = Open”

  16. Boris Landoni

    August 28, 2012 at 9:06 AM

    @ankush tripathi
    Yes of course.
    Check the Pin out

  17. Mat

    September 1, 2012 at 5:50 PM

    I’ve managed to put one of these together on a breadboard but I’m finding the connection is quite sporadic. Running ping continuously from Windows gives about 50% packet loss, with the packets that are returned usually coming in small groups (2-3 packets). Might you have any guesses at where the problem could be? The major difference between my board and your diagram is the RJ45 port, mine is a Stewart SI-60002-F (http://goo.gl/Q1ExQ) and I’ve only wired TPIN+/- and TPOUT+/- to pins 1/3 and 4/6 on the jack respectively, all other contacts are open. The other difference is that I’ve used a complete oscillator unit instead of a crystal, but the controller datasheet claims this is ok. Any help would be greatly appreciated, I’m new to all this!

    • Mat

      September 2, 2012 at 10:33 AM

      I believe I’ve fixed the issue – resoldered my connector with shorter wires … think I might have been subject to signal degradation due to transmission on untwisted pairs.

      • BorisLandoni

        September 3, 2012 at 11:11 AM

        Hi Mat.
        Good news, probaly using a breadboard you find this problem.

  18. Pingback: Android + Arduino + ethernet (TCP/IP)

  19. bing

    October 11, 2012 at 9:06 AM

    Is it work with Mega???

  20. SMcn34

    October 16, 2012 at 9:50 PM

    I built the circuit and my code compiles with no problem, I am trying similar code but it is DHCP. My code seems to get stuck on
    if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)

    when I am running it. Nothing happens after that point. Any ideas?

  21. SMcn34

    November 9, 2012 at 1:41 AM

    Having trouble finding RJ45 that fits the dimensions for this pcb. Can anyone give me a serial number for an RJ45 that fits?

  22. LPS

    November 21, 2012 at 5:13 PM

    Hi,

    I have a few questions:

    — Is it possible to use the Arduino Ethernet library directly?

    — Whats more or less the price diference?

    • BorisLandoni

      November 21, 2012 at 5:15 PM

      There is a link for the library. The library is not the same of the original Arduino ethernet shield.
      The price is about the halt

  23. Lutz

    January 8, 2013 at 10:38 AM

    Am I right that it is online possible to run this shield if you power it over the power connector? USB only isn’t possible, is it?

    • BorisLandoni

      January 8, 2013 at 11:07 AM

      You have to power the Arduino with an external power supply. The USB isn’t enough

      • Lutz

        January 8, 2013 at 11:30 AM

        Ah ok. Thanks. Is it possible that I power the Arduino with 5V? So the shield also get’s 5V?

        • BorisLandoni

          January 8, 2013 at 11:31 AM

          No problem for the shield, but Arduino need not less then 7V

          • Lutz

            January 8, 2013 at 11:37 AM

            Ok. Will power the arduino and shield with 12V. Hope it’ll be suitable for both.

  24. Pingback: ENC28J60 Ethernet Module | เว็บบล็อกคนพันธุ์ตรรกะ เพราะชีวิตมีมากกว่า 0 และ 1

  25. Luko28

    April 9, 2013 at 10:11 PM

    Hmm, 3.3V is needed for ENC and RJ45, here you are using LD1086-V33 witch is 1.5A, but it shouldn’t be problem to use LD111V33 witch is only 800mA, or I am wrong?

    • BorisLandoni

      April 10, 2013 at 8:49 AM

      800 mA is good, don’t worry

      • Luko28

        April 10, 2013 at 7:01 PM

        Thx for the reply, I just wanted to make sure :)

  26. noob

    May 14, 2013 at 10:16 AM

    Hi!
    I ask you to excuse me for the stupid question of a newbie…
    I am trying to make my first electronic card. I have dowloaded the two copper layer (bottom and top) I have made the card, and I am about to solder the components. I noticed that some copper paths are positionned just under the RJ45 connector! So my question is, how am I supposed to solder?
    Any help or advice?

    FG

    • BorisLandoni

      May 15, 2013 at 9:32 AM

      Normaly you hate to use a two layer PCB, with vias.

  27. noob

    May 15, 2013 at 9:12 AM

    perhaps someone has an eagle file of this project?

    • BorisLandoni

      May 15, 2013 at 9:33 AM

      I’m sorry, not available

  28. I Need Help Please

    May 24, 2013 at 6:17 PM

    Can anyone give me the schematic of this Board Please :)

    • BorisLandoni

      May 30, 2013 at 8:05 AM

      ?
      In this post

  29. john

    June 3, 2013 at 10:42 AM

    Hi everyone, i made the schematic but i can’t make it work properly, any help please….

    • BorisLandoni

      June 13, 2013 at 2:33 PM

      be sure to connect the spi pins

      • john

        June 26, 2013 at 6:25 AM

        I have connected them but still not working

        • BorisLandoni

          July 3, 2013 at 7:43 AM

          Could you send me a photo?

          • Noob

            July 7, 2013 at 7:04 PM

            Can you please send me the picture of a bare pcb please, both sides?

          • BorisLandoni

            July 9, 2013 at 9:16 AM

            In this post there are a lot of photos…

  30. Mike

    July 5, 2013 at 6:45 PM

    can I get the bare pcb from you?

  31. Noob

    July 7, 2013 at 6:37 PM

    Can someone confirm me that all the components have to be soldered on the face where “8955” is written on the pcb?

  32. Matthew Smith

    December 29, 2013 at 1:01 AM

    Anyone know why such large caps are used on either side of the 3.3V regulator? The spec sheet for that model says that 10uF or more on the output side is needed for stability but 470uF seems insane! Was wondering if experience led to that…

    • BorisLandoni

      January 3, 2014 at 11:55 AM

      We use 470, more is better than less :-)

      • Matthew Smith

        January 3, 2014 at 5:52 PM

        I was wondering if real-world experience lead to that increase or was that just chosen from the start…

  33. Pingback: Links and References

  34. Jacopo

    December 28, 2014 at 9:21 PM

    hi , please help meeee : when I connect the board ethernet to arduino , they doesen’t work ( the led ON of arduino isn’t on now)

  35. Elad

    January 15, 2015 at 10:24 AM

    Hi Boris, great job with the design.

    Can you please elaborate on the role of the 74HC125 in the board since it does not appear in the schematic? if I understand correctly it is used to isolate the SPI lines from the arduino instead of an optocoupler?

    Thanks!

    • BorisLandoni

      January 15, 2015 at 9:21 PM

      In the schematics is U3

  36. blipton

    May 31, 2015 at 6:25 AM

    Is there a sequence of command/reads that would indicate if the ENC28J60 is running and ready?

    The RJ45 jack shows the green light on, and the orange light blinks whenever the connected pc tries to ping it or request a web page from it. However, it always times out (the micro never sees the request)… So not sure if it’s the host not configured correctly (crossover cable, static ip) or if it’s the micro software (tcp/ip stack, static ip, spi) or if it’s the jumper wires (spi, power) going to the ENC module.

    With the logic analyzer, the SPI communication seems reasonable, that is, nCS goes low followed by 8 SCLKS (1Mhz), and then the expected transmitted data that the micro sends. The ENC does often respond with non-zero data. The SPI mode is 0 (CPOL=CPHA=0 ; Data sampled on Rising edge).

    https://i.imgur.com/WEXyvhp.jpg

    This is the spi activity to/from the enc28j60 module
    Out In
    FFh 00h
    FFh 00h
    BFh 00h
    03h 00h
    9Fh 00h
    00h 00h
    48h 00h
    00h 00h
    49h 00h
    00h 00h
    4Ch 00h
    00h 00h
    4Dh 00h
    00h 00h
    4Ah 00h
    FFh 00h
    4Bh 40h
    07h 00h
    4Ch 40h
    FFh 00h
    4Dh 40h
    07h 04h
    BFh 00h
    03h 02h
    9Fh 80h
    01h 01h
    58h 50h
    B1h A0h
    48h 48h
    3Fh 38h
    49h 49h
    30h 30h
    50h 50h
    F9h C0h
    51h 51h
    F7h E0h
    BFh A0h
    03h 03h
    9Fh 90h
    02h 02h
    40h 40h
    0Dh 0Dh
    41h 41h
    00h 00h
    82h 82h
    32h 32h
    46h 46h
    12h 12h
    47h 47h
    0Ch 0Ch
    44h 44h
    12h 12h
    4Ah 4Ah
    DCh D8h

    Any suggestions how to see if the enc28j60 chip is working properly?

  37. Jan

    September 10, 2017 at 1:09 PM

    Hello,
    Unfortunately I had no success establishing a lan connection. It says:
    [webClient]
    Failed to access Ethernet controller

    Are there differences between the RJ45 components? Which one can you recommend?

Leave a Reply