An Introduction to the Intel Edison for IoT Developers
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"?
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.
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
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
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.
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.
Intel XDK IoT Edition
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.
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.
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.
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.