DIY Ethernet shield (W5100)

I’ve made an Ethernet shield compatible with the official one on
through-hole components. Works well just like the original E.shield.
Schematics are similar to the official one, but I have 47nf cap
on RST line to avoid the reset problem with W5100.

I’ve started this project in January 2011 but due to long delays with
PCB manufacturing and other business it reached the real product stage
just now. This was big fun, I had to study datasheets and prior
designs (like Wiznet’s reference schematics, Ethernet shields from
Arduino and Freetronics) and learn about PCB routing.

Apart from PCB, total parts cost is about $12 ($6-7 for the IC, $2 for
the pimped RJ-45, the rest is about $3). PCB cost is about $7-10 on
small runs. So total cost is about $20.

Once you solder the 0.4mm-spaced LQFP chip ]:slight_smile: (which was a minor pain
even with my burnt to crisp $5 noname iron), the rest of the board is very
easy to assemble even for novice hackers without pro soldering

I used gEDA suite to produce board schematics and layout, which
required little of custom symbols to be made. I’ve attached the
schematics image.

A number of problems became evident as soon as I completed my first
Things which would make the board better include lower crystal,
regulator leads leaned, bigger holes for ferrite beads and LED silk marks.
There’s an updated design which adds SEN=!SCS invertor and merges
grounds, layout has been redone from scratch; I haven’t manufactured
any of these.

Such cases.

Bojes, congratulations on getting your board built. It looks a nice and easy board to build

Well done! did you tested it with arduino?

Yes, it completely compatible with the official Ethernet library.

Speaking of hardware, it’s completely compatible with Arduino as well. I just plugged it in and it all worked out of the box.
I’m doing a home sensor network project and W5100 board will be used on central node which gathers data from other sensors.
I use cheap ISM 433 MHz modules and VirtualWire to transmit data.

DS18S20-based temperature sensor prototype setup residing on my balcony is shown on the photo.
Another Arduino with W5100 is installed in another room and shows latest data received from the sensor
when I access it from my local network using laptop with wifi.

Pretty good job, but the WIZ chip seems impossible to solder properly for me, so I think i'll buy an original one hehe.


EDIT: could you please share with us the components list?

yes, it needs a toaster oven I reckon!

Parts list to first version:

| refdes            | device               | quantity | value        | footprint                              |
| CONN1             | 13F-64               |        1 | unknown      | 13F-6X-par                             |
| C1 C2 C3 C6 C7 C9 | CAPACITOR            |        6 | 100n         | ACY-25                                 |
| C4 C5             | CAPACITOR            |        2 | 18n          | ACY-25                                 |
| C11               | CAPACITOR            |        1 | 47n          | ACY-25                                 |
| CONN4 CONN5       | CONNECTOR_6          |        2 | unknown      | CONNECTOR 6 1                          |
| CONN2 CONN3       | CONNECTOR_8          |        2 | unknown      | CONNECTOR 8 1                          |
| X1                | CRYSTAL              |        1 | 25M          | HC49                                   |
| FB1 FB2           | ferrite_bead         |        2 | BL01RN1A1D2B | RES-600P-340L-190D__Yageo-M-TYPE-12.fp |
| J1                | JUMPER               |        1 | unknown      | CONNECTOR 2 1                          |
| D1 D2 D3 D4 D5 D6 | LED                  |        6 | unknown      | LED3                                   |
| U1                | MC33269              |        1 | unknown      | TO220W                                 |
| RN1               | NR1-4-9              |        1 | 1K           | NR1-4-9                                |
| C12 C13           | POLARIZED_CAPACITOR  |        2 | 100u         | RCY100                                 |
| C10 C8            | POLARIZED_CAPACITOR  |        2 | 10u          | RCY100                                 |
| R8                | RESISTOR             |        1 | 10K          | 0.125W_Carbon_Resistor                 |
| R6                | RESISTOR             |        1 | 12K 1%       | 0.125W_Carbon_Resistor                 |
| R11 R12 R9        | RESISTOR             |        3 | 1K           | 0.125W_Carbon_Resistor                 |
| R5                | RESISTOR             |        1 | 1M           | 0.125W_Carbon_Resistor                 |
| R7                | RESISTOR             |        1 | 300 1%       | 0.125W_Carbon_Resistor                 |
| R1 R2 R3 R4       | RESISTOR             |        4 | 49.9         | 0.125W_Carbon_Resistor                 |
| S1                | SWITCH_PUSHBUTTON_NC |        1 | unknown      | SW__Panasonic_EVQPA_Series             |
| U2                | W5100                |        1 | unknown      | LQFP_40P_1300L1_1300L2_80N__WIZnet     |

Second revision is still under construction
(I hope to get PCB’s manufactured by summer).

A better main board with SD card, DS1307 and slots for radio modules
(RFM23 and simple ASK TX/RX modules) is in the works too, picrelated.

I’m doing this for yet another house automation system.

I’ll post schematics and gerbers when it’s done.
PM me if you would be interested in kits.

Nice work! What is the reset problem with the W5100 you mentioned? I have an "official" Arduino Ethernet shield and haven't had any reset issues that I'm aware of.

It was present on older revisions of official ethernet shield. The problem is that Wiznet chip required long 0 signal on reset line to start properly. The workaround (also used in Freetronics shield) is to add a small capacitor on reset line. The problem was resolved in later versions of shield (v5 and v6) when they added STM811 controller to handle reset.

Dzhus: The problem was resolved in later versions of shield (v5 and v6) when they added STM811 controller to handle reset.

Ah, that explains it. Pretty sure I have one with the reset controller. I've also been using some WIZ811MJ modules, and using a separate MCU pin to reset them.

Does this chip has to be burn some bootloader or program. or it's built in function for MC?? i want to do something similar with that chip

Nope, W5100 is ready to go without any extra firmware. Arduino MCUs use SPI to communicate to W5100.

Sorry to awake a 5 year old thread, but I guess such it's inevitable with such a niche discussion :)

Dzhus, I'm really interested in putting together my own board incorporating a W5100 (see here to read about it). Basically an Arduino Nano with wired, PoE ethernet on board. The board's form factor would of course be different to the Nano, as it would definitely need to be bigger, but the idea is to keep it small.

I too have looked at the Freetronics and W5100 shield schematics, but I have so many questions about your project. I'll ask them here, as I couldn't find your contact details on this forum and your avatar isn't clickable!

SPI enable. Your first version just tied high, with a jumper to gnd. Then your second version has a transistor fed by SCS. The Arduino shield uses a 74LVC14D inverter which is according to this page discontinued. What is the purpose of this inverter? With your original version, I'm guessing this means the micro couldn't share the same SPI bus as the W5100, but with your version with transistor, it can? The Freetronics version has a 2N7002, and the schematic says "SPI MISO tri-state by SS/nCS. SPI D10_SS/nCS low = SEN high = SPI enabled". Haven't managed to fully understand what the 2N7002 does here as well.

Your schematic. Sorry I'm not familiar with the software you use, but the little red bits at the end of lines, what do they signify? I can see that some lines / wires are missing between connectors and the chip that are clearly supposed to be connected. I guess the labels can be used to match them? (The labels aren't exactly the same, but it's probably obvious)

1.8VD and 1.8VA. These rails marked on your schematic are connected along with a ferrite bead to W5100 pin V18. I'm guessing this is for supply conditioning, but what exactly does this do? What's the purpose of these rails? I can't see them referred to or linked to anywhere else in the schematic.

On the first version, can you explain the jumpers on SEN pin and /INT?

In your original post, you talk about "lower crystal" and "merging grounds". Can you explain further? What do you mean, lower frequency crystal? Did this cause problems for you, if so what problems? What lower crystal would you use instead? Can you explain the different grounds, e.g. I think I understand there were different ground planes for analog and digital, but I don't understand why. I presume there's only one supply? I'd love to hear a basic explanation about analog and digital ground planes, and different supplies, as I don't really understand the idea of an analog supply or a digital supply... I only understand the idea of supplying a single voltage to a chip.

Thanks in advance!