Arduino Nicla Vision motion sensor issue

I tried to access the 6-axis motion sensor LSM6DSOXTR 6-axis IMU by using the code but it shows ImportError: no module named ‘lsm6dsox’ on line from lsm6dsox import LSM6DSOX .How to solve this?

LSM6DSOX Gyro example.

import time
from lsm6dsox import LSM6DSOX
from machine import I2C, SPI, Pin

lsm = LSM6DSOX(SPI(5), cs_pin=Pin(“PF6”, Pin.OUT_PP, Pin.PULL_UP))

while (True):
print(‘Accelerometer: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}’.format(*lsm.read_accel()))
print(‘Gyroscope: x:{:>8.3f} y:{:>8.3f} z:{:>8.3f}’.format(*lsm.read_gyro()))
print(“”)
time.sleep_ms(100)

This is with the the latest firmware on your Nicla?

@iabdalkader

I updated the firmware and it works. Thank you

I tried the code listed below which tries to access the LSM6DSOXTR 6-axis IMU, after updating the firmware on my Nicla Vision board.
This error pops up : NameError: name “PF6” isn’t defined

This is the code :

import time
from lsm6dsox import LSM6DSOX
from machine import I2C, SPI, Pin

lsm = LSM6DSOX(SPI(5), cs_pin=Pin(“PF6”, Pin.OUT_PP, Pin.PULL_UP))

I copied the code from this tread.
Any ideas as to why it does not work?

Update

I changed the character used to quote the strings:

import time
from lsm6dsox import LSM6DSOX
from machine import I2C, SPI, Pin

lsm = LSM6DSOX(SPI(5), cs_pin=Pin(‘PF6’, Pin.OUT_PP, Pin.PULL_UP))

while (True):
print(“Accelerometer: x:{:>8.3} y:{:>8.3} z:{:>8.3}”.format(*lsm.read_accel()))
print(“Gyroscope: x:{:>8.3} y:{:>8.3} z:{:>8.3}”.format(*lsm.read_gyro()))
print(“”)
time.sleep_ms(100)

Well, I should have looked at the code a little longer.
Thank you,
Thane

Not sure why that mattered. Weird.

I tried the code from this thread to access the data from the LSM6DSOXTR. I already checked for the newest firmware on my Arduino Nicla Vision.
I get the following error: TypeError: unexpected keyword argument ‘cs_pin’

This is the code:
import time
from lsm6dsox import LSM6DSOX
from machine import I2C, SPI, Pin

lsm = LSM6DSOX(SPI(5), cs_pin=Pin(‘PF6’, Pin.OUT_PP, Pin.PULL_UP))

while (True):
print(“Accelerometer: x:{:>8.3} y:{:>8.3} z:{:>8.3}”.format(*lsm.read_accel()))
print(“Gyroscope: x:{:>8.3} y:{:>8.3} z:{:>8.3}”.format(*lsm.read_gyro()))
print(“”)
time.sleep_ms(100)

During my test, I use imu module:

import imu

imu_pitch = imu.pitch()
imu_roll = imu.roll()
temperature = imu.temperature_c()

and it’s working :slight_smile:

Thanks for the tipp. @stephane
I am able to get the data from the sensor now with the following code:

import imu
import time

while True:
x, y, z = imu.acceleration_mg()
print(‘Accelerometer (m/s^2):’, x, y, z)
time.sleep_ms(1000)

Unfortunately the output from the sensor doesn’t make sense for me.
When I am not moving the Nicla Vision, I get the following values:

Accelerometer (m/s^2): 93.696 -24.4 1006.74
Accelerometer (m/s^2): 92.964 -24.644 1006.26
Accelerometer (m/s^2): 94.916 -24.644 1005.52
Accelerometer (m/s^2): 93.696 -24.4 1005.77
Accelerometer (m/s^2): 94.184 -23.668 1006.74
Accelerometer (m/s^2): 94.916 -23.424 1005.77
Accelerometer (m/s^2): 93.452 -24.4 1006.5

Shouldn’t the values be 0 when I don’t move the Arduino, or am I misunderstanding the sensor’s output?

I only use imu.pitch and imu.roll
Try to watch source code of firmware to analyse data.