September 17, 2012 AT 7:31 am

ASK AN EDUCATOR! – “How can I get my Arduino to use IPv6″

Mike asks:

With IPV6, it looks like I can have unique internet addresses for all my Internet of Things/Web of Things. How can I get my Arduino projects to use IPV6

Interesting question Mike! But first, for those of us who are not familiar with IPv6:

IPv6 or Internet Protocol version 6 is the most recent standard communications protocol for the internet. This version solves many of the protocol problems faced with IPv4 including support for an almost unlimited number of unique device addresses….2^128 or 340,282,366,920,938,463,463,374,607,431,768,211,456 devices. Phew. Considering that the World’s population is 6,973,738,433 (from Google) would mean that each person could have approximately 4.9 x 10^28 uniquely addressed, internet-connected devices. With numbers like this, its not hard to imagine a future where every electronic device is capable of interfacing with the internet, maybe even your coffee maker.

Now, about getting IPv6 running on your Arduino. There are already a few libraries that make this possible, and most rely on the Arduino Ethernet Shied:

Reflected Heat Technologies

The official Arduino Ethernet Shield is based on the WizNet 5100 chip, which implements the IPv4 protocol stack in silicon. As a consequence, the Arduino Ethernet Shield cannot be used to implement an IPv6 stack.

To implement an IPv6 stack, it is necessary to use a shield based on hardware that permits the management of IP and Ethernet layer functions. Shields based on the MicroChip ENC28J60 chip (such as those sold by Ekitszone and Nuelectronics) are suitable for the implementation of an IPv6 or dual IPv4/IPv6 stack. This approach requires the TCP state machine to be implemented in software and results in more complex arduino code.

IPv6EtherShield

I ported the uipv6 network stack from http://www.sics.se/contiki/. The ENC28J60 library is from Guido Socher. The uipv6 library was isolated by http://www.shapeshifter.se/code/uipv6/.

I wrote an additional wrapper class with initialization methods, so the sketch files should be pretty simple. Included in the library you will find the following examples:

IPv6TelnetServer, where you can put/get the status of an attached LED and where you can get information about the free RAM bytes.
IPv6WebServer, where you can get the current values of the analog input pins.

Arduino-IPv6Stack

In Telecom Bretagne, we love open source and IPv6. That’s why we decided to port the Contiki OS network stack (6LoWPAN/IPv6 + RPL + CoAP) to our favorite prototyping platform : Arduino.

We released a first example which demonstrates the use of IPv6 stack library : IPv6UDPexample.ino In this example, you will need two Arduino Mega with Wireless Proto Shield and Xbee Series 1 mounted.

I hope this has helped steer you in the right direction and best of luck with your Internet of Things things :-)

Don’t forget, everyone is invited to ask a question!

Click here!

“Ask an Educator” questions are answered by Adam Kemp, a high school teacher who has been teaching courses in Energy Systems, Systems Engineering, Robotics and Prototyping since 2005.


“D is for Diode” – Circuit Playground Episode 4 is out now! CLICK HERE TO WATCH!

Have an amazing project to share? Join the SHOW-AND-TELL every Wednesday night at 7:30pm ET on Google+ Hangouts.

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Learn resistor values with Mho’s Resistance or get the best electronics calculator for engineers “Circuit Playground”Adafruit’s Apps!



1 Comment

  1. Hopefully the ethernet shield will get a revision that supports IPv6. This should be something that is already done.

Sorry, the comment form is closed at this time.