Raspberry Pi の Azure IoT Hub への接続 (Node.js)Connect Raspberry Pi to Azure IoT Hub (Node.js)

このチュートリアルでは、まず Raspbian を実行する Raspberry Pi の操作の基礎について説明します。In this tutorial, you begin by learning the basics of working with Raspberry Pi that's running Raspbian. 次に、Azure IoT Hub を使って、デバイスをクラウドにシームレスに接続する方法について説明します。You then learn how to seamlessly connect your devices to the cloud by using Azure IoT Hub. Windows 10 IoT Core サンプルについては、Windows デベロッパー センターを参照してください。For Windows 10 IoT Core samples, go to the Windows Dev Center.

キットをお持ちでない場合は、Don't have a kit yet? Raspberry Pi オンライン シミュレーターをお試しください。Try Raspberry Pi online simulator. または、こちらで新しいキットを購入してください。Or buy a new kit here.

作業内容What you do

  • IoT Hub を作成します。Create an IoT hub.
  • Pi のデバイスを IoT Hub に登録します。Register a device for Pi in your IoT hub.
  • Raspberry Pi を設定します。Set up Raspberry Pi.
  • Pi でサンプル アプリケーションを実行し、センサー データを IoT Hub に送信します。Run a sample application on Pi to send sensor data to your IoT hub.

学習内容What you learn

  • Azure IoT Hub を作成し、新しいデバイス接続文字列を取得する方法。How to create an Azure IoT hub and get your new device connection string.
  • Pi と BME280 センサーを接続する方法。How to connect Pi with a BME280 sensor.
  • Pi のサンプル アプリケーションを実行して、センサー データを収集する方法。How to collect sensor data by running a sample application on Pi.
  • センサー データを IoT Hub に送信する方法。How to send sensor data to your IoT hub.

必要なものWhat you need

必要なもの

  • Raspberry Pi 2 ボードまたは Raspberry Pi 3 ボード。A Raspberry Pi 2 or Raspberry Pi 3 board.
  • Azure サブスクリプション。An Azure subscription. Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.
  • Pi に接続するモニター、USB キーボード、およびマウス。A monitor, a USB keyboard, and mouse that connects to Pi.
  • Mac か、Windows または Linux を実行している PC。A Mac or PC that is running Windows or Linux.
  • インターネット接続。An internet connection.
  • 16 GB 以上の microSD カード。A 16 GB or above microSD card.
  • USB-SD アダプターまたは microSD カード (microSD カードに オペレーティング システム イメージを書き込むため)。A USB-SD adapter or microSD card to burn the operating system image onto the microSD card.
  • 5V 2A の AC アダプターと約 2 m の micro USB ケーブル。A 5-volt 2-amp power supply with the 6-foot micro USB cable.

省略可能な品目を次に示します。The following items are optional:

  • 温度、気圧、および湿度用の組み立て済み Adafruit BME280 センサー。An assembled Adafruit BME280 temperature, pressure, and humidity sensor.
  • ブレッドボードA breadboard.
  • 6 つの F/M ジャンパー ワイヤ。6 F/M jumper wires.
  • 拡散型 10 mm LED。A diffused 10-mm LED.

注意

省略可能な項目がない場合は、シミュレートされたセンサー データをご利用いただけます。If you don't have the optional items, you can use simulated sensor data.

IoT Hub の作成Create an IoT hub

ここでは、Azure portal を使用して IoT ハブを作成する方法について説明します。This section describes how to create an IoT hub using the Azure portal.

  1. Azure Portal にログインします。Log in to the Azure portal.

  2. [+ リソースの作成][モノのインターネット] の順に選択します。Choose +Create a resource, then choose Internet of Things.

  3. 右側のリストにある [Iot Hub] をクリックします。Click Iot Hub from the list on the right. IoT ハブを作成するための最初の画面が表示されます。You see the first screen for creating an IoT hub.

    Azure Portal での Hub の作成を示したスクリーンショット

    フィールドに入力します。Fill in the fields.

    サブスクリプション: IoT ハブで使用するサブスクリプションを選択します。Subscription: Select the subscription to use for your IoT hub.

    リソース グループ: 新しいリソース グループを作成することも、既存のものを使用することもできます。Resource Group: You can create a new resource group or use an existing one. 新しいものを作成するには、[新規作成] をクリックして、使用する名前を入力します。To create a new one, click Create new and fill in the name you want to use. 既存のグループを使用するには、[既存のものを使用] をクリックし、ドロップダウン リストからリソース グループを選択します。To use an existing resource group, click Use existing and select the resource group from the dropdown list. 詳細については、リソース グループを使用した Azure リソースの管理に関するページを参照してください。For more information, see Use resource groups to manage your Azure resources.

    リージョン: ハブを配置するリージョンです。Region: This is the region in which you want your hub to be located. 最も近い場所をドロップダウン リストから選択します。Select the location closest to you from the dropdown list.

    Iot Hub 名: IoT Hub の名前を入力します。IoT Hub Name: Put in the name for your IoT Hub. この名前はグローバルに一意である必要があります。This name must be globally unique. 入力した名前が使用可能な場合は、緑色のチェック マークが表示されます。If the name you enter is available, a green check mark appears.

    重要

    IoT ハブは DNS エンドポイントとして公開されます。そのため、名前を付ける際は機密情報を含めないようにしてください。The IoT hub will be publicly discoverable as a DNS endpoint, so make sure to avoid any sensitive information while naming it.

  4. [Next: Size and scale](次へ: サイズとスケール) をクリックして、IoT ハブの作成を続けます。Click Next: Size and scale to continue creating your IoT hub.

    Azure portal を使用して新しい IoT ハブ用のサイズとスケールを設定する様子を示すスクリーンショット

    この画面では、既定値を使用して、下部にある [確認および作成] をクリックするだけです。On this screen, you can take the defaults and just click Review + create at the bottom.

    価格とスケール ティア: 必要な機能の数とソリューションで 1 日に送信するメッセージの数に応じて、複数のレベルから選ぶことができます。Pricing and scale tier: You can choose from several tiers depending on how many features you want and how many messages you send through your solution per day. 無料レベルは、テストおよび評価用です。The free tier is intended for testing and evaluation. IoT Hub に接続できるデバイスは 500 個で、1 日に許可されるメッセージ数は最大 8,000 件です。It allows 500 devices to be connected to the IoT hub and up to 8,000 messages per day. Azure サブスクリプションごとに、無料レベルの IoT Hub を 1 つ作成できます。Each Azure subscription can create one IoT Hub in the free tier.

    IoT Hub ユニット: ユニットごとに許可される 1 日あたりのメッセージの数は、ハブの価格レベルによって決まります。IoT Hub units: The number of messages allowed per unit per day depends on your hub's pricing tier. たとえば、IoT Hub で 700,000 件の受信メッセージをサポートする場合は、S1 レベルのユニットを 2 つ選択します。For example, if you want the IoT hub to support ingress of 700,000 messages, you choose two S1 tier units.

    他のレベルのオプションについて詳しくは、適切な IoT Hub レベルの選択に関するページをご覧ください。For details about the other tier options, see Choosing the right IoT Hub tier.

    高度なパーティションと Device-to-cloud パーティション: このプロパティでは、device-to-cloud メッセージがそのメッセージの同時閲覧者数に関連付けられます。Advanced / Device-to-cloud partitions: This property relates the device-to-cloud messages to the number of simultaneous readers of the messages. ほとんどの IoT ハブでは、4 つのパーティションのみが必要となります。Most IoT hubs only need four partitions.

  5. [確認および作成] をクリックして、選択内容を確認します。Click Review + create to review your choices. 次の画面のようになります。You see something similar to this screen.

    新しい IoT ハブを作成するための情報を確認するスクリーンショット

  6. [作成] をクリックして、新しい IoT ハブを作成します。Click Create to create your new IoT hub. ハブの作成には数分かかります。Creating the hub takes a few minutes.

IoT ハブに対する接続文字列を取得するRetrieve connection string for IoT hub

ハブが作成されたら、そのハブの接続文字列を取得します。After your hub has been created, retrieve the connection string for the hub. これは、デバイスとアプリケーションをハブに接続する際に使用します。This is used to connect devices and applications to your hub.

  1. ハブをクリックして、[IoT Hub] ウィンドウを表示します。このウィンドウには、[設定] などが表示されます。Click on your hub to see the IoT Hub pane with Settings, and so on. [共有アクセス ポリシー] をクリックします。Click Shared access policies.

  2. [共有アクセス ポリシー] から [iothubowner] ポリシーを選びます。In Shared access policies, select the iothubowner policy.

  3. 後で使用するために、[共有アクセス キー][接続文字列 --- 主キー] をコピーします。Under Shared access keys, copy the Connection string -- primary key to be used later.

    接続文字列を取得する方法を示す画面

    詳細については、「IoT Hub 開発者ガイド」のアクセス制御に関するページを参照してください。For more information, see Access control in the "IoT Hub developer guide."

IoT ハブに新しいデバイスを登録するRegister a new device in the IoT hub

このセクションでは、IoT ハブの ID レジストリにデバイス ID を作成します。In this section, you create a device identity in the identity registry in your IoT hub. IoT hub に接続するデバイスは、あらかじめ ID レジストリに登録されている必要があります。A device cannot connect to IoT hub unless it has an entry in the identity registry. 詳しくは、IoT Hub 開発者ガイドの "ID レジストリ" に関するセクションをご覧くださいFor more information, see the "Identity registry" section of the IoT Hub developer guide

  1. IoT Hub ナビゲーション メニューの [IoT デバイス] を開き、[追加] をクリックして IoT Hub に新しいデバイスを登録します。In your IoT hub navigation menu, open IoT Devices, then click Add to register a new device in your IoT hub.

    ポータルでデバイス ID を作成する

  2. 新しいデバイスの名前 (myDeviceId など) を入力し、[保存] をクリックします。Provide a name for your new device, such as myDeviceId, and click Save. この操作で、IoT ハブの新しいデバイス ID が作成されます。This action creates a new device identity for your IoT hub.

    新しいデバイスを追加する

    重要

    デバイス ID は、カスタマー サポートとトラブルシューティング目的で収集されたログに表示される場合があります。そのため、名前を付ける際は機密情報を含めないようにしてください。The device ID may be visible in the logs collected for customer support and troubleshooting, so make sure to avoid any sensitive information while naming it.

  3. デバイスが作成された後、[IoT デバイス] ウィンドウの一覧からデバイスを開きます。After the device is created, open the device from the list in the IoT devices pane. 後で使用するために [接続文字列 --- 主キー] をコピーします。Copy the Connection string---primary key to use later.

    デバイスの接続文字列

注意

IoT Hub の ID レジストリには、IoT ハブに対するセキュリティで保護されたアクセスを有効にするためのデバイス ID のみが格納されます。The IoT Hub identity registry only stores device identities to enable secure access to the IoT hub. セキュリティ資格情報として使用するキーとデバイス ID、そして個々のデバイスについてアクセスを無効にすることのできる有効/無効フラグが格納されます。It stores device IDs and keys to use as security credentials, and an enabled/disabled flag that you can use to disable access for an individual device. その他デバイス固有のメタデータをアプリケーションで保存する必要がある場合は、アプリケーション固有のストアを使用する必要があります。If your application needs to store other device-specific metadata, it should use an application-specific store. 詳細については、IoT Hub 開発者ガイドをご覧ください。For more information, see IoT Hub developer guide.

Raspberry Pi のセットアップSet up Raspberry Pi

Pi の Raspbian オペレーティング システムのインストールInstall the Raspbian operating system for Pi

microSD カードに Raspbian イメージをインストールするための準備をします。Prepare the microSD card for installation of the Raspbian image.

  1. Raspbian をダウンロードします。Download Raspbian.

    a.a. Raspbian Stretch をダウンロードします (.zip ファイル)。Download Raspbian Stretch (the .zip file).

    警告

    raspbian-2017-07-5 zip イメージをダウンロードするには、上のリンクを使用してください。Please use above link to download raspbian-2017-07-5 zip image. 最新バージョンの Raspbian イメージには Wiring-Pi ノードに関する既知の問題がいくつかあるため、次の手順でエラーが発生するおそれがあります。The latest version of Raspbian images has some known issues with Wiring-Pi Node, which might cause failure in your next steps.

    b.b. コンピューター上のフォルダーに Raspbian イメージを抽出します。Extract the Raspbian image to a folder on your computer.

  2. microSD カードに Raspbian をインストールします。Install Raspbian to the microSD card.

    a.a. Etcher SD カード書き込みユーティリティをダウンロードしてインストールしますDownload and install the Etcher SD card burner utility.

    b.b. Etcher を実行し、手順 1. で抽出した Raspbian イメージを選択します。Run Etcher and select the Raspbian image that you extracted in step 1.

    c.c. microSD カード ドライブを選択します。Select the microSD card drive. Etcher では適切なドライブが既に選択されている場合があります。Etcher may have already selected the correct drive.

    d.d. [Flash (フラッシュ)] をクリックして、microSD カードに Raspbian をインストールします。Click Flash to install Raspbian to the microSD card.

    e.e. インストールが完了したら、コンピューターから microSD カードを取り出します。Remove the microSD card from your computer when installation is complete. Etcher では完了時に microSD カードを自動的に取り出すか、マウント解除するため、microSD カードを直接取り出しても問題ありません。It's safe to remove the microSD card directly because Etcher automatically ejects or unmounts the microSD card upon completion.

    f.f. microSD カードを Pi に挿入します。Insert the microSD card into Pi.

SSH および I2C の有効化Enable SSH and I2C

  1. Pi をモニター、キーボード、およびマウスに接続します。Connect Pi to the monitor, keyboard, and mouse.

  2. Pi を起動してから、pi をユーザー名として、raspberry をパスワードとして使用して Raspbian にログインします。Start Pi and then log in Raspbian by using pi as the user name and raspberry as the password.

  3. Raspberry アイコン > [Preferences](設定) > [Raspberry Pi Configuration](Raspberry Pi 構成) の順にクリックします。Click the Raspberry icon > Preferences > Raspberry Pi Configuration.

    [Raspbian Preferences] (Raspbian 設定)メニュー

  4. [Interfaces] (インターフェイス) タブで、[I2C][SSH][Enable] (有効) に設定し、[OK] をクリックします。On the Interfaces tab, set I2C and SSH to Enable, and then click OK. 物理センサーがなく、シミュレートされたセンサー データを使用する場合は、この手順は省略可能です。If you don't have physical sensors and want to use simulated sensor data, this step is optional.

    I2C と SSH を Raspberry Pi で有効にする

注意

SSH と I2C を有効にする際の参考ドキュメントは raspberrypi.orgAdafruit.com に多数あります。To enable SSH and I2C, you can find more reference documents on raspberrypi.org and Adafruit.com.

センサーを Pi に接続するConnect the sensor to Pi

ブレッドボードとジャンパー ワイヤを使用して、次のように LED と BME280 を Pi に接続します。Use the breadboard and jumper wires to connect an LED and a BME280 to Pi as follows. センサーがない場合は、このセクションをスキップします。If you don’t have the sensor, skip this section.

Raspberry Pi とセンサーの接続

BME280 センサーでは、温度と湿度のデータを収集できます。The BME280 sensor can collect temperature and humidity data. デバイスがメッセージをクラウドに送信すると、LED が点滅します。The LED blinks when the device sends a message to the cloud.

センサーの各ピンで、次のように接続します。For sensor pins, use the following wiring:

開始 (センサーと LED)Start (Sensor & LED) 終了 (ボード)End (Board) ケーブルの色Cable Color
VDD (ピン 5G)VDD (Pin 5G) 3.3V PWR (ピン 1)3.3V PWR (Pin 1) 白いケーブルWhite cable
GND (ピン 7G)GND (Pin 7G) GND (ピン 6)GND (Pin 6) 茶色のケーブルBrown cable
SDI (ピン 10G)SDI (Pin 10G) I2C1 SDA (ピン 3)I2C1 SDA (Pin 3) 赤いケーブルRed cable
SCK (ピン 8G)SCK (Pin 8G) I2C1 SCL (ピン 5)I2C1 SCL (Pin 5) オレンジ色のケーブルOrange cable
LED VDD (ピン 18F)LED VDD (Pin 18F) GPIO 24 (ピン 18)GPIO 24 (Pin 18) 白いケーブルWhite cable
LED GND (ピン 17F)LED GND (Pin 17F) GND (ピン 20)GND (Pin 20) 黒いケーブルBlack cable

Raspberry Pi 2 & 3 Pin mappings をクリックして参照します。Click to view Raspberry Pi 2 & 3 pin mappings for your reference.

BME280 が正常に Raspberry Pi に接続されると、下の図のようになります。After you've successfully connected BME280 to your Raspberry Pi, it should be like below image.

接続された Pi と BME280

Pi のネットワークへの接続Connect Pi to the network

micro USB ケーブルと AC アダプターを使って、Pi の電源を入れます。Turn on Pi by using the micro USB cable and the power supply. イーサネット ケーブルを使用して Pi を有線ネットワークに接続するか、Raspberry Pi Foundation の手順に従って、Pi をワイヤレス ネットワークに接続します。Use the Ethernet cable to connect Pi to your wired network or follow the instructions from the Raspberry Pi Foundation to connect Pi to your wireless network. Pi がネットワークに正常に接続されたら、Pi の IP アドレスをメモしておく必要があります。After your Pi has been successfully connected to the network, you need to take a note of the IP address of your Pi.

接続先の有線ネットワーク

注意

必ず Pi をコンピューターと同じネットワークに接続してください。Make sure that Pi is connected to the same network as your computer. たとえば、コンピューターがワイヤレス ネットワークに接続され、Pi がワイヤード (有線) ネットワークに接続されている場合、devdisco の出力に IP アドレスが表示されないことがあります。For example, if your computer is connected to a wireless network while Pi is connected to a wired network, you might not see the IP address in the devdisco output.

Pi でのサンプル アプリケーションの実行Run a sample application on Pi

サンプル アプリケーションの複製と前提条件となるパッケージのインストールClone sample application and install the prerequisite packages

  1. 以下の SSH クライアントのいずれかを使用して、ホスト コンピューターから Raspberry Pi に接続します。Connect to your Raspberry Pi with one of the following SSH clients from your host computer:

    Windows ユーザーWindows Users

    a.a. Windows 版の PuTTY をダウンロードしてインストールします。Download and install PuTTY for Windows.

    b.b. Pi の IP アドレスをホスト名 (または IP アドレス) セクションにコピーし、接続の種類として SSH を選択します。Copy the IP address of your Pi into the Host name (or IP address) section and select SSH as the connection type.

    PuTTy

    Mac ユーザーおよび Ubuntu ユーザーMac and Ubuntu Users

    Ubuntu または macOS に組み込まれている SSH クライアントを使用します。Use the built-in SSH client on Ubuntu or macOS. SSH を使用して Pi を接続するには、ssh pi@<ip address of pi> を実行する必要がある場合があります。You might need to run ssh pi@<ip address of pi> to connect Pi via SSH.

    注意

    既定のユーザー名は pi、パスワードはraspberry です。The default username is pi and the password is raspberry.

  2. Pi に Node.js と NPM をインストールします。Install Node.js and NPM to your Pi.

    まず、ご使用の Node.js のバージョンを確認します。First check your Node.js version.

    node -v
    

    バージョンが 4.x より前であるか、Node.js が Pi にない場合は、最新バージョンをインストールします。If the version is lower than 4.x, or if there is no Node.js on your Pi, install the latest version.

    curl -sL http://deb.nodesource.com/setup_4.x | sudo -E bash
    sudo apt-get -y install nodejs
    
  3. サンプル アプリケーションを複製します。Clone the sample application.

    git clone https://github.com/Azure-Samples/iot-hub-node-raspberrypi-client-app
    
  4. サンプルのすべてのパッケージをインストールします。Install all packages for the sample. このインストールには、Azure IoT device SDK、BME280 センサー ライブラリ、および Wiring Pi ライブラリが含まれています。The installation includes Azure IoT device SDK, BME280 Sensor library, and Wiring Pi library.

    cd iot-hub-node-raspberrypi-client-app
    sudo npm install
    

    注意

    ネットワーク接続によっては、このインストール プロセスが終了するまで数分かかる場合があります。It might take several minutes to finish this installation process depending on your network connection.

サンプル アプリケーションを構成するConfigure the sample application

  1. 次のコマンドを実行して、config ファイルを開きます。Open the config file by running the following commands:

    nano config.json
    

    config ファイル

    このファイルには、構成可能な 2 つの項目があります。There are two items in this file you can configure. 1 つは interval で、クラウドに送信するメッセージ間の時間間隔 (ミリ秒) を定義します。The first one is interval, which defines the time interval (in milliseconds) between messages sent to the cloud. もう 1 つは simulatedData で、シミュレートされたセンサー データを使用するかどうかを表すブール値です。The second one is simulatedData, which is a Boolean value for whether to use simulated sensor data or not.

    センサーがない場合は、simulatedData 値を true に設定し、シミュレートされたセンサー データをサンプル アプリケーションで作成して使用します。If you don't have the sensor, set the simulatedData value to true to make the sample application create and use simulated sensor data.

  2. Ctrl + O キー、Enter キー、Ctrl + X キーの順に押し、保存して終了します。Save and exit by typing Control-O > Enter > Control-X.

サンプル アプリケーションの実行Run the sample application

次のコマンドを実行して、サンプル アプリケーションを実行します。Run the sample application by running the following command:

sudo node index.js '<YOUR AZURE IOT HUB DEVICE CONNECTION STRING>'

注意

デバイスの接続文字列をコピーして貼り付け、必ず一重引用符で囲んでください。Make sure you copy-paste the device connection string into the single quotes.

IoT Hub に送信されるセンサー データとメッセージを示す次の出力が表示されます。You should see the following output that shows the sensor data and the messages that are sent to your IoT hub.

出力 - Raspberry Pi から IoT Hub に送信されるセンサー データ

次の手順Next steps

サンプル アプリケーションを実行してセンサー データを収集し、IoT Hub に送信します。You’ve run a sample application to collect sensor data and send it to your IoT hub. Raspberry Pi が IoT ハブに送信したメッセージを確認するか、または Raspberry Pi にメッセージを送信するには、Visual Studio Code 用の Azure IoT Tools を使用したデバイスと IoT Hub の間でのメッセージの送受信に関するページを参照してください。To see the messages that your Raspberry Pi has sent to your IoT hub or send messages to your Raspberry Pi, see the Use Azure IoT Tools for Visual Studio Code to send and receive messages between your device and IoT Hub.

引き続き Azure IoT Hub の使用方法を確認すると共に、他の IoT のシナリオについて調べるには、次のページを参照してください。To continue to get started with Azure IoT Hub and to explore other IoT scenarios, see the following: