Get to Know the Arduino 101* (Branded Genuino 101* in Some Countries)

Introduction

Depending on the requirements of the project, as an Internet of Things or IoT developer you need to choose the best platform to build your application. It is important to understand the capabilities of the different platforms. The first part of this article compares the Arduino 101* (branded Genuino 101* in some countries) board to the Arduino UNO* board, giving a baseline for those who aren’t familiar with the Arduino 101 features. The second part dives deeper into the capabilities of the Arduino 101 board.  

Arduino 101* board and Arduino UNO* board side by side

The Arduino UNO* uses an Atmel ATmega328P* module while the Arduino 101 uses a low-power Intel® Curie™module powered by the Intel® Quark SE SoC. The UNO runs on 5V, while the the Arduino 101 runs on 3.3 V instead of 5V, although it is 5V tolerant. The Arduino 101 has added onboard Bluetooth® low energy technology and a 6-axis combo sensor with accelerometer and gyroscope while the UNO does not.  They are identical in size and pinout (see Figures 1 and 2).

Arduino 101 Platform
Figure 1:  Arduino 101* board

Arduino UNO Platform
Figure 2: Arduino UNO* board

The following table provides a summary of Arduino 101 and Arduino UNO board features.

Product HighlightsArduino 101* boardArduino UNO* board
MicrocontrollerIntel® CurieTM moduleAtmel ATmega328P*
Operating Voltage3.3 V (5V tolerant I/O)5 V
CPU Speed32 MHz16 MHz crystal oscillator
Architecture32-bit Intel® QuarkTM SE SoC8-bit
Flash memory196 KB32 KB
SRAM24 KB2 KB
EEPROM1 KB1 KB
OSOpen source RTOSNA
Clock Speed32 MHz16 MHz
FeaturesIntegrated digital signalUsed as DSP
 Processor (DSP) sensor hub with 6-axis combo sensor with accelerometer and gyroscope 
Bluetooth®Bluetooth® low energyNA
Digital I/O pins14 digital input/output pins14 digital input/output pins
Analog I/O pins6 analog inputs pins6 analog inputs pins
USB connectorA USB connector for serial communication and sketch uploadA USB connector for serial communication and sketch upload
ICSP header with SPI signalAn In-Circuit Serial Programming header with SPI signalsAn In-Circuit Serial Programming header with SPI signals
I2CI2C dedicated pinsI2C dedicated pins (Arduino UNO rev3)
ResetA reset buttonA reset button
Dimensions
(Length x Width)
68.6 mm x 53.4 mm68.6 mm x 53.4 mm

Arduino 101* Board Detailed Breakdown

Processors

The Intel® Quark SE SoC contains a single core 32 MHz x86 (Intel® Quark™ processor) and the 32 MHz Argonaut RISC Core (ARC)* EM processor. The two processors operate simultaneously and share memory. The ARC processor is also referenced as the digital signal processor (DSP) sensor hub depending on what document you’re looking at. In theory, the DSP can run using a minimal amount of power, gathering and processing sensor data while the x86 processor waits in a low power mode, which would be ideal for always-on applications. However, this ability isn’t available at this time.

When you load an Arduino sketch, it runs on the ARC. However, the Intel toolchain compiles your sketch so that the ARC interacts with the x86 processor as needed via static mailboxes. To experiment with that, you can access the open source corelibs for the Arduino 101 on 01.org’s GitHub*.

Real-Time Operating System (RTOS)

The standout capability for the Arduino 101 from a software standpoint is the ability to run an RTOS. Intel has released the Intel® Curie Open Developer Kit (ODK) which enables developers to create robust IoT applications using the Intel® Curie module. More information can be found at https://software.intel.com/en-us/node/674972

Bluetooth® Low Energy or (Bluetooth® Smart Ready device)

Arduino 101 adds onboard Bluetooth low energy to enable the Arduino 101 to communicate and interact directly with several devices such as computers, smartphones, and tablets without using a Bluetooth low energy shield. With Bluetooth enabled, the Arduino 101 can directly communicate with other devices without additional hardware. Bluetooth low energy is ideal for low-power consumption applications. The sample code for CurieBLE is available at https://www.arduino.cc/en/Reference/CurieBLE.

Additional libraries

Libraries are a collection of code that provide extra functionality for use in sketches. Arduino 101 libraries make it easy to connect to Bluetooth low energy, sensors, and timers. To get started using the built-in Arduino 101 libraries, follow https://www.arduino.cc/en/Guide/Libraries.

  • Curie BLE: Connect computers, smartphones, tablets with Bluetooth low energy module
  • Curie IMU: Use the on-board 6-axis accelerometer and gyroscope
  • Curie TimerOne: Manage Timer functions

Accelerometer and gyroscope

The accelerometer and gyroscope are the onboard sensors of the Arduino 101 board. Accelerometers are used mainly to measure acceleration and tilt. Gyroscopes are used to measure angular velocity and orientation. These sensors provide the ability to precisely identify the orientation and movement of the object. This new feature allows the Arduino 101 platform to enable a better user experience for wearable devices.

One of the ways to use the accelerometer is to count steps, like a pedometer does.  When the Arduino 101 board makes a step motion, the step is detected. The step motion is detected when there is a significant change in velocity of the x-, y-. and z-axes relative to the resting state. For more information about the step counter, visit https://www.arduino.cc/en/Tutorial/Genuino101CurieIMUStepCounter.

Similarly to the Arduino UNO, the Arduino 101 can be programmed with the Arduino* IDE software. To start using the Arduino 101, go to https://software.intel.com/en-us/articles/fun-with-the-arduino-101-genuino-101. To see how the step counting works, upload the step-counting sketch into Arduino 101 (see Figure 3).

Loading step
Figure 3: Loading step-counting sketch using the Arduino* IDE

Upload the step-counting sketch (see Figure 4):

Running step
Figure 4: Running step-counting sketch on the Arduino* IDE

Move the Arduino 101 platform to make steps and view the serial monitor (see Figure 5).

Serial window
Figure 5: Serial window

Interrupt pins

Both Arduino 101 and Arduino UNO have 20 I/O pins. Arduino 101 has more pins that can accept interrupts than Arduino UNO. Arduino UNO can trigger an interrupt on digital pins 2 and 3 while Arduino 101 can trigger interrupts on all pins. External interrupts that are triggered by external events can happen on all pins. Low value, high value, a rising or falling edge can trigger an interrupt on all pins but change value only supported by pins 2, 5, 7, 8, 10, 11, 12, and 13.

Summary

This document summarized the features of the Arduino 101. There are sensors, shields, components, and libraries that make the Arduino 101 board more powerful. Order the Arduino 101 board at http://www.intel.com/buy/us/en/product/emergingtechnologies/intel-arduino-101-497161 and check out https://software.intel.com/en-us/articles/fun-with-the-arduino-101-genuino-101 to experiment and enjoy the power of the Intel® Curie™ module.

Helpful References

Intel® Developer Zone:
https://software.intel.com/en-us/iot/home

Arduino* forum:
http://forum.arduino.cc/index.php?board=103.0

Intel® Curie™ module:
https://software.intel.com/en-us/iot/hardware/curie
http://www.intel.com/content/www/us/en/wearables/wearable-soc.html
http://www.intel.com/content/www/us/en/wearables/intel-curie-fact-sheet.html

Arduino 101 hardware:
https://www.arduino.cc/en/Main/ArduinoBoard101
https://www.arduino.cc/en/Guide/Arduino101
https://software.intel.com/en-us/articles/fun-with-the-arduino-101-genuino-101

Arduino UNO* hardware:
http://www.arduino.org/products/boards/4-arduino-boards/arduino-uno

Grove* Starter Kit Plus:
https://software.intel.com/en-us/iot/hardware/devkit

Zephyr Project*:
https://www.zephyrproject.org/about
https://www.zephyrproject.org/doc/board/arduino_101.html

About the Author

Nancy Le is a software engineer at Intel Corporation in the Software and Services Group working on Intel® Atom™ processor scale-enabling projects.

For more complete information about compiler optimizations, see our Optimization Notice.