Seeed Wio 3GからSORACOM Harvestに加速度データを送信して可視化

この記事はSeeed UG Advent Calendar 2018の14日目の記事です。

f:id:mia_0032:20181213135521j:plain
Seeed Wio 3G

概要

Seeed Wio 3GからSORACOM Harvestにデータを送って可視化してみます。

Seeed Wio 3GはSIMを挿すことで3G回線でインターネットに接続できるマイコンボードです。Arduino IDEで開発できるので手軽にIoTデバイスを作成することができます。 またGroveというセンサーなどが簡単に接続できるモジュールに対応しており、はんだ付け無しでいろいろな機能を実現できます。

SORACOM Harvestはデータの蓄積・可視化を行えるサービスです。デバイスにSORACOMのSIMを組み合わせることで利用できます。

今回はマイコンボードSeeed Wio 3GにSORACOMのSIMカードを挿し、Groveの加速度センサーの値をSORACOM Harvestに送ってみます。

Arduino IDEの設定

Wiki/setup-ja.md at master · SeeedJP/Wiki · GitHub を参照してWio 3Gの開発環境を構築します。

Harvestの利用設定

SORACOM Harvest でデバイスのデータをクラウドで収集・取得・可視化する | Getting Started | SORACOM Developers を参照してSIMグループおよびHarvestの開始手続きを行います。

Groveモジュールの接続とライブラリの読み込み

Wio 3GのI2CコネクタにGrove 3-Axis Digital Accelerometer(±1.5g)を接続します。

f:id:mia_0032:20181213151436j:plain
Wio 3GにGrove加速度センサーを取り付け

加速度センサーのライブラリとして GitHub - Seeed-Studio/Accelerometer_MMA7660: Seeed 3-Axis Digital Accelerometer(±1.5g) library を使いたいのですが、Wio 3GではWireクラスがWireI2Cになっていたりして、そのままでは使えません。

forkしてWio 3Gに対応したものを GitHub - mia-0032/Accelerometer_MMA7660_Wio_3G: Seeed 3-Axis Digital Accelerometer(±1.5g) library に置いていますのでZipでダウンロードして、ArduinoIDEにライブラリをインクルードしてください。

コードの書き込み

以下のコードをWio 3Gに書き込みます。Harvestのサンプルコードに加速度センサーの読み込み処理をつけたコードになってます。

可視化されたデータを見る

Wio 3Gを起動してしばらく立つとHarvestにデータが貯まっていきます。Harvestに送信されたデータは SORACOMのコンソール→SIM管理→SIMを選択→データを確認 という手順で見れます。

f:id:mia_0032:20181213172241p:plain
harvest

センサーを動かすと出力される値が動けば成功です。定期的に振ると上のようなグラフになります。

製作上でハマったところ

  • 通常のArduinoのクラス名とは異なるクラスが使われているのでそのままでは動かないライブラリもある。
  • しばらく経つとHarvestへの書き込みが止まってしまう。
    • これは原因がわかっていない。

まとめ

SORACOMのマネージドサービスのHarvestを使ってお手軽にセンサーデータの可視化ができました。

Wio 3Gは3G回線が使えるので、SIMだけ挿せばネットワークにつながる*1のが楽で良いですね。

*1:SIMが挿せるボードは未発売です。今回は販売前の製品をお借りすることができました。

fluent-plugin-gcloud-pubsub-customをplaceholder対応しました

Google Cloud Pub/Sub用のFluentdプラグインfluent-plugin-gcloud-pubsub-customをFluentd v0.14から使えるplaceholderに対応しました。

v1.1.0からtopicパラメータにplaceholderが指定できるようになっています。

例えば、以下のようなfluent.confを書くことでタグの一部をtopicに指定することができます。

<match example.*>
  @type gcloud_pubsub
  project your_project_id
  key /path/to/keyfile.json
  topic ${tag[1]}

  <buffer tag>
    @type memory
    flush_interval 1s
  </buffer>
  <format>
    @type json
  </format>
</match>

タグごとに送るtopicを変更したいことは多いと思うので、便利になる機能かなと思います。 従来は同じことをやるのにforestプラグインを使う必要がありましたが、これからはプラグイン単体でできます。

また https://docs.fluentd.org/v1.0/articles/buffer-section に記載がある通り、時間やレコードの値を指定することも可能です。 autocreate_topicを設定することで自動的にtopicが存在しなければ作成することもできるので、より柔軟な設定が可能になりました。

ぜひ使ってみてください。

PCM1795搭載のDACキットDAC1795-1.5を改造

6年くらい前に製作したバーブラウンPCM1795を搭載したDACキットのDAC1795-1.5(過去記事)を久々に改造して、電源周りを強化+ディスクリOPアンプ基板を搭載しました。設定の状態もLCDに表示できるようにして、ケースも新調したのでおしゃれな感じになりました。

前面パネル:

f:id:mia_0032:20180225222105j:plain

背面パネル:

f:id:mia_0032:20180225222132j:plain

ケースはタカチのOSアルミケースを使いました。加工は大学時代にお世話になった株式会社FECさんに個人的にお願いして、加工していただきました。とても精度良く加工していただいて、組み立てしやすかったです。

パネルの印字は、イラレでデザインを作ってエーワン 自分で作るデカールシール 透明 1セット 81022をパネルに貼り付けています。

f:id:mia_0032:20180225220915j:plain

LCDのコントローラーの基板以外はお気楽オーディオキットさんで販売されている基板を使いました。

  • 電源基板
    • アナログ部 + デジタル部(5V): 定電圧電源基板(TYPE-F)
    • デジタル部(3.3V): LT3080電圧レギュレータ
  • ディスクリOPアンプ
    • Discrete-Amp Base Board + Rrenew Discrete Amp.基板 A1
  • DAC
    • DAC1795-1.5

DACのI/V変換のOPアンプにはMUSES8920を使いました。OPアンプは何種類か聴き比べして試したところ、好みの音だったのはOP275, LME49720で、特にボーカルの透明度と低音の量のバランスが良かったMUSES8920に決めました。OP275は元気な感じのする音で、LME49720はわりと落ち着いた感じの音で癖がない感じがしました。次点で良いと思ったのは、OPA2134, MUSES8820でした。

ディスクリOPアンプ基板はA1, A6B, A7, A10, A11, A12を聴き比べして、最終的にA1を使うことにしました。次点ではA7, A6Bが好みの音でした。どれも僅差ではあると感じたものの、A1は最も低音と高音のバランスが良い印象だったので、選択しました。

トランスはデジットのトロイダルトランスを使いました。プレートに固定されているタイプのトランスなので、ネジ止めしやすくて良いです。

f:id:mia_0032:20180225220924j:plain

LCDのコントローラーはmbed LPC11U24を使って作製しました。基板は自分で描きました。初めての基板製作でしたが、コネクタのパータンが逆になっていてケーブルを上下逆にしないと取り付けられない状態にはなってしまったものの、それ以外は上手く動いてくれたので良かったです。

作り終わって音を聴いてみると低音の量感がかなり増しており、電源回路を強化したのは効果がありました。デザインも気に入る形にできたので、しばらくはメインで使っていきたいと思っています。

いつになるかわかりませんが、以前作ったRenew DAC8741-1.5の方も同じように改造していきたいところです。