Click here to Skip to main content
13,447,674 members (48,048 online)
Click here to Skip to main content
Add your own
alternative version


1 bookmarked
Posted 10 Nov 2017

Using Intel® Libraries in Arduino Create

, 10 Nov 2017
Rate this:
Please Sign up or sign in to vote.
This article will show you what libraries are available inside of Arduino Create for Intel®-based platforms running Linux.

Editorial Note

This article is for our sponsors at CodeProject. These articles are intended to provide you with information on products and services that we consider useful and of value to developers

While there are many traditional Arduino* libraries that are useful for microcontrollers, there is a lot of functionality to be had with Linux* based targets to take advantage of the additional processing and OS capabilities. This article will show you what libraries are available inside of Arduino Create for Intel®-based platforms running Linux.

How it's Architected

Since Arduino Create* is run entirely in the cloud, your code is compiled on a server (AWS at the time of this writing), then the binary is copied to your board in the ~/sketches folder. The binary is run as root.

Most libraries inside of Arduino Create are statically linked, meaning that they are linked in the Arduino Create cloud. A few libraries (the larger ones) are dynamically linked to the library installed on the target platform, and must be installed manually on the target for that library to be used. For example, MRAA calls do not require that MRAA be installed previously on a board to work (statically linked in the cloud). Intel® Math Kernel Library (MKL), requires it to be installed on the board manually first (dynamically linked).

The current list of available libraries and how they are compiled is listed below:

Library How linked
MRAA Statically
UPM Statically
Intel® Math Kernel Library Dynamically
OpenCV Dynamically
AWS* IoT Device SDK Statically
Microsoft Azure* IoT Device SDK Statically
LittleB Statically

If you’re interested in adding additional libraries, read the section on Adding Other Libraries below. Additional libraries that get added will be statically linked.

Libraries can be added by going to the Libraries tab in the Editor.

I’ll cover a few of the libraries below.

MRAA and UPM in Arduino* Libraries

Arduino libraries now use MRAA as the Hardware Abstraction Layer (HAL) for Linux based platforms. The Arduino C++ API can still be used just like for other platforms, but underneath MRAA does the translation to talk to the hardware. For more information on using MRAA and UPM in Arduino Create see my other article .


As one of the libraries now available in Arduino Create, you can use OpenCV version 3.3.0. It is a dynamically linked library so it requires OpenCV to be installed on your target platform first. For instructions on installing it see While this tutorial was written for the UpSquared* Grove IoT Development Kit running Ubuntu* Server 16.04, the steps can easily be applied to any system running Ubuntu.
The OpenCV library (Libraries>OPENCV) in Arduino Create comes with two examples: Contours and HelloOpenCV. We’ve also created a People Counter example, which can be found in Libraries>UP SQUARED GROVE IOT DEV KIT>OpenCV-PeopleCounter.
Both the HelloOpenCV and OpenCV-PeopleCounter examples require a webcam. The Contours example does not.

Intel® Math Kernel Library (MKL)

This library is mainly used for data and signal processing. It speeds up matrix multiplication and also includes FFT, filters, and a couple transforms. There are several situations where you may want to use this library for IoT applications:

  • FFT of sensor data, in order to process and aggregate data from multiple sensors before sending over the network
  • Data analysis, fitting data to mathematical models
  • Data compression, taking data sets and creating smaller approximations for analysis or transmission

It is a dynamically linked library in Arduino Create, which means you need to install it on your target platform first.

Check out this article for more information on applications and how to use it in Arduino Create.

Adding other libraries

If there is a library you’d like to use, but it isn’t listed, you can import it using the Library Manager in Arduino Create. When you do this essentially the Arduino Create cloud re-compiles the library you uploaded and makes it available inside the Create environment. In general to do this all you do is:

  1. Find the github repository of the library you want
  2. Download the .zip from that repository
  3. Import it into the Library Manager (this can take anywhere from a few seconds to several minutes depending on the size)


Since these libraries are coming from various sources, the best place to file issues for each library is at the following locations:


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Intel Corporation
United States United States
You may know us for our processors. But we do so much more. Intel invents at the boundaries of technology to make amazing experiences possible for business and society, and for every person on Earth.

Harnessing the capability of the cloud, the ubiquity of the Internet of Things, the latest advances in memory and programmable solutions, and the promise of always-on 5G connectivity, Intel is disrupting industries and solving global challenges. Leading on policy, diversity, inclusion, education and sustainability, we create value for our stockholders, customers and society.
Group type: Organisation

44 members

You may also be interested in...


Comments and Discussions

-- There are no messages in this forum --
Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.180318.3 | Last Updated 10 Nov 2017
Article Copyright 2017 by Intel Corporation
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid