Intel Curie-based board combines performance and low power for many possibilities.
The Genuino 101 — also sold in the USA as the Arduino 101 — is positioned as a successor to the venerable UNO, adopting the same much loved and often imitated form factor. However, as the name suggests this is very much an official product, designed by Arduino founders, Massimo Banzi and colleagues, in partnership with Intel and featuring the new Intel Curie module at its heart.
While the Genuino 101 looks very similar to the UNO, has pin-compatible headers, benefits from support via the official IDE and is offered at a similar price point, it represents a step change in terms of capabilities. For a start, the Curie module has two 32-bit cores, and integrates a 6-axis accelerometer and Bluetooth LE, amongst other features.
The Genuino 101 can be powered via USB, or a 2.1mm barrel connector with an input of 7-20 VDC (12 VDC being the recommended maximum). The I/O voltage is 3.3V, although pins are 5V tolerant, making it particularly flexible and enabling use with a wider range of peripherals, along with shields that were designed for use with the UNO and other older boards. In terms of I/O it has:
14x digital (4 of which PWM capable)
6x 10-bit analogue inputs (can alternatively be configured as digital I/O)
Serial RX and TX (TTL)
Pins are able to source or sink a maximum of 4mA.
No big surprises so far, but if we take a closer look at the Curie module this is where it starts to get particularly interesting.
The Curie has 32-bit Intel Quark and 32-bit ARC microcontroller cores, both clocked at 32MHz. The former is an x86 architecture microcontroller optimised for small space and low power, while the latter is a highly configurable RISC processor which is embedded in >1.5 billion products per year. The module has 384kB flash memory and 80kB SRAM — somewhat more than the 32kB flash and 2kB RAM of the 8-bit UNO! — while also integrating Bluetooth Low Energy, a 6-axis accelerometer/gyroscope and battery charging circuit into its tiny footprint.
The Intel Curie was designed with wearable applications in mind, but will clearly find many more uses that require a combination of small size, performance and low power consumption — with IoT devices being an obvious one. At the time of writing there is not much in the way of detailed technical information available for the Curie module, but given it was only announced a matter of months ago it would be reasonable to assume that this will be provided in due course.
In any case, we can take advantage of many of the Curie's capabilities now via the Arduino platform and without having to concern ourselves with low level details. Of course, having access to the bare metal is very much desirable and particularly when it comes to open hardware such as this. But no need to fear, since it looks as though low level access should be only a few months away.
Arduino IDE v1.6.7 or later is required in order to get up and running with the Genuino 101. With this started it's simply a matter of opening the Board Manager and searching for either “101” or “Curie” in order to find the package which adds support for the board, before installing it. Following which the IDE will compile sketches that execute across both the Quark and ARC cores.
The Curie module runs a real-time operating system (RTOS) that is developed by Intel and which is scheduled to be open sourced in March 2016. Until then only the Arduino IDE can communicate with the RTOS in order to perform certain pre-defined tasks, such as programming a sketch to flash, exposing Bluetooth LE functionality to a sketch and performing PWM.
One noteworthy feature is that uploading sketches is achieved using USB Device Firmware Update (DFU), rather than as with the UNO and most other Arduino boards, by using a USB/UART connection to a bootloader that is programmed into microcontroller flash. The Arduino bootloader method certainly worked, but DFU is both a standard and more sophisticated mechanism.
The USB interface also provides a virtual serial port that is controlled by reading and writing to the Serial object in sketches. In addition to which, pins 0/1 expose a hardware serial port that is mapped to the Serial1 object. Making it simple enough to interface PC-based applications with a sketch running on the Genuino 101, along with hooking up serial peripherals such as a GPS receiver.
At the time of writing Curie-specific libraries are also provided for:
Bluetooth Low Energy
Accelerometer + gyroscope
The last allows you to read and set the time of a real-time clock (RTC), an incredibly useful capability that tends to be associated with larger platforms and as an add-on to smaller ones.
Of course, in addition to the above you also have the standard set of Arduino libraries available.
Examples and tutorials
As you would expect the libraries come supplied with example sketches. The Bluetooth Low Energy peripheral examples allow the voltage of an analogue pin to be read remotely, digital input pin state to be read and an LED to be turned on/off.
Accelerometer/gyroscope — a.k.a. Inertial Monitoring Unit (IMU) — examples are included that provide access to raw sensor data, and detect each of shock, taps and steps.
There are also examples for serial and, as mentioned previously, reading and setting the RTC.
The examples are great if you want to quickly get an idea of how to use, say, Bluetooth LE or the IMU in a project. However, tutorials are also provided that get you a little more hands-on in running one of a number of very cool demo applications that serve to further underline the possibilities.
Perhaps the most impressive tutorial uses the Madgwick filter algorithm to take “raw values from a gyroscope and accelerometer, and uses them to return four quaternions, which are 4-dimensional numbers which contain x, y, and z values to represent the axis around which rotation occurs, as well as a ω value which represents the value of rotation which occurs around the same axis. These quartonians can be used to calculate the Euler angles pitch, yaw, and roll”. The resultant data is then sent over the serial port to a Processing application running on a PC, which in turn provides a real-time visualisation of the orientation of the 101.
At the time of writing other tutorials are provided for creating a step counter, and a Bluteooth Low Energy heart rate monitor. The latter in fact simulates heart beat measurement, using a potentiometer to control the rate, with data being transmitted to an app running on an Android or iOS device. Which is sufficient to demonstrate the sort of applications you can build.
The Genuino 101 is certainly a significant jump up from the UNO in terms of its capabilities and the extra flash and SRAM alone will be welcomed by many. The Intel Curie, with two 32-bit cores, integrated Bluetooth LE and an IMU, is an interesting little module to say the very least. The supporting IDE, libraries and examples doing a great job of providing that characteristic ease of use.
As the RTOS is open sourced and further details of the Curie become available I'm sure we can expect to see even more of just what it is capable of. Until then the Intel Curie Module Fact Sheet and Intel Quark SE Product Brief both make for interesting reading, and there is no shortage of wireless and sensor etc. applications to which the Genuino 101 could be put to use in right away.
Realted Articles - Set your pulse racing with Genuino 101 and Bluetooth LE