CircuitPython 10行プログラミング Step8 (2) 6軸IMU LSM6DS3TR-C
前回、マイコン・ボードSeeed XIAO BLE SenseでCircuitPython バージョン8.0.0 Alpha1を使う準備ができました。ボード上に6軸IMU 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)