The LSM9DS1 is a versatile, motion-sensing system-in-a-chip. It houses a 3-axis accelerometer, 3-axis gyroscope, and 3-axis magnetometer – nine degrees of freedom (9DOF) in a single IC! The LSM9DS1 is equipped with a digital interface, but even that is flexible: it supports both I2C and SPI, so you’ll be hard-pressed to find a microcontroller it doesn’t work with. This IMU-in-a-chip is so cool we put it on the quarter-sized breakout board you are currently viewing!
The LSM9DS1 is one of only a handful of IC’s that can measure three key properties of movement – angular velocity, acceleration, and heading – in a single IC. By measuring these three properties, you can gain a great deal of knowledge about an object’s movement and orientation. The LSM9DS1 measures each of these movement properties in three dimensions. That means it produces nine pieces of data: acceleration in x/y/z, angular rotation in x/y/z, and magnetic force in x/y/z. The LSM9DS1 Breakout has labels indicating the accelerometer and gyroscope axis orientations, which share a right-hand rule relationship with each other.
Each sensor in the LSM9DS1 supports a wide spectrum of ranges: the accelerometer’s scale can be set to ± 2, 4, 8, or 16 g, the gyroscope supports ± 245, 500, and 2000 °/s, and the magnetometer has full-scale ranges of ± 4, 8, 12, or 16 gauss.
This skill defines how difficult the soldering is on a particular product. It might be a couple simple solder joints, or require special reflow tools.
Skill Level: Noob - Some basic soldering is required, but it is limited to a just a few pins, basic through-hole soldering, and couple (if any) polarized components. A basic soldering iron is all you should need.
See all skill levels
If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.
Skill Level: Competent - The toolchain for programming is a bit more complex and will examples may not be explicitly provided for you. You will be required to have a fundamental knowledge of programming and be required to provide your own code. You may need to modify existing libraries or code to work with your specific hardware. Sensor and hardware interfaces will be SPI or I2C.
See all skill levels
If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.
Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels
Based on 10 ratings:
3 of 3 found this helpful:
This is an impressive sensor, but using the Arduino code got me off on the wrong track. It is probably fine code, but I don’t do much with Arduinos and I needed something running natively under Linux. I thought: Arduino, its just C++ really, just some minor porting…
Somehow I got started at the wrong end of the stick and wasted a week on this. Calibrating, reading, and making this useful without an unnecessary Arduino CPU in the picture turned frustrating. And there does not seem to be a lot of other code out there that suits my needs.
Finally, after much thrashing about, I found my way to:
This code, in spite of being in in a seemingly RasPi-exclusive source, builds great under Ubuntu desktop, other small arm platforms, includes both C++ and Python wrappers, and has both local and remote (serial) client tools for calibration.
The code is clear enough, and there is a useful Calibration.pdf document included that is informative. As always, however, it could use a bit of other documentation. Other versions of this library are out there, but seem to have been abandoned for now.
Native code for standard platforms makes sensors like this much more useful.
Having used other 9 DOF IMUs, it is the available libraries that make this type of product useful, the library available for LSM9DS1 is good and examples are useful. The simple I2C setup worked with no issues for me.
When i first hooked this thinger up I accidentally used the DS0 vs DS1 libraries and was pretty excited because of the AHRS stuff that came in the DS0 libraries. Unfortunately those don’t work with the DS1 so i had to spend an hour or so porting over the AHRS example from the DS0 libraries. Since this is a 9DOF chip it seems to be there should be an AHRS example as that is really the primary reason behind getting a chip like this, and dealing with the math intensive AHRS algorithm can be a little daunting.
Drivers integrated seamlessly. Hookup guide was very helpful
The sensor works really well, but as I tried to set up together more than one, wasn’t able to hook up by I2C, as the addresses can’t be changed.
Arduino library makes it really easy to use.
While the price is perfect, the sensor did not perform as expected. Just sitting on a table indoors, the gyro and magnetometer were bouncing wildly (~20 dps and ~3 gauss). The accelerometer was fairly stable but the point of the IMU over the accelerometer is to collect data from the other components. We bought two boards and both had this issue so we decided against using them. Wasted our money and time. If you have no need for accurate measurements, this might be fine.
This is a lot of action on a tiny board and, paired with my Arduino UNO, the project possibilities are nearly endless! I haven’t tried the SPI hookup yet but the I2C is dead simple and works great. Documentation was easy to access, very complete and easy to understand. Cool is the best word!
the library and example code is pretty easy to understand and use. The i2c interface is sweet and simple. I need to figure out a few things like max update rate and such. I might update as I go.