六縁試策

六縁試策 | ″試してみて面白かったものを作る″

温湿圧複合姿勢センサー基板

カテゴリー : 公開中の製品 | 2016-08-26 | 11:09:00

温湿圧複合姿勢センサー基板

名称
気圧温湿度複合9軸センサー基板
プロジェクト名
9DOF-BNO055Custom

説明

ThreeAxisBLDC基板画像

この基板は、BOSCH社の9軸センサー(BNO055)と気圧温湿度センサー(BME280)を搭載した12自由度の姿勢・環境センサーです。

市販の9軸センサーとは違い、BNO055は内部で加速度・角速度・地磁気の積分計算を行い、ヨー(Yaw)軸・ピッチ(pitch)軸・ロール(roll)軸の計算に必要な四元数の出力や、オイラー角を直接出力することが可能です。今まではマイコン側で各センサの値を受け取ってからフィルタ処理→四元数計算→角度算出をしており結構な手数が必要でしたが、BNO055ではマイコン側でのそれら計算コストが不要となり、より簡単に姿勢状態を監視することが可能です。

主に飛行機・地上走行機・潜水機の内部に搭載し、機体の傾き・周辺環境などを取得することを念頭に置いて設計しています。使い方によってはVRゴーグルなどの周辺機器に接続してモーションキャプチャなどでも使用できるかもしれません。実装済みのDIPスイッチにより、BNO055とBME280の内部的なインタフェースの切り替えや、プルアップ出力の変更などが可能です。BNO055とBME280は電源以外は独立していますので、ひとつのi2Cで両方を制御したり、別々に制御することも可能です。

この基板の裏面には何も実装していません。市販の2.54mmピッチの基板に直接ハンダ付けして使用したり、ピンヘッダを実装してのブレッドボード実験にも最適です。


製品情報

基板外形
横22.0mm x 縦42.0mm x 高さ約3.0mm
対象
電気・電子に理解のある初級~上級者
ユーザーによるハンダ付け
場合によっては必要
ユーザーによる外部部品の調達(必要な場合)
ピンヘッダ or ピンソケット(2.54mmピッチ - 7pin x 2, 2.54mmピッチ - 2pin x 2)
USB-UARTシリアル変換器(BNO055のUART通信をPC等で直接制御する場合)
同梱資料
なし

定格仕様

電源用電圧
3.0V - 3.3V
信号用電圧
3.0V - 3.3V
インターフェース
BNO055:I2C または UART
BME280:I2C または SPI
使用温度
-40.0deg(C) ~ +85.0deg(C)
正常測定可能温度
0.0deg(C) ~ +65.0deg(C)
使用気圧・正常測定可能気圧
300hPa ~ 1100hPa
BNO055加速度センサー
レンジ:±2g/±4g/±8g/±16g
ローパスフィルタ:1KHz - 8Hz
BNO055角速度センサー
レンジ:±125degree/s ~ ±2,000degree/s
ローパスフィルタ:523Hz - 12Hz
BNO055地磁気センサー
レンジ:±1,300μT(X, Y), ±2,500μT(Z)
地磁気解像度: ~ 0.3μT
Fusionモード(オイラー角・四元数内部演算機能)
データ出力レート最大100Hz
6軸Fusion・9軸Fusion選択可

Fusionモード使用時、加速度センサーのレンジ以外はすべて自動設定となります。


回路図、データシート

  1. 回路図
  2. 9軸センサー(BNO055)データシート
  3. 気圧温湿度センサー(BME280)データシート

基板参考画像

基板デザイン画像
▲基板

ピンマップ画像
▲ピンマップ

基板寸法画像
▲基板サイズと取り付け穴位置

基板本体画像
▲基板本体表面と裏面
※製品出荷時には、DIPスイッチ表面に写真左側のような橙色のシールが貼り付けられていることがあります
製造時の薬品洗浄のためのシールですので、剥がしてからご使用ください。

パッケージ画像
▲パッケージ


DIPスイッチの設定について

基板に実装されているDIPスイッチを使用することで、インターフェースモードの選択およびプルアップ抵抗の接続・切断ができるようになっています。

DIPスイッチ機能説明画像

  1. (1)BNO055:モードセレクタ P1 選択 (負論理)
  2. (2)BNO055:モードセレクタ P0 選択 (負論理)
  3. (3)BME280:I2Cモード使用選択
  4. (4)BNO055:I2Cモード時のアドレスセレクト (負論理)
  5. (5)BME280:I2Cモード時のアドレスセレクト
  6. (6)BNO055:I2C,SCL信号プルアップ接続(9.1Kohm)
  7. (7)BNO055:I2C,SDA信号プルアップ接続(9.1Kohm)
  8. (8)BME280:I2C,SCL信号プルアップ接続(9.1Kohm)
  9. (9)BME280:I2C,SDA信号プルアップ接続(9.1Kohm)
  10. (0)BME280:I2Cモード時のアドレスセレクトGND接続

負論理のスイッチ(1,2,4)は、極性が逆となっています。(スイッチONで出力LOW、スイッチOFFで出力HIGH)

[BNO055]:モードセレクタ(負論理)
(1) = ON, (2) = ON (I2Cインターフェースモード)
(1) = OFF, (2) = ON (UARTインターフェースモード)
(1) = ON, (2) = OFF(HID over I2Cモード)
[BME280]:I2Cモード使用選択
(3) = ON (I2Cインターフェースモード)
(3) = OFF (SPIインターフェースモード)
[BNO055]:I2Cモード時のアドレスセレクト(負論理)
(4) = ON (I2Cアドレス 0x28), HID over I2Cでは0x40固定
(4) = OFF (I2Cアドレス 0x29), HID over I2Cでは0x40固定
[BME280]:I2Cモード時のアドレスセレクト
(5) = ON (I2Cアドレス 0x76)
(5) = OFF (I2Cアドレス 0x77)
[共通]:I2C信号プルアップ接続(9.1Kohm)
I2Cインターフェース使用時、プルアップ抵抗への接続が必要な場合にご使用ください。
それぞれのスイッチをONにすることで9.1Kohmのプルアップ抵抗に接続されます。
[BME280]:I2Cモード時のアドレスセレクトGND接続
I2Cモードで使用する場合:(5)のスイッチがONの場合は(0)をOFF, (5)のスイッチがOFFの場合は(0)をONに設定してください。
両方がOFFの場合はI2Cモード時のアドレスセレクトが不定(異常)となり、両方がONの場合は電源とGNDが抵抗を通じてショートして電位はGNDに傾きます。
SPIモードで使用する場合:(5)のスイッチ、(0)のスイッチの両方をOFFに設定してください。
どちらかがONの場合、SPIのSDO(MISO)線と結線されているためデバイスからの返答が返ってこなくなります。

DIPスイッチ設定サンプルと回路図との比較

両方がI2Cモード画像 UARTとI2Cモード画像 UARTとSPIモード 回路図との比較


基板上部のジャンパ(JP1, JP2)について

基板上部のジャンパは、BNO055とBME280両方をI2Cで使う際、結線を単純化するために使用します。
通常であればそれぞれSCLとSDAを結線して使用する(3.3V,GND,SCL1,SDA1,SCL2,SDA2の計6本)必要がありますが
JP1(SCL共通化)とJP2(SDA共通化)を使用することで3.3V,GND,SCL,SDAの計4本だけの結線でセンサー使用が可能となります。
UARTモードやSPIモードを使用するときは接続すると混線するため、JP1,JP2両方を切り離してください。
出荷時は切り離された状態での出荷となります。


サンプルプログラムなど

他所で公開されているいろいろな既存のライブラリをそのままお使いいただけます。(ほとんどのものがI2Cでの使用を前提としている模様です)
MCUボードやArduino,mbedなどで結線方法がわからない場合や、DIPスイッチの設定について不明点がある場合は、問答用掲示板にて質問を投稿することで回答を得られるかもしれません。

mbed系列用ライブラリとサンプルプログラム
新規作成したmbedでのサンプルプログラム
BNO055用サンプルライブラリ
BME280用サンプルライブラリ
mbedのボードによっては標準ライブラリを使用したUARTの通信が非常に不安定なことがあり、(私が作成したプログラム自体が悪い可能性もありますが・・・)実用には向かないかと思います。Nucleo F411REにて数十回テストを行いましたが、満足いく結果は得られていません。バッファ化されたシリアル通信へ換装することで期待する動作に近づけることが可能かと思われます。BNO055のI2Cモードおよび、BME280のI2C,SPIモードは正常に動作することを確認できています。

Arduino系列用ライブラリ
BNO055.h
BNO055.cpp
BME280.h
BME280.cpp
Arduino用(float表示可能互換機)サンプルメインプログラム(main_arduino.cpp)
標準Arduino IDE用サンプルプロジェクト
GR-SAKURA用サンプルメインプログラム(main_grsakura.cpp)

FAQ:
[FAQ]:Raspberry PI(ラズベリーパイ)から9軸センサーが使用できない

各ボードとの接続の一例

Arduinoとの接続例画像
▲Arduino UNO(Arduino M0, Arduino Zero)との接続例
※3.3Vピンからの電圧が 3.7V を超えていないことを確認の上、接続してください

※Arduino M0 ProまたはArduino ZERO PROをご使用の場合、I2Cアドレス0x28はEDBGチップによって予約されているため、BNO055のI2Cアドレスを0x29にする必要があります。

Arduinoとの接続例画像
▲mbed Nucleo F411REとの接続例
※3.3Vピンからの電圧が 3.7V を超えていないことを確認の上、接続してください


注意事項

  • 製品にはピンヘッダ等は付属されていません。
  • 製品出荷時、DIPスイッチ表面に橙色半透明の洗浄用のシールが貼り付けられていることがありますので、剥がしてからご使用ください。
  • 部品傾き修正の際のハンダフラックス拭き取り跡(くすみ)が基板表面に残っていることがありますが、製品使用上問題はありません。
  • 極性のない表面実装部品(チップ抵抗やチップコンデンサなど)の実装方向は写真とは異なる可能性があります。
  • 小さな製品ですので、誤飲等を避けるためにお子様や認知障がいがある方の手の届く場所に保管しないようご注意ください。