Sunday, October 26, 2014

Hand on with Intel Edison


I finally got my hand on this little impressive SoC from Intel. Since I learned about this board some time ago I was eager to get my hand on one to see what it can do. I am currently working with different model of Bay trail at work and we recently tested some platforms to find a low cost, low power solution for an embedded product. So I also had professional motivation to work with this beautiful system.



Opening the box

I found the box laying at my door when I returned from work and I was happy that it successfully cross the border, I did not found any distributor in Canada and I plan to tell the Intel rep next time I see them at work ;) My first impression was that it is very small for all that it can do and the first thing I had done was to take a photo next to a quarter! After taking some time to look at it on all side I headed to the Intel website to found the documentation. So far I realized that the documentation is partial at most and mainly for the Arduino breakout board. I wanted to power it by USB because I am a software guy and I do not have a better power supply, but I did not found which one of the two was connected to the power so I tried one and it powered up. The first thing I found was the USB flash drive. After verifying that the board was not catching fire I returned on the web to read the quick start guide for Linux but it is mostly for the Arduino board, so I skipped the first part and I followed the guide to connect to the COM port but I did not found the device. After a quick udev monitor I realized that the COM port was not on this USB port so I connected the second one and I discovered all the USB device that the Edison support. I was very impressed to found a network card, a COM port, a flash disk and one other device I did not know what it does.

A look around

With the second USB port connected I used Screen to connect to the serial port and had my first contact with the Yocto Linux OS. I did not have the change to read a lot about Yocto, but what I learned is that is more a build system to package the OS that suite ours needs. Beside that the OS is light and fast and is what you can expect of an embedded Linux. It use Linux kernel 3.10.17 and if you follow the guide you will log as root. After I looked in all the OS room, I continued the guide to setup the Wifi. The OS that came with my device was clearly not the latest because the configure_edison --setup was not working. I managed to configure the device name and password and finally setup the Wifi. The last stage of the tutorial was to connect to the information web server but this did not work. I found the way to start the server with the configure_edison --server command but this was a configuration page and not the information as per the guide. 

Refreshing the paint

At this point I decided to reflash the firmware in the hope of fixing the problem I found so far and also because I like to flash my device with the latest build. I always like to have the more up to date OS on my device to have the less bugs and the new feature, but also to see how other are doing it in their product. The process is very easy and you only have to download a ZIP file and copy it to the USB drive of the Edison and let the firmware do it after you call the reboot ota command. The system will reboot and will flash and configure the new firmware/OS. With the new OS in hand I redo the guide and now all worked and the Wifi was now reconnecting at power on. 

Start a small party

Now that I finally had a network access to it I connected to it using SSH and starting to explore the programming tools already available. I began with Python and the installed version is 2.7.3. I did not work to much with it but I know that you can access the GPIO using the mraa library and a higher library also exist called UPM. If you are interested you can access the project Github. I also noted that you can build C/C++ code using gcc but I did not tried it. Following my fun I tried the Arduino IDE to download a sample code to flash a LED on the board event though I own the breakout board, in hope that it was connected to one of the two LED on the board, but this did not work (I looked at the schematic later to found that they are only used as power indicator). The Arduino IDE is easy to work with and connect directly to the board and there is a ton of example for it. I did not plan to use this way to program my Edison, si I did not work to much with it. As the night was getting late, I decided to try to do a simple NodeJS program that simply print Hello World Edison. The Node version that is installed is the 0.10.28 and worked well for me to build a simple web server. This was my first contact with Node so I stayed with a sample code I found online ;) The next day I tried the XDK from intel and I very liked the UI and the ability to debug the code on the device. From what I read on this IDE it look to be the way Intel will like you to program the Edison using NodeJS and HTML5. 

Conclusion

Overall I fall in love with the Edison board. It look to be fast and is full of already installed programming and configuration tools and as it is a Bay trail x86 CPU running Linux, it will be easy to found software for it. The eMMC, Wifi, Bluetooth, and the 30 GPIO (I2C,SPI, PWM..) make this small board a very good option for the price where the only problem is the connector, but that can be easily fixed by buying a breakout board. If I can compare it to the Raspberry Pi (RPi), that I used for my last project, it is a little bit expensive even if you add all the equivalent hardware on the RPi but the small footprint make it an ideal processing board for a small IoT project. On the other hand if you look for a small and cheap option for a project requiring a display the RPi is a better option. I will continue to work with the Edison to build my meteo notifier V2 and I will keep posting my progress.

No comments:

Post a Comment