Table of contents


Author: ajayvishaal

Creation date:

Evaluation Type: Development Boards & Tools

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: Arduino Portenta H7, But this Arduino Nano 33 BLE Sense is a low cost high efficient board for robotics sensor fusion and ml applications.

What were the biggest problems encountered?: When trying the Nano 33 BLE sensor library I encountered "arm_math.h file not found" error. I struggled and learnt a lot. But unable to resolve the issue.

Detailed Review:

Table of Contents:


                   First of all I wanna thank Element 14 for providing me this oppourtunity. I'm working on deploying tinyml on Nano BLE 33 Sense and integrating it with Robot Operating System (ROS). Soon I will be writing a blog about it. Also with a help of this board I was able to complete this coursera course. I recommend this course to people who want to gain a good knowledge about deploying ML in microcontrollers. Thanks again Element14.

                   The Arduino Nano 33 BLE Sense is an evolution of the traditional Arduino Nano, but featuring a lot more powerful processor, the nRF52840 from Nordic Semiconductors, a 32-bit ARM® Cortex™-M4 CPU running at 64 MHz. This will allow you to make larger programs than with the Arduino Uno (it has 1MB of program memory, 32 times bigger), and with a lot more variables (the RAM is 128 times bigger). The main processor includes other amazing features like Bluetooth® pairing via NFC and ultra low power consumption modes.                 

Specifications and Features

                The Nano 33 BLE Sense is Arduino’s 3.3V AI enabled board in the smallest available form factor: 45x18mm! The Arduino Nano 33 BLE Sense is a completely new board on a well-known form factor. It comes with a series of embedded sensors such as:

  • 9 axis inertial sensor: what makes this board ideal for wearable devices
  • humidity, and temperature sensor: to get highly accurate measurements of the environmental conditions
  • barometric sensor: you could make a simple weather station
  • microphone: to capture and analyse sound in real time
  • gesture, proximity, light color and light intensity sensor : estimate the room’s luminosity, but also whether someone is moving close to the board.

Image Source: Arduino


               I received the Package via UPS Courier Service. I opened the parcel and took out the Arduino box. The contents of the box are

  • Arduino Nano 33 BLE Sense
  • Header pins
  • A Foam pad
  • An Instruction Manual
  • Arduino Stickers


{gallery} Unboxing







               I first soldered the headers into the Arduino Nano 33 Ble sense Board. Then I started working with the inbuilt sensors in the board. The inbuilt sensors are as follows,

  • IMU - LSM9DS1
  • Microphone - MP34DT05
  • Gesture, light, proximity - APDS9960
  • Barometric pressure - LPS22HB
  • Temperature, humidity - HTS221

     The libraries can be installed individually or you can install all the library by installing the "Nano 33 BLE Sensor" library from library manager.



               I installed the official Arduino library for the built-in IMU sensor. For that purpose, open the library manager in the Arduino IDE by navigating to “Sketch”, then click on “include library”, and choose “manage libraries”. A new window will pop up. In that window, search for IMU and install the highlighted package:

               After that I uploaded the example codes and checked performance of built-in LSM9DS1 sensor.


{gallery} IMU Sensor

Simple Accelerometer example code

Plotter output of Acclereometer

Simple Gyroscope example code

Gyroscope Output in plotter

Example code of Magnetometer

Output data in plotter

               After the testing of IMU sensor, from the graph and the performance of the IMU sensor, it is found that the ouput was very accurate and reliable. The IMU sensor is highly reliable when compared to other sensors.


Microphone - MP34DT05

              After testing the IMU sensor, I started testing the MP34DT05 Digital Microphone. I installed the PDM library using library manager, as I did in the previous step. After Installing the library. I uploaded the example code to the Sense board.

{gallery} Microphone

PDM example for microphone

Sound waves seen in plotter


               First I tried using Nano BLE 33 example, But it showed me an error "arm_math.h file not found". I tried fixing the issue but nothing worked, so I used PDM library.


Gesture, light, proximity - APDS9960

               After testing the microphone, I started testing the APDS9960 Gesture, Light, Proximity Sensor. I installed the APDS9960 library using library manager and uploaded the example code to the Sense board.


{gallery} Gesture Sensor

Proximity Sensor Code

Plotter Output

Gesutre Sensor Code

Serial monitor data

Example code combining all the sensors

Plotter Output

Color sensor code

Plotter Output


Barometric pressure - LPS22HB

     Then, I started testing the LPS22HB - Pressure Sensor. I installed the LPS22HB library using library manager and uploaded the example code to the Sense board.


{gallery} Pressure Sensor

Presure sensor example code

Data output in serial monitor



Temperature, humidity - HTS221

               And finally, I started testing the HTS221 - Temperature and Humidity Sensor. I installed the HTS221 library using library manager and uploaded the example code to the Sense board.


{gallery} Temperature Sensor

Humidity and Temperature Sensor Example

Data Output in Serial Monitor


Integrating BLE Sense with ROS

               Robot Operating System generally called as ROS, is a meta OS which runs on top of Linux OS (Basically UBUNTU). The ROS is used for creating advanced robots like Autonomous Robots, Autonomous Machines. Integrating sensors in a robot is one of the of the most difficult things. For the purpose of Localization & Navigation we need IMU data. So I planned to integrate Arduino Nano 33 BLE sense with ROS. I deployed Mahony AHRS code by making the necessary changes inorder to acquire data in ROS. The process can be seen in the below video:


               The result was not very efficient. But I found that this is due to algorithm and not with the BLE Sense, since I'm able to get the perfect readings of data while seen in Serial Plotter. There is a slight incompatibility between the Nano BLE sense and ROS. I'm working on it and will soon update once I'm able to get the expected results.


               The Arduino BLE 33 Sense is very much suitable for autonomous robots, Since it has number of inbuilt sensors. I found this board is very helpful for Sensor Fusion Applications. Also Arduino nano 33 sense can be helpful for the developers to built autonomus robots (UGV - Unmanned Ground Vehicle). Soon I'm planning to deploy this board in my UGV. Also, I'm working on Tinyml based Nano 33 ble sense to integrate it with ROS. That status will also be updated soon.



                  The board has a lot more to explore. Being a Robotic Enthusiast, I'm very much interested to explore the possibilities of the Arduino Nano 33 BLE sense in the field of robotics. The board has very good form factor, highly efficient in-built sensors, compact, and has BLE and NRF. Also the board can be deployed in robots that uses Raspberry Pi or Jetson Nano as their main processing unit. These linux based SBC has lot of jitter effect which reduces the efficiency of the robot. This board is a best option to integrate all the sensors and actuators together and sending the data through serial communication to the SBC. By this we can able to reduce the jitter effect as well as the need for external sensors like IMU, Microphone, Temperature and Gesture sensors. I hope this review helped you to learn something new.