CircuitPython 10行プログラミング Step8 (2) 6軸IMU LSM6DS3TR-C

 前回、マイコン・ボードSeeed XIAO BLE SenseでCircuitPython バージョン8.0.0 Alpha1を使う準備ができました。ボード上に6軸IMU LSM6DS3TR-Cが搭載されているので、加速度とジャイロ・データを読み出します。

  LSM6DS3TR-Cデータシート

(2022/06/30) Macでマウントされなくなることがたびたび起こります。その時は、Windows10にもっていくと、正常にマウントできることがあります。

ライブラリの用意

 Macのデスクトップにダウンロード、解凍したフォルダのexamplesの中にlsm6ds_lsm6ds3trc_simpletest.pyがあります。Muに読み込みます。

 最初に、利用するライブラリのファイル類をコピーします。

 解凍したフォルダのlibの中にあるフォルダadafruit_lsm6dsフォルダadafruit_registerをCIRCUITPYのlibへコピーします。

Muエディタ

 新規でファイルを作り、lsm6ds_lsm6ds3trc_simpletest.pyを読み込み、code.pyで保存します。

 シリアルをクリックして、保存アイコンをクリックすると、次のように実行します。マイコン・ボードを動かすと、値が変化します。

ピン配置

 LSM6DS3TR-Cのインターフェースは、I2CとSPIの両方を持っています。このボードではI2Cが使われています。

 I2Cバスは4、5番に出ているように書かれています。

  https://wiki.seeedstudio.com/XIAO_BLE/

 回路図を見ます。デフォルトだとA4/D4とA5/D5が有効で、外部にI2Cデバイスをつなぐと、読み書きができます。

 ソースに書かれているように、IMU_PWR信号をONにするとINTERNAL_I2C信号が有効になるので、読み書きをします。このとき、外部につながったI2Cデバイスは見えません。


import time
import board
import digitalio
import busio
from adafruit_lsm6ds.lsm6ds3trc import LSM6DS3TRC

# On the Seeed XIAO nRF52840 Sense the LSM6DS3TR-C IMU is connected on a separate
# I2C bus and it has its own power pin that we need to enable.
imupwr = digitalio.DigitalInOut(board.IMU_PWR)
imupwr.direction = digitalio.Direction.OUTPUT
imupwr.value = True
time.sleep(0.1)

imu_i2c = busio.I2C(board.IMU_SCL, board.IMU_SDA)