Arduino Nano 33 BLE Sense Rev 2 and the Seeed nRF52840 Sense
The Nano 33 BLE family of boards is considered part of the Arduino Pro range, targeted at non-hobbyist applications. We are using it as one of the hardware platforms for our Raven Flight Controller Software.
There are now three board configuration options:
- Nano 33 BLE — A board with 3.3V logic and a 9 axis inertial sensor (LSM9DS1). As the name suggests, it has a 2.4 GHz Bluetooth® 5 Low Energy (BLE) module from u-blox, and an internal antenna. It uses the nRF52840 chip from Nordic Semiconductors, a 32-bit ARM® Cortex®-M4 CPU running at 64 MHz.
- Nano 33 BLE SENSE — The SENSE is identical to the Nano 33 BLE but includes additional sensors: a microphone, a gesture, light and colour sensor (APDS9960), as well as temperature, humidity, and air pressure sensors (LPS22HB).
- Nano 33 BLE SENSE Rev 2 — The Rev 2 is the same as the SENSE but with updated sensors. In particular:
- Replacement of IMU from the LSM9DS1 (9 axis) to a combination of two
IMUs, the BMI270, 6 axis gyro & accelerometer and the BMM150,
3 axis magnetometer
- Replacement of temperature and humidity sensor from HTS221 to the HS3003
- Replacement of microphone from MP34DT05 to MP34DT06JTR
- Replacement of power supply MPM3610 to MP2322
- Addition of VUSB soldering jumper on the top side of the board
- New test point for USB, SWDIO and SWCLK.
The Seeed Studio XIAO nRF52840 Sense
In addition to the Arduino range, a number of other manufacturers have released boards based on the nRF52840 processor. One example is the Seeed XIAO nRF52840 Sense. This inexpensive board includes Bluetooth 5.0, low power consumption, a LSM6DS3TR-C 6-axis IMU and a MSM261D3526H1CPM digital microphone with Pulse Density Modulation (PDM) capabilities. It is small and light! Figure 2 illustrates its size compared to the Nano 33 BLE Sense, which isn’t big either.
The embedded BQ25101 chip supports battery charge management and there are 11 digital I/O that can output PWM and 6 analog pins connect to the ADC. Communication is via UART, I²C, and SPI.

There are two Arduino board libraries available for the XIAO. To use the IMU, you want the one called Seeed nRF52 mbed-enabled Boards. In order to install this library using the Arduino IDE Board Manager, you have to first navigate to File > Preferences, and fill “Additional Boards Manager URLs” with the url below:
One of the users of our AHRS library requested that we support the XIAO so we have added that in the latest release.
The Reefwing Attitude and Heading Reference System (AHRS)
An Attitude and Heading Reference System (AHRS) takes information from the IMU and processes it to provide reliable roll, pitch and yaw angles (Figure 3).

We have released an open source AHRS Arduino library (Reefwing AHRS) for the Nano 33 BLE family of boards. Both the Rev 1 SENSE and the Nano 33 BLE used the same IMU so our library would work with both.
The Rev 2 SENSE has made things a bit more complicated as it has replaced the original IMU (LSM9DS1) with two different IMU chips (the BMI270 and BMM150). The XIAO uses another IMU again (the LSM6DS3TR-C).
The LSM9DS1 IMU
The LSM9DS1 is manufactured by STMicroelectronics (now known as ST). It has a 3D digital linear acceleration sensor, a 3D digital angular rate sensor (gyroscope), and a 3D digital magnetic sensor. It includes SPI and I²C (standard 100 kHz and fast mode 400 kHz) serial interfaces but the Arduino Nano 33 BLE uses I2C. Full details of this chip are available in the LSM9DS1 data sheet.
- accelerometer: 16 bit ADC with ±2g/±4g/±8g/±16g ranges available;
- gyroscope: 16 bit ADC with ±245/±500/±2000 dps ranges.
- magnetometer: 16 bit ADC with range of ±4/±8/±12/±16 gauss.
The available IMU Output Data Rates (ODR) are 14.9, 59.5, 119, 238, 476 and 952 Hz.
The LSM6DS3TR-C IMU
The LSM6DS3TR-C is also manufactured by ST, and has very similar specifications to the LSM9DS1, without the magnetometer but with a faster maximum sample rate. However, the XIAO uses I²C so that will probably be the limiting data rate. This IMU has a free-fall detection interrupt which could be useful in flight applications.
The LSM6DS3 can be interfaced to using SPI or I²C. Full details of this chip may be found in the LSM6DS3TR-C data sheet.
- accelerometer: ±2g/±4g/±8g/±16 g full scale ranges available;
- gyroscope: ±125/±250/±500/±1000/±2000 dps full scale
The available IMU Output Data Rates (ODR) are 12.5, 26, 52, 104, 208, 416, 833, 1666, 3332, and 6664 Hz.
The BMI270 and BMM150 IMUs
In Rev. 2 of the Nano 33 BLE SENSE, the LSM9DS1 IMU is replaced with the BMI270 and BMM150 IMUs from Bosch. The BMI270 is a 6-axis gyroscope and accelerometer.
- accelerometer: 16 bit ADC with ±2g/±4g/±8g/±16g ranges available;
- gyroscope: 16 bit ADC with ±125dps/±250dps/±500dps/±1000dps/±2000dps ranges.
The BMI270 is a 3-axis magnetometer. It has a measurement range of ±1300 µt (on the x-, y- axis) and ±2500µT (z-axis).
Determining the nRF52840 Board Type and Nano 33 BLE Version
We need to update our AHRS library in order for it to be able to handle the new sensors. To know which sensor library to use we have to know which version of the Nano 33 BLE or XIAO is connected.
From an Arduino IDE perspective, there is no difference between the three Nano 33 BLE versions. They all use the same processor and the same Arduino Core, which leverage the MBed OS. Normally, conditional compilation in an Arduino sketch is done something like what is shown in Code Block 1.









