見出し画像

ZETAとSPRESENSE™でGPS付き無線センサを作ってみた(前編)

こんにちは。凸版印刷DXデザイン事業部のZETA・IoTソリューションチーム ”Team ZETA” です。
TOPPANは、メッシュ型次世代LPWA・ZETAを活用し、センサーデバイスからアプリケーションに至るZETAソリューションを展開しています。
今回は、TOPPANが提供する次世代型ZETA無線通信モジュールを搭載したAdd-onボード『ZETA R3 for SPRESENSE(TZS9002P)』を用いたGPS付き無線センサーの作成を2回にわたり紹介します。

はじめに

TOPPANではZETAに手軽に触れてもらえるように、SONYのSPRESENSEに対応したZETA用無線Add-onボートZETA R3 for SPRESENSE(TZS9002P)を販売しています。SPRESENSEのコネクタの所定の位置にTZS9002Pを差し込み、アンテナや電源供給用USBケーブルを繋ぐだけでZETA無線端末が作れます(写真1)。

写真1:ZETA R3 for SPRESENSEを使ったZETA無線端末例

今回はこれらを応用してGPS付き無線センサを作ってみたいと思います。
なお、前編ではSPRESENSEがSleepから起きた回数をR3 for SPRESENSEで送信するサンプルプログラムの作り方までを紹介します。
SPRESENSEを使う準備はこちらのサイトを参照してください。

ハードウェアの作り方

SPRESENSEは元々GPS機能を搭載しています。よって前述の写真1の状態で機能的には「ZETA GPS端末」となっています。とはいえ、PCとUSBケーブルで接続しただけのGPS端末では用途が限定されますので、実際は電池駆動にして筐体に格納することが必要です。
というわけで、「ZETA GPS端末」となるようDC/DCコンバータ(SPRESENSEの電源電圧は3.7Vのため昇降圧が必要)も含めて、筐体に入れてみました(写真2)。筐体は防水タイプにしてみたので、例えば放牧牛の首にぶら下げて牛の位置を把握するといった使い方もできます。

写真2:筐体に入れて電池で動くようにしたZETA GPS端末

写真3は、Sparkfun社が企画した"Qwiic Connector"をSPRESENSEに搭載して加速度センサ(MMA8452Q)を接続したZETA GPS 加速度センサの例です。
加速度センサで動きを検知して、動いているときだけGPS測位を行うGPS端末が作れます。
Qwiic対応のセンサモジュールは数10種類販売されていますので、測定したい物理・化学量に合ったセンサを選んでQwiicにつなげば、ハードウェアは出来上がりです。

写真3:Qwiicの加速度センサ(MMA8452Q)を繋いだ例

R3 for SPRFERSENSEの詳しい情報はここにあります。1個から購入できます。

ソフトウェアの作り方


ソフトウェアは、Arduino™開発環境で開発できます。
Qwiicのセンサには、Arduino用のライブラリとスケッチが付属しているので、それらをWindowsPCにダウンロードし、SPRESENSEをUSBケーブルでPCに接続することで、Arduinoスケッチが持っているターミナル画面上にセンシングしたデータを表示できます。
GPSのライブラリとサンプルスケッチはSPRESENSEの開発環境に組み込まれていますので、同様にターミナル画面上に測位したデータを表示できます。

TZS9002P Arduino用ライブラリ


TOPPANでは、TZS9002PのArduinoライブラリとサンプルスケッチを公開しています。(ArduinoライブラリはTOPPANがPoCに使っている100台ほどの端末で稼働していますが、御使用の際はユーザー責任でお使いください。)これらをWindowsPCにダウンロードし、サンプルスケッチに以下の2つの機能を追加すれば、ZETAセンサ端末ができあがります。
①センサデータを読みこんでZETAで送信できる書式に変換する。
②ZETAの送信処理にデータを渡す。

TZS9002PのArduino用ライブラリは、TZM902Dx.cppとZM902Dx.hです。
ライブラリを利用するためには、ArduinoスケッチZETA_Sample_sketchと同じフォルダに入れます。

図1 ZETA_Sample_sketchフォルダの中


コンパイルとSPRESENSEへの書き込み


ZETA_Sample_sketch.inoをダブルクリックして開き、SPRFERSENSEとPCをUSBケーブルでつなぎ、「ツール」「シリアルポート」でCOMxx(Spresense)と表示されているCOMポートを選んだあと、「マイコンボードに書き込む」をクリックするとコンパイルとボードへの書き込みが行われます。
USBを接続した状態では、スケッチの右上にある「シリアルモニタ」をクリックすることでスケッチが動き出します。
外部電源の場合は、電源ONでスケッチが動き出します。

図2:ZETA_Sample_sketch.inoを立ち上げた画面

サンプルスケッチの中でZETAでデータを送信するためのコマンドは、この1行だけです。

Zeta.send(SEND_VARIABLE_LENGTH_DATA, wakeupsensUL, size);
なお、Cold_Sleep中はSRAMの値が保持できないのでZETA_Sample_sketch.inoでは、count値をFlashに退避していますが、この使い方はFlashの書き換え回数を消費しFlashの寿命を縮めますので、実際のセンサ端末の場合はCold_Sleepを跨いだ処理を行わないことをお勧めします。

実行結果


ZETAの電波を受けてZETADRIVE(ZETAのクラウドサーバー)にAP(Access Point)があり、R3_for_SPRESENSEをZETADRIVEに登録していれば
ZETA_Sample_sketch.inoが生成し、ZETA通信で送ったデータが以下のように
表示されます。

図3:ZETA_Sample_sketchがアップリンクした値の表示


AP(Access Point)やZETADRIVE(ZETAサーバー)のご利用を
ご希望の際は、TOPPANの以下のサイトよりお問い合わせください。

ZETA機器はZETA Factory Shopでも購入できます。

またZETA Allianceに加入すれば、機器の無償レンタル制度も使えます。

GPS付き無線センサを作る(後編)


次回は、SPRESENSEに搭載されたGPS機能を使ったGPS端末の開発について実際のプログラムを解説します。


※ SPRESENSEおよびロゴは、ソニーグループ(株)またはその関連会社の登録商標または商標です。