A credit card sized Ethernet Arduino compatable controller board

A credit card sized Ethernet Arduino compatable controller board
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!
 
Remove these adsRemove these ads by Signing Up
 

Step 1Here is the Schematic Diagram

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)



« Previous StepDownload PDFView All StepsNext Step »
235 comments
1-40 of 235next »
Feb 6, 2012. 10:55 AMjeff-o says:
This could be exactly what I'm looking for. One quick question: would it be possible to send emails based on sensor input triggers, without the need for a server in between?
Feb 6, 2012. 8:30 PMjeff-o says:
Cool. I've found one project that uses a regular arduino and an Ethernet shield that is apparently able to send emails, though this would be much cheaper. Perhaps the code from each could be mashed together to run on this platform...
Nov 27, 2011. 5:58 PMkInstructor says:
Hey,
how much does the materials cost?
Jan 26, 2012. 9:36 PMSpaceman Spiff says:
I made the following parts list for this project. It includes the price for all of the materials. Where a part is missing a price it's because I likely already have that component. It shouldn't cost you more than $30 in parts.
Jan 26, 2012. 9:40 PMSpaceman Spiff says:
You'll also find I listed a sources column for the parts. I noticed that the prices have changed a bit since I purchased the parts so you may need to do a little more digging to find a cheaper price than the vendor I source in the file.
Jan 13, 2012. 1:36 PMpadiazg says:
After a couple of fails, finally managed to make work your schema on a breadboard with a Ardiuno UNO, next step is to build your PCB, this was just for try and experiment. The library works fine with the IDE v0022, a few days ago I posted here the modifications to make it work on IDE v1.0, but today I found this: https://github.com/jcw/ethercard, and it works just fine. Have a lot more functionality, like DHCP and DNS clients, and it's v0022 and v1.0 aware.

The only thing you have to worry about is to use the 3th parameter in the begin function. The library defaults CS to pin 8, meanwhile this project has that connected to pin 10. So, if you add the 10 to the begin function, it works like a charm.

Ej:
in the examples:
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
   Serial.println( "Failed to access Ethernet controller");

change to:
if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
   Serial.println( "Failed to access Ethernet controller");
DSC03035.JPG
Jan 3, 2012. 10:49 PMfireman_sam6986 says:
Hi,

Awesome project, I am really keen to build one of these. My only issue is I need access to the SPI bus to control an SD card reader however from the look of the schematic these lines are tied to the ethernet controller and aren't available?

Also, I read the other comments and you talk about the power supply not having much room but having enough to power a few sensors. I want to run a few WS2801 -channel constant current LED drivers chips for controlling a few LED strips. Or course the LEDs will be powered externally but I wanted to power the chip from the board.

Thanks,
Sam
Jan 5, 2012. 6:23 AMfireman_sam6986 says:
Hi Doug,

Thanks for the swift reply.
I had a look a the datasheet for the Microchip ENC 28J60 - DIP and they all say it has an SPI interface. But thats not to much of an issue, i'll have a go at reworking the layout so pins PB5, PB4 and PB3 have header pins.

I dont suppose you have a recommendation on what regulator to use? I'm much more of a software guy who has recently become fascinated by hardware.

I think for what I want I should implement this as a shield. If that were the case would the following work? Excuse the hack job edit :-) I'll need to change the PCB layout unless of course you have one handy?


Thanks again,
Sam
ethernetboard-edit.jpg
Jan 3, 2012. 10:20 PMcvasantrao says:
Can I use a 24 mhz crystal instead of a 25 mhz crystal
Dec 27, 2011. 7:08 PMpmck says:
Is the ferrite bead listed in the parts list? I dont see it
Dec 27, 2011. 10:06 AManupa89 says:
I'm doing a project on building a remote monitoring system. Actually i wanna create an embedded HTTP web server to achieve my target.
That's when I saw you project and it seems really useful to me because I really don't need to use any ready-made boards.
So what I wanna know is that what are the changes i should do in this board transform it into a HTTP web-server, or should I use a separate MCU with this board?
Can I do this by using ATMega644( which has enough Flash to hold webpage) instead of ATMEGA168?
Im really new in this...
Its a great help.. I was to do this with a PIC 18F4620 and enc28j60 with TCPIP stack... But its too difficult for me.
Dec 15, 2011. 11:16 AMpadiazg says:
To use the etherShield library with the new Arduino 1.0 IDE, after unpacking the zip on the libraries directory you must edit enc28j60.c, go to line 18 and change #include "WConstants.h" to #include "Arduino.h". After that you can compile without issues.
Dec 13, 2011. 8:53 AMjraff says:
You might want to check out the Nanode. http://nanode.eu/gallery
Same Ethernet Arduino interface.
Nov 14, 2011. 10:53 AMefdat says:
please can it function like the rest of the arduinos i.e. u.s.b ardiuno
Dec 1, 2011. 9:15 AMefdat says:
thanks a lot
Nov 24, 2011. 8:00 PMnadav says:
Just curious can i run the Atmega using its internal oscillator? What i mean is that using its internal crystal will it be able to communicate with the ENC28J60?
I already have a firmware thats all set for the arduino to run at 8mhz is the timing going to be off?

Nadav
Nov 24, 2011. 12:30 PMikaros45 says:
Hi,

Very nice project, very nice.

I see it's based on the ENC28J60 chip, and unfortunately I haven't managed to do what I want to do: just an GET request.

Is it possible with this one? I guess not.

Thanks in advance!
Nov 1, 2011. 11:26 AMljian says:
I/O2 - 5 - PD3 (Arduino Pin 5)

should be arduino pin 3 not pin 5
Nov 3, 2011. 10:01 AMSpaceman Spiff says:
I thought Arduino pin 5 was the digital pin 3 (PD3)

Atmega168PinMap2.png
Oct 31, 2011. 12:08 PMljian says:
just to tell that i successfully make 1. Thnx drj113.
i didnt use the customized PCB, i used a perfboard instead so followed ur schematics. The only thing that is missing in ur schematic is 74HC08 not connected to gnd and 5v.

I had a faulty 25mhz crystal which makes the ethernet connection fail and took me a long time to find out the problem. so for guys who cant connect the LAN please try to check ur crystal.... Hope this help

Thanks anyway...
May 28, 2011. 12:21 AMdarthneo says:
What are the parts that are connected to the Atmega pins 4 and 18, are those the 74HC08 AND gates?
Oct 23, 2011. 12:01 PMthenetimp says:
Is that why you used the SM package instead of a DIP14 package? I was hoping to breadboard this and use the DIP14 instead of the SM package as I thought in a breadboard it'd be easier? But if you say you are using it to shift voltage and the DIP14 is 5V high, then I guess that wouldn't work? (sorry my electronics knowledge is real rusty).
Oct 23, 2011. 1:22 PMdarthneo says:
The 2 inputs of the AND gate come from the ENC chip. The ENC runs at 3.3v, I believe that the AND gate detects 3.3v as a logic 1 and therefore would turn the gate on, and output a 5v to the atmega. I believe the surface mount and dip14 packages operate the same... I could be wrong though...
Oct 23, 2011. 8:10 PMthenetimp says:
i what you're saying, now that I look at th schematic (and it's nt 4am in the morning) maybe I can use the 14DIP on the breadboard. Since anything not 0 volts should be detected as a logic 1. Thanks for the response.
Oct 23, 2011. 8:13 PMthenetimp says:
Thanks. I actually plan on modifying the circuit to include a SD card reader so I won't be using the original PCB layout in the end. I'll let you know how it goes
Oct 22, 2011. 1:30 PMsnowluck2345 says:
does this board have any inputs? what ports does it have? Digital inputs? analog?
Oct 10, 2011. 7:45 PMsergiotux says:
Hello, I'm from Brazil and I'm new to Arduino and electronics.
I marveled at the arduino and am developing a device to
monitoring an electrical generator.
And I would love to use your card. Mainly because of the price. Here things are expensive.
Please publication of his circuit to date has had some change? Both the board layout as in the scheme?
You can use all the doors of the Atmega? As an arduino common?
I am very grateful for the attention and would like your help.
Thank you.
Sergio
Sep 29, 2011. 7:30 AMljian says:
Can i use this for the MagJack?
http://my.element14.com/amphenol/rjmg163218101nr/jack-10-100-base-t-rohs5/dp/1357435?crosssellid=1357435&crosssell=true&in_merch=true&

Sep 29, 2011. 5:18 PMljian says:
Thanks for the fast reply. But why is there so many specifications of MagJack. Is it all the same?( I mean not to compare the pin but the functionality.)
1-40 of 235next »

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
338
Followers
11
Author:drj113
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 associated with making blue LEDs.