An Introduction to the Intel Edison for IoT Developers

Michele Tameni
Share

While mobile devices are becoming bigger at every model update, there's also a new wave of increasingly small, wearable devices hitting the market. The maker movement has grown in the past years, with Arduino leading the prototyping hardware market. Last year Intel introduced a device that is appealing for makers but also ready for IoT and wearable products, the Intel Edison.

Edison is small sized compute module capable of running a full Linux distribution that intended to empower the next generation of wearables and the Internet of Things (IoT) devices, where size and power consumption are important factors to consider. Let's have a look at this platform. I'll describe the main hardware features and most importantly for SitePoint users, what possibilities it offers for developers. The kind of projects realizable with such a platform are up to a developers imagination, as Intel says, "What you will make"?

Hardware

Intel Edison

Intel Edison is a small board, slightly larger than a SD card (35.5 × 25.0 × 3.9 mm) featuring a dual-core dual-threaded Intel® Atom™ CPU at 500 MHz and a 32-bit Intel® Quark™ microcontroller at 100 MHz.

The available memory is 1GB of RAM and 4GB of flash storage. On board WiFi and Bluetooth are present. It has 1 USB OTG controller and all the interfaces that a maker can dream of, including UART, I2C, SPI, I2S, GPIO and SD Card support.

Breakout board

Edison comes in a package with a 70 pin connector, this is difficult to use directly. For easy prototyping, Intel has made two breakout boards available to developers.

These are the Intel Edison Board for Arduino and the Intel Edison Breakout Board and are officially supported by Intel. They differ in purpose, size and IO capability.

Intel Edison Board for Arduino

Intel Edison Board

This board is the largest and most interface rich board available. It features I/O pins compatible with Arduino Uno (except 4 PWM instead of 6 PWM), 20 digital input/output pins (including 4 pins as PWM outputs). It offers 6 analog inputs, UART (Rx/Tx), I2C, ICSP 6-pin header (SPI) and a Micro USB or dedicated standard size USB host Type-A connector. The list does not end here, there's also a micro USB device (connected to UART) and a SD card connector. Edison can be a good base to build on as part of projects where you need different types of interfaces or just want to experiment.

Intel Edison Breakout Board

Intel Edison Breakout Board

This breakout board is much smaller than the Arduino one, although slightly larger than the Edison module itself. The board has a minimal set of features including exposing the native 1.8 V I/O of the Edison module, 0.1 inch grid I/O array of through-hole solder points, USB OTG with USB Micro Type-AB connector and a USB OTG power switch. There's a battery charger and a USB to device UART bridge with USB micro Type-B connector. This board can save a lot of space.

Software

Edison comes with a prebuilt Yocto Linux image, but it's capable of running a Linux distribution of choice. Yocto is a meta-distribution used by embedded developers to create tailored images. Intel chose this OS so developers can just start using the default image, configure and customize it as desired and then prepare a custom image for their product once satisfied, making this process as easy as possible using the simple commands provided by the Yocto project.

Having a full Linux distribution on a device like this opens a lot of possibilities, as the developer can reuse the wide range of available packages and libraries for Linux, making development of a product much faster and simpler. They don't need to learn any new languages, toolkits or use any SDKs, but can just develop with standard GNU/Linux directly on the device.

Intel offer several tools to get a developer started with Edison development, here I will cover some of them.

Edison SDK

The Intel Edison SDK provides all the necessary tools to develop for the platform. It's based on Eclipse (yes another instance of Eclipse on your computer) and it includes the cross-compile tools, connector to deploy and debug your software on the board and the basic library and documentation needed for development. It's ideal for developers using C++, but adaptable to other languages including Javascript and Python.

Intel XDK IoT Edition

Intel has released a IoT variant of the XDK environment, covered in other articles here on SitePoint. With this, developers can write Javascript applications (this runs on the Edison as a Node.js app) and test them on the device. Intel has made easy to develop HTML5 mobile companion apps that can communicate with the board.

Arduino

By using Edison with the Arduino breakout board, it's possible to run Arduino's sketches. With the right version of Arduino IDE developers are able to utilize the wide range of libraries, examples and sketches already available. This, combined with the power of a full Linux distribution represents a powerful platform for expert and beginners developers.

Wyliodrin

With Wyliodrin, a knowledge of programming languages is not needed. New developers can program their boards using visual & stream programming systems by just dragging and dropping blocks. Wyliodrin writes the code, making this is a useful option for beginners.

Libraries

Intel is committed to making the developer experience as seamless as possible, and has released two useful libraries that encompass abstract, the IO and a broad range of sensors to enable developers to focus on the user experience. Both libraries have bindings for C++, Python and Javascript.

Lib MRAA

Lib MRAA is a C/C++ library (with bindings for JavaScript & Python) that interfaces with the IO of Edison & other platforms. It offers a structured and sane API without ties to specific hardware because it offers board detection at runtime, so pin numbering will match the board currently in use.

UPM

UPM is a high level repository for sensors that use libmraa. UPM typically represents a sensor as a class, with the constructor used to initialize the sensor and parameters used to provide pin locations on the board. These classes expose an update function that called to get new data from the sensor.

Summary

Edison provide interesting opportunities for anyone with wearables/IoT ideas who wants to experiment on a real, product ready platform. It's a platform rich with features that makes it easy to get started as most developers can utilize a language they already know. With a cool set of features, ready to use libraries and an open software platform ready to be hacked, Intel has made a great job in their aim to make things happen.