Get a real MAC address for your Arduino Ethernet
There's this thing that some people like to call the "Internet of Things" (IoT), mostly this is just a fancy name for "devices that don't have a person sitting in front of them connected to the Internet". As part of that general theme, Ethernet connected Arduino projects are very popular, we use them a lot ourselves here. Most of the projects we do are connected to some sort of network.
If you've ever had more than one Arduino device with Ethernet on the same network then you will have had to deal with the issue of MAC addressing. When you've just got one one you can make one up, the good old DE:AD:BE:EF:FE:ED is popular. What happens though if you want to add another project to your network? Things stop working.
There are various solutions, we've posted a couple on this very blog, none of them are just right though.
So we created a shield to solve the problem once and for all. Introducing the MAC ProtoShield - an oddly shaped shield for an Arduino which gives you an official MAC address, none of this made up stuff, no having to manually hard code one in for each Arduino.
You can see it above installed on a Freetronics EtherTen along with an 802.3af Power over Ethernet (PoE) module. That's the reason for the funny shape - you can fit one of the Freetronics PoE regulators inside the MAC ProtoShield footprint, making it easy to do tidy one cable installations.
The secret is seen in the bottom of the picture, a tiny surface mount EEPROM chip which has a built in MAC address accessible over I2C. You also get 2Kbit of extra EEPROM to play with. We've got some simple example code available to show you how to incorporate it into your next project. It's really easy and small, only 40 lines of code.
You also get a small prototyping area with power rails and if you use stackable headers it's a good solution to the problem of the Ethernet jack getting in the way of a full sized shield. Although we like to use them with the EtherTen, they also work just fine with a standard Arduino Ethernet Shield, Arduino Ethernet or anything else that supports the "r3" headers.
The board design is open source and available on GitHub if you're interested. We'd love to hear your comments or questions via the comment form below or you can contact us directly here.