

The Arduino 101 is a microcontroller board based on the Intel Curie module. It combines the simplicity of the Arduino platform with advanced features such as built-in Bluetooth Low Energy (BLE) capabilities and a 6-axis accelerometer/gyroscope. This makes it an excellent choice for projects involving wireless communication, motion sensing, and IoT applications. The board is compatible with the Arduino IDE, making it accessible to both beginners and experienced developers.








The Arduino 101 features a variety of pins for interfacing with external components. Below is a detailed description of the pin layout:
| Pin | Type | Description |
|---|---|---|
| Digital 0-13 | Digital I/O | General-purpose digital input/output pins. Pins 3, 5, 6, and 9 support PWM. |
| Analog 0-5 | Analog Input | Used for reading analog signals (0-1023 range). |
| GND | Ground | Ground connection for the circuit. |
| 3.3V | Power Output | Provides 3.3V regulated power. |
| 5V | Power Output | Provides 5V regulated power. |
| VIN | Power Input | Input voltage to the board when using an external power source (7-12V). |
| AREF | Analog Reference | Reference voltage for analog inputs. |
| I2C (A4, A5) | Communication | SDA (A4) and SCL (A5) pins for I2C communication. |
| UART (0, 1) | Communication | TX (0) and RX (1) pins for serial communication. |
| BLE | Wireless | Built-in Bluetooth Low Energy for wireless communication. |
| IMU | Sensor | Built-in 6-axis accelerometer/gyroscope for motion sensing. |
Powering the Board:
Programming the Board:
Using BLE:
CurieBLE library to create BLE peripherals or central devices. Using the IMU:
CurieIMU library. Here is an example of how to read accelerometer data using the CurieIMU library:
#include <CurieIMU.h>
void setup() {
Serial.begin(9600); // Initialize serial communication
while (!Serial); // Wait for the serial port to open
CurieIMU.begin(); // Initialize the IMU
Serial.println("IMU initialized!");
// Set accelerometer range to ±4g
CurieIMU.setAccelerometerRange(4);
}
void loop() {
int ax, ay, az;
// Read accelerometer values
CurieIMU.readAccelerometer(ax, ay, az);
// Print the values to the Serial Monitor
Serial.print("Accelerometer: ");
Serial.print("X = "); Serial.print(ax);
Serial.print(", Y = "); Serial.print(ay);
Serial.print(", Z = "); Serial.println(az);
delay(500); // Wait for 500ms before the next reading
}
CurieBLE and CurieIMU libraries for BLE and IMU functionality, respectively. These libraries are specifically designed for the Arduino 101.Problem: The board is not recognized by the Arduino IDE.
Solution:
Problem: BLE connection is unstable or not working.
Solution:
CurieBLE library is correctly implemented in your code. Problem: IMU readings are inconsistent or incorrect.
Solution:
CurieIMU library's calibration functions. Problem: The board does not power on.
Solution:
Q: Can I use the Arduino 101 with 5V sensors?
A: Yes, but you will need a level shifter to convert the 5V signals to 3.3V.
Q: Is the Arduino 101 compatible with all Arduino shields?
A: The Arduino 101 is compatible with most Arduino shields, but ensure the shield operates at 3.3V logic levels.
Q: How do I update the firmware on the Arduino 101?
A: Use the "Firmware Updater" tool in the Arduino IDE to update the Curie module firmware.
Q: Can I use the Arduino 101 for battery-powered projects?
A: Yes, you can use a battery pack (7-12V) connected to the VIN pin or DC power jack.