fusion_hat.modules.magnetometer モジュール

class fusion_hat.modules.magnetometer.MagnetometerType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[ソース]

ベースクラス: Enum

mag_QMC6310 = 1
mag_QMC5883P = 2
mag_QMC5883L = 3
mag_HMC5883L = 4
fusion_hat.modules.magnetometer.convert_2_int16(value)[ソース]
fusion_hat.modules.magnetometer.i2c_ack(bus, addr)[ソース]

指定 された I2C アドレス で デバイス が 応答 する か を 確認 します

パラメータ:
  • bus -- SMBus インスタンス

  • addr -- 確認 する I2C アドレス

戻り値:

デバイス が 応答 する 場合 は True 、 それ以外 は False

戻り値の型:

bool

class fusion_hat.modules.magnetometer.QMC6310(bus: smbus2.SMBus, addr: int = 28, field_range='8G')[ソース]

ベースクラス: object

DEF_ADDR = 28

# QMC6310 コンパス センサー の レジスタ アドレス を 定義

QMC6310_REG_DATA_START = 1
QMC6310_REG_DTAT_X = 1
QMC6310_REG_DTAT_Y = 3
QMC6310_REG_DTAT_Z = 5
QMC6310_REG_STATUS = 9
QMC6310_REG_CONTROL_1 = 10
QMC6310_REG_CONTROL_2 = 11

# センサー の レジスタ パラメータ 設定 を 定義

QMC6310_VAL_MODE_SUSPEND = 0
QMC6310_VAL_MODE_NORMAL = 1
QMC6310_VAL_MODE_SINGLE = 2
QMC6310_VAL_MODE_CONTINUOUS = 3
QMC6310_VAL_ODR_10HZ = 0
QMC6310_VAL_ODR_50HZ = 4
QMC6310_VAL_ODR_100HZ = 8
QMC6310_VAL_ODR_200HZ = 12
QMC6310_VAL_OSR1_8 = 0
QMC6310_VAL_OSR1_4 = 16
QMC6310_VAL_OSR1_2 = 32
QMC6310_VAL_OSR1_1 = 48
QMC6310_VAL_OSR2_1 = 0
QMC6310_VAL_OSR2_2 = 64
QMC6310_VAL_OSR2_4 = 128
QMC6310_VAL_OSR2_8 = 192
QMC6310_VAL_MODE_SET_RESET_ON = 0
QMC6310_VAL_MODE_SET_ON = 1
QMC6310_VAL_MODE_SET_RESET_OFF = 2
RANGE = {'12G': 4, '2G': 12, '30G': 0, '8G': 8}
LSB = {'12G': 2.5, '2G': 15, '30G': 1, '8G': 3.75}
QMC6310_VAL_SELF_TEST_ON = 64
QMC6310_VAL_SELF_TEST_OFF = 0
QMC6310_VAL_SOFT_RST_ON = 128
QMC6310_VAL_SOFT_RST_OFF = 0
read_raw()[ソース]

生 の 磁気 センサー データ を 読み取り ます

戻り値:

[x, y, z] の 生 磁場 値

戻り値の型:

list

read_magnet()[ソース]

ガウス 単位 で 磁気 センサー データ を 読み取り ます ( 他 の 磁気 センサー クラス と 一貫 )

戻り値:

(x, y, z) ガウス 単位 の 磁場 値

戻り値の型:

tuple

class fusion_hat.modules.magnetometer.HMC5883L(bus: smbus2.SMBus, addr: int = 30)[ソース]

ベースクラス: object

HMC5883L 3 軸 磁気 センサー ドライバー クラス 。 地磁気 の 強さ を 測定 し 、 方位 検出 や 方位 角 計算 に 適して います

DEF_ADDR = 30
REG_CONFIG_A = 0
REG_CONFIG_B = 1
REG_MODE = 2
REG_OUT_X_H = 3
_read_word(reg_h)[ソース]

センサー から 符号 付き 16 ビット 整数 を 読み取り ます

パラメータ:

reg_h -- 上位 バイト の レジスタ アドレス

戻り値:

変換 された 符号 付き 16 ビット 整数

戻り値の型:

val

read_magnet()[ソース]

磁気 センサー データ を 読み取り ます

戻り値:

X 、 Y 、 Z 軸 の 磁場 強度 値 ( 単位 : ガウス ) 。 注意 : HMC5883L の データ レジスタ 順序 は X 、 Z 、 Y です

戻り値の型:

x, y, z

class fusion_hat.modules.magnetometer.QMC5883L(bus: smbus2.SMBus, addr: int = 13)[ソース]

ベースクラス: object

QMC5883L 3 軸 磁気 センサー ドライバー クラス 。 地磁気 の 強さ を 測定 し 、 HMC5883L の 一般的 な 代替 として 使用 され ます

DEF_ADDR = 13
REG_CONTROL = 9
REG_SET_RESET = 11
REG_OUT_X_L = 0
_read_word_le(reg_l)[ソース]

リトル エンディアン 形式 で センサー から 符号 付き 16 ビット 整数 を 読み取り ます 。 注意 : QMC5883L は データ 保存 に リトル エンディアン 形式 を 使用 します

パラメータ:

reg_l -- 下位 バイト の レジスタ アドレス

戻り値:

変換 された 符号 付き 16 ビット 整数

戻り値の型:

val

read_magnet()[ソース]

磁気 センサー データ を 読み取り ます

戻り値:

X 、 Y 、 Z 軸 の 磁場 強度 値 ( 単位 : ガウス ) 。 注意 : QMC5883L の データ レジスタ 順序 は X 、 Y 、 Z ( HMC5883L と 異なり ます )

戻り値の型:

x, y, z

class fusion_hat.modules.magnetometer.QMC5883P(bus: smbus2.SMBus, addr: int = 44)[ソース]

ベースクラス: object

QMC5883P 3 軸 磁気 センサー ドライバー クラス 。 I2C アドレス 0x2C を 持つ QMC5883 シリーズ の 別 バージョン です

DEF_ADDR = 44
REG_X_LSB = 1
REG_STATUS = 9
REG_MODE = 10
REG_CONFIG = 11
static _to_i16(lsb, msb)[ソース]

2 バイト を 16 ビット 符号 付き 整数 に 変換 します

パラメータ:
  • lsb -- 下位 バイト の 値

  • msb -- 上位 バイト の 値

戻り値:

変換 された 16 ビット 符号 付き 整数

戻り値の型:

v

read_magnet()[ソース]

磁気 センサー データ を 読み取り ます 。 0x01 レジスタ から 開始 して 6 バイト を 読み取り ( リトル エンディアン 符号 付き 形式 ) 。 特徴 : エラー 時 は 0 を 返し 、 メイン ループ を 中断 し ません

戻り値:

X 、 Y 、 Z 軸 の 磁場 強度 値 ( 単位 : ガウス )

戻り値の型:

x, y, z

class fusion_hat.modules.magnetometer.Magnetometer(mag_type=None, field_range='8G')[ソース]

ベースクラス: object

磁気 センサー ドライバー クラス 。 QMC6310 、 HMC5883L 、 QMC5883L 、 QMC5883P 磁気 センサー を 統合 します

read()[ソース]

磁気 センサー データ を 読み取り ます

戻り値:

(x, y, z) センサー 種別 に 応じた 適切 な 単位 の 磁場 値 。 初期化 された 磁気 センサー が 無い 場合 は None

戻り値の型:

tuple

get_type()[ソース]

初期化 された 磁気 センサー の 種類 を 取得 します

戻り値:

磁気 センサー の 種類

戻り値の型:

str