Arduino Nicla Sense ME
The Arduino Nicla Sense ME board is physically small and comes with a 64 MHz 32-bit Arm® Cortex-M4 processor along with motion, environmental, pressure, and magnetic sensors from Bosch. Additional sensors can be easily added using the built-in SPI or I2C interfaces. The ultra-low power consumption and tiny size (less than one square inch) of the Nicla Sense ME board enables IoT developers to install complete, intelligent endpoints right at the sensing point.
This guide will go over how to setup the Arduino Nicla Sense ME firmware for data collection or recognition. Once your device is setup, you can find a tutorial on how to use the SensiML Toolkit software in the Getting Started Tutorial.
PlatformIO
Arduino firmware in this guide is flashed using the Arduino built-in flashing tools. For building the firmware, we have chosen to use PlatformIO as the main interface for building firmware for Arduino boards which can be found at https://platformio.org/. It allows the user ease of access to change and add build flags, as well as allowing for multiple build environments.
PlatformIO can be installed into your favorite editor or run from the command line. We will use Visual Studio Code in this guide, PlatformIO’s recommended editor.
Example Firmware
You can find examples of data collection or recognition firmware below.
Data Collection Firmware
Sensors |
Protocol |
Download |
Version |
---|---|---|---|
Accelerometer/Gyroscope (200 Hz) |
Simple Stream V1.0 (BLE) |
||
Accelerometer/Gyroscope (200 Hz) |
Simple Stream V1.0 (USB Serial) |
Note
We provide the binaries above for testing data collection quickly. You can build your own binaries for additional sample rates by building from source code in the SensiML GitHub at https://github.com/sensiml/nicla-sense-me-data-capture.
Knowledge Pack/Recognition Firmware
Knowledge Pack recognition firmware can be found in the SensiML GitHub at https://github.com/sensiml/nicla-sense-me-recognition/.
Flash Instructions
Follow the steps below to flash data collection firmware or recognition firmware to your device.
Open the PlatformIO Home page in VS Code
Click Open Project and select the data collection or recognition source code location on your computer.
PlatformIO will pull down the libraries and packages needed to build, this may take several minutes the first time building. Your project will now appear in the PlatformIO Project Tasks menu.
Click Upload in your selected project environment to build the firmware. Make sure your device is plugged in via a USB port.
PlatformIO will automatically detect the proper COM port (Windows) or /dev/ port (Linux) and upload to your device. You can see the status in the Terminal Window.
Using TensorFlow Lite for Microcontrollers in a Knowledge Pack
When running a model built using TensorFlow Lite, another environment is provided in the Knowledge Pack code base. The environment env:nicla_sense_me_tensorflow
will automatically link this in with the same code base.
Changing IMU Frequency/Sample Rate
The frequency/sample rate that IMU data collection firmware outputs is set at compile-time.
Open
include/sensor_stream.h
.Update
#define ODR_IMU
to set the frequency. Note: The supported frequencies are 25, 50, 100, 200, and 400 Hz.
Adding New Sensors to the Data Studio
The default firmware code for Nicla Sense ME includes IMU sensors. You can add additional sensors to your board and use them for data collection in the Data Studio by modifying the device firmware code in the Simple Streaming Interface.
For more details on implementing the Simple Streaming specification in your firmware see the Simple Streaming Interface Documentation.
More Information
More information can be found on the Arduino documentation site for the Nicla Sense ME: https://docs.arduino.cc/hardware/nicla-sense-me