Arduino Nicla Sense ME Pinout: BHI260AP, BME688, BLE and Sensor Fusion

Quick Summary (TL;DR):
The Arduino Nicla Sense ME is a tiny 22.86 × 22.86 mm sensor node built around an ANNA-B112 module with an nRF52832 and a separate Bosch BHI260AP smart sensor hub. It exposes twelve Arduino-numbered I/O signals, including I2C, SPI, UART, two analogue inputs and PWM-capable GPIO, while the board itself carries a BHI260AP 6-axis IMU, BMM150 magnetometer, BMP390 barometric pressure sensor and BME688 environmental/gas sensor. That combination lets the board produce much richer virtual measurements than a normal microcontroller plus a single IMU: rotation vectors, orientation, motion data and environmental values can be processed close to the sensors before the nRF52832 needs to handle them.

The important practical detail is that Nicla Sense ME is not a miniature UNO. Its external logic domain is designed for low-power sensors, VDDIO_EXT is programmable from 1.8 V to 3.3 V, and Arduino specifically warns that the bidirectional level translators on the external low-power I/O are intended for logic rather than driving significant current. Treat every exposed pin as a signal pin, not as a power output for LEDs, relays or motors. Use proper transistor, MOSFET or driver circuitry for loads.

Materials You’ll Need

ItemWhy you need it
Arduino Nicla Sense METhe board covered in this pinout and sensor guide
Micro-USB data cableProgramming, serial monitoring and USB power
Arduino IDE 2.xBoard package, library installation and firmware upload
Arduino Mbed OS Nicla Boards coreAdds the Nicla Sense ME target to Arduino IDE
Arduino_BHY2 libraryAccess to BHI260AP virtual sensors and onboard sensor data
ArduinoBLE libraryNeeded when you want BLE features from Arduino sketches
3.7 V Li-Po battery (optional)For compact standalone sensor nodes
ESLOV cable or fine jumper wiring (optional)For using the Nicla as a sensor satellite for another Arduino board

Nicla Sense ME Hardware at a Glance

FeatureNicla Sense ME
Main MCU / radiou-blox ANNA-B112 module with Nordic nRF52832
CPU64 MHz Arm Cortex-M4F
Main MCU memory512 KB flash, 64 KB RAM
Smart sensor hubBosch BHI260AP with integrated 3-axis accelerometer + 3-axis gyroscope
MagnetometerBosch BMM150
Barometric pressureBosch BMP390
Environmental sensorBosch BME688: gas, temperature, humidity and pressure sensing
External digital I/OD0-D11 style signals across castellated headers
Analogue inputsA0 and A1
External buses1 × I2C, 1 × SPI, 1 × UART
WirelessBluetooth Low Energy
Battery3.7 V Li-Po support with onboard charging
External I/O voltageVDDIO_EXT software-programmable from 1.8 V to 3.3 V
Board size22.86 × 22.86 mm
WeightAbout 2 g

There are effectively two processors doing different jobs. The nRF52832 is the Arduino-facing host processor and BLE radio. The BHI260AP is a sensor-processing device with its own programmable 32-bit core, integrated accelerometer and gyroscope, firmware and sensor-fusion framework. This division is one of the reasons the Nicla can run always-on sensing workloads without forcing the main MCU to perform every filtering and fusion calculation itself.

Arduino Nicla Sense ME Pinout

The board does not use the familiar UNO header layout. Instead, signals appear on castellated edge pads. Arduino labels the usable signals as D0-D11, with dedicated default functions for I2C, UART, SPI and the two analogue channels.

Arduino labelnRF52832 pinDefault / useful functionNotes
D0 / LPIO3P0.10Digital I/O, PWMGeneral low-power I/O
D1 / LPIO2 / RXP0.09UART RX, digital I/O, PWMDefault receive pin
D2 / LPIO1 / TXP0.20UART TX, digital I/O, PWMDefault transmit pin
D3 / SCL1P0.23I2C SCL, digital I/O, PWMDefault external I2C clock
D4 / SDA1P0.22I2C SDA, digital I/O, PWMDefault external I2C data
D5 / LPIO0P0.24Digital I/O, PWMGeneral low-power I/O
D6 / CSP0.29SPI CS, digital I/O, PWMDefault SPI chip select
D7 / CIPOP0.28SPI CIPO/MISO, digital I/O, PWMController input, peripheral output
D8 / COPIP0.27SPI COPI/MOSI, digital I/O, PWMController output, peripheral input
D9 / SCLKP0.11SPI clock, digital I/O, PWMDefault SPI clock
D10 / A0P0.02ADC input, digital I/O, PWMFirst exposed analogue input
D11 / A1P0.30ADC input, digital I/O, PWMSecond exposed analogue input

Arduino’s pinout marks these external digital signals as PWM-capable, but that does not mean you can treat all twelve as simultaneously independent hardware PWM channels. PWM ultimately depends on the nRF52832 timer/PWM resources and whatever peripherals your sketch or core is already using. For ordinary dimming, buzzer drive or control signals, the Arduino API is normally sufficient; for a design that needs many tightly synchronised PWM outputs, check the underlying nRF52832 peripheral allocation.

Power, Ground and Battery Pins

Pin / railPurposePractical note
VIN_BQ25120Power input to the onboard power-management / charger circuitUse the board documentation when powering from an external rail
VDDIO_EXTExternal I/O logic railSoftware-programmable from 1.8 V to 3.3 V; low-current logic domain
GNDGround referenceCommon ground for external peripherals
VBAT3.7 V Li-Po connectionAlso available through the battery connector on the rear
NTCOptional battery temperature inputUsed with packs that provide an NTC lead

The board can be powered from USB for development or from a small Li-Po for standalone operation. If you use the battery header pads, remember that the same battery connection is also available through the board’s battery connector. Do not connect two separate batteries at the same time.

The most unusual rail for people coming from UNO/Nano boards is VDDIO_EXT. It exists because the Nicla is designed to sit inside low-power sensor systems where 1.8 V peripherals are common. This is useful, but it also means you should not blindly connect a 5 V module and assume the GPIO is 5 V tolerant. The safe mental model is: Nicla external I/O is a low-voltage logic interface. Check the voltage of every peripheral before wiring it.

I2C Pins: D3 SCL and D4 SDA

The default external I2C bus uses:

SCL  -> D3 / P0.23
SDA  -> D4 / P0.22

These signals are also routed through the Nicla ecosystem’s ESLOV interface, which is why the board can work either as a standalone controller or as a compact sensor module attached to another compatible Arduino board. In host mode, the companion Arduino_BHY2Host library can be used on the external Arduino to request Nicla sensor data over the wired link.

Because the board already contains several internal I2C/SPI sensor connections, do not assume that every internal bus is the same bus exposed on D3/D4. The external I2C pair is the one intended for your own peripherals.

SPI Pins: D6-D9

The default external SPI mapping is:

CS    -> D6 / P0.29
CIPO  -> D7 / P0.28
COPI  -> D8 / P0.27
SCLK  -> D9 / P0.11

Arduino now uses the controller/peripheral terms CIPO and COPI, while many modules still print the older labels MISO and MOSI. They describe the same signal directions for a normal Arduino-as-controller connection.

The SPI pins are useful for a small display, external ADC, flash device or another digital sensor, but the physical board is tiny and the level-translated I/O is optimised for sensing rather than high-current expansion. Keep wiring short and use a proper carrier PCB for permanent installations.

UART Pins: D1 RX and D2 TX

The exposed serial interface uses:

RX -> D1 / P0.09
TX -> D2 / P0.20

This is useful for GNSS receivers, industrial sensors, debug links and other serial peripherals. As always, match the external device’s logic voltage to the Nicla I/O domain. A sensor that is powered from 5 V may still output 5 V UART logic, which is not something to connect blindly to a 1.8-3.3 V system.

Analogue Inputs A0 and A1

The two exposed analogue inputs are D10/A0 and D11/A1. They connect to nRF52832 ADC-capable pins P0.02 and P0.30. This is enough for a battery monitor, analogue pressure transducer output, potentiometer or another low-voltage analogue source, but always keep the input inside the permitted voltage range for the configured I/O/ADC system.

If you need many analogue channels, higher precision or input voltages beyond the board’s native range, an external ADC with suitable front-end protection is usually a cleaner design than trying to stretch the two onboard channels.

The Four Bosch Sensors Onboard

BHI260AP: smart sensor hub + 6-axis IMU

The BHI260AP is the key device that makes Nicla Sense ME different from a conventional sensor board. It combines a 3-axis accelerometer, 3-axis gyroscope and a programmable 32-bit sensor-hub processor. The sensor hub can run Bosch firmware that exposes physical and virtual sensors to the host, so the nRF52832 can request higher-level data such as rotation vectors rather than manually building every fusion algorithm from raw accelerometer and gyro samples.

BMM150: 3-axis magnetometer

The BMM150 adds magnetic-field measurement. When magnetometer data is combined with the BHI260AP accelerometer and gyroscope, the platform can produce a 9-axis orientation solution. This is why you will see the Nicla described as providing 9-axis motion sensing even though the BHI260AP itself contains a 6-axis IMU.

BMP390: precision barometric pressure

The BMP390 is a high-performance pressure sensor specified for roughly 300-1250 hPa operation. It is useful for barometric pressure, relative altitude changes, weather logging and indoor vertical-movement detection. It is a better choice for pressure/altitude work than simply relying on the pressure channel inside a general environmental sensor.

BME688: gas, humidity, temperature and pressure

The BME688 combines environmental measurements with a metal-oxide gas sensor. It can respond to a broad mixture of volatile compounds and, with suitable Bosch processing, can be used to derive air-quality metrics and gas-classification features. One important distinction: it is not a true CO2 sensor like an NDIR module. Any CO2-equivalent value is inferred from gas/environmental behaviour rather than measured by directly sensing CO2 molecules.

How Sensor Fusion Works on Nicla Sense ME

Sensor fusion means combining several imperfect measurements into a more useful estimate. An accelerometer can detect gravity but becomes noisy during movement. A gyroscope is excellent at short-term rotation but drifts if integrated for too long. A magnetometer provides a heading reference but can be distorted by nearby steel, magnets and current-carrying wires.

The BHI260AP’s sensor-processing framework can combine these streams and expose virtual sensors such as rotation vectors, orientation, gravity, linear acceleration or activity-related outputs. That reduces the amount of code you need on the nRF52832 and allows the system to remain efficient when motion sensing must run continuously.

This architecture is especially useful for:

  • wearable motion logging
  • machine orientation and tilt monitoring
  • asset movement detection
  • gesture or activity classification
  • condition monitoring where motion and environment should be correlated

Do not treat sensor fusion as magic. Magnetometer calibration, mounting orientation, vibration, nearby ferrous objects and temperature still affect the quality of the result. For an industrial installation, validate the final enclosure and mounting position rather than calibrating the bare board on a desk and assuming the same performance after installation.

Arduino IDE Setup

  1. Open Boards Manager in Arduino IDE.
  2. Install the current Arduino Mbed OS Nicla Boards package.
  3. Select Arduino Nicla Sense ME as the target board.
  4. Install Arduino_BHY2 from Library Manager.
  5. Install ArduinoBLE as well if your project uses BLE.
  6. Connect the board with a data-capable Micro-USB cable and select the correct port.

The BHY2 library is the normal entry point for Nicla Sense ME sensor work. It talks to the BHI260AP framework and gives Arduino sketches access to the supported physical and virtual sensor IDs. The same ecosystem also supports host operation through ESLOV and BLE.

Simple Standalone Sensor Test

This compact sketch is a useful first check because it proves that the BHI260AP firmware is running and that motion/environmental data is reaching the Arduino side. It intentionally reads only a few commonly exposed virtual sensors.

#include <Arduino_BHY2.h>

SensorXYZ acceleration(SENSOR_ID_ACC);
SensorXYZ angularRate(SENSOR_ID_GYRO);
Sensor temperature(SENSOR_ID_TEMP);
Sensor gasResistance(SENSOR_ID_GAS);
SensorQuaternion attitude(SENSOR_ID_RV);

void setup() {
  Serial.begin(115200);

  BHY2.begin();
  acceleration.begin();
  angularRate.begin();
  temperature.begin();
  gasResistance.begin();
  attitude.begin();
}

void loop() {
  BHY2.update();

  static uint32_t lastPrint = 0;
  if (millis() - lastPrint < 1000) {
    return;
  }
  lastPrint = millis();

  if (acceleration.dataAvailable()) {
    Serial.print("Accel: ");
    Serial.println(acceleration.toString());
    acceleration.clearDataAvailFlag();
  }

  if (angularRate.dataAvailable()) {
    Serial.print("Gyro:  ");
    Serial.println(angularRate.toString());
    angularRate.clearDataAvailFlag();
  }

  if (temperature.dataAvailable()) {
    Serial.print("Temp:  ");
    Serial.println(temperature.value(), 2);
    temperature.clearDataAvailFlag();
  }

  if (gasResistance.dataAvailable()) {
    Serial.print("Gas:   ");
    Serial.println(gasResistance.value(), 2);
    gasResistance.clearDataAvailFlag();
  }

  if (attitude.dataAvailable()) {
    Serial.print("Rotation vector: ");
    Serial.println(attitude.toString());
    attitude.clearDataAvailFlag();
  }
}

The important line is BHY2.update(). The library expects the sketch to service the sensor framework repeatedly. A long blocking loop can make the application appear unreliable even though the hardware is fine. For a real project, schedule printing, BLE transmission and other tasks with millis()-based timing rather than filling the loop with long delays.

Bluetooth Low Energy on the Nicla Sense ME

The ANNA-B112 contains the nRF52832 radio and gives the Nicla its BLE connection. Arduino’s published board information makes an important distinction: the underlying hardware/stack can support newer Bluetooth capability, while the normal ArduinoBLE path is documented around Bluetooth 4.2. In practice, design your Arduino application around the features the current core and ArduinoBLE library actually expose rather than buying the board based only on the radio silicon’s theoretical specification.

BLE is a good fit for short sensor packets: orientation, temperature, battery state, event flags and periodic environmental summaries. It is less attractive if you expect continuous high-rate raw IMU streaming alongside a complex application. The better architecture is often to let the BHI260AP perform filtering/fusion, then transmit the lower-rate processed result.

Using Nicla Sense ME as an ESLOV Sensor Satellite

Nicla Sense ME does not have to run the whole application. It can operate as a compact sensor front end connected to a larger Arduino board through ESLOV/I2C. In that arrangement, the Nicla handles its onboard sensing and the host board handles networking, display, storage or higher-level control.

This is useful when you want the sensing package physically close to a machine or enclosure wall but need the main controller somewhere else. It also makes sense when the host board has Ethernet, Wi-Fi or more memory but you still want the Nicla’s Bosch sensor set and BHI260AP processing.

Practical Pin-Use Recommendations

NeedRecommended pins / approachWhy
Simple external I2C sensorD3 SCL + D4 SDADefault exposed I2C bus
SPI peripheralD6-D9Default CS/CIPO/COPI/SCLK mapping
Serial peripheralD1 RX + D2 TXDefault UART pair
Analogue measurementD10/A0 or D11/A1Only two exposed analogue channels
Low-current digital controlD0 or D5 firstKeeps default communication buses free
LED, relay, motor or solenoidUse GPIO + transistor/MOSFET/driverDo not drive loads from the level-translated I/O
Battery sensor nodeLi-Po + BLE + BHI260AP processingMatches the board’s low-power design intent

Common Mistakes

  • Assuming the pins are 5 V tolerant. Treat Nicla as a 1.8-3.3 V logic platform.
  • Driving a load directly from an I/O. The external low-power translated signals are not designed as load outputs.
  • Confusing 6-axis and 9-axis sensing. The BHI260AP contains accel + gyro; the BMM150 adds the magnetic axes used for full orientation.
  • Calling BME688 a real CO2 sensor. It can support CO2-equivalent estimation, but it is not an NDIR CO2 measurement device.
  • Blocking the loop for long periods. BHY2 sensor handling expects regular calls to BHY2.update().
  • Using two battery connections at once. The rear connector and VBAT header reach the same battery system.

Troubleshooting

SymptomWhat to check first
Nicla Sense ME is missing from the board menuInstall/update Arduino Mbed OS Nicla Boards and restart the IDE
Upload fails or no serial port appearsTry another data-capable USB cable and reselect the board/port
Sensor values never updateConfirm Arduino_BHY2 is installed, call BHY2.begin() and repeatedly call BHY2.update()
Rotation/orientation is unstableMove away from magnets/steel, check mounting, and allow calibration
External I2C device is not detectedCheck D3/D4 wiring, common ground, pull-ups and logic voltage
UART device works intermittentlyCheck RX/TX crossing, baud rate and voltage compatibility
BLE sketch will not compileInstall/update ArduinoBLE and confirm the Nicla board/core version
Board resets when a peripheral switchesDo not power a load from GPIO/VDDIO; isolate noisy/high-current loads with a driver and suitable supply

Nicla Sense ME vs Nano 33 BLE Sense Rev2

Both boards target BLE sensor projects, but they solve different mechanical and architectural problems. The Arduino Nano 33 BLE Sense Rev2 is easier to prototype on a breadboard and exposes many more familiar Nano-format pins. Nicla Sense ME is dramatically smaller and is more naturally treated as a sensor node or embedded module, with the BHI260AP doing dedicated sensor-hub work.

If you mainly want the nRF52 platform with a more conventional pinout, see the Arduino Nano 33 BLE pinout guide. If you are deciding between Nordic BLE and an ESP32-S3 platform, our Nano 33 BLE vs Nano ESP32 comparison explains the CPU, radio and ecosystem trade-offs, while the Nano 33 BLE Sense Rev2 vs ESP32-S3 sensor-node comparison focuses more directly on sensing and edge-AI workloads.

When Nicla Sense ME Is the Right Board

  • You need motion + environmental sensing in an extremely small package.
  • You want BLE but do not need Wi-Fi.
  • You want the BHI260AP to handle sensor fusion and virtual sensors.
  • You are building a battery-powered sensor node.
  • You want a sensor satellite that can connect to another Arduino through ESLOV.

It is less attractive when your project needs lots of GPIO, 5 V shields, Wi-Fi, high-current outputs or simple breadboard prototyping. In those cases, a Nano-format board or an ESP32 development board is usually easier.

Conclusion

The Arduino Nicla Sense ME packs an unusually capable sensing architecture into a board barely larger than a postage stamp. The headline pinout is simple — D0-D11 with UART, I2C, SPI, two ADC inputs and PWM — but the real value is inside the board: the BHI260AP sensor hub, BMM150 magnetometer, BMP390 pressure sensor and BME688 environmental sensor work together to provide motion, orientation and environmental data without forcing the main nRF52832 to perform every low-level calculation.

For a reliable design, remember three rules: keep external logic within the 1.8-3.3 V I/O domain, do not use the level-translated GPIO to drive loads directly, and let the BHY2/BHI260AP architecture do the sensor work it was designed to do. Used that way, Nicla Sense ME is a very strong platform for compact BLE condition monitoring, motion tracking and smart sensor nodes.

Datasheets & External Resources

All manufacturer and software links are collected here so the main article remains focused on the practical guide.

Share your love