Arduinoシールド スタートガイド¶
ここでは、Arduino と sakura.io 通信モジュールを組み合わせて、データをプラットフォームに送信するためのチュートリアルを行います。
用意するもの¶
- sakura.io通信モジュール(LTE)
- Arduinoシールドボード
- Arduino Uno Rev3
- 12W級ACアダプター 9V 1.3A LTE10UW-SY-BS01
- WindowsOS(7/8/10) 搭載PC - 該当のOS以外であっても、Arduino IDE を利用して、本手順と同様のことができます
コントロールパネルへのログイン¶
sakura.io コントロールパネルから、 プロジェクト
の作成、 通信モジュール
の登録、 連携サービス
の設定を行います。
sakura.io コントロールパネル¶
会員登録が完了したら、 sakura.io コントロールパネル を開き、コントロールパネルにログインします。
初めてコントロールパネルにログインした場合、各種約款への同意を求められます。
内容をご確認いただいたうえで、 ✓同意する
をクリックするとコントロールパネルにアクセスできます。
コントロールパネルにアクセスすると、プロジェクトの一覧が表示されます。
初回ログイン時には デフォルトプロジェクト
という名前のプロジェクトが自動で作成されます。
このプロジェクトを使って進めることも可能ですが、この手順では新たにプロジェクトを作成し、そちらを使用することにします。
プロジェクト作成¶
プロジェクト一覧画面を開いたら、右上にある +プロジェクト追加
をクリックします。
プロジェクト追加のダイアログが開きますので、 名称
欄に任意の名前を入力し、 追加
をクリックします。
プロジェクトが作成されると自動的にプロジェクト詳細の画面に遷移します。成功した通知で作成されていることを確認できます。
通信モジュール登録¶
次にモジュールの登録を行います。作成したプロジェクトの詳細画面から モジュール追加
のボタンをクリックします。
モジュール追加のダイアログが開きます。sakura.io モジュールのラベルに記載されている登録用IDと登録用パスワード情報を確認します。
登録フォームには、sakura.io モジュールに貼り付けられている下のラベルのうち ID:XXXXXXXXXX
と PASS:XXXXXXXXXX
の部分を入力します。
文字が小さくて読み取りづらい場合には、その下のQRコードを読み取ることで同様の情報を得ることができます。
モジュール記載の登録用ID、登録用パスワード、および任意の名称を入力して、 追加
ボタンをクリックします。
登録に成功すると、このようなダイアログが表示されます。登録対象のモジュールが初めてsakura.ioコントロールパネルに追加された場合、初回登録ポイントがアカウントに付与されます。
ホームへ戻る
ボタンをクリックすると、プロジェクト詳細ページでモジュールが追加されていることを確認できます。
連携サービス作成¶
続けて、連携サービスを作成します。モジュールを登録したプロジェクトの 詳細
ボタンをクリックしてプロジェクト詳細画面を開きます。
プロジェクトの詳細ページ内の 連携サービス
をクリックします。連携サービス一覧表示に切り替わるので、右端の 連携サービス追加
をクリックします。
連携サービスカタログの選択画面に遷移します。ここではWebSocketを選択します。
WebSocket連携サービスを使うと、通信モジュールからのメッセージをブラウザ上でプレビューできるほか、外部のプログラムとの双方向通信の窓口として使用することができます。
名前の入力を求められるので、適当な連携サービス名を入力します。入力が済んだら 追加
ボタンをクリックします。
連携サービスが作成されると自動的に連携サービス詳細の画面に遷移します。成功した通知で作成されていることを確認できます。
この画面では、sakura.io 通信モジュールから送信されてきたデータをブラウザ上で確認することができます。
このページは、この後の手順でデータが送信されてきたことを確認するために使用しますので、ブラウザで開いたままにしておくことをおすすめします。
デバイスの組み立て¶
通信モジュールとArduinoシールドの組み立て¶
空中線用のアンテナケーブルと通信モジュール側のアンテナコネクタを合わせ、垂直にはめ込みます。 基板には2つアンテナの端子があるため、2つとも取り付けます。 次に、アンテナケーブルのスクリュー溝部とアンテナを合わせて回すことで取り付けます。
注意事項
端子同士がズレている状態や斜めから強く押し込むとアンテナ端子が変形・破損する場合があります。
I2C通信ができるよう、Arduinoシールドの下記部分にジャンパーを取り付けます。
両者の準備ができたら、Arduinoシールドと通信モジュールのコネクタを合わせ、垂直にはめ込みます。 この時、必要に応じて両面粘着テープを使用します。
注意事項
両面粘着テープを使用すると固定されるためArduinoシールドから通信モジュールを取り外すことができなくなります。その他機器への取り付けを検討されている場合は両面粘着テープを使わないようにしてください。 なお、ホストインタフェースの挿抜保証回数は30回です。 コネクタ部は壊れやすいため、挿抜は注意して行ってください。
補足
以下付属品はアンテナをArduinoシールドに固定する場合に使用します。本ドキュメントでは使用しません。
- ワッシャー(通信モジュール)
- アンテナプレート(Arduinoシールド)
- 樹脂スペーサ(Arduinoシールド)
- ネジ(Arduinoシールド)
Arduino Unoおよびセンサーとの接続¶
Arduinoシールド下部のピンはArduino Unoのピン配置に対応しています。 ピンがズレないよう、垂直にArduino Unoにはめ込みます。
開発環境の準備¶
Arduino IDEのインストール¶
下記リンクから以下のように進めると、Arduino IDEのインストーラを入手できます。
- 画面上部の
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回点滅に遷移しない場合、以下の環境を変えてお試しください。
- 電源環境の変更( ACアダプター も接続する)
- 通信環境の変更( 4GLTE対応エリア を確認する、作業場所を変える)
改善しない場合は、 故障かなと思ったら をご確認ください。
SakuraIOライブラリの入手¶
さくらインターネットが提供するArduinoのライブラリを入手します。 [スケッチ]>[ライブラリをインクルード]>[ライブラリを管理...]をクリックします。 検索機能を使用し、SakuraIOライブラリをインストールします。
[検索をフィルタ...]欄で sakuraio
を入力し、最新バージョンを指定して インストール
をクリックします。
SakuraIOの名称の横にバージョンとINSTALLEDが表示されたら 閉じる
をクリックします。
手入力でのモジュール基本情報確認¶
手入力によるデータ送信確認のため、予め用意されているスケッチをArduinoに書き込みます。
[ファイル]>[スケッチ例]>[SakuraIO]から Shell
を呼び出し、マイコンに書き込みます。
次に、シリアルモニタから基本情報確認のコマンドを入力します。 ボードへの書き込みが完了したら、 シリアルモニタ ボタンをクリックします。
シリアルモニタ画面で改行を CRのみ
に変更します。
シリアルモニタ上部のテキストボックスに以下に示すモジュールのファームウェアバージョン情報確認のコマンドを入力し、 送信
をクリックします。
正常な場合は、ファームウェアのバージョンの値が返ります。応答がない場合は、通信モジュールとの接続を再確認してください。
version
次に以下に示すモジュールの通信状態確認のコマンドを入力し、 送信
をクリックします。
正常な場合は、「Online」が返ります。
status
通信状態がOnlineとならない場合、以下に示すモジュールの電界強度確認のコマンドを入力し、 送信
をクリックします。
正常な場合は、電界強度が0から5の6段階の値が返ります。
電波強度が低い場合は、場所を移動して再度、試してください。
sqi
補足
電界強度は数字が大きいほど強くなり、0は圏外を意味します。 詳細はコマンドリファレンスをご参照ください。
手入力での送信確認¶
手入力によるデータ送信確認のため、予め用意されているスケッチをArduinoに書き込みます。
[ファイル]>[スケッチ例]>[SakuraIO]から Shell
を呼び出し、マイコンに書き込みます。
この時、Webブラウザで作成した連携サービス詳細画面を開いておきます。
Shellスケッチを呼び出したら、 マイコンボードに書き込む
ボタンをクリックします。
注意事項
Arduino IDE が古い場合、コンパイルに失敗する場合があります。 コンパイルに失敗した場合は、Arduino IDEを最新版にアップデートして、再度お試しください。
次に、シリアルモニタからデータ送信のコマンドを入力します。
ボードへの書き込みが完了したら、 シリアルモニタ
ボタンをクリックします。
シリアルモニタ画面で改行を CRのみ
に変更します。
シリアルモニタ上部のテキストボックスに以下に示すデータの送信キュー追加コマンドを入力し、 送信
をクリックします。
(チャンネル 0
に int32_t
型の値 123
を入れたデータを送信しています。)
正常に実行されている場合、コマンド以外に表示はされません。
enqueue 0 i 123
次に以下に示すデータの送信コマンドを入力し、 送信
をクリックします。
(送信キューに追加されたデータ最大16個を1つのメッセージとして送信します。)
正常に実行されている場合、コマンド以外に表示はされません。
send
以下が上記2つのコマンドが正常に完了した状態です。
エラー無くコマンドが実行されたら連携サービス画面の[受信データ]欄にデータが表示されていることを確認します。
補足
簡易位置情報提供機能をOnにしている場合、channelsタイプのデータと合わせてLocationタイプのデータも表示されます。
手入力での受信確認¶
手入力によるデータ受信確認のため、予め用意されているスケッチをArduinoに書き込みます。
[ファイル]>[スケッチ例]>[SakuraIO]から Shell
を呼び出し、マイコンに書き込みます。
次に、シリアルモニタから基本情報確認のコマンドを入力します。 ボードへの書き込みが完了したら、 シリアルモニタ ボタンをクリックします。
シリアルモニタ画面で改行を CRのみ
に変更します。
一旦Arduino IDEはこちらの状態で待機します。
次に、外部からWebSocketを介してモジュールにメッセージ送信します。 今回は外部サービスの代用として、提供しているWindows向けツール「sakura.io Test」を利用します。 「sakura.io Test」のダウンロードや利用方法は、以下のドキュメントを参照してください。
sakura.io Test https://sakura.io/blog/2019/05/13/sakuraio-test-for-windows/
以下は対象のモジュールIDに送信する例です。
(チャンネル 0
に int32_t
型の値 123
を入れたデータを送信しています。)
正常に実行されている場合、ツール左下に メッセージ送信完了
と表示されます。
Arduino IDEのシリアルモニタ画面に戻り、以下に示す受信キュー確認コマンドを入力し、 送信
をクリックします。
(チャンネル 0
に int32_t
型の値 123
を入れたデータを送信しています。)
peek
正常に実行されている場合、以下のような内容が出力されます。
補足
peekコマンドはデータを参照するのみで受信キューから削除されません。 また、デバイス側で受信データを元にした動作を行う場合は後述するdequeueコマンドを実行する必要があります。
最後に、以下に示す受信キューの実行コマンドを入力し、 送信
をクリックします。
正常に実行されている場合、ツール左下に メッセージ送信完了
と表示されます。
dequeue
正常に実行されている場合、以下のような内容が出力されます。
自動送信用プログラムの書き込み¶
自動でのデータ送信確認のため、予め用意されているスケッチをArduinoに書き込みます。
[ファイル]>[スケッチ例]>[SakuraIO]から Standard
を呼び出し、マイコンに書き込みます。
この時、Webブラウザで作成した連携サービス詳細画面を開いておきます。
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 へ送信することができます。
お好きなセンサーモジュールを接続したり、別途販売しているブレイクアウトボードを使用して他のマイコンボードを組合せたり、実際の案件にお役立てください!