SRX_IMU00_DEV#

The SRX-IMU00-DEV is a small size, low power and high performance Inertial Measurements Unit board that intends to be integrated in robotic applications development. Its extreme compactness allows easy prototyping on breadboard and integration on host board with direct soldering of back side pads.

Coupled with the included c++ library, it allows a 360° drift free attitude measurements.

Included components are:

Texte alternatif de l'image

Attention

The board includes only the sensors and no microcontroller that has to be provided by the user.

Tip

You can buy the board from:

  • Amazon with clicking on: picamazondev

  • From Elecrow with clicking on: picelecrow

Do not hesitate to leave a review or an evaluation on the platform if you already bought the product! 👍

Introduction#

SRX-IMU00-DEV is a high performance 6 DOF sensor nano development board with a form factor allowing easy use on breadboard (2.54mm pins header). Software for parsing sensors and high performance fusion is provided.

Brochure#

Technical brochure can be accessed here:

SRX_IMU00_DEV Brochure

Hardware#

Mechanical#

_images/dimension_imu00-dev.png
  • Board width: 1.6 mm

Electrical#

  • Voltage: 3.3V (IO and power, non 5V tolerant)

  • Communication
    • SPI (included by provided software)

    • I2C (non included in provided software, pull up resistors not included)

How to wire board

_images/imu00-dev-wiring_spi.png

Sensors INT pads are available but their connexion is not mandatory for the boards to work. Proposed sensors parsing libraries does not use these features but the user can implement them if needed.

See also

In the examples provided for esp32-s3 (app ESP32), the board is wired with the following pins:

  • icm_cs = 10

  • mosi = 12

  • miso = 13

  • clk = 14

Inputs mapping#

The sensors measures follow the following convention:

_images/imu-00-dev_convention.png

To feed the sensors fusion algorithm, inputs can be mapped like this

SRX-INS00-DEV mapping:

_images/imu-00-dev_convention_fusion.png
SRX_MODEL_INS_10_DOF::modelInputs insInputs = SRX_MODEL_INS_10_DOF::modelInputs();

GYROMETER:

  • insInputs.gyroDpsRate[0] = imuGyroX;

  • insInputs.gyroDpsRate[1] = -imuGyroY;

  • insInputs.gyroDpsRate[2] = -imuGyroZ;

ACCELEROMETER:

  • insInputs.acceleroG[0] = imuAccX;

  • insInputs.acceleroG[1] = -imuAccY;

  • insInputs.acceleroG[2] = -imuAccZ;

Software#

Tip

A dashboard is available to build and flash code, with prebuilt versions to help you test your device!

The dashboard can be accessed at: Sysrox dashboard

Libraries#

Sensors reading#

These libraries can be used to build your project. More available at All libraries

Name

Description

Link

Doc

Compatibility

libDM_icm42688

Sysrox library which implements ICM-42688p imu sensor SPI driver

icmgit

icmdoc

  • ESP32-S3

  • Teensy 4.X

libDM_no_dep_icm42688

Sysrox library which implements ICM-42688p imu sensor SPI driver without cross dependencies

icmndgit

icmnddoc

  • All (Arduino framework)

libDM_abstract_sensors

Sysrox library which implements base (parent) classes for sensors operations and corrections

abstractgit

abstractdoc

  • ESP32-S3

  • Teensy 4.X

libDM_no_dep_abstract_sensors

Sysrox library which implements base (parent) classes for sensors operations and corrections without cross dependencies

abstractndgit

abstractnddoc

  • All (Arduino framework)

Fusion library#

To extract high precision attitude and altitude from sensors, Sysrox proposes high performance fusion library using custom Extended Kalman Filter. It is composed of a header and a static .a libary provided for the following platforms:

  • Linux

  • Windows

  • MacOs apple silicon

  • Esp32s3

  • Teensy4.X

How to use

Complete projects#

Complete projects can be used as examples and are ready to use for arduino platforms. The projects manifests and releases are available at Projects Manifests

Recommended projects are:

  • Sensors Parsing: compatible all arduino, reading of sensors

  • INS Minimal: compatible all arduino, sensors fusion available (if shared library exists)

  • INS ESP32-S3: compatible esp32-s3, all functionalities available (logging, communication…)

Sensors parsing#

If you do not want to use esp32s3, or just want sensors parsing, a reduced functionalities software is proposed. It includes parsing for the sensors of the board

  • ICM42688-p gyrometer and accelerometer

… and an example main.cpp file with a loop implementation.

The software is compatible with all microcontrollers with using the arduino framework:

How to use

Releases

If you can not use repo, releases with zipped code are available at:

Caution

A package compatible with Arduino IDE is provided for this project, and documented HERE: Arduino IDE packaged code

INS minimal#

If you do not want to use esp32s3, or just want sensors parsing and fusion, a reduced functionalities software is proposed. It includes parsing for the 3 sensors of the board and the fusion running at 500Hz

  • ICM42688-p gyrometer and accelerometer

  • LPS22HB barometer

  • MMC5983MA magnetometer

… and an example main.cpp file with a loop implementation.

Attention

The software will work if the fusion library has been precompiled for your microcontroller, as the fusion is included through a .a static libary. If you need a precompiled version for another platform, please contact us at CONTACT . We will be happy to provide it in the next release!

The software is compatible with all microcontrollers with using the arduino framework:

How to use

Releases

If you can not use repo, releases with zipped code are available at:

INS ESP32-S3#

Complete embedded ready to use code with

  • Sensors parsing (onboards sensors + ublox GPS)

  • Sensors fusion

  • Communication (CAN, mavlink, protobuf)

  • Fast logging (binary datas, mavlink, protobuf)

is available for:

  • ESP32-S3 (arduino framework)

Releases

If you do not want to build system or use repo , code releases are available for direct use with code archive and precompiled flashable files.

ESP32-S3

codearchive Releases

The release archive contains a folder called flashable_files and a unix flashing script. The compiled code can be flashed directly for testing purpose for example (sensors detected will be printed in serial monitor).

Attention

Releases The binaries are generated for esp32-s3 N16R8, for a different chip, flashing only firmware.bin is recommended.

  • Unix users : use terminal to place inside an extracted flashable_files folder. Execute ./flash_esp_files.sh if you have N16R8 chip. If you do not, delete first “–flash_size 16MB 0x0000 bootloader.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000” inside .sh script before executing it.

  • Windows usersyou can use ESP Flash tool . Extract the archive and execute the program for esp32-s3 chip. Select 80mHz Spi speed, DIO mode. Set the correct port and communication speed (921600 is OK but you can use smaller values if you encounter some errors). Using the boxes, you can select bin files for flash
    • firmware.bin @ 0x10000

    • boot_app0.bin @ 0xe000 (optional)

    • bootloader.bin @ 0x0000 (optional)

    • partitions.bin @ 0x8000 (optional)

Hit start to start flashing

_images/Windows_flash.png

Calibrations tools#

Several tools are available to help archieving the best performances from your device! This includes:

  • Accelerometer calibration

doc_icon Available tools