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 にサインインします。Sign in to the Azure portal.

  2. Azure ホームページから [+ リソースの作成] ボタンを選択し、 [Marketplace を検索] フィールドに「IoT Hub」と入力します。From the Azure homepage, select the + Create a resource button, and then enter IoT Hub in the Search the Marketplace field.

  3. 検索結果の [IoT Hub] を選択し、 [作成] を選択します。Select IoT Hub from the search results, and then select Create.

  4. [基本] タブで、次のように各フィールドに入力します。On the Basics tab, complete the fields as follows:

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

    • リソース グループ:リソース グループを選択するか、新しく作成します。Resource Group: Select a resource group or create a new one. 新たに作成するには、 [新規作成] を選択して、使用する名前を入力します。To create a new one, select Create new and fill in the name you want to use. 既存のリソース グループを使用するには、そのリソース グループを選択します。To use an existing resource group, select that resource group. 詳しくは、「Manage Azure Resource Manager resource groups (Azure Resource Manager のリソース グループの管理)」をご覧ください。For more information, see Manage Azure Resource Manager resource groups.

    • [リージョン] :ハブを配置するリージョンを選択します。Region: Select the region in which you want your hub to be located. ユーザーに最も近い場所を選択します。Select the location closest to you. 一部の機能 (IoT Hub デバイス ストリームなど) は、特定のリージョンでのみご利用いただけます。Some features, such as IoT Hub device streams, are only available in specific regions. これらの制限のある機能については、サポート対象のいずれかのリージョンを選択する必要があります。For these limited features, you must select one of the supported regions.

    • [IoT Hub 名] : ハブの名前を入力します。IoT Hub Name: Enter a name for your hub. この名前はグローバルに一意である必要があります。This name must be globally unique.

    重要

    IoT ハブは DNS エンドポイントとして公開されるため、名前を付ける際に機密情報や個人を特定できる情報を入力しないように注意してください。Because the IoT hub will be publicly discoverable as a DNS endpoint, be sure to avoid entering any sensitive or personally identifiable information when you name it.

    Azure portal でハブを作成する。

  5. Next:Networking(次へ: ネットワーク) を選択して、ハブの作成を続けます。Select Next: Networking to continue creating your hub.

    IoT Hub に接続できるエンドポイントを選択します。Choose the endpoints that can connect to your IoT Hub. 既定の設定である [パブリック エンドポイント (すべてのネットワーク)] を選択できるほか、 [Public endpoint (selected IP ranges)](パブリック エンドポイント (選択された IP 範囲)) または [プライベート エンドポイント] を選択できます。You can select the default setting Public endpoint (all networks), or choose Public endpoint (selected IP ranges), or Private endpoint. この例では、既定の設定をそのまま使用しています。Accept the default setting for this example.

    接続できるエンドポイントを選択する。

  6. Next:Management(次へ: 管理) を選択して、ハブの作成を続けます。Select Next: Management to continue creating your hub.

    Azure portal を使用して新しいハブのサイズとスケールを設定する。

    ここでは、既定の設定をそのまま使用できます。You can accept the default settings here. 必要に応じて、次のフィールドに変更を加えることができます。If desired, you can modify any of the following fields:

    • [価格とスケールティア] : 選択したレベル。Pricing and scale tier: Your selected tier. 必要な機能およびソリューションで 1 日に送信するメッセージの数に応じて、複数のレベルから適切なものを選びます。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. ハブに接続できるデバイスは 500 個で、1 日に許可されるメッセージ数は最大 8,000 件です。It allows 500 devices to be connected to the hub and up to 8,000 messages per day. Azure サブスクリプションごとに、Free レベルの IoT ハブを 1 つ作成できます。Each Azure subscription can create one IoT hub in the free tier.

      IoT Hub デバイス ストリームのクイックスタートに取り組んでいる場合は、Free レベルを選択してください。If you are working through a Quickstart for IoT Hub device streams, select 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. たとえば、ハブで 700,000 件のイングレス メッセージをサポートする場合は、S1 レベルのユニットを 2 つ選択します。For example, if you want the 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.

    • [Defender for IoT] : IoT およびお使いのデバイスに、脅威に対する保護のレイヤーを別途追加するには、これをオンにします。Defender for IoT: Turn this on to add an extra layer of threat protection to IoT and your devices. このオプションは、Free レベルのハブでは使用できません。This option is not available for hubs in the free tier. この機能の詳細については、Azure Security Center for IoT に関するページを参照してください。For more information about this feature, see Azure Security Center for IoT.

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

  7. 次へ:[Next](次へ) を選択して、次の画面に進みます。Select Next: Tags to continue to the next screen.

    タグは、名前と値の組です。Tags are name/value pairs. 複数のリソースおよびリソース グループに同じタグを割り当てることで、リソースを分類したり、課金情報を統合したりすることができます。You can assign the same tag to multiple resources and resource groups to categorize resources and consolidate billing. 詳細については、タグを使用した Azure リソースの整理に関するページを参照してください。For more information, see Use tags to organize your Azure resources.

    Azure portal を使用してハブにタグを割り当てる。

  8. 次へ:次へ: レビューと作成 をクリックして、選択内容を確認します。Select Next: Review + create to review your choices. 次の画面のようになります。ただし、表示されるのはハブの作成時に選択した値です。You see something similar to this screen, but with the values you selected when creating the hub.

    新しいハブを作成するための情報を確認する。

  9. [作成] を選択して、新しいハブを作成します。Select Create to create your new hub. ハブの作成には数分かかります。Creating the hub takes a few minutes.

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. ハブに接続するデバイスは、あらかじめ ID レジストリに登録されている必要があります。A device cannot connect to a hub unless it has an entry in the identity registry. 詳細については、IoT Hub 開発者ガイドを参照してください。For more information, see the IoT Hub developer guide.

  1. IoT ハブのナビゲーション メニューの [IoT デバイス] を開き、 [新規] を選択して IoT ハブにデバイスを追加します。In your IoT hub navigation menu, open IoT Devices, then select New to add a device in your IoT hub.

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

  2. [デバイスの作成] で、新しいデバイスの名前 (myDeviceId など) を入力し、 [保存] を選択します。In Create a device, provide a name for your new device, such as myDeviceId, and select Save. この操作で、IoT ハブのデバイス ID が作成されます。This action creates a 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 Primary Connection String 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 Buster with desktop (.zip ファイル)。Raspbian Buster with desktop (the .zip file).

    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 sign into 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
    

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

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

    git clone https://github.com/Azure-Samples/azure-iot-samples-node.git
    
  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 azure-iot-samples-node/iot-hub/Tutorials/RaspberryPiApp
    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.

    注: このチュートリアルで使用する i2c アドレスは、既定では 0x77 です。構成によっては、0x76 になることもあります。 i2c エラーが発生した場合は、値を 118 に変更し、その動作が適切かどうかを確認してください。センサーによって使用されているアドレスを確認するには、raspberry pi 上のシェルで sudo i2cdetect -y 1 を実行しますNote: The i2c address used in this tutorial is 0x77 by default. Depending on your configuration it might also be 0x76: if you encounter an i2c error, try to change the value to 118 and see if that works better. To see what address is used by your sensor, run sudo i2cdetect -y 1 in a shell on the raspberry pi

  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 に送信されるセンサー データ

ハブに送信されたメッセージを読み取るRead the messages received by your hub

デバイスから IoT ハブが受信するメッセージを監視する方法の 1 つに、Azure IoT Tools for Visual Studio Code を使用することがあります。One way to monitor messages received by your IoT hub from your device is to use the Azure IoT Tools for Visual Studio Code. 詳細については、「Visual Studio Code 用 Azure IoT Tools を使用してデバイスと IoT Hub の間のメッセージを送受信する」を参照してください。To learn more, see Use Azure IoT Tools for Visual Studio Code to send and receive messages between your device and IoT Hub.

デバイスから送信されたデータを処理する詳しい方法については、次のセクションに進んでください。For more ways to process data sent by your device, continue on to the next section.

次のステップNext steps

サンプル アプリケーションを実行してセンサー データを収集し、IoT Hub に送信しました。You've run a sample application to collect sensor data and send it to your IoT hub.

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