LoginSignup
3
4

More than 5 years have passed since last update.

6軸センサの値をsakura.ioに投げてみる

Last updated at Posted at 2016-12-24

初めての電子工作: Arduinoで6軸センサを動かしてみるの続き。

5000円ちょっとで売られているsakura.ioのβ版モジュールを使うと、Arduinoからsakura.ioへ簡単にデータを投げられる。

sakura.ioに送信したデータはWebSocketやMQTTなどいくつかの形で外部へ取り出すことが出来るので、ぼくのようなウェブ屋さんにはとても扱いやすい。6軸センサの値を取得してsakura.ioに送信し、WebSocketで取得するところまでトライしてみる。

前提

  • さくらインターネットにアカウントを持っていること

準備

プロジェクトを作る

IoTプラットフォームの管理コンソールを開いて新しいプロジェクトを作ります。

貼り付けた画像_2016_12_24_18_13.png

名称はプロジェクト名称は適当でいいです(後から変更できます)。

貼り付けた画像_2016_12_24_18_13.png

モジュールを登録する

sakura.io LTEモジュールを登録します。基板の裏面のシールを剥がすと ID, PASS の記載があります。

貼り付けた画像_2016_12_24_18_19.png

プロジェクトの モジュール登録 を開いて…

貼り付けた画像_2016_12_24_18_14.png

登録用ID にモジュールの ID を、 登録用パスワード にモジュールの PASS を入力します。これでモジュールの登録は完了。

貼り付けた画像_2016_12_24_18_15.png

連携サービスの追加

WebSocketのエンドポイントを作成するため サービス追加 を開きます。

貼り付けた画像_2016_12_24_18_16.png

いくつかあるうちの WebSocket を開いて…

貼り付けた画像_2016_12_24_18_17.png

適当に名前をつけます(これも後から変更できます)。

貼り付けた画像_2016_12_24_18_22.png

トークンとWebSocketエンドポイントが作成されるので保存しておしまい。

WebSocketからデータを取得する

Golangで書かれたコマンドラインツールのsakuraio-cliを使うと簡単です。 XXXX と書かれた箇所は、サービス登録時に取得したトークンを入力します。

sakuraio-cli service websocket listen --token=XXXX

接続されるとキープアライブを行っていることがペイロードからわかります。ペイロードのシリアライズ方式はJSONなので人間が読みやすくていいですね。だいたい10秒に1回ほど接続維持のため通信を行うようです。タイムスタンプはISO8601形式です。

{"type":"keepalive","datetime":"2016-12-24T09:36:34.421300505Z"}
{"type":"keepalive","datetime":"2016-12-24T09:36:44.42129101Z"}
{"type":"keepalive","datetime":"2016-12-24T09:36:54.421342341Z"}

サンプルコードを実行してペイロードを確認する

さくらインターネットさんのgithubレポジトリにあるGY-521のサンプルを実行し、6軸センサの値をsakura.io LTEモジュールへ送信します。回路図やソースコードはレポジトリのファイルを見てください。

Arduinoにプログラムをロードしてしばらく待つと、sakura.io LTEモジュールがオンラインになったことがわかります。

{
    "datetime": "2016-12-24T08:30:40.217788971Z",
    "module": "XXXX",
    "payload": {
        "is_online": true
    },
    "type": "connection"
}

さらに少し待つと、6軸センサが取得した値が流れてきます。チャネル定義は次のようになっています。

  • Channel 0: Temperature in celsius
  • Channel 1: Accelerometer X (G)
  • Channel 2: Accelerometer Y
  • Channel 3: Accelerometer Z
  • Channel 4: Gyro X (degrees / sec)
  • Channel 5: Gyro Y
  • Channel 6: Gyro Z
{
    "datetime": "2016-12-24T09:53:03.514430413Z",
    "module": "XXXX",
    "payload": {
        "channels": [
            {
                "channel": 0,
                "datetime": "2016-12-24T09:53:03.429432065Z",
                "type": "f",
                "value": 29.07059
            },
            {
                "channel": 1,
                "datetime": "2016-12-24T09:53:03.443432065Z",
                "type": "f",
                "value": 0.10620117
            },
            {
                "channel": 2,
                "datetime": "2016-12-24T09:53:03.454432065Z",
                "type": "f",
                "value": -0.032958984
            },
            {
                "channel": 3,
                "datetime": "2016-12-24T09:53:03.466432065Z",
                "type": "f",
                "value": 0.96362305
            },
            {
                "channel": 4,
                "datetime": "2016-12-24T09:53:03.480432065Z",
                "type": "f",
                "value": -2.908397
            },
            {
                "channel": 5,
                "datetime": "2016-12-24T09:53:03.492432065Z",
                "type": "f",
                "value": -0.90076333
            },
            {
                "channel": 6,
                "datetime": "2016-12-24T09:53:03.504432065Z",
                "type": "f",
                "value": -0.47328246
            }
        ]
    },
    "type": "channels"
}

というわけでデバイスのセンサ値をサクッとWebSocketで取得することが出来ました。便利ですね。

3
4
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
3
4