工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

MKR GSM1400をGoogleCloud IoTCoreに安全に接続する

コンポーネントと消耗品

>
Arduino MKR GSM 1400
× 1
Micro-USB-USBケーブル(汎用)
× 1
3.7Vリポバッテリー
× 1
マイクロSIMカード
× 1
セルラーUF.Lアンテナ
× 1

アプリとオンラインサービス

>
Arduino IDE
Google CloudIoTコア

このプロジェクトについて

注:このチュートリアルは古くなっている可能性があります。どうぞ ここ 最新バージョンの場合。

はじめに

デバイスは、HTTPまたはMQTTを使用してGCP IoTCoreに接続できます。このチュートリアルでは、MQTTクライアントを使用してArduino MKR GSM1400ボードをGCPIoTCoreに安全に接続する方法について説明します。 MQTT(Message Queuing Telemetry Transport)は、メッセージングサブスクリプションと公開トランスポートを提供するM2M(マシンツーマシン)接続プロトコルです。

デバイスは認証にJSONWebトークン(JWT)を使用する必要があります。JWTの詳細については、RFC 7519を参照してください。GCPIoTCoreは、JSON Web署名(JWS)を検証するためにRSAアルゴリズムとEllipticCurveアルゴリズムの両方をサポートしています。 JWSの詳細については、RFC7515を参照してください。

MKR GSM 1400を含む、オンボード接続を備えたすべてのArduino MKRボードには、MicrochipATECC508AまたはATECC608A暗号要素が装備されています。この暗号要素は、256ビットのECC(Elliptic Curve Cryptography)キーを安全に生成および保存するために使用できます。 JWTに署名するために、crypto要素内に格納されている秘密鍵を使用します。

ソフトウェアとハ​​ードウェアのセットアップ

コンピュータにArduinoIDEがインストールされていない場合は、ダウンロードしてインストールしてください。

インストールしたら、最新の「ArduinoSAMDボード」パッケージがインストールされていることを確認してください。 Arduino IDEを開き、ツール->ボード: "..."->ボードマネージャー... を開くと、確認できます。 メニューエントリ、および「ArdunoSAMD」の検索。執筆時点では、1.6.20が最新バージョンでした。

<図>

次に、Arduino IDEのライブラリマネージャーを使用して、使用するArduinoライブラリをインストールする必要があります。スケッチを開く->ライブラリを含める->ライブラリを管理する.. メニューで、次の各ライブラリを検索して個別にインストールします。

  • MKRGSM
  • Arduino_JSON
  • ArduinoECCX08(バージョン1.3.0以降)
  • ArduinoMqttClient(バージョン0.1.3以降)
  • Arduinoクラウドプロバイダーの例(バージョン1.2.0以降)

次に、マイクロSIMカードをMKR GSM 1400ボードの下部にあるスロットに挿入し、アンテナを接続して、3.7VLipoバッテリーをJSTコネクタに接続します。次に、マイクロUSBケーブルを使用してMKR GSM 1400をコンピューターに接続し、ツール->ポート "..." を使用してArduinoIDEのシリアルポートを選択します。 メニューをクリックし、ツール->ボード「...」でArduinoMKR GSM1400を選択します。 メニュー。

<図>

ボードの構成とGCPIoTコアへの追加

前述のように、GCP IoT Coreでは、認証にJWTを使用するためにMQTTプロトコルを使用して接続するデバイスが必要です。スケッチを使用してボード上に秘密鍵と公開鍵を生成し、公開鍵のPEM値をGCP IoTCoreコンソールに追加します。

プライベートとパブリックは、ArduinoECCX08ライブラリのスケッチ例を使用して生成できます。 ファイル->例-> ArduinoECCX08->ツール-> ECCX08JWSPublicKey を使用して、ArduinoIDEでスケッチを開きます。 。 [アップロード]ボタンをクリックしてスケッチを作成し、ボードにアップロードしてから、シリアルモニターを開きます。行末構成が「NLとCRの両方」に設定されていることを確認してください。

このスケッチでは、ATECC508AをECC608A暗号要素に永続的に構成するように求められます(構成およびロックされていない場合)。 注:このロックプロセスは永続的で元に戻せませんが、暗号要素を使用するために必要です-スケッチセットを使用すると、任意のクラウドプロバイダー(またはサーバー)で5つの秘密鍵スロットを使用でき、秘密鍵はいつでも再生成できます5つの秘密鍵スロット(0〜4)のいずれか 。ボードが工場から出荷されるとき、暗号要素は未構成でロック解除された状態です。

この後、使用するスロットの入力を求められます。このチュートリアルでは、スロット0を使用して、公開鍵に使用される秘密鍵を生成および保存します(必要に応じて、スロット1〜4を使用して追加の秘密鍵を生成および保存できます)。 注: 秘密鍵は暗号要素内で生成されるため、デバイスから離れることはなく、安全に保管され、読み取ることはできません。

<図>

生成された公開鍵の値をコピーします。このスクリーンショットでは、値は次のとおりです。

  ----- BEGIN PUBLIC KEY ----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEFl4 + DXufU84AhDGib7aMwmYwUVAp9coRdC9jOdzRe2kqGWFEb + QP4V4YUK9Zy7P 

後のステップで、デバイスをGCP IoTCoreに追加するときに使用します。

PEM公開鍵を取得したので、GCP IoT Coreコンソールにログインして、そのための新しいデバイスを作成する必要があります。

1)Webブラウザを開き、https://cloud.google.com/にアクセスし、[サインイン]リンクをクリックしてGoogleIDでログインします。

<図>

2)ログインしたら、[コンソールに移動]ボタンをクリックします。次に、メインダッシュボードが表示されます。

<図>

3)[作成]リンクをクリックして、新しいプロジェクトを作成します。

<図>

4)プロジェクト名の入力を求められます。名前には、「MKRGCPチュートリアル」を使用します。 [作成]ボタンをクリックして続行します。

<図>

5)プロジェクトが作成されると、プロジェクトのダッシュボードビューが表示されます。

<図>

6)次に、左上のメニューアイコンをクリックし、[ビッグデータ]見出しまでスクロールして、[IoTコア]リンクをクリックします。

<図>

7)APIを有効にするように求められたら、[APIを有効にする]ボタンをクリックします。

<図>

8)APIを有効にすると、デバイスレジストリを作成するように求められます。 [デバイスレジストリの作成]ボタンをクリックして続行します。

<図>

9)フォームが表示されます。 「レジストリID」を入力し、地域を選択します。下のスクリーンショットでは、レジストリIDに「MKR_GCP_Tutorial」と入力され、リージョンとして「us-central1」が選択されています。フォームに記入したら、[作成]ボタンをクリックします。

<図>

10)レジストリの詳細が表示されます。

<図>

11)新しいデバイスを追加するには、左側のナビゲーションバーにある[デバイス]リンクをクリックします。

<図>

12)次に、ページ上部の見出しにある[+デバイスの作成]をクリックします。

<図>

13)以下のスクリーンショットで、「MyMKRGSM1400」が使用されたデバイス名を入力します。 「公開鍵形式」として「ES256」を選択する必要があります。以前にボードで生成されたPEM公開鍵を「公開鍵値」テキスト領域に貼り付けます。次に、[作成]ボタンをクリックします。

<図>

ボードをGCPIoTコアに接続する

1)ファイル->例-> を使用して、ArduinoIDEでGCPIoT CoreGSMスケッチを開きます Arduinoクラウドプロバイダーの例-> GoogleCloudPlatformIoTCore-> GCP_IoT_Core_GSM。

2)arduino_secrets.hタブで、SIMカードのPIN(必要な場合)、および使用している携帯電話会社のGPRS APN、ユーザー名、パスワードを入力します。

  // GSM settings#define SECRET_PINNUMBER "" #define SECRET_GPRS_APN "GPRS_APN" // GPRSを置き換えるAPN#define SECRET_GPRS_LOGIN "login" // GPRSに置き換えるlogin#define SECRET_GPRS_PASSWORD "password" //に置き換えるGPRSパスワード 

4)次に、プロジェクトID、クラウドリージョン、レジストリID、デバイスIDの値を更新します。

  // Google CloudPlatformに入力-IoTCore info#define SECRET_PROJECT_ID "" #define SECRET_CLOUD_REGION "" #define SECRET_REGISTRY_ID "" #define SECRET_DEVICE_ID ""  

プロジェクトIDの値は、GCPコンソールの上部にあるメニューバーをクリックして確認できます。上記の手順の値は次のとおりです。

  #define SECRET_PROJECT_ID "mkr-gcp-tutorial" #define SECRET_CLOUD_REGION "us-central1" #define SECRET_REGISTRY_ID "MKR_GCP_Tutorial" #define SECRET_DEVICE_ID "MyMKRGSM1400"  

5)スケッチをボードにアップロードし、シリアルモニターを開きます。ボードはセルラーネットワークへの接続を試み、成功した場合はMQTTを使用してGCP IoTCoreへの接続を試みます。

<図>

GCPIoTコアでのボードとのやり取り

ボードがGCPIoT Coreに正常に接続されたので、GCP IoTCoreコンソールを使用してボードとやり取りできます。スケッチは / devices / {deviceId} / state にメッセージを送信します 5秒ごとにトピックを作成し、 / devices / {deviceId} / config の両方でメッセージをリッスンします トピックと / devices / {deviceId} / commands /# トピック。

GCP IoT Coreコンソールのデバイスページで、[SENDCOMMAND]ボタンをクリックします。

<図>

送信するメッセージを入力できるモーダルダイアログが表示されます。下のスクリーンショットでは、「HelloThere!」入力されました。 [コマンドを送信]ボタンをクリックしてメッセージを送信します。

<図>

ボードがメッセージを受信すると、シリアルモニターに印刷されます。

<図>

ボードが送信しているメッセージを表示するには、[構成と状態の履歴]タブをクリックします。

<図>

メッセージはBase64でエンコードされた形式で表示され、値をクリックしてリストに入力し、[テキスト]ラジオボタンを選択します。

<図>

上のスクリーンショットでは、ボードは "hello 464488" を送信していました。 値、464488値は、 millis()の結果です。 ボード上の機能。

結論

このチュートリアルでは、GCP IoTCoreでArduinoMKR GSM1400ボードを安全に使用する方法について説明しました。署名されたJWTは、JWTの署名に使用された秘密鍵を格納するATECC508AまたはATECC608AでMQTTプロトコルを使用してGCP IoTCoreで認証するために使用されました。 MQTTメッセージはボードとの間で送受信されました。

これはほんの始まりに過ぎません。GCPIoTCoreは、GCPが提供する他の多くのサービスで使用できます。

コード

Github
https://github.com/arduino/ArduinoCloudProviderExamples

製造プロセス

  1. ADLINKはGoogleCloudと提携して、IoT対応ソリューションを提供します
  2. DHT11センサーを接続するRaspberryPIベースのIoTプロジェクト
  3. Windows 10 IoTCoreおよびSHT15
  4. Windows 10 IoT Core for Raspberry Pi3モデルB +
  5. Windows 10 IoT Core:音声制御ロボット
  6. PortentaH7デュアルコアデバッグ
  7. Arduino-写真を撮る-Googleドライブにアップロード
  8. IoTを使用した心拍数モニター
  9. Arduinoクラウドセンサータワー
  10. AzureIoTスイミングプール
  11. IoTゲートウェイ:モノをクラウドに接続するためのガイド