Introduction
Depending on the requirements of the project, as an Internet of Thing (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* platform to the Arduino UNO*, giving a baseline for those who aren’t familiar with the Arduino 101 features. The rest of the article dives deeper into the capabilities of the Arduino 101 platform.
Arduino 101 and Arduino UNO Side by Side
Arduino UNO uses an ATmega328P module while Arduino 101 uses a low power Intel® Curie™ module powered by the Intel® Quark SE SoC. The UNO runs on 5V. The Arduino 101 runs on 3.3 V, although it is 5V tolerant. The Arduino 101 has added on-board Bluetooth Low Energy 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 below.
Figure 1: Arduino 101 Platform.
Figure 2: Arduino UNO Platform
Here is the summary of Arduino 101 and Arduino UNO platform features.
Product Highlights | Arduino 101 | Arduino UNO |
---|---|---|
Microcontroller | Intel Curie | ATmega328P |
Operating Voltage | 3.3 V (5V tolerant I/O) | 5 V |
CPU Speed | 32 MHz | 16 MHz crystal oscillator |
Architecture | 32-bit Intel Quark SE SoC | 8-bit |
Flash memory | 196 KB | 32 KB |
SRAM | 24 KB | 2 KB |
EEPROM | 1 KB | 1 KB |
OS | Open source RTOS | NA |
Clock Speed | 32 MHz | 16 MHz |
Features | Integrated Digital Signal | Used as DSP |
Processor (DSP) sensor hub with 6-axis combo sensor with accelerometer and gyroscope | ||
Bluetooth | Bluetooth Low Energy | NA |
Digital I/O pins | 14 digital input/output pins | 14 digital input/output pins |
Analog I/O pins | 6 analog inputs pins | 6 analog inputs pins |
USB connector | A USB connector for serial communication and sketch upload | A USB connector for serial communication and sketch upload |
ICSP header with SPI signal | An In-Circuit Serial Programming header with SPI signals | An In-Circuit Serial Programming header with SPI signals |
I2C | I2C dedicated pins | I2C dedicated pins (Arduino UNO rev3) |
Reset | A reset button | A reset button |
Dimensions (Length x Width) | 68.6mm x 53.4mm | 68.6mm x 53.4mm |
Arduino 101 Detailed Breakdown
Processors
The Quark SE contains a single core 32MHz x86(Quark) processor and the 32MHz 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. This ability isn’t available in software at this time however.
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. If you’re really interested in experimenting 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 will be releasing a Software Development Kit (SDK) that will include a set of software development tools, libraries, documentation and sample code to enable developers to create IoT applications using the Intel Curie module. The SDK based on the Zephyr Project* and will be compatible with the Arduino 101 platform. The SDK will be available for public in the coming months. Sign up to receive more information at https://software.intel.com/en-us/iot/hardware/curie.
The Zephyr Project is a small open source RTOS for the IoT. It offers connectivity protocols optimized for low-powered, small memory footprint devices and supports Bluetooth, Bluetooth LE, Wifi, and more. It keeps low memory usage and prioritizes task execution, the RTOS provides the most efficient use of energy. The RTOS includes powerful developer tools and robust hardware features. The developer tools include custom toolchain and complier optimizations. For more information on the Zephyr project and the supported hardware features, see zephyrproject.org.
Bluetooth Low Energy (Bluetooth LE* or Bluetooth Smart*)
Arduino 101 adds on-board Bluetooth LE to enable the Arduino 101 to communicate and interact directly with several devices such as computers, smartphones and tablets without using a Bluetooth LE shield. With Bluetooth enabled, the Arduino 101 can directly communicate with other devices without additional hardware. Bluetooth LE is ideal for low power consumption applications. The Arduino 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 makes it easy to connect to Bluetooth LE, sensors and timers. To get started using the built-in Arduino 101 libraries, follow https://www.arduino.cc/en/Guide/Libraries.
- CurieBLE: Connect computers, smartphones, tablets with Bluetooth LE module
- CurieIMU: Use the on-board 6-axis accelerometer and gyroscope
- CurieTimerOne: Manage Timer functions
Accelerometer and Gyroscope
The Accelerometer and Gyroscope are the on-board sensors of the Arduino 101 platform. 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 counting steps, like a pedometer. When the Arduino 101 platform makes a step motion, the step is detected. The step motion is detected when there is a significant change in the X, Y. and Z axes’ velocity 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, 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 as below.
Figure 3: Loading step counting sketch using Arduino IDE.
Upload the step counting sketch:
Figure 4: Running step counting sketch on Arduino IDE.
Move the Arduino 101 platform to make steps and view the serial monitor:
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 platform more powerful. Order the Arduino 101 platform 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/homeArduino forum:
http://forum.arduino.cc/index.php?board=103.0Intel® Curie:
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.htmlArduino 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-101Arduino UNO hardware:
http://www.arduino.org/products/boards/4-arduino-boards/arduino-unoGrove* Starter Kit Plus:
https://software.intel.com/en-us/iot/hardware/devkitZephyr:
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.