Are you ready for Ether net on your microcontroller? Circuit Cellar Magazine and WIZnet have teamed up for a design contest with $15,000 in prizes. But you win just by entering the contest! Once your contest entry is accepted, they will send you an evaluation module. This is all you need to get your microcontroller connected to the Web. Circuit Cellar Magazine puts together some of the best design competitions and this one is no exception. WIZnet makes single chip TC/IP solutions. These chips basically take care of the Ether net interface for your micro.

I just received my parts! Pictured above are the WIZ810MJ module and the optional a W5100 chip. The module has the surface mount W5100 installed with all the support parts. You just need to interface via the provided header connectors. One bad thing though, the connectors will not work with bread boards as they are not 0.1″ spacing. The good news is that you can interface using SPI so maybe we don’t have to adapt to many pins.
Magazine Plug:
I want to put in a good word for Circuit Cellar Magazine. They really are one of the best magazines for the electronics hobbyist. I personally subscribe to only three magazines and I cant wait to get my Circuit Cellar each month. The other two are Make and Nuts and Volts. I highly recommend all three. [no I don’t get paid for this
]
WIZnet Arduino:
I plan to interface the WIZnet module to the Arduino. I may even do a PCB spin for the chip to make a module which is better for the bread board. The module is not expensive, about $12, which should not be a problem but for about $12 we should be able to make a breadboard compatible module. The chip is about $4.50/each. You really only need to add a few discrete parts and a RJ45 Jack with built in magnetics. The RJ45 Jack on the module is labeled “PPT RJ113BZ” but I can not find this part online. Let me know if you have a source.
The neat thing about the WIZnet W5100 is that handles all the Ethernet and TCIP stack concerns. You basically just open a connection to the IP Address you need or open a listening socket and wait for request. The part can be interfaced in three ways, two use an 8-Bit bus mode and require a considerable number of I/O lines. This is ideal for external memory designs and would allow for maximum throughput to the Ethernet interface. I plan to use the serial (SPI) interface feature which minimizes the I/O pin count. The part has large internal TX and RX buffers but I don’t expect to do very high speed transfers.
WIZnet provides driver code for PIC microcontrollers and application notes for such things as Internet Radio using their modules. This would make a great project for the Arduino. I am contemplating ideas for an entry but have not decided yet. If you have any suggestions please make a comment. I know the project will use an Arduino Combatable Modern Devices Bare Bones Board but that is about all I have figured out so far.
Circuit Cellar provides an article called “iEthernet Bootcamp” which introduces the WIZnet W5100. It looks like a walk in the park to get Ethernet going on a microcontroller project using this part.
Comments?
Have any of you used the W5100 in a project? Do you have a project entry suggestion? Is there any existing code for the Arduino and this chip/module? Any other magazines like Circuit Cellar, Nuts and Volts, or Make you would recommend?
49 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.
Wow did I read well or this chip can do PPPoE 0.o That’s incredible! So long ENC28J60 it seems
That’s very cool. I can’t wait to see what you’re going to use it for!
(I only mentioned PPPoE as an illustration of my amazement in front of completeness of the features!)
As for the entry… gosh what to choose, weather station, home automation, how about a device that can pool the network to check for failures, remote chat client? Ethernet “voip” intercom? Or the mendatory ethernet enabled RGB lamp? What about the bootloader?
Will be a nice contest. Will make a board for the WIZ810MJ module with a Atmega128 on it. Programming language Bascom-AVR. I am wondering if it is possible to just use the SPI-pins and perhaps an interrupt. May the best man win!!!
Ben Zijlstra
Ben,
I dont yet have experience with the part but I do think you can get buy with jus the SPI and an interrupt pin. Maybe even without the interrupt pin.
Seems to be a good new toy to play and have lot of fun
Yes! I got an email from them and I’m getting a sample.
The next lines are used in SPI-mode.
PWR, GND, CLK, MOSI, MISO, CS and INT. SPI_EN should be high.
Shouldn’t be that difficult (the hardware that is…
Have fun
Ben Zijlstra
w00t I’ve just received mine
Did you ever make a breakout PCB? I’d be really interested, there’s not enough solder for the pump to suck the solder so I can de-solder the headers… As far as I can see only 6 pins are needed (SPI_E) can be enabled permanently on the pcb. Does eagle have compatible headers in the default library?
Ok, so as Follower pointed out I was wrong, SPI_E it pulled to Vcc with a 4.7k resistor. Also, the reset pin is probably a good idea to pull out.
I’ve rigged up the following PCB. I tried making one with the toner method but it didn’t come out too good. My paper’s just not that great (magazine paper) and 48 straight holes is pretty hard without a drill press and using cheap diamond bits :p. More over the first version had JP2 a little off to the right. I’m not sure I want to try again though :/ We’ll see. It’s a small PCB, maybe we could pitch in to make a batch? How much would that cost?
(as usual I’m always on the #arduino channel)
Woops the image was stripped off:
http://img178.imageshack.us/img178/2808/picture3aa1.png
XSmurf,
If you will test and make sure your board layout will do the trick then I will order and pay for the boards. I think we can get 30 or so for about $100 and it will take about 3 weeks. Once the boards come in, I would send you 10 and give the rest away here at uCHobby. What do you say to that?
I’ve been taking some notes on getting the WIZnet module to run with the Arduino here:
http://code.rancidbacon.com/LearningAboutArduinoWIZ810MJ
My progress so far has been to connect the module to the Deci’s 3.3V source and manually trigger the /RESET line to get the module to light both the LEDs when a cable is inserted.
I’m currently using some 1×2 2mm pin pitch jumpers from a junked floppy drive and breadboard jumper wire to connect to the pins. (And a couple of 1×2 and 1×3 2mm cables from a junked CD-ROM drive but they don’t fit across from each other as well as the jumpers.) (Side note: 2.5″ IDE drive cables might be 2mm pitch…)
Until there’s a PCB I would suggest finding some 2mm pitch header connectors and soldering directly to those–I’d be inclined to have someone verify the pins needed either by testing the PCB or the solder direct-to-headers approach.
Unfortunately sleep calls now so I can’t see how easily SPI will be to get working…
Fair enough. I’ve remade the PCB in bought SMD and through-hole version. Not having any SMD parts at hand (or a heat gun to salvage some) I’ll be trying the through board again later today. Hopefully I’ll be able to dig up some better paper. I’ll keep you guys posted
I’ve successfully read register values via SPI without having SPI_EN connected. I only had SCLK, /SCS, MOSI, MISO, /RESET, VCC and GND connections.
Off to try writing and pinging…
Writing registers, configuration for networking and responding to pings work! Plan to upload code when i return.
Updated http://code.rancidbacon.com/LearningAboutArduinoWIZ810MJ with ping demo video and code.
I’ve ported to some degree the WIZnet W5100 driver source so it runs on the Arduino/Atmega168 combo with ~5KB spare in its current state. Unfortunately while I can create a listening socket it doesn’t seem to send/receive data but it does detect connections and disconnections.
The code is on the usual page.
(Oh, and xSmurf got my other code running on his WIZ810MJ PCB with the help of a level shifter.)
Hello all together,
is it O.K. to connect /SCS to +3,3V every time for use
SPI mode? I build a little PCB with Atmega 168 and the
WIZ810MJ and i read different connections off /SCS.
Iàm looking for anybody who want produce the board for
other people, the pcb is 2-layer with 3,3V Low Drop
Regulator and the WIZ810MJ can directly connected to
the pcb.
The .brd File will be posted if i know what to do with the
/SCS PIN
Hello again,
in my last post i mean /SPI_EN not /SCS !
David of uCHobby here…
I will have the PCB’s made on condition that I can give them away as part of the uCHobby give away program. I will order and pay for the PCBs and send the originator several of the boards, lets say 1/4 of the ones I receive in the first shipment. If you want a specific number of them just let me know. I may reorder the boards if they turn out to be popular and the creator will always be credited.
The first step here will be to confirm your PCB design with a prototype. It would really suck to order a PCB and find that it did not work. Then generate the Gerbers and check them over in a viewer, make sure they are correct. Finally send me (dfowler@uchobby.com) all the design files and Gerbers. I have Eagle, if you don’t have Eagle or don’t want to supply all the files, at least supply PDF files of the schematic, a text or csv file of the BOM, preferably an Octopart parts list with public link, and the Gerber files. Also include any conditions you have for reuse of the PCBs and some statement that you approve of uCHobby’s use of your design. Please use “uCHobby PCB Submission” in the subject line of the email.
Assuming everything is correct and acceptable, uCHobby will order the PCB’s and send you several, up to 1/4 of the boards received. I would like to combine Thomas’s and Follower’s PCBs on one order. The cost to uCHobby would be about $130 and we would get a fairly even spread of 144 square inches of PCB made. That would likely be a total of about 30 boards, 15 of each. I would send 3 of each to the creators, keep 2 for myself, and give the rest away, about 10 of each, as part of the uCHobby give away program.
Does that seem fair? I might make this a regular offer for hobbyist at uCHobby. Of course the PCB would have to be of interest to the electronics hobby community. I am dreaming up a new kind of give away program… What do you think?
@dfowler
I send you an email with the eagle board file of the WIZnet
Board and specialy i send you an eagle board file for an
board for use with enc28j60, USB, SD-Card. The last board is good as prototype board for enc28j60. Ive you can use it for the give away programm it will be fine
@dfowler
Just as a side note, it’s xSmurf’s PCB design, not mine–I’m just using jumpers currently.
Also, PCB design & give-away sounds cool.
@thomash
I have nothing connected to SPI_EN and it seems to work okay. I believe xSmurf has connected SPI_EN high.
From memory xSmurf also required a level shifter to get the output from the WIZ810MJ–I think he’s using a Arduino NG.
I didn’t seem to need the level shifting with the Arduino Deci I’m using–note also that the Deci can supply the 3.3V directly so a regulator is unnecessary in that case. (I think xSmurf used a resistor network to get 3.3V from his 5V supply.)
@status
I’m yet to get back to the driver so still no data transfer yet…
@follower
Seen in the Datasheet i now connect SPI_EN by a 4K7 resistor
to 3,3V, that seems to be correct.
You know if it is right to reset the ATMEGA and the WIZ810MJ
together by using one switch against GND connected to the two
reset pins?
Nornmaly it must be correct.
@thomash
Which datasheet are you referring to? The W5100 or the WIZ810MJ? The W5100 datasheet seems to only state SPI_EN should be pulled high via an unspecified value resistor. The WIZ810MJ only seems to refer to a “unmounted” 4.7K pulldown resistor to ground in the schematic. But that schematic also shows SPI_EN being connected to the S “select” input on the multiplexer (http://focus.ti.com/docs/prod/folders/print/sn74cb3q3257.html). So overall, I’m somewhat confused–but I’ve not got the multi-meter out yet.
I had wondered myself about resetting both chips at once (as I’ve encountered issues with a similar situation before) but from further reading of datasheets and Q&A it seems that for SPI WIZnet suggest only doing a software-reset and not using /RESET at all. It’s also worth noting that the reset only “resets the registers” not the memory buffers.
@status
I’ve updated the usual page with code (telnet-able psuedo-”echo” server) and more details of the saga it was to get to this point!
I’ve got data being sent *from* the module seemingly okay using the ported driver. I can *receive* data okay if I bypass the driver routines but I only get one character successfully if I use the driver–the rest is garbage. This could well be because it’s late and I’m missing something obvious.
Oh, I also started a thread on the Arduino boards about all this:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1193246617
@follower
Yes i mean the W5100 Datasheet, i think that if it is correct to pull the SPI_EN down to GND by using a 4K7 resistor for diabling the SPI mode it must be correct to use the 4K7 resistor to pull the pin up to 3,3V for enabling the SPI mode
I think you go right by unconnect the reset pin and make the reset only by software. So i disconnect it in the pcb.
For the future i will spend an jumper so that anybody can
connect the reset pin to the switch if wanted.
I now send the new layout and schematic to david for use
the pcd in the give away program.
Thanks to all who helped me.
…and one minor driver fix later it’s receiving happy as Larry too… Will update page later…
But it’s now functioning as a echo/loopback server… Yay.
Ok, I’ve now updated the page:
http://code.rancidbacon.com/LearningAboutArduinoWIZ810MJ
with library binaries and demo source for echo server. (Version 0.0.3)
It’s all rough at present but should be enough to get you started.
I’d be interested in feedback from anyone who tries it.
–Phil.
Here’s the datasheet provided by PPT for the RJ113BZ. It is in the form of an Excel spreadsheet.
http://members.cox.net/swfisher07/datasheet/RJ113BZ.XLS
PPT is at http://pptchina.cn/indexe.html
Hi XSmurf. I have seen a little error on your board on http://www.flickr.com
For VCC, and the other sides of the LED’s you are using pin 22. This pin is Data6. Pin 24 is VCC.
Do I see it correct?
Ben Zijlstra
Just noticed a breakout/adapter PCB design on the competition forums:
http://bbs.circuitcellar.com/phpBB2/viewtopic.php?p=12426
–Phil.
This was mentioned in the Arduino forums:
http://www.nkcelectronics.com/wiznet-wiz810mj-module-to-breadboard-spi-adap.html
There’s an adapter board on eBay. Item number 260183521149 or search for wiz810mj.
I build a new webpage with information and sourcecode for my WIZ810MJ-ATMEGA168 EVAL Board, you can find it here ->
http://heldt-intern.dyndns.org/
@Thomas H.
Your WizNet board looks great. You have several interesting board designs there.
Have build the WIZ810MJ-board from Thomas and it is working fine. Also the software Thomas has made is running well. Got a minor problem with my programmer, have to take out the Atmega168 and program it in another board. My programmer (STK200 – compatible) doesn’t recognize the Atmel when connected to the WIZ810MJ module.
Thomas,
Any idea why Ben has that problem? Did you intend for the AVR to be programmed in place?
Hi Ben,the module is powered and it’s probably messing with the programming signal, I think connecting the module to the Atmega with 10k resistors and connecting the programmer to the Atmega without any resistors should make the programmer work while the module is plugged in.
_
|—-\/\/\-[WIZnet Module SCLK]
| |
A| |_______[Programmer SCLK]
T|
M|—-\/\/\-[WIZnet Module MOSI]
E| |
G| |_______[Programmer MOSI]
A|
|—-\/\/\-[WIZnet Module MISO]
| |
| |_______[Programmer MISO]
_|
Hope that helps
Hi David, these are awesome!
http://www.nkcelectronics.com/wiznet-wiz810mj-module-to-breadboard-spi-adap.html
Have you seen this..?
http://bbs.circuitcellar.com/phpBB2/viewtopic.php?t=3484&sid=f9590d8fb8817024c05008f812fe2649
Seems that the wiznet module drives MISO even when /SCS is high – there’s a workaround detailed.
Hello all together,
i use a STK200/300 compatble parallel-port programmer without any problem, i think that what Jim says could be the problem.
A workaround can be to not solder the resistor from SPI_EN to 3,3V. Then you can connect SPI_EN to a pin if the ATEMGA and enable then SPI_EN after programming the ATMEGA.
In my next pcb revision i will do this workaround by design.
Thomas
If you are going to change the layout of your board I suggest you could add a single line from Atmega168 to Wiz810MJ module for the reset. I added a few lines in the Bascom-code to get a real reset while starting up and it works without any problem. I also made a PCB with some extra’s on it and will be entering the Circuit Cellar contest with it….
Congrats on trying to go Arduino to WizNet! If someone can make an Arduino PCB shield with Ethernet (along with the needed Arduino code to drive it), the world would be a better place!
I’ve got to admit that I’m a fan of the Lantronix Xports. They are abstract UDP and TCP connections by looking more like a modem with serial in/out and you can even use “ATDT” style commands to “dial up” connections to various IP addresses. My “touching over IP” project used Comfile CUBLOC with a Lantronix Xport:
http://phy2phy.wikidot.com/touch
However now Lantronix has the Xport Direct which is only $28 in quantity 1, so it is unclear if a Wiznet approach would actually be cheaper.
On 2mm boards, check out the Schmartboard 2mm board, it is $5 and you can even pick it up at Fry’s:
http://www.schmartboard.com/index.asp?page=products_th&id=1
@Ben
I design a new version of the pcb (V1.2) where PB0 is connected to the SPI_EN and PD7 is connected to RESET of the WIZ810MJ module. In the next software i have new subs for WIZ5100_reset and WIZ5100_spien so anybody can control these pins by software.
The new software i build is complete new, little code, websites in data lines and variables can be used.
A bascom version for the EVAL Boards V1.0 and V1.2 i will present on my website.
Now i think i will design a complete new board for atmega128 with some relais, one sd-card slot and so on on it.
The new board will work with 3,3V so no level shifter would be used
But actually i dont`t find a cheap way to get more WIZ810MJ modules
If anybody can tell me where i can get 2 new modules for a good price in europe please tell me.
Quick update:
The “demo of the moment” is four simultaneous echo server connections which is pretty cool–and also something that the Xport can’t do…
The code required (all up about 8.9KB binary):
| // This uses the 1-argument constructor of EchoServer and supplies it with 7 for each instance.
| EchoServer servers[MAX_SOCK_NUM] = {7, 7, 7, 7}; // This will break if MAX_SOCK_NUM changes.
|
| while (1) {
| for (int i=0; i
[Hmmm, posting less than signs apparently causes problems... :-/]
Quick update:
The “demo of the moment” is four simultaneous echo server connections which is pretty cool–and also something that the Xport can’t do…
The code required (all up about 8.9KB binary):
| // This uses the 1-argument constructor of EchoServer and supplies it with 7 for each instance.
| EchoServer servers[MAX_SOCK_NUM] = {7, 7, 7, 7}; // This will break if MAX_SOCK_NUM changes.
|
| while (1) {
| for (int i=0; i<MAX_SOCK_NUM; i++) {
| servers[i].next();
| }
| }
or, without using the ‘EchoServer’ class:
| NetworkConnection conn = Network.listen(7);
|
| Serial.println(”Waiting for connection…”);
|
| while (!conn.isConnected()) {
|
| delay(500);
| }
|
| Serial.println(”Connected…”);
|
| while (conn.isConnected()) {
| if (conn.available()) {
|
| conn.print(conn.read());
| }
| }
|
| Serial.println(”");
|
| conn.close();
More details here: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1193246617/0#7
@t11s: Yep, an Arduino PCB shield with Ethernet (along with the needed Arduino code to drive it) *would* be nice…
–Phil.
Renesas is having a design contest. This is a good opportunity to get some free products. They are having a design contest and are giving away free demo boards for use in contest. You don’t actually have to enter the contest. Their are two free boards.
http://america.renesas.com/fmwk.jsp?cnt=promotion_child.htm&fp=/products/mpumcu/h8_family/h8300h_tiny_series/child_folder/&title=H8/Tiny%20Promotion
and
http://contest.renesasinteractive.com/HTSDemoKitLogin.aspx
Some interesting statistics on this competiton:
http://wiznet.tistory.com/entry/Statistics-based-on-2000-free-sample-receiver-Database-thru-Circuit-Cellar
(And some wholesale content reproduction in the other blog posts.)
–Phil.