C を使用して Raspberry Pi 3 をリモート監視ソリューションに接続し、センサーから受信したテレメトリを送信する
このチュートリアルでは、Raspberry Pi 3 に対応した Microsoft Azure IoT スタート キットを使用して以下を行う方法について説明します。 このチュートリアルでは次のものを使用します。
- サンプル デバイスを実装するための Raspbian OS、C プログラミング言語、C 用 Microsoft Azure IoT SDK。
- クラウド ベース バックエンドとしての IoT Suite リモート監視構成済みソリューション。
概要
このチュートリアルでは、次の手順を実行します。
- リモート監視構成済みソリューションのインスタンスを Azure サブスクリプションにデプロイします。 この手順では、複数の Azure サービスが自動的にデプロイおよび構成されます。
- お使いのコンピューターやリモート監視ソリューションと通信するようにデバイスとセンサーを設定します。
- サンプル デバイス コードを更新することでリモート監視ソリューションに接続し、テレメトリを送信してソリューションのダッシュボードに表示できるようにします。
前提条件
このチュートリアルを完了するには、アクティブな Azure サブスクリプションが必要になります。
注意
アカウントがない場合は、無料試用版のアカウントを数分で作成することができます。 詳細については、「Azure の無料試用版サイト」を参照してください。
必要なソフトウェア
Raspberry Pi でコマンド ラインにリモートでアクセスするための SSH クライアントがデスクトップ コンピューターに必要です。
- Windows には SSH クライアントは含まれていません。 PuTTY を使用することをお勧めします。
- ほとんどの Linux ディストリビューションと Mac OS には、コマンド ライン SSH ユーティリティが含まれています。 詳細については、「SSH Using Linux or Mac OS (Linux または Mac OS を使用した SSH 接続)」を参照してください。
必要なハードウェア
Raspberry Pi でコマンド ラインにリモート接続するためのデスクトップ コンピューター。
Raspberry Pi 3 用 Microsoft IoT スタート キットまたは同等のコンポーネント。 このチュートリアルでは、キット内の次のものを使用します。
- Raspberry Pi 3
- microSD カード (NOOBS をインストール済み)
- USB ミニ ケーブル
- イーサネット ケーブル
- BME280 センサー
- ブレッドボード
- ジャンパー ワイヤ
- 抵抗
- LED
ソリューションのプロビジョニング
リモート監視の事前構成済みソリューションをアカウントにまだプロビジョニングしていない場合は、次の手順を実施します。
- Azure アカウントの資格情報を使用して azureiotsuite.com にサインインし、[]+ をクリックしてソリューションを作成します。
- [リモート監視] タイルで [選択] タイルを選択します。
- リモート監視の事前構成済みソリューションの [ソリューション名] を入力します。
- ソリューションのプロビジョニングに使用するリージョンとサブスクリプションを選択します。
- [ソリューションの作成] をクリックして、プロビジョニング プロセスを開始します。 通常、このプロセスの実行までに数分かかります。
プロビジョニング プロセスが完了するまで待機します。
- プロビジョニング の状態を表示する、目的のソリューションのタイルをクリックします。
- Azure サービスが Azure サブスクリプションにデプロイされたら、 プロビジョニングの状態 を確認します。
- プロビジョニングが完了すると、状態が [準備完了]に変わります。
- タイルをクリックし、右側のウィンドウでソリューションの詳細を確認します。
注意
構成済みソリューションのデプロイの問題が発生している場合は、「azureiotsuite.com サイトでのアクセス許可」と FAQ を参照してください。 それでも問題が解決しない場合は、ポータルでサービス チケットを作成してください。
ソリューションの一覧に予測どおりに表示されない詳細がありますか? ユーザーの声のページで機能に関する提案をお寄せください。
警告
リモート監視ソリューションによって、Azure サブスクリプションの Azure サービスのセットがプロビジョニングされます。 デプロイによって現実のエンタープライズ アーキテクチャが反映されます。 不要な Azure 使用料金が発生しないよう、作業が終わったら azureiotsuite.com にある構成済みソリューションのインスタンスを削除します。 構成済みソリューションがもう一度必要になった場合は、簡単に再作成できます。 リモート監視ソリューション実行中の使用料金を削減する方法の詳細については、「Configuring Azure IoT Suite preconfigured solutions for demo purposes (デモの目的で Azure IoT Suite 構成済みソリューションを構成する)」をご覧ください。
ソリューション ダッシュボードの表示
ソリューションのダッシュボードでは、デプロイされたソリューションを管理できます。 テレメトリの表示、デバイスの追加、メソッドの呼び出しなどを行えます。
プロビジョニングが完了し、事前構成済みソリューションのタイルに [準備完了] が表示されたら、[起動] を選択し、新しいタブでリモート監視ソリューション ポータルを開きます。
既定では、ソリューション ポータルに "ダッシュボード" が表示されます。 ソリューション ポータルの他の領域に移動するには、ページの左側にあるメニューを使用します。
デバイスを追加する
デバイスが構成済みソリューションに接続するには、有効な資格情報を使用して IoT Hub に対してデバイス自身の ID を証明する必要があります。 デバイスの資格情報は、ソリューション ダッシュボードから取得できます。 このチュートリアルの後半で、クライアント アプリケーションにデバイスの資格情報を含めます。
まだこれを行っていない場合は、カスタム デバイスをリモート監視ソリューションに追加します。 ソリューション ダッシュボードで次の手順を完了します。
ダッシュボードの左下隅にある [デバイスの追加]をクリックします。
[カスタム デバイス] パネルで、[新規追加] をクリックします。
[デバイス ID を自分で定義する] を選択します。 rasppi などのデバイス ID を入力します。[ID の確認] をクリックして、その名前をまだソリューションで使用していないことを確認し、[作成] をクリックしてデバイスをプロビジョニングします。
デバイスの資格情報 (デバイス ID、IoT Hubホスト名、デバイス キー) をメモしておきます。 Raspberry Pi のクライアント アプリケーションがリモート監視ソリューションに接続する際に、この値が必要になります。 次に、 [Done] をクリックします。
ソリューション ダッシュボードのデバイスの一覧でデバイスを選択します。 次に、[デバイスの詳細] パネルで、[デバイスの有効化] をクリックします。 現在、デバイスの状態は [実行中] です。 リモート監視ソリューションはデバイスからテレメトリを受信し、デバイス上でメソッドを呼び出すことができます。
Raspberry Pi を準備する
Raspbian をインストールする
初めて Raspberry Pi を使用する場合、NOOBS を使用して、キットに含まれている SD カードに Raspbian オペレーティング システムをインストールする必要があります。 「Raspberry Pi Software Guide (Raspberry Pi ソフトウェア ガイド)」では、Raspberry Pi にオペレーティング システムをインストールする方法について説明しています。 このチュートリアルでは、Raspberry Pi に Raspbian オペレーティング システムをインストール済みであると想定しています。
注意
Raspberry Pi 3 用 Microsoft Azure IoT スタート キットに含まれる SD カードには、既に NOOBS がインストールされています。 このカードから Raspberry Pi を起動し、Raspbian OS をインストールできます。
ハードウェアを設定する
このチュートリアルでは、Raspberry Pi 3 用 Microsoft Azure IoT スタート キットに含まれる BME280 センサーを使用して、テレメトリ データを生成します。 ここでは、LED を使用して、Raspberry Pi がソリューション ダッシュボードからのメソッドの呼び出しをいつ処理するかを確認します。
ブレッドボード上のコンポーネントは次のとおりです。
- 赤色 LED
- 220 Ω の抵抗 (赤色、赤色、茶色)
- BME280 センサー
次の図は、ハードウェアを接続する方法を示しています。
次の表は、Raspberry Pi からブレッドボード上のコンポーネントへの接続の概要です。
Raspberry Pi | ブレッドボード | Color |
---|---|---|
GND (ピン 14) | LED 陰極ピン (18A) | 紫 |
GPCLK0 (ピン 7) | 抵抗 (25A) | オレンジ |
SPI_CE0 (ピン 24) | CS (39A) | 青 |
SPI_SCLK (ピン 23) | SCK (36A) | 黄 |
SPI_MISO (ピン 21) | SDO (37A) | White |
SPI_MOSI (ピン 19) | SDI (38A) | [緑] |
GND (ピン 6) | GND (35A) | Black |
3.3 V (ピン 1) | 3Vo (34A) | [赤] |
ハードウェアの設定を完了するには、以下のことを行う必要があります。
- Raspberry Pi を、キットに含まれている電源装置に接続します。
- キットに含まれているイーサネット ケーブルを使用して、Raspberry Pi をネットワークに接続します。 別の方法として、Raspberry Pi 用のワイヤレス接続を設定することもできます。
これで、Raspberry Pi のハードウェアの設定が完了しました。
ターミナルにサインインまたはアクセスする
Raspberry Pi でターミナル環境にアクセスする方法は 2 とおりあります。
Raspberry Pi に接続されているキーボードとモニターがある場合は、Raspbian GUI を使用してターミナル ウィンドウにアクセスできます。
SSH を使用して、デスクトップ コンピューターから Raspberry Pi でコマンド ラインにアクセスします。
GUI でターミナル ウィンドウを使用する
Raspbian の既定の資格情報は、pi というユーザー名と raspberry というパスワードです。 GUI のタスク バーでは、モニターのようなアイコンを使用して、[Terminal (ターミナル)] ユーティリティを起動できます。
SSH を使用してサインインする
Raspberry Pi へのコマンド ライン アクセスに SSH を使用できます。 「SSH (Secure Shell)」では、Raspberry Pi で SSH を構成する方法と、Windows または Linux および Mac OS から接続する方法を説明しています。
pi というユーザー名と raspberry というパスワードでサインインします。
省略可能: Raspberry Pi でフォルダーを共有する
必要に応じて、デスクトップ環境を使用して Raspberry Pi でフォルダーを共有することができます。 フォルダーを共有すると、nano
や vi
を使用しなくても、任意のデスクトップ テキスト エディター (Visual Studio Code や Sublime Text など) を使用して、Raspberry Pi でファイルを編集できるようになります。
Windows でフォルダーを共有するために、Raspberry Pi で Samba サーバーを構成します。 別の方法として、デスクトップの SFTP クライアントで、組み込みの SFTP サーバーを使用することもできます。
SPI を有効にする
サンプル アプリケーションを実行できるようにするには、Raspberry Pi でシリアル ペリフェラル インターフェイス (SPI) バスを有効にする必要があります。 Raspberry Pi は、SPI バス経由で BME280 センサー デバイスと通信します。 次のコマンドを使用して、構成ファイルを編集します。
sudo nano /boot/config.txt
次の行を見つけます。
#dtparam=spi=on
行をコメント解除するには、先頭の
#
を削除します。変更を保存し (Ctrl + O キー、Enter キー)、エディターを終了します (Ctrl + X キー)。
SPI を有効にするために、Raspberry Pi を再起動します。 再起動するとターミナルとの接続が切断されるので、Raspberry Pi が再起動したらもう一度サインインする必要があります。
sudo reboot
サンプルをダウンロードして構成する
Raspberry Pi のリモート監視クライアント アプリケーションをダウンロードして構成できます。
リポジトリの複製
まだレポジトリを複製していない場合は、Pi 上のターミナルで次のコマンドを実行して必要なレポジトリを複製します。
cd ~
git clone --recursive https://github.com/Azure-Samples/iot-remote-monitoring-c-raspberrypi-getstartedkit.git
git clone --recursive https://github.com/WiringPi/WiringPi.git
デバイスの接続文字列を更新する
次のコマンドを使用して、nano エディターのサンプル ソース ファイルを開きます。
nano ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/basic/remote_monitoring/remote_monitoring.c
次の行を見つけます。
static const char* deviceId = "[Device Id]";
static const char* connectionString = "HostName=[IoTHub Name].azure-devices.net;DeviceId=[Device Id];SharedAccessKey=[Device Key]";
プレースホルダーの値を、このチュートリアルの最初で作成し保存したデバイスと IoT Hub の情報に置き換えます。 変更を保存し (Ctrl + O キー、Enter キー)、エディターを終了します (Ctrl + X キー)。
サンプルをビルドする
Raspberry Pi 上のターミナルで次のコマンドを実行して、C 用 Microsoft Azure IoT device SDK の前提条件となるパッケージをインストールします。
sudo apt-get update
sudo apt-get install g++ make cmake git libcurl4-openssl-dev libssl-dev uuid-dev
Raspberry Pi 上で更新されたサンプル ソリューションのビルドができます。
chmod +x ~/iot-remote-monitoring-c-raspberrypi-getstartedkit/basic/build.sh
~/iot-remote-monitoring-c-raspberrypi-getstartedkit/basic/build.sh
Raspberry Pi 上でサンプル プログラムを実行できます。 次のコマンドを入力します。
sudo ~/cmake/remote_monitoring/remote_monitoring
次のサンプル出力は、Raspberry Pi 上のコマンド プロンプトに表示される出力の例です。
Ctrl + C キーを押してプログラムを終了します (終了のタイミングは任意)。
テレメトリを表示する
これで、Raspberry Pi からリモート監視ソリューションにテレメトリが送信されるようになりました。 テレメトリはソリューション ダッシュボードで確認できます。 また、ソリューション ダッシュボードから Raspberry Pi にメッセージを送信することもできます。
- ソリューション ダッシュボードに移動します。
- [表示するデバイス:] ボックスの一覧からデバイスを選択します。
- Raspberry Pi からのテレメトリがダッシュボードに表示されます。
デバイスを操作する
ソリューション ダッシュボードから、Raspberry Pi でメソッドを呼び出すことができます。 Raspberry Pi は、リモート監視ソリューションに接続したときに、サポートしているメソッドに関する情報を送信します。
ソリューションのダッシュボードで、[デバイス] をクリックし、[デバイス] ページにアクセスします。 [デバイス一覧] で Raspberry Pi を選択します。 次に、[方法] を選択します。
[メソッドの呼び出し] ページで、[方法] ボックスの一覧から [LightBlink] を選択します。
InvokeMethod を選択します。 Raspberry Pi に接続された LED が数回点滅します。 Raspberry Pi 上のアプリから、ソリューション ダッシュボードに受信確認が送信されます。
ChangeLightStatus メソッドを使用して、LED のオンとオフを切り替えることができます。この際、LightStatusValue はオンの場合は 1 に設定され、オフの場合は 0 に設定されています。
警告
Azure アカウントでリモート監視ソリューションを実行したままにしておくと、実行時間分が課金されます。 リモート監視ソリューション実行中の使用料金を削減する方法の詳細については、「Configuring Azure IoT Suite preconfigured solutions for demo purposes (デモの目的で Azure IoT Suite 構成済みソリューションを構成する)」をご覧ください。 ソリューションの使用を終了するときに、Azure アカウントから構成済みソリューションを削除してください。
次の手順
Azure IoT のその他のサンプルとドキュメントについては、「Azure IoT デベロッパー センター」をご覧ください。