mbed を介して温度・湿度センサーをBluemix へつなぐ　前編

# 前編の概要
いろいろなセンサーをネットワークへつないで、なにかをコントロールしよう、と考えた時、最初に思い浮かぶのは温度や湿度を計測することではないでしょうか。

この記事では、ARM系CPU が搭載されたマイコンボード、mbed LPC1768 を使用し、安価で入手可能な温度・湿度センサー、DHT11 の計測値を Bluemix に連携します。この記事で使用する画像は、2016年10月末時点での表示に基づきます。

- 前編では、Bluemix および mbed.org でのソースコードの準備までを紹介します。
- 中編および後編では、マイコンボードを準備して動作させ、Bluemix 上のデータベースにデータを格納します。

# Bluemix で IoT アプリケーション起動
まずは Bluemix にアカウントを作成してログインしてみましょう。アカウントを作成するには、すぐに受信できるメールアドレスまたは電話番号による確認が必要です。

ブラウザを開いてGoogle で Bluemix を検索すると下記のページが見つかります。または、 https://console.ng.bluemix.net を直接アドレス欄に入力します。ブラウザとしては、Google Chrome を使用すると良いでしょう。
![mbed_bmx_1_1.png](https://qiita-image-store.s3.amazonaws.com/0/27855/a0f1903e-9de3-a701-321f-0314cfb2fc02.png)
(図1-1)


下記の画面が表示されます。画面左下の「IoT の利用」を選択しましょう。アカウントがなくても、そのまま次に進んでください。次に表示される画面からでもアカウントの作成を選択できます。
![mbed_bmx_1_2.png](https://qiita-image-store.s3.amazonaws.com/0/27855/e4f8d18a-ed90-ea1e-30c0-66f36d5a1c2b.png)
(図1-2)


下記の画面が表示されます。IoT の利用で最低限必要なものが３つ表示されています。矢印①で示した枠内のアイコンをクリックすると、矢印②で示したエリアでそれぞれの価格プランの詳細を確認できます。価格プランはあとから変更します。確認したら、矢印③で示した枠内の「登録して作成」を選択します。
![mbed_bmx_1_3.png](https://qiita-image-store.s3.amazonaws.com/0/27855/76655880-9456-725a-e8b6-364335667f84.png)
(図1-3)


下記の画面が表示されます。矢印①で示した枠内のアプリ名およびホスト名を入力します。この枠内のドメインが、「ロード中」のままの場合は、別のブラウザで最初から手順をやり直してみてください。および矢印②で示した Internet of Things Platform の価格プランを「Standard」から「無料」へ変更します。変更したら、矢印③で示した作成ボタンを押し、しばらく待ちます。
![mbed_bmx_1_4.png](https://qiita-image-store.s3.amazonaws.com/0/27855/30dbb7f7-0a4a-b30f-80c2-f8916bf8efa7.png)
(図1-4)


下記の画面が表示されます。矢印で示した枠内が、下記のように表示されるまで待ちます。
![mbed_bmx_1_5.png](https://qiita-image-store.s3.amazonaws.com/0/27855/617fdf81-6c43-a7ee-3221-b97631f9be85.png)
(図1-5)


# mbed.org でプログラムインポート
次は mbed で使用するプログラムをインポートしましょう。mbed の開発環境はブラウザからアクセスします。ブラウザで mbed.org を開き、矢印で示した mbed OS developer site ボタンを押します。
![mbed_bmx_2_1.png](https://qiita-image-store.s3.amazonaws.com/0/27855/fe2b9e74-4315-cd0b-9dd3-3fbc714a9162.png)
(図2-1)


画面が変化した後、画面上部にある、矢印①で示した Login/Singup をクリックすると下記のようにログイン入力欄などが表示された画面になります。矢印②で示した Singupボタンを押します。

次に表示される画面で No I haven't created an account before ボタンを押します。すると、メールアドレスなどの入力欄が表示されます。アカウント作成手続きが完了したら、矢印③で示した Compiler ボタンを押します。
![mbed_bmx_2_2.png](https://qiita-image-store.s3.amazonaws.com/0/27855/c435cec0-7b35-351f-a222-d6cb02a7aa41.png)
(図2-2)


開発を行うためのワークスペースが表示されます。矢印で示した「インポート」を押します。
![mbed_bmx_2_3.png](https://qiita-image-store.s3.amazonaws.com/0/27855/a62f6057-8900-b972-36ad-c62cb45e7737.png)
(図2-3)


インポートウィザードが表示されます。矢印で示した検索欄に IBMIoTSimpleClient と入力して検索ボタンを押します。検索結果からIBMIoTSimpleClient をインポートしてください。
![mbed_bmx_2_4.png](https://qiita-image-store.s3.amazonaws.com/0/27855/28c05d79-60d9-8937-b08d-c8b8d07540e7.png)
(図2-4)


>検索結果に見つからない場合は、インポートウィザードが表示されたページを閉じ、代わりに矢印①で示したページ右上の検索欄で IBMIoTSimpleClient と入力します。検索結果にいくつか IBMIoTSimpleClient が表示されます。任意のリンクを選択します。
>
>正しく選択できると、矢印③で示したように、Users » strysd » Code » IBMIoTSimpleClient を含むパンくずリストが表示されます。または、矢印②で示したようにアドレスを直接入力します：https://developer.mbed.org/users/strysd/code/IBMIoTSimpleClient/
>
>矢印④で示した Import into Compiler ボタンを押してプログラムを自分のワークスペースにインポートします。
>![mbed_bmx_2_5.png](https://qiita-image-store.s3.amazonaws.com/0/27855/e49539e8-1823-d6f0-4000-e48fdf9bf920.png)
>(図2-5)


ダイアログが表示されます。そのまま Import ボタンを押します。インポート作業が開始されますのでしばらく待ちます。
![mbed_bmx_2_6.png](https://qiita-image-store.s3.amazonaws.com/0/27855/83df53d7-71ed-82e6-d545-ff61165a4a05.png)
(図2-6)


正常にインポートが完了すると、下記のように表示されます。
![mbed_bmx_2_7.png](https://qiita-image-store.s3.amazonaws.com/0/27855/6387dbc3-222e-39c1-31f1-99c1980f5772.png)
(図2-7)


# Bluemix でデバイス作成し、C++ プログラムに反映
次はmbedと Bluemix とを仮想的に連携するための「デバイス」を作成します。Bluemix にログインした直後の表示の例です。「すべてのサービス」の中から、矢印で示したInternet of things Platform サービスを選択します。
![mbed_bmx_3_1.png](https://qiita-image-store.s3.amazonaws.com/0/27855/8b1cf602-432e-3562-b6e3-daa43b1f42b7.png)
(図3-1)


矢印で示した「ダッシュボードの起動」をクリックします。
![mbed_bmx_3_2.png](https://qiita-image-store.s3.amazonaws.com/0/27855/e8ed281e-049b-9a53-019f-81ab0e56f52a.png)
(図3-2)


IoT Platform 用のダッシュボードのページが表示されます。左のメニューから、矢印で示した歯車のような記号を選択します。デバイスというメニュー名が表示されます。そのメニューをクリックします。
![mbed_bmx_3_3.png](https://qiita-image-store.s3.amazonaws.com/0/27855/efaa3241-29f1-3c39-6c2b-d97cbdb77780.png)
(図3-3)


下記の画面が表示されます。矢印で示した「デバイスの追加」ボタンを押します。
![mbed_bmx_3_4.png](https://qiita-image-store.s3.amazonaws.com/0/27855/91efc87b-631d-2b15-ca37-1583547263fe.png)
(図3-4)


次の画面およびその次の画面でも「デバイス・タイプの作成」ボタンを押します。
![mbed_bmx_3_5.png](https://qiita-image-store.s3.amazonaws.com/0/27855/70a48b96-e9f0-012a-ab07-488f93d0b392.png)
(図3-5)


![mbed_bmx_3_6.png](https://qiita-image-store.s3.amazonaws.com/0/27855/3338a708-101f-6f6f-8ce7-70f397602b8f.png)
(図3-6)


図３－７のように表示されます。矢印①で示した名前は最初空欄です。記入する値は任意です。この記事では、図３－８で示した LPC1768.h 上の DEFAULT_TYPE_NAME に定義されている iotsample-mbed-lpc1768 を使用します。名前を記入したら、矢印②で示した「次へ」をクリックします。

![mbed_bmx_3_7.png](https://qiita-image-store.s3.amazonaws.com/0/27855/0a0d7c59-5ae1-cc6b-ff4e-4b9da6d86bf4.png)
(図3-7)

![mbed_bmx_3_8.png](https://qiita-image-store.s3.amazonaws.com/0/27855/ad96009d-c21b-2e6c-c2df-1c0a968f2823.png)
(図3-8)


矢印①に示した枠内のメタデータの入力ページまで、なにも入力しないで繰り返して「次へ」をクリックして進みます。最後に矢印②に示した「作成」をクリックします。
![mbed_bmx_3_9.png](https://qiita-image-store.s3.amazonaws.com/0/27855/eb383a80-d9fa-4a17-6248-a4ae9146fb08.png)
(図3-9)


矢印①で示したようにデバイス・タイプ iotsample-mbed-lpc1768 が選択肢に追加されました。そのデバイス・タイプをさっそく選択して「次へ」をクリックします。
![mbed_bmx_3_10.png](https://qiita-image-store.s3.amazonaws.com/0/27855/0b38349c-4579-614d-718c-50d57322a206.png)
(図3-10)


デバイス ID として任意の ID を入力し、「次へ」をクリックします。
![mbed_bmx_3_11.png](https://qiita-image-store.s3.amazonaws.com/0/27855/d6e8861c-a228-a329-ce42-a461343b97c8.png)
(図3-11)


矢印①で示したようにトークンの生成方法を選択します。「自己提供の認証トークン」を選択すると、任意のトークンを記入して使用することができます。ただし、セキュリティー確保のため、比較的複雑なトークンにしてください。通常は、自動生成を選択することを推奨します。「次へ」をクリックします。
![mbed_bmx_3_12.png](https://qiita-image-store.s3.amazonaws.com/0/27855/c386103d-cdc2-109d-31d2-35bf5cc7c0c9.png)
(図3-12)


今までの入力内容を確認するための要約が表示されます。ＯＫであれば、矢印で示した「追加」をクリックします。
![mbed_bmx_3_13.png](https://qiita-image-store.s3.amazonaws.com/0/27855/1fa70910-51f7-3a59-eb8b-a5f6f35ec757.png)
(図3-13)


デバイスが作成されました。図３－１４ のように表示されます。この画面に表示される組織 ID、デバイス ID および認証トークンをメモします。図３－１５ のように、mbed.org 上の main.cpp上に矢印で示した枠内のORG、ID および AUTH_TOKEN の定義値として記入します。（筆者が使用した組織 ID および認証トークンは、網掛けして隠しています）
![mbed_bmx_3_14.png](https://qiita-image-store.s3.amazonaws.com/0/27855/bc2ffca7-a3f1-a162-ee15-e70c63526c4f.png)
(図3-14)


![mbed_bmx_3_15.png](https://qiita-image-store.s3.amazonaws.com/0/27855/91e97ca3-30ee-2ef8-14fb-40b15c8e25de.png)
(図3-15)


中編に続く。