記事一覧

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Johnny-Fiveでマイコン制御21 - コンパス・ジャイロ・GPS

○Compassオブジェクトを作成する

 電子コンパスのデータを取得するには、Compassオブジェクトを使います。Compassオブジェクトは、物理的なボードに接続された単一の電子コンパスや磁力計を表すオブジェクトです。Compassオブジェクトを作成するには、Compassクラスのコンストラクタを使います。「controller」プロパティにデバイス名を指定します。

new five.Compass({

  controller: デバイス名

});

 Johnny-Fiveのサポートする電子コンパス・デバイスは、「HMC5883L」「HMC6352(生産中止)」「BNO055」「MAG3110」の4つです。

 

 電子コンパスの測定データを取得する

電子コンパスの測定データを取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。

on("イベント", ハンドラ)

 

 Compassオブジェクトで発生するイベントは、次のとおりです。

イベント

説明

change

方位が変更されたときに発生する

data

25ミリ秒(freq」プロパティで変更可)間隔で発生する

 

取得した値は、次のプロパティで参照することができます。

プロパティ

プロパティ

heading

北を基準にした方位(0360)

bearing

関連するベアリング情報のプロパティのオブジェクト

 

bearingオブジェクト

プロパティ

説明

name

方位名(例:「North」「South」「Wast」「Eest)

abbr

短縮した方位名(例:「N」「S」「E」「W)

low

32方位(方位間隔11.15)での現在の方角の最小角度

mid

32方位(方位間隔11.15)での現在の方角の中間角度

high

32方位(方位間隔11.15)での現在の方角の最大角度

 

 たとえば、HMC5883L電子コンパスの方位と方位名を取得するには、次のように書きます。

var five = require("johnny-five");

var board = new five.Board();

 

board.on("ready", function() {

  // Compassオブジェクトを作成

  var compass = new five.Compass({

                  controller: "HMC5883L"

                });

 

  // データ取得

  compass.on("data", function() {

    console.log("  heading : ", Math.floor(this.heading));

    console.log("  bearing : ", this.bearing.name);

    console.log("--------------------------------------");

  });

});

 

・配線図

2016080803.png 

 

電子コンパスのデータの読み取り間隔を設定する

 電子コンパスのデータの読み取り間隔(data」イベントの間隔)を設定するには、オプションの「freq」プロパティを使います。値にはミリ秒単位の時間を指定します。たとえば、5000ミリ秒(5)間隔でデータを読み取るには、次のように書きます。

  var compass = new five.Compass({

                  controller: "HMC5883L"

                 freq: 5000

                });

 

Gyroオブジェクトを作成する

 ジャイロセンサーの測定データを取得するには、Gyroオブジェクトを使います。Gyroオブジェクトは、物理的なボードに接続された単一のジャイロセンサーを表すオブジェクトです。Gyroオブジェクトを作成するには、Gyroクラスのコンストラクタを使います。

 Johnny-Fiveのサポートするジャイロセンサーは、アナログインターフェイスの「LPR5150」と、I2Cインターフェイスの「MPU6050」と「BNO055」です。

アナログインターフェイスのジャイロセンサーを使用するためのGyroオブジェクトを作成するには、オプションの「pins」プロパティにジャイロセンサーのXY、およびZ(オプション)出力を接続するアナログピンの名前を配列で指定します。

new five.Gyro ({

  pins: [x, y, z]

});

 

I2Cインターフェイスのジャイロセンサー場合は、「controller」プロパティに使用するジャイロセンサーのデバイス名を指定します。たとえば、MPU6050を使用する場合は、次のように書きます。

new five.Gyro({

  controller: "MPU6050"

});

 

・配線図

2016080507.png 

 

オプションを指定してGyroオブジェクトを作成する

 Gyroオブジェクトは、次のオプションを指定して作成することができます。

 

・アナログオプション(controller: "ANALOG")

プロパティ

タイプ

/説明

既定値

sensitivity

数値

感度

 

resolution

数値

分解能(デバイスにより異なる)

4.88

 

MPU6050オプション(controller: "MPU6050")

プロパティ

タイプ

/説明

既定値

sensitivity

数値

感度(±250の範囲)

131

 

ジャイロセンサーの測定データを取得する

ジャイロセンサーの測定データを取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。

on("イベント", ハンドラ)

 

 Gyroオブジェクトで発生するイベントは、次のとおりです。

イベント

説明

change

ジャイロの値が変更されたときに発生する

data

25ミリ秒間隔で発生する

 

取得した値は、次のプロパティで参照することができます。

プロパティ

説明

isCalibrated

デバイスのキャリブレーション状態

pitch

ピッチ角を含むオブジェクト

roll

ロール角を含むオブジェクト

yaw

ヨーレートの値を含むオブジェクト

rate

XY、およびZの速度値を含むオブジェクト.

x

x方向加速度

y

y方向加速度

z

z方向加速度

 

 たとえば、MPU6050のジャイロセンサーのデータを取得するには、次のように書きます。

var five = require("johnny-five");

var board = new five.Board();

 

board.on("ready", function() {

  // gyroオブジェクトを作成

  var gyro = new five.Gyro({

               controller: "MPU6050"

             })

 

  // データ取得

  gyro.on("change", function() {

    console.log("gyro");

    console.log("  x            : ", this.x);

    console.log("  y            : ", this.y);

    console.log("  z            : ", this.z);

    console.log("  pitch        : ", this.pitch);

    console.log("  roll         : ", this.roll);

    console.log("  yaw          : ", this.yaw);

    console.log("  isCalibrated : ", this.isCalibrated);

    console.log("--------------------------------------");

  });

});

 

・配線図

2016080507.png 

 

GPSオブジェクトを作成する

 GPS(Global Positioning System:全地球測位システム))受信機のデータを取得するには、GPSオブジェクトを使います。GPSオブジェクトは、物理的なボードに接続された単一のGPSを表すオブジェクトです。

Johnny-FiveのサポートするGPSデバイスは、次のとおりです。

MediaTek MT3339

66-Channel LS20031 GPS Receiver Module

G-Top LadyBird 1 (PA6H)

Adafruit Ultimate GPS Breakout

U-blox NEO-6M

Crius Neo-6 v3.1

 

GPSオブジェクトを作成するには、GPSクラスのコンストラクタを使います。引数には、シリアル通信の「RX」ピンと「TX」に使用するピンの番号を指定します。

new five.GPS([RX, TX]);

 

 たとえば、Arduino11ピンをRX10ピンをTXに使用する場合は、次のように指定します。

new five.GPS([11, 10]);

 

 オプションの「pins」プロパティでピン番号を指定する場合は、次のように書きます。

new five.GPS({

  pins: {rx: 11, tx: 10}

})

 

Adafruit Ultimate GPS Breakoutを使用する場合は、「breakout」オプションに「ADAFRUIT_ULTIMATE_GPS」を指定します。

new five.GPS({

  pins: {rx: 11, tx: 10},

  breakout: "ADAFRUIT_ULTIMATE_GPS"

});

 

・配線図

2016080802.png 

GPSArduinoTXRXはクロス接続になることに注意してください。

 

GPSの測定データを取得する

GPSの測定データを取得するには、イベントハンドラを使います。イベントハンドラは、「on」メソッドを使って書きます。イベントにはイベント名を、ハンドラにはイベント発生時に実行する処理(コールバック関数)を指定します。

on("イベント", ハンドラ)

 

 GPSオブジェクトで発生するイベントは、次のとおりです。

イベント

説明

message

有効なメッセージ(NMEAセンテンス)を受信したときに発生する

operations

衛星オペレーションの詳細を受信したときに発生する

acknowledge

acknowledge」メッセージを受信したときに発生する

unknown

有効ですが、認識されないメッセージを受信したときに発生する

change

位置が変更されたときに発生する

navigation

速度や方向が変更されたときに発生する

 

取得した値は、次のプロパティで参照することができます。

プロパティ

説明

latitude

現在の緯度

longitude

現在の経度

altitude

現在の高度

sat

衛星オペレーションの詳細{PDOPHDOPVDOP}

course

現在のコース

speed

現在の対地速度

time

最後の修正の時間

 

 たとえば、経度と緯度を取得するには、次のように書きます。

var five = require("johnny-five");

var board = new five.Board();

 

board.on("ready", function() {

 

  // GPSオブジェクトを作成

  var gps = new five.GPS([11, 10]);

 

  // 経度、緯度を取得

  gps.on("change", function() {

    console.log("position");

    console.log("  latitude   : ", this.latitude);

    console.log("  longitude  : ", this.longitude);

    console.log("--------------------------------------");

  });

});

 

GPS測位の更新頻度を設定する

 GPS測位の更新頻度は、オプションの「frequency」プロパティで設定します。値には周波数をHz単位で指定します。既定値は「1」です。たとえば、更新頻度を10Hzに設定するには、次のように書きます。

  var gps = new five.GPS(

               pins: {rx: 11, tx: 10},

               frequency :10

            });

 

GPS測位データの小数点以下の桁数を設定する

 GPS測位データの小数点以下の桁数は、オプションの「fixed」で設定します。既定値は、「6」です。たとえば、GPS測位データの小数点以下の桁数を2桁に設定するには、次のように書きます。

  var gps = new five.GPS({

               pins: {rx: 11, tx: 10},

               fixed :2

            });

 

GPSをハードウェアシリアルポートに接続して使用する

 GPSは通常、ソフトウェアシリアルを使って、ボーレート9600bpsで通信を行います。これ以外の通信速度で通信したい場合は、ハードウェアシリアルポートを使用します。ハードウェアシリアルポートを使用するには、オプションの「port」プロパティにシリアルポート名を、「baud」にボーレートを指定します。

 たとえば、Arduino MEGA 2560のハードウェアシリアルポート3を使って、4800bpsで通信するには、次のように書きます。

  var gps = new five.GPS({

               port: this.io.SERIAL_PORT_IDs.HW_SERIAL3,

               baud :4800

            });

 

GPSのチップセットにコマンドを送信する

 GPSのチップセットにコマンド(NMEAコマンド)を送信するには、「sendCommand」メソッドを使います。引数には送信するコマンドを文字列で指定します。チェックサムと改行コード(CRLF)は自動的に追加されます。

sendCommand(コマンド文字列)

 

NMEAコマンドについては、次のWebページを参考にしてください。

u-blox社製GPSエンジン NMEAコマンド

MTK社製GPSエンジン NMEAコマンド


スポンサーサイト

コメント

コメントの投稿

非公開コメント

ads

プロフィール

Author:部員3号
FC2ブログへようこそ!

kindle本

最新コメント

温度計

ads

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。