ENC28J60 Ethernet Breakout Board

One of the first things I wanted to buy when I got my Arduino board was an Ethernet shield. The ability to interface with the internet opens up a raft of possible applications for the device.

After picking my jaw up off the ground after seeing the price of the of the official Wiznet W5100 based Arduino Ethernet shield, I decided to go for the cheaper MicroChip ENC28J60 based nuelectronics Ethernet shield. The only problem was that by the time I had the funds to buy the shield, it had gone out of stock.

The solution was to either buy the ENC28J60 parts and build my own on a breadboard, or buy a ENC28J60 breakout board. I decided to splash out with the cash I saved compared to the official shield, and get both. :)

The nice thing about the breakout board compared to a Arduino shield, is that if I ever decide to change to another type of microcontroller, I can simply plug in and interface using the SPI bus, without being tied into the non-breadboard friendly Arduino shield format.

The my schematic is essentially the same as the nuelectronics schematic, only I replaced the SN74HCT08D with a SN74HC125N simply because I had one to hand.

The ENC28J60 runs at 3.3, while the ATmega328 runs at 5V. Normally this is a major problem, but luckily for us, the ENC28J60 is 5V tolerant. That means no level shifting is needed on the 5V lines controlled by the ATmega328 (CS, SCK, SI). The Tristate Buffer is used to shift the lines controlled by the ENC28J60 (SO, INT) from 3.3V to 5V. The lines never need to be put in a high impedance mode, so just tie the output enable line to ground.

Once connected, I downloaded Andrew Lindsay's EtherShield library, and uploaded the example webserver program to the Arduino, and voila...

user@host ~
$ ping 192.168.1.22
PING 192.168.1.22 (192.168.1.22): 56 data bytes
64 bytes from 192.168.1.22: icmp_seq=0 ttl=64 time=2 ms
64 bytes from 192.168.1.22: icmp_seq=1 ttl=64 time=1 ms
64 bytes from 192.168.1.22: icmp_seq=2 ttl=64 time=1 ms
64 bytes from 192.168.1.22: icmp_seq=3 ttl=64 time=1 ms

----192.168.1.22 PING Statistics----
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip (ms)  min/avg/max/med = 1/1/2/1

33 thoughts on “ENC28J60 Ethernet Breakout Board

  1. Ola, tenho a mesma placa que esta, mas tenho duvidas sobre sua ligação com o arduino, você teria um exemplo de como ligar no arduino?

  2. Hello, I have the same plate as this, but I have doubts about their connection to the Arduino, you have an example of how to connect the arduino?

  3. this circuit is very complex..can anybody redraw it as labelled schematic or connect it more spaciously

  4. Do you have a simplier schematic (I mean, pin to pin or similar). I agree with Abhishek that circuit i very complex and there's no correspondence between the ethernet board pin labels and schematic.

  5. Hi.I have an arduino mega 1280 and an ethernet shield enc28j60.I made an application like yours but on my page i have a button with a html set command who on/off a led. in my lan all works perfect but when i access my arduino outside from my lan, page loaded , but when i press my on off button , doesn't work and i replay an error message but not from my external ip , from my internal lan ip.
    Please give me a solutuion if you have.Thanks a lot.

    • Hi mihai,

      So you can access your device on your LAN, but you cannot access the device from WAN?

      Have you got your ports properly forwarded through your router?

      What do you mean by 'replay an error message'?

      Jon

  6. Hello
    yes i can access and push the button from my network , but when i access my arduino outside from my network , i can access it , i can push it but when command from the button must be process by arduino , in my web page i receive "can not open page".
    forward works , because if doesn't work i can not access my arduino for the first time , before push the button.
    Thanks a lot for all

    • Hi mihai,

      I've no idea what is causing this issue.

      You might be better to add some debugging information to the serial console, or else use wireshark to see what is happening to the packets as they traverse the NAT.

      Jon

  7. Arduino & Ethernet | Ménélas BLOG

  8. How do you set up the server to handle button clicks from within the served page?
    Can you also send it commands externally?What is the format of these commands?
    Thanks

  9. Hi !
    Great post ! I had a spare ENC28J60 (I bought it to use it with a microchip µC), and wanted to use it with my newly bought arduino.
    By the way, I did not find the "WOL" on the given schematic: if suggest that it is the pin labelled "NC" on the pdf file. Right ?

  10. Hi, has anybody connect this ethernet module with an arduino nano, I yes could you describe which pins of them have to be connected? Thanks, JKG

  11. Having a problem.

    Hi,

    I followed the instructions here (I believe) and I am not getting an webserver or ping responses when I test the code.

    The LED on the module is red but nothing else is happening.

    Has anybody got a list of the pin connections from the module to the Arduino. I'm trying to figure it out from the schematic, but I'm not sure if I'm mapping correctly.

    Any info would be appreciated.

    Thanks,
    Albert.

  12. can you please help me i can't figure out from the schematic how to join this breakout board with the arduino uno... can you make a more simple schemtic with the 10 pins of the breakout and arduiono and the chip...

  13. i am using enc28j60 breakout board like you do and i connected the spi lines directly and ethernet shield library does not work :(

    i guess it has to do with SN74HCT08D, could you please show me a simple schematic on how to wiring them and will using this make the ethershield library work on enc28j60 breakout board ??

  14. can you please upload the wiring diagram again, i cant understand the nuelectronics schematic....

    thank you

  15. hey thanks i tried ur exact schematic, but it does not work for me still do u think it is because of the different and gate i am using "m74hct08"??? or is it because the new etherShield library is modified?

    • Hi Kiriti,

      That library is designed for the ethershield. Make sure that you have the csPin matches the schematic.

      Jon

  16. Thanks for a great post! I have a few questions though:

    1. Do you have a pin diagram to show I would connect my board to the Arduino? I have the same board you showed in the first picture, and the libraries don't have any instructions.

    2. Can I make my IP and MAC address absolutely anything I want? Is there anything wrong with the ones which come default in the code?

    3. Can I only connect the ethernet board to my router? It wouldn't be possible to get a connection by connecting it to my laptop's ethernet jack, right?

    Thanks!!

    • Hi capcom,

      1) Have a look at the schematic I drew for Kiriti above.

      2) Yes, you can pick any combination you want. Avoid conflicting IP/MAC address on the same LAN for obvious reasons though.

      3) Yes, that should be possible if you bridge the connection between your laptop's wireless and ethernet interfaces.

      Jon

  17. Luckily, I got it working on my first try. My contribution here is that I used an Seeeduino with 3.3V compatibility switch built in, eliminating the need for the buffers.

    http://www.seeedstudio.com/depot/seeeduino-v30-atmega-328p-p-669.html?cPath=132_133

    I also noticed that there is a discrepancy between how the ~INT line is connected between this

    http://dereenigne.org/arduino/enc28j60-breakout-board#comment-4021

    and Jon's Fritzing diagram. I went with Jon's by connecting to Arduino pin 3 instead of pin 2.

    So, here is the pin connections chart many have been asking for:

    ENC ARD(in 3.3V mode)
    -------------
    INT 3
    SO 12
    SCK 13
    SI 11
    CS 10
    VCC 3.3V
    GND GND

    Good luck and stop by Hong Kong's hackerspace, Dim Sum Labs, when you are in town!

    Cheers
    -William

  18. Hi everybody. !!! BEST WORKING SOLUTION HERE !!!!
    I've got this module.
    I've tried the ethercard library. It's the best one for this module because it's newer smaller, faster etc..
    The EtherShield lib is deprecied
    Just download the excellent ethercard here: https://github.com/jcw/ethercard
    I use arduino 1.0.1
    I use an arduino UNO
    Note that you DON'T NEED the buffer because for the arduino uno (at least), 3.3v or 5v are the same value (HIGH on digital input).
    You don't need the IRQ (INT) pin etheir.
    Just connect this:
    SO 12
    SCK 13
    SI 11
    CS 8 (it's 8 by default with ethercard, not 10, but you can change)
    VCC 3.3V
    GND GND

    Work perfectly
    I hope that you will find this comment helpful.

Leave a Reply