The Pico-10DOF-IMU is an IMU sensor expansion module which i sdesigned for the Raspberry Pi Pico. It has 2 sensors which provide gyroscope, accelerometer, magnetometer, baroceptor functionality and uses I2C bus for communication.
When you combine this module with the Raspberry Pi Pico, it can be used to collect environment sensing data like temperature and barometric pressure or you can create a robot that detects motion gestures and orientations.
- 1) ICM20948
- 9-axis motion sensor
- 2) LPS22HB
- barometric pressure sensor
- 3) RT9193-33
- 3.3V linear voltage regulator
- 4) LSF0204PWR
- 4-ch voltage translator
- 5) RT9193-18
- 1.8V linear voltage regulator
- 6) Power indicator
- 7) Raspberry Pi Pico header
- For attaching to Raspberry Pi Pico, this is stackable – you can fit another module
Features
Raspberry Pi Pico header supports Raspberry Pi Pico series
Onboard ICM20948 (3-axis gyroscope, 3-axis accelerometer, and 3-axis magnetometer) for detecting motion gesture, orientation, and magnetic field
Onboard LPS22HB barometric pressure sensor, for sensing the atmospheric pressure of the environment
Specifications
Operating voltage: 5V
Accelerometer:
resolution: 16-bit
measuring range (configurable): ±2, ±4, ±8, ±16g
operating current: 68.9uA
Gyroscope:
resolution: 16-bit
measuring range (configurable): ±250, ±500, ±1000, ±2000°/sec
operating current: 1.23mA
Magnetometer:
resolution: 16-bit
measuring range: ±4900µT
operating current: 90uA
Baroceptor:
measuring range: 260 ~ 1260hPa
measuring accuracy (ordinary temperature): ±0.025hPa
measuring speed: 1Hz – 75Hz
Pinout
Parts Required
The sensor you can pick up in the $6 price range – you can connect to the sensor using a standard header the classic dupont style jumper wire.
I used a Qwiic cable – since a few sensors seem to use these but this is optional
Name | Link |
Pico | Raspberry Pi Pico Development Board |
Pico 10DOF IMU |
Waveshare 10-DOF IMU Sensor Module For Raspberry Pi Pico, Onboard ICM20948 And LPS22HB Chip, an IMU sensor expansion module |
Code
The module comes with a link with C++ and Micropython examples
Here are some circuitpython examples
I used Thonny for development
ICM20948 example
The following is based on a library , I copied the adafruit_icm20x.mpy library for this device to the lib folder on my raspberry Pi Pico – https://circuitpython.org/libraries
This is the basic example which comes with the library – slightly adapted
[codesyntax lang=”python”]
import time import board import adafruit_icm20x import busio # Create sensor object, communicating over the board's default I2C bus i2c = busio.I2C(scl=board.GP7, sda=board.GP6) icm = adafruit_icm20x.ICM20948(i2c, 0x68) while True: print("Acceleration: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (icm.acceleration)) print("Gyro X:%.2f, Y: %.2f, Z: %.2f rads/s" % (icm.gyro)) print("Magnetometer X:%.2f, Y: %.2f, Z: %.2f uT" % (icm.magnetic)) print("") time.sleep(0.5)
[/codesyntax]
Here is the output
Acceleration: X:-0.25, Y: -0.10, Z: -9.84 m/s^2
Gyro X:0.02, Y: 0.01, Z: -0.01 rads/s
Magnetometer X:-38.55, Y: -46.95, Z: -63.15 uT
Acceleration: X:-6.62, Y: 0.85, Z: -5.85 m/s^2
Gyro X:1.97, Y: 8.73, Z: -1.01 rads/s
Magnetometer X:-6.00, Y: -47.55, Z: -64.35 uT
Acceleration: X:0.05, Y: 0.05, Z: -8.43 m/s^2
Gyro X:0.40, Y: -0.28, Z: 0.20 rads/s
Magnetometer X:-37.65, Y: -51.75, Z: -62.55 uT
LPS22HB Example
The following is based on a library , I copied the adafruit_lps2x.mpy library for this device to the lib folder on my Raspberry Pi Pico – https://circuitpython.org/libraries
This is the basic example which comes with the library – slightly adapted
[codesyntax lang=”python”]
import time import board import adafruit_lps2x import busio # Create sensor object, communicating over the board's default I2C bus i2c = busio.I2C(scl=board.GP7, sda=board.GP6) lps = adafruit_lps2x.LPS22(i2c, 0x5C) while True: print("Pressure: %.2f hPa" % lps.pressure) print("Temperature: %.2f C" % lps.temperature) time.sleep(1)
[/codesyntax]
Here is the output
Pressure: 759.87 hPa
Temperature: 20.47 C
Pressure: 991.05 hPa
Temperature: 20.85 C
Pressure: 990.99 hPa
Temperature: 20.91 C
Pressure: 990.97 hPa
Temperature: 20.95 C