The Intel® Edison Compute module is a small bit of hardware (a “Module on a Chip” or “MoC”) centered around an Intel Atom processor. To make it more useful, you can combine it with a compatible break-out board, for example the Arduino Breakout used in this review. The Edison module itself is dinky—1.4” on the long side—but the breakout board adds a mid-sized footprint (the Arduino Breakout with attached Edison module is postcard-sized, about 3x5”). Thus, the platform as tested here is two pieces: the Compute Module (the “Edison” itself) and the Arduino Breakout board to which it is attached.

Intel Edison + Arduino Breakout

Above: Intel Edison Module mounted on Arduino Breakout Board

How it Works

Semantic squishiness aside, the Edison + Arduino Breakout is a capable small computer, simply and stably running (by default) a Yocto Linux. Intel provides an SDK that promotes the use of Node.js to write GPIO-controlling software, and it also has an Eclipse-based IDE if you want to go the Java or C route. You can also use the Edison with the Arduino IDE, effectively demoting it to a more basic, microcontroller-based board. The form factor of the Arduino Breakout board allows it to be coupled with Arduino-Uno-style shields, as well.

The Arduino Breakout board does have more hardware goodies than a standard Arduino-compatible development board. There’s Bluetooth, an SD card slot, WiFi and a USB connection.

What’s Different About it

The idea of the core compute module is interesting—ostensibly one could plop it into an Arduino breakout board for prototyping and then connect it to production, custom hardware when going to market. ARM SoCs are ubiquitous in IoT-oriented hardware; the Edison represents one of Intel’s attempts to make strides in market share with its Atom processor.

The Edison is market-straddling, targeted both at “expert” amateur makers and production shops.

Terminology

  • galileo-io: A a [Johnny-Five I/O Plugin] (npm package) that makes Johnny-Five work on Intel’s Galileo and Edison platforms.
  • MoC: “Module on a Chip”. Like the ARTIK 5, the processing (and additional core components) bit of the Edison is attached to a small module that can be plopped into several different breakout boards.
  • Yocto Linux: A Linux distribution for embedded systems. Default OS for the Edison.
  • Intel® XDK IoT Edition: Intel’s IDE for the Edison. You can use this, but you don’t have to.

Getting started

What is actually a straightforward process is hampered by scattered documentation. Intel’s various web pages related to the Edison are hard to find and inconsistently interconnected. There’s been an attempt to make setup user-friendly, but the outcome is mixed.

Setup (with a laptop running OS X) could have been as easy as:

  1. Put the board together—snap the Edison module onto the board and secure it; attach provided feet. Connect the Edison to two USB ports (yes, two) on your computer and also plug it into DC power.
  2. Download and use the setup utility application to update the board’s Linux image—the stock image is fine, but you should grab the latest for updates.
  3. In the same utility, walk through steps to set up SSH and WiFi.
  4. SSH into the Edison and have at. The Yotco Linux image provided has a reasonable version of Node.js (LTS at 4.4.3….CHECK THIS) and npm. It also has python if that’s your bag.

Unboxing and setup

I spent a confusing couple of hours following a lot of steps that weren’t all needed. It was challenging to discern without the benefit of hindsight which software and interface elements of the platform were essential (using the setup utility) versus optional (Bonjour connections, IDEs).

Here’s a link to the official “Getting Started” documentation in case you can’t find it.

One of the peculiarities about the platform is how many wires are involved. There are two USB connections: one for power and one for serial communication. And there’s also a DC power connection—you’ll need to provide your own wall wart for that. Ostensibly the board can run with just USB power, but not if you’re putting much load on your circuit(s). There’s no power switch; connecting your Edison to power will cause it to boot and if you remove too much power, it will shut down.

Note that, to ssh into the Edison, you’ll want to ssh as the root user at its IP on your local network, using the password set up when you walked through the setup utility.

The Edison will also advertise itself using the Bonjour protocol but I didn’t use that in my explorations.

A few things that you might keep in mind:

  • The Edison + Arduino has some particularities with respect to power requirements. It has two USB connections, one of which—the one toward the inside of the board—needs to be plugged into a powered USB port. The second USB cable (toward outside of board—used for USB serial communication) doesn’t have to have a powered USB connection. If you get this wrong, a common symptom is the Edison falling into a constant reboot cycle.
  • With the second (outside) USB cable connected, you can communicate with your Edison using a USB serial tool. I use screen on my Mac. This was useful for debugging what was going on when the Edison wouldn’t complete booting (it wasn’t making it to the WiFi network).

Developing for the Intel Edison

One is encouraged to download an SDK to control the Edison. There are a few options, including:

  • Intel® XDK IoT Edition: Build web interfaces and control the Edison with Node.js.
  • Arduino: The Intel Edison + Arduino Breakout board has an Arduino-style pinout, and you can control it by writing sketches in the Arduino IDE. (And configuring it slightly as per this setup guide page).
  • Intel® System Studio IoT Edition: An Eclipse-based IDE for developing in Java or C++ if you’re into that.

The Edison by default also supports python out of the box (no IDE available, which is sort of a hint of where I’m going next).

In the end, I chose none of the above. Instead, I SSH’ed into the Edison and ran Node.js scripts from the command line, which worked perfectly fine. The Yocto Linux that got installed when I updated the device’s firmware has Node v4.4.3 and npm v2.15.1. That’ll do for my purposes…

The pinout on the Edison + Arduino is (surprise!) identical to an Arduino Uno.

Representative Tasks and Applications

The following three representative tasks demonstrate typical hardware capabilities for IoT platforms:

  1. Button-controlled LED: Pressing a pushbutton (momentary switch) toggles an LED on and off. Uses digital input and digital output.
  2. Photoresistor and Fading LED: A “nightlight” that grows brighter as ambient light decreases (and vice versa). Uses analog input and PWD output.
  3. I2C magnetometer (compass) and websockets: A websockets-driven real-time display of compass headings. Uses serial (I2C) and software integration (websockets).

Button-Controlled LED

The Edison + Arduino Breakout board has a pinout that (unsurprisingly) apes Arduino. And the galileo-io plugin for Johnny-Five supports both Intel Galileo and Edison. Installing galileo-io and johnny-five in a project directory with npm went just fine.

Note: The installation of galileo-io (via npm install galileo-io) takes a few minutes and spits out a few errors, but the errors aren’t meaningful (well, in my experience). It’s just that there’s no precompiled version available and the Edison has to use node-gyp to get stuff fully built.

For these first two examples, I was able to use the same baseline code as I used for the Tessel 2. I just had to change some pin numbers and change the board instantiation to reference the galileo-io plugin, e.g.:

const five = require('johnny-five');
const Galileo = require('galileo-io');

const board = new five.Board({
  io: new Galileo()
});

Wiring Diagram for Button-Controlled LED on Intel Edison + Arduino

Source

Analog Sensor and PWM (“Nightlight”)

Again, using the Edison’s Arduino-compatible pinouts and Johnny-Five, I was able to reuse baseline code to reproduce this functionality.

Wiring Diagram of Photoresistor-controlled "Nightlight" on Intel Edison + Arduino

Source

I2C Sensor with Websockets

By connecting the HMC5883L’s SCL and SDA pins to the SCL and SDA pins silkscreened onto the Edison (like newer-style Unos, these pins are above the power pins on the right side of the board instead of using the older-style A4 and A5 for I2C communication). This worked just great and I was able to run the I2C/Websockets example:

Wiring Diagram for I2C and Websockets on Intel Edison + Arduino

Source

Pomlet

It wasn’t too hard to get the “Pomlet” gadget to run from the Edison + Arduino . The pinout is just like an Arduino Uno.

Source and more information

The Verdict

The Edison + Arduino is a capable and easygoing setup—once it’s set up and going. It can be a headache to get the right powered connections plugged in and get the device running. But once it’s going, it’s just fine. The Yocto Linux on-board (by default) is easy to use and has an LTS version of Node.js.

The Edison is Good for…

  • Supporting Arduino-compatible circuits and projects
  • Projects with more intense processing needs