We briefly tested the Intel Galileo board a few weeks ago. This made us want to test the latest from Intel, that is the Edison. This thing is literally a Linux x86 PC, with the size of a stamp. We really wanted to know if it was possible to use it to drive Yoctopuce modules. Indeed, its size makes it particularly interesting for any embedded system. So we bought one and we played with it...
The Intel Edison module
The Intel Edison module is a minuscule board of about 25*35mm. It contains, among other things, a Wifi interface, a serial console, and an OTG USB port. It also has its own flash memory to store its operating system. Theoretically, it's plug-and-play.
The Intel Edison, we told you it was tiny...
Unless you have the necessary tools to make your own printed circuits, the Edison is not much use as is. The only connection available is a tiny Hirose DF40 connector. Therefore, Intel also sells a breakout board on which you can fix the Edison. This breakout board has two USB connectors, one for the serial console through an embedded FTDI adaptor, and the second for the USB connection.
A breakout board is absolutely necessary for ordinary mortals
But there is a catch: the Intel breakout board is far from being perfect if you want to drive USB modules. There are three ways to power the system and none of them is ideal:
- Sending 5V through the OTG port, but in this case you cannot connect a module anymore, the power supply cable takes up the port.
- Sending 7 to 12V on the J21 connector, but this kind of voltage is not very easy to find in embedded systems. Don't bother to try with 5V, it doesn't work.
- Power the board through a Lipo cell, but in this case, the USB port is not powered.
It's quite disappointing when you are planning to use Yoctopuce devices with your Edison. The ideal would be to power the system through the USB connector dedicated to the serial port... And this is exactly what SparkFun is offering with its Base Block board, which enables us to use a plain USB battery.
The Sparkfun Base Block can be powered through the console port
The Intel breakout board, as the Sparkfun base block, offers a serial console directly available in USB thanks to an embedded FTDI chip. To take advantage of it, you need to:
- Install the FTDI driver
- Determine which virtual COM port the FTDI driver set up. Under Windows, you can find it in the Device Manager
- Install Putty and configure a serial connection. The parameters are speed=115200, databits =8 , stop bits = 1, parity = None, flow control = XON/XOFF.
Putty: the simplest way to access the Edison console
How to unbrick an Intel Edison
Our first contact with the Edison was not very encouraging: no way to get it started, no sign of life on the console. After many search requests on different forums, we had to face the truth: we got a bricked specimen. Actually, we believe the manufacturer simply forgot to flash it. Apparently, it's not an isolated case. We had to flash the system completely again. As we didn't find any doc explaining how to do it simply, we wrote it down on that little page.
Installing the Python Yoctopuce library
The ideal language to use on this kind of machine is probably Python. It's a very portable language which allows you to do the development on a regular machine, going into production is limited to simply copying the files on the Edison. The simplest way to install the Yoctopuce library is to use PIP, which is not available by default on the Yocto-Linux image. But you can easily retrieve an installation script with wget:
wget --no-check-certificate https://bootstrap.pypa.io/get-pip.py
Then run this script:
And you can then install the library
pip install yoctopuce
Note that this installation method is valid for all Linux systems. Beware, if the Yoctopuce library was installed with PIP, you must slightly modify the programming examples provided by Yoctopuce, and replace the "from yocto_api import *" by "from yoctopuce.yocto_api import *". For example
from yocto_api import *
from yocto_relay import *
from yoctopuce.yocto_api import *
from yoctopuce.yocto_relay import *
Installing the Yoctopuce command line library
To install the command line library, download the library on a machine of your choice, unzip it, and copy the content of the Binaries\Linux\32bits directory on your Edison. You can forget the rest, it would only take up unnecessary space on your Edison.
OTG cable or nothing
The Edison USB port is an OTG port. This means that the Edison can behave both as a Host or as a Device. The behavior is determined by the cable you connect. If you connect a regular A-MicroB cable for example, the Edison behaves as a Device. If you connect an OTG-MicroB-MicroB cable, it behaves as a Host. To drive Yoctopuce modules, the Edison must behave as a Host, otherwise the USB lib is not initialized. If you try to run a Yoctopuce command without having connected the appropriate cable, you obtain the following behavior:
root@y-edison:~/yoctopuce# ./YModule inventory ERR: Cannot register usb: Unable to start lib USB:Other error
And if you try to know the state of the USB lib, you obtain the following message:
root@y-edison:~/yoctopuce# lsusb unable to initialize libusb: -99
Does it work?
When you have a working system, correctly connected, it works pretty well. Power consumption is outstanding: powered with 5V through the Sparkfun Base Block, the Edison consumes less than 50mA when idle. We think that unused parts are turned off. If we connect a Yoctopuce module, power consumption goes to 80mA + the module power consumption.
To test Yoctopuce modules with the Edison, we decided to recycle the Yocto-Buzzer demo. Obviously, to connect several Yoctopuce modules to the Edison, you need a USB hub.
A temperature alarm
We left the whole system run during several days powered by the mains. Nothing to report, no crash, no USB connection failure, everything stayed perfectly stable.
We had great hopes for the Edison as a ready to use brick to drive Yoctopuce modules. Globally, it works rather well. But we had the impression that Intel played the community support card by providing the hardware and letting the users to cope among themselves to solve the issues. This turns the slightest difficulty into a treasure hunt on dedicated forums. On the other hand, while the Edison as such is truly a remarkable machine, the Intel breakout board power supply was simply badly designed, which is a pity. If you intend to drive USB modules with your Edison, you'd better choose the Sparkfun Base Block ...