One of the projects in Practical Arduino is the “Online Thermometer”, which combines an Ethernet shield with a number of DS18B20 1-wire temperature sensors to allow you to read multiple temperatures and make the values accessible using a web browser. In that project I chose a specific model of Ethernet shield that was available at the time from Seeed Studio, mainly because the Seeed guys were clever enough to include some prototyping area on the Ethernet shield and save the hassle of mounting a separate prototyping shield on top.
But there were two problems. Firstly, that particular model of Ethernet shield used the ENC28J60, which is a different chipset to the Wiznet W5100 used in the official Arduino Ethernet shield and as a result it has very poor driver support in Arduino. Working with any of the ENC28J60-based unofficial Ethernet shields is a royal pain in the butt because so much of the internals of TCP/IP have to be implemented directly inside your sketch. It’s complicated, confusing, error prone, and ugly. So that’s bad.
Secondly, that Ethernet shield is now out of production. To use the example code from that project you have to find an alternative Ethernet shield based on the ENC28J60 (yuck!) and then stick a prototyping shield on top. Double bad.
Of course Freetronics didn’t exist when the book came out, and the lessons learned from that and other projects are what guided the design of our Ethernet shield with PoE support
. We used the W5100 chipset so it would be 100% compatible with the official shield and example programs, and we incorporated a huge prototyping area inspired by the early Seeed shield. Best of both worlds.
So now I present to you the Online Thermometer, updated. For maximum convenience it can be built on the Freetronics Ethernet shield
using its built-in prototyping area, but it will also work just fine with the official Arduino Ethernet shield combined with a prototyping shield.
6 x DS18B20 Dallas 1-wire temperature sensors (note: not DS18S20)
6 x 4K7 resistors (1%: yellow-violet-brown-brown, 5%: yellow-violet-red-gold)
6 x PCB-mount 3-pin male connectors
6 x Line-mount 3-pin female connectors
Twisted pair cable or alarm cable (minimum 3 conductors)
For more detail: Online Thermometer using Arduino