LoginSignup
0
1

More than 3 years have passed since last update.

初めてのRaspberry Pi Pico ㉝ CircuitpythonでBNO055

Last updated at Posted at 2021-04-04

 BOSCH社の9DoF 方位/慣性計測モジュールBNO055を使います。

BNO055のおもな出力

 3軸加速度計、3軸磁力計、3軸ジャイロスコープ単独の出力以外にオイラー角やクォータニオンの出力もあります。

  • オイラーベクトル
  • クォータニオン
  • 角速度ベクトル
  • 加速度ベクトル
  • 磁界強度ベクトル
  • 線形加速度ベクトル
  • 重力ベクトル
  • 気温

Circuitpython履歴

 PicoのI2C対応。リピーテッド・スタートは初期から対応済み。SCLクロック・ストレッチの対応は、順次行われ、6.2.0-rc.0でfix。

6.2.0-beta.3 SCLクロック・ストレッチに非対応。対応していないとメッセージが出る
6.2.0-beta.4 SCLクロック・ストレッチに対応、SDAクロックがスペックを満たしていない。動くこともあるが、途中で止まる
6.2.0-rc.0 SDAのクロックの修正

接続

 Adafruitのブレークアウト・ボードを利用します。I2C専用のSTEMMA QTコネクタでPicoと接続します。はんだ付けなどは不要です。

ファイル名

STEMMA QTコネクタ(ケーブルの色) GPIOピン番号
SCL 緑 GP21
SDA 黄(白) GP20
Vcc 赤 3.3V
GND 黒 GND

プログラム

examplesに入っていたサンプルです。

# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

import time
import board
import busio
import adafruit_bno055

# Use these lines for I2C
i2c = busio.I2C(board.GP21, board.GP20)
sensor = adafruit_bno055.BNO055_I2C(i2c)

# User these lines for UART
# uart = busio.UART(board.TX, board.RX)
# sensor = adafruit_bno055.BNO055_UART(uart)

last_val = 0xFFFF


def temperature():
    global last_val  # pylint: disable=global-statement
    result = sensor.temperature
    if abs(result - last_val) == 128:
        result = sensor.temperature
        if abs(result - last_val) == 128:
            return 0b00111111 & result
    last_val = result
    return result


while True:
    print("Temperature: {} degrees C".format(sensor.temperature))
    """
    print(
        "Temperature: {} degrees C".format(temperature())
    )  # Uncomment if using a Raspberry Pi
    """
    print("Accelerometer (m/s^2): {}".format(sensor.acceleration))
    print("Magnetometer (microteslas): {}".format(sensor.magnetic))
    print("Gyroscope (rad/sec): {}".format(sensor.gyro))
    print("Euler angle: {}".format(sensor.euler))
    print("Quaternion: {}".format(sensor.quaternion))
    print("Linear acceleration (m/s^2): {}".format(sensor.linear_acceleration))
    print("Gravity (m/s^2): {}".format(sensor.gravity))
    print()

    time.sleep(1)

 実行例

bno055.png

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1