Arduino NB1500をAzureIoTHubに安全に接続する
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
注:このチュートリアルは古くなっている可能性があります。どうぞ ここ 最新バージョンの場合。
はじめに
Azure IoT Hubを使用すると、「何十億ものデバイスを安全に接続、監視、および管理して、モノのインターネット(IoT)アプリケーションを開発できます」
デバイスは、次のプロトコルを使用してAzure IoT Hubに接続できます:HTTPS、AMPQ、MQTT-Azureは、これらのプロトコルを抽象化するための多くのプログラミング言語用のSDKも提供します。さらに、MQTTクライアントを介してIoTHubに接続できます。このページには、IoTHubのMQTTサポートに関する詳細情報があります。
このチュートリアルでは、MQTTクライアントを使用してArduino MKR NB1500ボードをAzureIoTHubに安全に接続する方法について説明します。 MQTT(Message Queuing Telemetry Transport)は、メッセージングサブスクリプションと公開トランスポートを提供するM2M(マシンツーマシン)接続プロトコルです。
デバイスは、Azure IoT Hubでの認証にSASトークンまたはX.509証明書を使用できます。詳細については、こちらをご覧ください。このチュートリアルでは、X.509証明書を使用してボードを認証します。
MKR NB 1500を含む、オンボード接続を備えたすべてのArduino MKRボードには、MicrochipATECC508AまたはATECC608A暗号要素が装備されています。この暗号要素を使用して、256ビットのECC(Elliptic Curve Cryptography)キーを安全に生成および保存できます。
ソフトウェアとハードウェアのセットアップ
コンピュータにArduinoIDEがインストールされていない場合は、ダウンロードしてインストールしてください。
インストールしたら、最新の「ArduinoSAMDボード」パッケージがインストールされていることを確認してください。 Arduino IDEを開き、ツール->ボード: "..."->ボードマネージャー... を開くと、確認できます。 メニューエントリ、および「ArdunoSAMD」の検索。執筆時点では、1.6.20が最新バージョンでした。
<図>次に、Arduino IDEのライブラリマネージャーを使用して、使用するArduinoライブラリをインストールする必要があります。 スケッチ->ライブラリを含める->ライブラリを管理... を開きます メニューで、次の各ライブラリを検索して個別にインストールします。
- MKRNB
- ArduinoBearSSL
- ArduinoECCX08
- ArduinoMqttClient
- Arduinoクラウドプロバイダーの例
次に、マイクロSIMカードをMKR NB 1500ボードの下部にあるスロットに挿入し、3.7VLipoバッテリーをJSTコネクタに接続します。次に、マイクロUSBケーブルを使用してMKR NB 1500をコンピューターに接続し、ツール->ポート "..." を使用してArduinoIDEのシリアルポートを選択します。 メニューをクリックし、ツール->ボード「...」でArduinoMKR NB1500を選択します。 メニュー。
<図>
ボードの構成とAzureIoTHubへの追加
前述のように、Azure IoT Hubでは、MQTTプロトコルを使用して接続し、認証にX.509証明書を使用するデバイスを使用できます。スケッチを使用して、ボード上に自己署名X.509証明書を生成し、この証明書のSHA1をAzure IoTHubポータルに追加します。
自己署名証明書は、ArduinoECCX08ライブラリのスケッチ例を使用して生成できます。 ファイル->例-> ArduinoECCX08->ツール-> ECCX08SelfSignedCert を使用して、ArduinoIDEでスケッチを開きます。 。 [アップロード]ボタンをクリックしてスケッチを作成し、ボードにアップロードしてから、シリアルモニターを開きます。行末構成が「NLとCRの両方」に設定されていることを確認してください。
このスケッチでは、ATECC508AをECC608A暗号要素に永続的に構成するように求められます(構成およびロックされていない場合)。 注:このロックプロセスは永続的で元に戻せませんが、暗号要素を使用するために必要です-スケッチセットが任意のクラウドプロバイダー(またはサーバー)で5つの秘密鍵スロットを使用できるようにする構成で、秘密鍵はいつでも再生成できます の 5 プライベート キースロット(0〜4) 。ボードが工場から出荷されるとき、暗号要素は未構成でロック解除された状態です。
この後、証明書の発行年、月、日、時間、有効期限など、自己署名証明書に含める情報の入力を求められます。このチュートリアルでは、スロット0を使用して、自己署名証明書の署名に使用される秘密鍵を生成および保存します(スロット1〜4は、必要に応じて追加の秘密鍵を生成および保存するために使用できます)-次に、スロット8を使用して証明書の発行と有効期限を署名とともに保存します。 注: 秘密鍵は暗号要素内で生成されるため、デバイスから離れることはなく、安全に保管され、読み取ることはできません。
<図>生成されたSHA1値をコピーします(このスクリーンショットでは " 99d6d96fa55bdf08b4040a142a8d0d934bc9d12b ")。後のステップで、Azure IoTHub内のデバイスの自己署名証明書のフィンガープリントとして使用します。
ボードを識別するための自己署名証明書とSHA1フィンガープリントができたので、Azure IoT Hubポータルにログインして、そのための新しいデバイスを作成する必要があります。
1)Webブラウザーを開き、portal.azure.comに移動します。
2)Azureアカウントをまだお持ちでない場合は、[作成]をクリックします。アカウントを作成するには、ページ上のリンクをクリックしてください。それ以外の場合は、メールアドレスを入力して[次へ]をクリックし、ログインプロセスに従います。
3)左側のナビゲーションパネルで[リソースの作成]をクリックします。
<図>4)次に、[モノのインターネット]と[IoTハブ]をクリックします。
<図>5)サブスクリプション、リソースグループ、リージョン、およびIoTハブ名を選択するように求められます。以下のスクリーンショットでは、「Free Trial」、「MKR」、「East US」、および「ArduinoProjectHubTutorial」が入力として使用されています。 [レビュー+作成]をクリックして続行します。
<図>6)「作成」をクリックすると確認画面が表示されます。
<図>7)IoTHubが作成されてデプロイされるまで数分待つ必要があります。
<図>8)展開が完了すると、[リソースに移動]ボタンが表示されたら、それをクリックします。
<図>9)これで、新しいIoTデバイスを作成できるようになりました。[探索]見出しの下にある[IoTデバイス]をクリックします。
<図>10)[追加]ボタンをクリックして、新しいデバイスを追加します。
<図>11)「MyMKRNB1500」の下にデバイスの名前を入力し、「X.509自己署名」タブをクリックします。プライマリとセカンダリの両方の拇印について、ArduinoIDEのシリアルモニターからSHA1を貼り付けます。次に、[保存]ボタンをクリックしてデバイスを作成します。
<図>12)IoTデバイスページに新しいエントリが表示されます。
<図>
ボードをAzureIoTHubに接続する
1)ファイル->例-> を使用して、ArduinoIDEでAzureIoT HubNBスケッチを開きます Arduinoクラウドプロバイダーの例-> AzureIoTHub-> Azure_IoT_Hub_NB。
2)arduino_secrets.hタブで、SIMカードのPIN(必要な場合)を入力します。
// NB settings#define SECRET_PINNUMBER ""
3)Azure IoTHubポータルで作成されたエンドポイントでブローカーの値を更新します。
// Azure IoT Hubブローカーのホスト名を入力します#defineSECRET_BROKER " .azure-devices.net"
4)Azure IoTHubポータルで作成したデバイスの名前でデバイスID値を更新します。
//デバイスIDを入力します#defineSECRET_DEVICE_ID ""
5)スケッチをボードにアップロードし、シリアルモニターを開きます。ボードはセルラーネットワークへの接続を試み、成功した場合はMQTTを使用してAzure IoTHubへの接続を試みます。
<図>
Azure IoTCoreでボードとやり取りする
ボードがAzureIoT Hubに正常に接続されたので、Azure IoTHubポータルを使用してボードと対話できます。スケッチはメッセージを devices / {deviceId} / messages / events / に送信します 5秒ごとにトピックを作成し、 devices / {deviceId} / messages / devicebound /#でメッセージをリッスンします トピック。
Azure IoT Hubポータルで、ボードのIoTデバイステーブルのデバイスID行をクリックします。次に、ツールバーの[デバイスへのメッセージ]ボタンをクリックします。
<図>これで、下のスクリーンショット「こんにちは:) に、デバイスに送信するメッセージ本文を入力できます。 "が入力されました。ツールバーの[メッセージの送信]ボタンをクリックして、メッセージを送信してください。
<図>ボードがメッセージを受信すると、ArduinoIDEのシリアルモニターがメッセージを表示します。
<図>ボードが送信しているメッセージを表示するには:
1)shell.azure.comにログインします(プロンプトが表示されたときに初めての場合は、[Bash]を選択します)。
2)IoT Hub拡張機能をインストールします:
az extension add --name azure-cli-iot-ext
3)次のコマンドを実行し、 <ハブ名> を置き換えます。 ハブの名前を使用します(依存関係の更新を求められた場合はyを入力します):
aziotハブモニター-イベント--hub-name <ハブ名>
4)シェルに印刷されたメッセージが表示されます:
<図>
結論
このチュートリアルでは、Azure IoTHubでArduinoMKR NB1500ボードを安全に使用する方法について説明しました。自己署名X.509証明書を使用して、証明書に関連付けられた秘密鍵を格納するATECC508AまたはATECC608AでMQTTプロトコルを使用してAzure IoTHubで認証しました。 MQTTメッセージはボードとの間で送受信されました。
これはほんの始まりに過ぎません。AzureIoTHubは、Azureが提供する他の多くのサービスで使用できます。
コード
Github
https://github.com/arduino/ArduinoCloudProviderExamples製造プロセス