I love the Arduino as a simple and accessible controller platform for many varied projects.  A few months ago, a purchased an Ethernet shield for my Arduino controller to work on some projects with a mate of mine - it was a massive hit - for the first time, I could control my projects remotely using simple software.

That got me thinking - The Arduino costs about $30AUD, and the Ethernet board cost about $30AUD as well.  That is a lot of money - Could I make a simple, dedicated remote controller for much cheaper?   Why Yes I could.   Could I make it the size of a credit card?  Why Yes - I could!!

This project is my simple Arduino compatible controller that has embedded Ethernet, and the capacity to drive some extra I/O lines for projects, such as a Remote thermometer, a Remotely accessible Fridge controller, and a Remote Humidity sensor.  I have to say from the start that I didn't write all of the software, my mate Mikal did that - but this instructable is about making your own controller board!

Lets start!

Step 1: Here Is the Schematic Diagram

For the curious, this is the schematic diagram of my simple Ethernet board.

As you can see, there are a number of exposed header connectors that can be used to connect peripheral devices to.

The board is powered with a supply of between 7 and 12v.  It contains voltage regulators to provide +5v and +3.3v for the Ethernet controller.

There is also a 4 position DIP switch that can be used to allow programmed functions to be modified.  A failing of the standard Arduino Ethernet library is that the IP address for the board has to be set in code.   Using the DIP switch, a block of addresses can be selected from as required.  You can make 16 boards, and have each board automatically select a different address  based on the switch setting.  This is *really* handy when you have deployed 10 sensors around the house.  All you need to do is set a switch and then they are configured.

The pinouts of the I/O connectors are;

I/O1 - 1 - PD5  (Arduino Pin 5)
I/O1 - 2 - PD6  (Arduino Pin 6 +pullup to +5v) - Used to connect a DS1820 Temperature sensor.
I/O1 - 3 - PD7  (Arduino Pin 7)
I/O1 - 4 - PD8  (Arduino Pin 8)
I/O1 - 5 - GND
I/O2 - 1 - +5v
I/O2 - 2 - GND
I/O2 - 3 - PD4 (Arduino Pin 4)
I/O2 - 4 - PC0 (Arduino Analog 0)
I/O2 - 5 - PD3 (Arduino Pin 5)
I/O2 - 6 - PC1 (Arduino Analog 1)
I/O2 - 7 - PC2 (Arduino Analog 2)
I/O2 - 8 - PC3 (Arduino Analog 3)
I/O2 - 9 - PC4 (Arduino Analog 4)
I/O2 - 10 - PC5 (Arduino Analog 5)

<p>I have completed the fabrication, but when I verify the code the IDE says 'class EtherShield' has no member named 'ES_make_arp_answer_from_request' please help</p>
hello sir, could you please tell me the exact package of the 74HC08? so14, ssop14 ??
<p>Hello! First of all congratulations for the great tutorial. I'm sure you've provided great help to many people. keep up! :)</p><p>I'm embracing a look alike project and I have some questions regarding the programming part. I found some answers in the comments but I still have some doubts. Here they go:</p><p> - By using the USB-TTL cable you do NOT need a typical programming cable?</p><p> - You are using the Arduino IDE to program the Atmega? (All the chips come with the bootloader from factory right?)</p><p>I'm sure I'm making newbie questions but well...I'm a newbie :D</p><p>Thank you for your help!</p>
Wonderful - This project is very old, and there are lots of better technologies now, such as the Spark Photon that are much more capable. But you still can't beat the simplicity of the Arduino :-)<br><br>The FTDI cable lets you program an Atmega as long as it has the boot loader installed. essentially, the boot loader looks for code down the serial interface on startup.<br><br>If you don't have a bootloader in the chip, then you need to use a real programmer - such as a USBTiny - that lets you get the bootloader into the chip from scratch (and allows you to purchase *much* less expensive chips)<br><br>In my clock business (DougsWordClocks - which grew out of my Instructables projects :-) ), I program, all of the AtMega chips myself using a USBTiny, as I use surface mounted parts now, and they don't come with a bootloader.<br><br>Doug<br><br>
<p>Hi Doug,<br>First things first: Awesome clocks!<br><br>I didn't know about the Spark Photon. (Unfortunately) that was more or less my project...Guess I won't become rich this time :P Anyway I'll keep going with the project since it's a good way of learning a bit more about lots of stuff.<br><br>About your reply: How do I know which Atmegas come with bootloader? I'm struggling in finding the info in the datasheets. Is there any rule of thumb?<br><br>Another question. The atmega you used only has 1 Tx and 1 Rx. Since I want to connect another serial device (only has tx,rx communication...no SPI from what I understand) how can I do it? Can I just connect everything (having the atmegs Tx connected to 2 rx) and control ir via software? Do you think there is a better way to do this?<br><br>Once again thank you very much for your help!<br>JM</p>
<p>hi i can't open the schematics in egale. can someone help me please ?</p>
<p>which program didyou use for this ?</p>
<p>KiCad... </p>
The schematic was developed in KiCad - not Eagle.<br><br>I do not use Eagle, as it is closed commercial software that is unable to be used for commercial use without paying a licence.<br><br>KiCad is open source.
<p>Will programming this work with the Ethernet and SPI libraries in the Arduino software? I was looking for a way to program my Arduino to use Ethernet without the need of an SD card slot since the Ethernet Shield includes an SD card slot.</p><p>Great project, there. I'm hoping this will be useful on my end.</p>
<p>Hi</p><p>Thanks for this instructable, can you tell me wath is the value of L (inductor) near the R5 and R6 resistors.</p><p>Keep the good work</p><p>Thanks</p>
It is simply a ferrite bead - Just one length of wire placed through a bead. It is tr remove switching noise.
<p>Really nice work drj113.</p>
<p>Can you please explain the purpose of this board a bit better?</p><p>Can multiple of these boards be connected to a network switch, and then &quot;controller from a mater controller&quot;?</p><p>i.e. can I open / close doors remotely, from a single Arduino MEGA? If so, does it work on the I2C bus, or would I need an ethernet controller (which I don't currently own) on the Arduino MEGA 2560 first?</p>
<p>I want to build one of these myself. However, I am fairly new at electronics, and therefore, I have a difficult time reading the schematics and I do not have the equipment to make such circuit board. Could you upload an instructables page with the same design but on a breadboard. Thanks!</p>
<p>Hello!</p><p>I have finally managed my time to construct this nice instructable. Do you think is it possible to replace 74HC08 SMD with 74HC08 DIP14 package? And SMD caps with normal through-hole caps.</p><p>Thank you.</p>
<p>I made mine with no SMD components...you just have to change pcb layout or make shematic on prototyping board :)</p>
<p>can you send to me the isis shema ??</p>
<p>Interesting... I assume the atmega chip is just serving as an &quot;arduino&quot;, and can be skipped if you want to attach this to an existing arduino?</p>
Hello everybody . i'm trying to do the project but no sucess , can u help me ? i connected everything like in the schematic , i dont know how to trace where is my problem ,help me thnx.
What software are you using?<br>
enc28j60 library . Should i conn the 74ls08 vcc and gnd. maybe is my rj45 problem ?
The VCC and Ground should be connected.<br><br>The Rj45 needs to have magnetics as well. Does yours?<br><br>
Could you explain why are the magnetics needed??
thnx for the help i had problem with rj45 and ferrite bead thnx i love this project thnx :):):):)
The ferite is not super important - it just reduces noise on the supply rail
Yes i cute a rj45 from an old ethershield and it works fine THNX
With the Eagle 6 I try to open the Arduino-Ethernet.sch and Arduino-Ethernet.brd files from ArduinoEthernetController-1.zip archyve, but fails (https://www.instructables.com/files/orig/FG4/YQ05/GELSQIG0/FG4YQ05GELSQIG0.zip). Maybe you have a newer version of the files? <br>
Hi, <br> <br>Thanks for your message. All of my projects are developed in KiCad, not Eagle. I do not use Eagle, as it is not open source, nor is it free to use. <br> <br>I do understand that they have a hobyist licence, but its size limitations are useless, and I sell products that I design with it anyway, so I can't use it even if I wanted to. <br> <br>Doug <br>
OP, great instructable and thank you. So I purchased the components over a year ago and finally got around to assembling the boards. The issue I'm having is I can't get the board to take the bootloader. I've followed the comments and have ensured that the board is the Duemilanove and I'm using w/Arduino as ISP but I'm still getting the following error. <br> <br>avrdude: stk500_getsync(): not in sync: resp=0x00 <br>avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51 <br> <br>One thing I noticed is the FTDI cable I bought shows up as a USB serial com port, this is what I want correct? Any insight or troubleshooting ideas would be greatly appreciated.
So I just tried optiboot and get the same getsync() error but no protocol error.
So I got everything programmed. I ended up using the following instructions to burn the bootloader and it worked great. Now I'm just trying to get it on the network. <br> <br>http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html#top
One possibility is that you may not have the Arduino bootloader installed in the chip.<br><br>Here is a link to a great page that describes whet you need to do:<br>https://www.sparkfun.com/tutorials/247<br>
Thanks for the link. I got the bootloader on it now using an AVR dragon but I forgot to set my fuse bits etc. When it was done I tried uploading a basic sketch using the FTDI cable and still no luck. The board is at work so tomorrow I'm going to try setting the fuse bits, etc and see if I can then upload using the FTDI cable. I'll let you know what happens. Thanks again.
Sorry that I am writing new comment, but I can not reply beacuse I don&acute;t see captcha. Can I use ATMega328P-PU or it does not matter what I will buy? (ATMega328, ATMega328P, ATMEGA328P-PU) <br>Thank you
The specific AtMega328 doesn't matter - you will have to be careful to reconfigure the Arduino IDE to be able to program it though as the devices have a diferent signature.<br><br>http://forum.arduino.cc/index.php?topic=58670.0<br><br>
Hello. <br>Is this suitable? http://www.ebay.com/itm/SN74HC08PWR-Manu-TI-Encapsulation-TSSOP-14-QUADRUPLE-2-INPUT-POSITIVE-AND-/110894158680?pt=LH_DefaultDomain_0&amp;hash=item19d1ce9358 <br>And this? <br>http://www.ebay.de/itm/5x-74HC08-SMD-HC08-AND-Gatter-4-fach-2-Eingaenge-SO14-/290446453809 <br>Thank you.
I believe so
Nice work!! Very inspiring.. I made some test on the same schematic and the Ping and a &quot;Hello&quot; on browser are working. But when i make a bigger HTML page, it hardly work. I replaced the ferrite by a wire.. do you think it can be the reason? Like small package like a PING succeed but bigger HTML don't?
Hello! I'm super excited at this project, however is it possible for you to distribute the eagle file for this project? It would be great if you can kindly release it =]
great guide. what was the total build cost for the ethernet board?
When I wriote it, the board was cost effective to make, now I would just get a Raspberry PI.
If you are lucky enough to get one. I've ordered mine more than one month ago ... they said it was &quot;in stock&quot;. Sigh.
Yea, Shipping is a bit tricky, I have been waiting for two more for a while now. But the Pi is an amazing board.
Hi I have a question about how to program the arduino ethernet. <br>What software is needed and how to place the cable ftdi
Never mind, once I got on my mac it worked. thanx for the info!!
when i download this PDE file it turns out to be a tmp file that i cant read. Where is the code?im having trouble posting sensor data with my sketch and wanna see how u did it. Thanx so much for this instructable. ur the man
I did the project, and it works fine for about 1 min, and then it disconnects, I think the ferrite bead is the problem, could it be? <br>Great project btw! many thx!!
Hi,<br><br>Thats cool - but frustrating that your project isn't working well.<br><br>The ferrite bead is used for suppression, so it is unlikely to be the problem.<br><br>The most likely issue is either (1) something else on the network with the same IP or MAC, or (2) the regulators overheating because the supply voltage is too high.<br><br>What supply are you using - I tested mine with a 9v power supply.<br><br>

About This Instructable




Bio: I have a background in digital electronics, and am very interested in computers. I love things that blink, and am in awe of the physics ... More »
More by drj113:A Grey Hat A Programming Jig for our DougsWordClock.com DeskClock Boards The Wordclock Grew Up! 
Add instructable to: