Arduinoシールド スタートガイド

ここでは、Arduino と sakura.io 通信モジュールを組み合わせて、データをプラットフォームに送信するためのチュートリアルを行います。

対象読者

本ドキュメントは、以下の方に向けて作成されています。

  • sakura.ioを利用し、最小限の機器で動作を確認したい方

用意するもの

コントロールパネルへのログイン

sakura.io コントロールパネルから、 プロジェクト の作成、 通信モジュール の登録、 連携サービス の設定を行います。

会員IDの取得

さくらインターネットのサービスで使用する「会員ID」が必要です。

さくらインターネットの会員IDをお持ちでない場合は、 マニュアル>会員登録 を参考に、会員IDを取得してください。

sakura.io コントロールパネル

会員登録が完了したら、 sakura.io コントロールパネル を開き、コントロールパネルにログインします。

初めてコントロールパネルにログインした場合、各種約款への同意を求められます。

内容をご確認いただいたうえで、 ✓同意する をクリックするとコントロールパネルにアクセスできます。

約款同意

コントロールパネルにアクセスすると、プロジェクトの一覧が表示されます。

初回ログイン時には デフォルトプロジェクト という名前のプロジェクトが自動で作成されます。

プロジェクト一覧

このプロジェクトを使って進めることも可能ですが、この手順では新たにプロジェクトを作成し、そちらを使用することにします。

プロジェクト作成

プロジェクト一覧画面を開いたら、右上にある +プロジェクト追加 をクリックします。

プロジェクト追加ボタン

プロジェクト追加のダイアログが開きますので、 名称 欄に任意の名前を入力し、 追加 をクリックします。

プロジェクト作成画面

プロジェクトが作成されると自動的にプロジェクト詳細の画面に遷移します。成功した通知で作成されていることを確認できます。

プロジェクト作成完了

通信モジュール登録

次にモジュールの登録を行います。作成したプロジェクトの詳細画面から モジュール追加 のボタンをクリックします。

モジュール追加をクリック

モジュール追加のダイアログが開きます。sakura.io モジュールのラベルに記載されている登録用IDと登録用パスワード情報を確認します。

登録フォームには、sakura.io モジュールに貼り付けられている下のラベルのうち ID:XXXXXXXXXXPASS:XXXXXXXXXX の部分を入力します。

文字が小さくて読み取りづらい場合には、その下のQRコードを読み取ることで同様の情報を得ることができます。

モジュールラベル

モジュール記載の登録用ID、登録用パスワード、および任意の名称を入力して、 追加 ボタンをクリックします。

モジュール登録画面

登録に成功すると、このようなダイアログが表示されます。登録対象のモジュールが初めてsakura.ioコントロールパネルに追加された場合、初回登録ポイントがアカウントに付与されます。

モジュール登録完了画面

ホームへ戻る ボタンをクリックすると、プロジェクト詳細ページでモジュールが追加されていることを確認できます。

モジュール登録後の一覧画面

連携サービス作成

続けて、連携サービスを作成します。モジュールを登録したプロジェクトの 詳細 ボタンをクリックしてプロジェクト詳細画面を開きます。

プロジェクト詳細画面

プロジェクトの詳細ページ内の 連携サービス をクリックします。連携サービス一覧表示に切り替わるので、右端の 連携サービス追加 をクリックします。

連携サービス一覧

連携サービスカタログの選択画面に遷移します。ここではWebSocketを選択します。

WebSocket連携サービスを使うと、通信モジュールからのメッセージをブラウザ上でプレビューできるほか、外部のプログラムとの双方向通信の窓口として使用することができます。

新規連携サービス種別選択

名前の入力を求められるので、適当な連携サービス名を入力します。入力が済んだら 追加 ボタンをクリックします。

連携サービス名入力

連携サービスが作成されると自動的に連携サービス詳細の画面に遷移します。成功した通知で作成されていることを確認できます。

この画面では、sakura.io 通信モジュールから送信されてきたデータをブラウザ上で確認することができます。

連携サービス一覧(追加済)

このページは、この後の手順でデータが送信されてきたことを確認するために使用しますので、ブラウザで開いたままにしておくことをおすすめします。

デバイスの組み立て

通信モジュールとArduinoシールドの組み立て

空中線用のアンテナケーブルと通信モジュール側のアンテナコネクタを合わせ、垂直にはめ込みます。 基板には2つアンテナの端子があるため、2つとも取り付けます。 次に、アンテナケーブルのスクリュー溝部とアンテナを合わせて回すことで取り付けます。

注意事項

端子同士がズレている状態や斜めから強く押し込むとアンテナ端子が変形・破損する場合があります。

I2C通信ができるよう、Arduinoシールドの下記部分にジャンパーを取り付けます。

ジャンパーを取り付ける

両者の準備ができたら、Arduinoシールドと通信モジュールのコネクタを合わせ、垂直にはめ込みます。 この時、必要に応じて両面粘着テープを使用します。

通信モジュールのコネクタをArduino シールドの対向コネクタにはめ込みます。

注意事項

両面粘着テープを使用すると固定されるためArduinoシールドから通信モジュールを取り外すことができなくなります。その他機器への取り付けを検討されている場合は両面粘着テープを使わないようにしてください。 なお、ホストインタフェースの挿抜保証回数は30回です。 コネクタ部は壊れやすいため、挿抜は注意して行ってください。

補足

以下付属品はアンテナをArduinoシールドに固定する場合に使用します。本ドキュメントでは使用しません。

  • ワッシャー(通信モジュール)
  • アンテナプレート(Arduinoシールド)
  • 樹脂スペーサ(Arduinoシールド)
  • ネジ(Arduinoシールド)

Arduino Unoおよびセンサーとの接続

Arduinoシールド下部のピンはArduino Unoのピン配置に対応しています。 ピンがズレないよう、垂直にArduino Unoにはめ込みます。

開発環境の準備

Arduino IDEのインストール

下記リンクから以下のように進めると、Arduino IDEのインストーラを入手できます。

Arduino

  • 画面上部の Software をクリックします。
  • [Download the Arduino IDE]欄から Windows Installer をクリックします。
  • [Support the Arduino Software]欄から JUST DOWNLOAD をクリックします。

入手したexeファイルを起動し、内容を適宜確認・変更のうえ以下のように進めます。

  • [Arduino Setup: License Agreement]画面で I Agree をクリックします。
  • [Arduino Setup: Installation Option]画面で Next をクリックします。
  • [Arduino Setup: Installation Folder]画面で Install をクリックします。
  • [Arduino Setup: Installing]画面に遷移するのでインストール終了まで待ちます。
  • [Arduino Setup: Completed]画面が表示されたら Close をクリックします。

注意事項

ログインしているPCのアカウント権限によってはexeファイル起動時にユーザアカウント制御のポップアップが表示される場合があります。

Arduino IDEを起動すると、初めに sketch_xxxxxxx という以下内容が記載された画面が表示されます。

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}

Arduinoの接続

USBケーブル(A-B)でPCとArduinoを接続し、以下の2点を設定します。

  • [ツール]>[ボード:”XXXXX”]から Arduino/Genuino Uno をクリックします。
  • [ツール]>[シリアルポート:”XXXXX”]から COMx(Arduino/Genuino Uno) をクリックします。

通電して1分ほど経過するとUSBポート近くのLEDが1回点滅に遷移し、通信モジュールからプラットフォームへ接続されたことが確認できます。

注意事項

通電後しばらく経過しても2回点滅から1回点滅に遷移しない場合、以下の環境を変えてお試しください。

改善しない場合は、 故障かなと思ったら をご確認ください。

SakuraIOライブラリの入手

さくらインターネットが提供するArduinoのライブラリを入手します。 [スケッチ]>[ライブラリをインクルード]>[ライブラリを管理...]をクリックします。 検索機能を使用し、SakuraIOライブラリをインストールします。

[検索をフィルタ...]欄で sakuraio を入力し、最新バージョンを指定して インストール をクリックします。

ライブラリマネージャーで SakuraIO を検索し、インストールします

SakuraIOの名称の横にバージョンとINSTALLEDが表示されたら 閉じる をクリックします。

INSTALLED になったら、ライブラリマネージャーを閉じます

手入力でのモジュール基本情報確認

手入力によるデータ送信確認のため、予め用意されているスケッチをArduinoに書き込みます。 [ファイル]>[スケッチ例]>[SakuraIO]から Shell を呼び出し、マイコンに書き込みます。

Shellスケッチをマイコンボードに書き込みます。

次に、シリアルモニタから基本情報確認のコマンドを入力します。 ボードへの書き込みが完了したら、 シリアルモニタ ボタンをクリックします。

シリアルモニタを開きます。

シリアルモニタ画面で改行を CRのみ に変更します。

シリアルモニタ画面で改行をCRのみに変更します。

シリアルモニタ上部のテキストボックスに以下に示すモジュールのファームウェアバージョン情報確認のコマンドを入力し、 送信 をクリックします。 正常な場合は、ファームウェアのバージョンの値が返ります。応答がない場合は、通信モジュールとの接続を再確認してください。

version
モジュールのVersion情報を確認します。

次に以下に示すモジュールの通信状態確認のコマンドを入力し、 送信 をクリックします。 正常な場合は、「Online」が返ります。

status
モジュールの接続情報を確認します。

通信状態がOnlineとならない場合、以下に示すモジュールの電界強度確認のコマンドを入力し、 送信 をクリックします。 正常な場合は、電界強度が0から5の6段階の値が返ります。 電波強度が低い場合は、場所を移動して再度、試してください。

sqi
モジュールの電界強度情報を確認します。

補足

電界強度は数字が大きいほど強くなり、0は圏外を意味します。 詳細はコマンドリファレンスをご参照ください。

手入力での送信確認

手入力によるデータ送信確認のため、予め用意されているスケッチをArduinoに書き込みます。 [ファイル]>[スケッチ例]>[SakuraIO]から Shell を呼び出し、マイコンに書き込みます。

この時、Webブラウザで作成した連携サービス詳細画面を開いておきます。

作成したWebSocketの連携サービスページを開いておきます。

Shellスケッチを呼び出したら、 マイコンボードに書き込む ボタンをクリックします。

注意事項

Arduino IDE が古い場合、コンパイルに失敗する場合があります。 コンパイルに失敗した場合は、Arduino IDEを最新版にアップデートして、再度お試しください。

Shellスケッチをマイコンボードに書き込みます。

次に、シリアルモニタからデータ送信のコマンドを入力します。 ボードへの書き込みが完了したら、 シリアルモニタ ボタンをクリックします。

シリアルモニタを開きます。

シリアルモニタ画面で改行を CRのみ に変更します。

シリアルモニタ画面で改行をCRのみに変更します。

シリアルモニタ上部のテキストボックスに以下に示すデータの送信キュー追加コマンドを入力し、 送信 をクリックします。 (チャンネル 0int32_t 型の値 123 を入れたデータを送信しています。) 正常に実行されている場合、コマンド以外に表示はされません。

enqueue 0 i 123
enqueueコマンドを入力して、送信ボタンをクリックします。

次に以下に示すデータの送信コマンドを入力し、 送信 をクリックします。 (送信キューに追加されたデータ最大16個を1つのメッセージとして送信します。) 正常に実行されている場合、コマンド以外に表示はされません。

send
sendコマンドを入力して、送信ボタンをクリックします。

以下が上記2つのコマンドが正常に完了した状態です。

正常に実行されている場合、コマンド以外にシリアルモニタに表示はされません。

エラー無くコマンドが実行されたら連携サービス画面の[受信データ]欄にデータが表示されていることを確認します。

受信データ欄で送信したデータがchannelsタイプとして表示されていることを確認します。

補足

簡易位置情報提供機能をOnにしている場合、channelsタイプのデータと合わせてLocationタイプのデータも表示されます。

手入力での受信確認

手入力によるデータ受信確認のため、予め用意されているスケッチをArduinoに書き込みます。 [ファイル]>[スケッチ例]>[SakuraIO]から Shell を呼び出し、マイコンに書き込みます。

Shellスケッチをマイコンボードに書き込みます。

次に、シリアルモニタから基本情報確認のコマンドを入力します。 ボードへの書き込みが完了したら、 シリアルモニタ ボタンをクリックします。

シリアルモニタを開きます。

シリアルモニタ画面で改行を CRのみ に変更します。 一旦Arduino IDEはこちらの状態で待機します。

シリアルモニタ画面で改行をCRのみに変更します。

次に、外部からWebSocketを介してモジュールにメッセージ送信します。 今回は外部サービスの代用として、提供しているWindows向けツール「sakura.io Test」を利用します。 「sakura.io Test」のダウンロードや利用方法は、以下のドキュメントを参照してください。

sakura.io Test https://sakura.io/blog/2019/05/13/sakuraio-test-for-windows/

以下は対象のモジュールIDに送信する例です。 (チャンネル 0int32_t 型の値 123 を入れたデータを送信しています。) 正常に実行されている場合、ツール左下に メッセージ送信完了 と表示されます。

送信データをキューに追加後、Websocketで送信ボタンをクリックします。

Arduino IDEのシリアルモニタ画面に戻り、以下に示す受信キュー確認コマンドを入力し、 送信 をクリックします。 (チャンネル 0int32_t 型の値 123 を入れたデータを送信しています。)

peek
peekコマンドを入力して、送信ボタンをクリックします。

正常に実行されている場合、以下のような内容が出力されます。

正常に実行されている場合、Offset, Channel, Type, Valueの4つの値が出力されます。。

補足

peekコマンドはデータを参照するのみで受信キューから削除されません。 また、デバイス側で受信データを元にした動作を行う場合は後述するdequeueコマンドを実行する必要があります。

最後に、以下に示す受信キューの実行コマンドを入力し、 送信 をクリックします。 正常に実行されている場合、ツール左下に メッセージ送信完了 と表示されます。

dequeue
peekコマンドを入力して、送信ボタンをクリックします。

正常に実行されている場合、以下のような内容が出力されます。

正常に実行されている場合、Offset, Channel, Type, Valueの4つの値が出力されます。

自動送信用プログラムの書き込み

自動でのデータ送信確認のため、予め用意されているスケッチをArduinoに書き込みます。 [ファイル]>[スケッチ例]>[SakuraIO]から Standard を呼び出し、マイコンに書き込みます。

この時、Webブラウザで作成した連携サービス詳細画面を開いておきます。

作成したWebSocketの連携サービスページを開いておきます。

Standardスケッチを呼び出したら、 マイコンボードに書き込む ボタンをクリックします。

standardスケッチをマイコンボードに書き込みます。

ボードへの書き込みが完了したら、 シリアルモニタ ボタンをクリックします。

シリアルモニタを開きます。

Standardスケッチでは通信モジュールから以下のような取得可能な様々な情報を出力するのと同時に、カウンタ値を送信キューに送り、キューが5個になった時点で送信しています。

Waiting to come online

1
1 -> 1
Unixtime 1490867057
ADC0 2508
ADC1 1226
PID 1
UID 16B0100684
Ver v1.1.2-170223-7e6ce64
Status 128
Quality 4
Enqueue 1
Tx Available=29 Queued=1
Rx Available=32 Queued=0

2
2 -> 2
...
..
.

連携サービス画面の[受信データ]欄にデータが表示されていることを確認します。

連携サービス画面で、受信データが表示されていることを確認します。

最後に

以上でチュートリアルは完了です! これでArduinoからsakura.io へデータを送信し、送信されたデータを確認することができました。

例えば、センサーからのデータをsakura.ioへ送信したい場合には、センサーをArduinoに接続し、センサーからのデータをArduinoで取得できれば、上記のスケッチと同様にして簡単にセンサーデータをsakura.io へ送信することができます。

お好きなセンサーモジュールを接続したり、別途販売しているブレイクアウトボードを使用して他のマイコンボードを組合せたり、実際の案件にお役立てください!