Nordic

さくらのモノプラットフォームをnRF9160 DKで使ってみた!

2024.01.24

こんにちは。
加賀デバイスのNordic Teamです。

IoT製品を用いたシステム開発では、ソフトウェア開発・ハードウェア開発・IoTプラットフォーム開発・クラウドアプリケーション開発など様々な開発が必要となってきます。
そこで、これら開発を効率良く・短期間で出来るサービスの”さくらのモノプラットフォーム”について紹介させて頂きたいと思います。

さくらのモノプラットフォームの特徴としては、下記などがあげられます。

・さくらのモノプラットフォームでは、デバイスの管理、IoTデバイスとのデータやファイルの送受信、クラウドサーバーとのデータの中継などの様々な機能が準備されています。
・さくらのセキュアモバイルコネクト(閉域網)と組み合わせ使用する事でセキュリティが高いIoTプラットフォームを提供するサービスとなります。さらにセキュアモバイルコネクトはマルチキャリア対応しているため電波障害発生時のリスクヘッジも出来ます。
・IoT開発に必要なソフトウェア・ハードウェアの設計情報を提供しており、IoTデバイスの開発の負荷を軽減し早期に製品を立ち上げる事が可能です。

このさくらのモノプラットフォームでは、NordicのnRF9160を使用してすぐに試せる環境が準備されています。
それらを使って早速、さくらのモノプラットフォームを試してみたいと思います。

◢◤準備

さくらのモノプラットフォームの設定については、下記ドキュメントを参考にしました。

 さくらのモノプラットフォーム:ドキュメント

下記3つを設定するだけでさくらのモノプラットフォームは使用可能となります。

1.さくらのセキュアモバイルコネクトで使用するSIMを登録。
2.さくらのモノプラットフォームでプロジェクトを作成
3.さくらのモノプラットフォームでサービスアダプタを作成
  *WebSocket、Incomming Webhook、Outgoing Webhookなど

続いて、nRF9160 DKに書き込むソフトウェアの準備です。
nRF9160 DKで使用可能なソフトウェアはGithub(さくらインターネットのアカウント)で用意されています。
 *現時点ではNordicの開発環境:nRF Connect SDKのv2.4.2に対応しています。
 *ビルド済みのHEXファイルの物も用意されているため、直ぐに試す事が可能です。

ドキュメントに記載されている内容にしたがってダウンロードします。


ソフトウェアをビルドしてnRF9160に書き込むことで準備は完了です。


nRF9160 DKの動作確認のためにターミナルソフトのTeraTermを使用します。
ソフトウェアを起動させて接続が完了するとTeraTermの画面に”+++ Ready +++”が表示されます。

モノプラットフォームのWebSocketには10秒毎にKeepAliveが表示されます。

◢◤WebSocketを使用したデータの送受信

さくらインターネットが用意しているソフトウェアでは、データ受信やファイル送受信などのコマンドが用意されています。

 コマンド一覧

まずはデータ送信を試します。
TeraTermから$$TXコマンドでデータを送信してみます。
送信するデータは、tagは”01″、typeは”20″の文字列、valueはASCIIコードで”303132333435″(012345)を指定します。

WebSocketのログ上で受信データが確認します。

tagは”01″、typeはstring-utf8の文字列、valueは”012345″(ASCIIコードで”303132333435″)が正しく受信出来ています。


続いてWebSocketからデータを送り、nRF9160 DKで受信してみたいと思います。

WebSocketの”メッセージ送信”で必要な情報を入力して送信ボタンを押します。
タグは”01″、タイプは文字列、値は”123ABC”(ASCIIコードで”313233414243″)を指定します。

送信ボタンを押すと、データが送信され”notify”のログが表示されます。

TeraTermで$$RXを入力してnRF9160 DKでデータ受信をします。

Websocketで送信した数値の、タグは”01″、タイプは”20″の文字列、受信データ数は6byte、値はASCIIコードの”313233414243″(123ABC)が正しく受信出来ています。

◢◤ファイル送受信機能を使用したファイルの送受信

続いてファイルの送受信機能を試してみます。
送信するファイルはさくらインターネットのロゴ:13,824 バイト(0x3600Byte)を使用してみます。

さくらインターネットが用意しているソフトウェアではファイル転送にXMODEMを使用しているため、TeraTermからXMODEMを使用してファイル転送を行います。

使用するコマンドは$$FPUTです。
送信するファイルのサイズは必ず16進数8桁にする必要があり、注意が必要です。
任意のファイル名を指定して、送信するサイズ0x3600(13,824 バイト)を指定します。
ここで指定したファイル名がモノプラットフォーム側で表示される名前となります。

続いてXMODEMで、実際に送信するファイルを指定して送信を開始します。

送信が完了したら、モノプラットフォームのプロジェクトの”ファイル送受信”で確認します。

ファイル名もサイズも正しく転送されているのが確認出来ます。

続いてファイルの受信を試してみます。
使用するコマンドは$$FGETです。
モノプラットフォームのプロジェクトの中あるファイル名を指定します。

続いてXMODEMで、パソコンに保存する名前を指定して受信します。

受信出来たファイルを確認してみましたが、正しく画像として表示されました。

◢◤Webhookを使用した外部サーバーとの接続

今まではさくらのモノプラットフォームとnRF9160 DKとのデータのやり取りでした。
次に外部サーバーとのやり取りをするためにWebhook機能を使います。
サーバーはさくらのクラウドを使用し、アプリケーションはNode-redを使用しました。
 *Node-REDは,JS Foundationの米国およびその他の国における登録商標または商標です。

Incomming Webhookを使用する事で外部サーバーからモノプラットフォーム経由でnRF9160 DKにデータを送信する事が可能となります。

モノプラットフォーム側の設定として、サービスアダプタでincomming-webhookを作成します。
作成すると下記のようにURLが割り振られます。

サーバー側はNode-redで下記のようなノードを作成しました。

“send msg”ノードで送信する値を設定します。
送信する値は、tagは”AA”、typeは”string.utf8″の文字列、valueは”AA55″(ASCIIコードで”41413535″)を指定します。
device_idの設定も必要となりますが、モノプラットフォームのプロジェクトのデバイスタブでターゲットとなるSIMのデバイスID(赤枠)が確認可能です。

これら内容をJsonフォーマットに変換して送信します。

“http request”でincomming-webhookで割り当てられたURLに値を送信します。

incomming-webhookの設定は以上となります。
Node-redの”send_msg”を実行して、nRF9160 DKで受信した結果が下記となります。

タグは”AA”、タイプは”20″の文字列、受信データ数は4byte、値はASCIIコードの”41413535″(AA55)が正しく受信出来ています。

次はOutgoing Webhookを試してみます。

サーバー側はNode-redで下記のようなノードを作成しました。
Node-redでエンドポイントを”recieve”にして、受信した値をdebug画面で表示されるようにします。

モノプラットフォーム側の設定として、サービスアダプタでoutgoing-webhookを作成します。
URLに、作成したサーバーIPアドレスと、Node-redのポート:1880と、先程作成したエンドポイントを指定します。

outgoing-webhookの設定は以上となります。
nRF9160 DKからデータを送信してみます。
送信するデータは、tagは”01″、typeは”20″の文字列、valueはASCIIコードで”35353030″(5500)を指定します。

Node-redのデバッグ画面で確認します。

受信データはJsonフォーマットとなっており、device_id:”31169″のデバイスから、typeが”string.utf8″の文字列、tagが”01″、valueが”5500”(ASCIIコードで”35353030″)が正しく受信出来ています。

◢◤応用例:Outgoing Webhookを使用したセンサーデータのアップロード

ここまでの動作はすべてさくらインターネットが用意しているソフトウェアをそのまま使って、外部からコマンドを入力して動作確認をしてきました。
ただし、さくらインターネットが用意しているソフトウェアでは様々な関数が用意されていて、それらを使うことで外部からのコマンド入力無しでもデータの送受信が可能となります。

今回は加速度センサーのデータをクラウドに上げてグラフ化するといった事を試してみたいと思います。
使用したセンサーはMPU6050です。MPU6050を動作させるサンプルプログラムはNordicの開発環境のnRF Connect SDKに用意されています。
接続イメージは下記となります。

さくらインターネットが用意しているソフトウェアにMPU6050のセンサーデータの受信処理と、SipfObjClientObjUpRaw関数を使用してサーバーにデータを上げる処理を追加しました。
その結果が下記となります。

サーバー側はNode-redで下記のようなノードを作成しました。


前回作成したエンドポイント:”recieve”をそのまま使用し、受信したデータをX/Y/Z軸の3つに分割し、テキストとグラフで表示させるようにしています。
下記がデータ受信をした結果となります。

◢◤まとめ

今回示したようにnRF9160とさくらのモノプラットフォームを組み合わせて使うことで、サーバーとデータのやり取りをするシステムがとても簡単に構築出来ます。

また、さくらインターネットではnRF9160を使用した基板情報も公開していますのでとても参考になります。

さくらのモノプラットフォームにはIoTプラットフォームの開発に必要なソフトウェア・ハードウェア・プラットフォームの情報が全てそろっていますので一度お試し頂ければと思います。

ご興味ございましたら弊社のお問い合わせ にご連絡ください。

今後もNordicの紹介及びコラムにて色々な情報を公開致しますので是非ご確認ください。

また、Facebookでも随時情報を公開しておりますので合わせてご確認ください。

Nordic コラム一覧

nRF91シリーズ新ラインナップ nRF9151 を発表

関連記事