IoT を使ってみる(その2:AWS IoT モノの準備編)
前回は、AWS IoTの簡単接続手順(チュートリアル)を実行してIoTデバイス(Raspberry Pi)とAWS IoTの通信を行ってみました。
今回はチュートリアルを使わずに、AWS IoTコンソールを使って最初から「モノ」を登録していきましょう。
前置き
#前回使用したIoTデバイス(Raspberry Pi)に”電圧降下エラー”が頻発するようになってしまい、動作が不安定になってしまいました。
おそらく電源アダプタの劣化か、USBコネクタの不良あたりが原因でしょう。
そのため、今後は別のIoTデバイス”ESP32”または”Arduino”(前回紹介)などの小型マイコンを使っていこうと思います。
ESP32 とは
#IoTデバイスにはいくつかの種類がありますが、前回説明したRaspberry PiやArduinoの他にSTM32、ESP32などのマイコンの系列があります。
Raspberry PiやArduino、ESP32、STM32を物凄く簡単に説明すると
- Raspberry Pi: イギリスの「ラズベリーパイ財団」によって開発されているマイコンで、ARM系CPUを搭載している
- Arduino: イタリアの「Arduinoプロジェクト」によって開発されているマイコンで、ARM系やその他のCPUに対応している
- STM32: STMicroelectronics社が開発したマイコンで、ARM Cortex系CPUを搭載している
- ESP32: Espressif Systems社が開発したマイコンで、安価な割にWi-Fiを内蔵している
のような感じでしょうか。
今回は非常に安価でありながらWi-Fiも使える超お得(?)マイコンである「ESP32」をIoTデバイスとして使ってみたいと思います。
(機種選定は完全に筆者の好みと予算の都合です。本当はRaspberry Pi 4が欲しい…)
今回「モノの登録」に使用するESP32は以下の「LOLIN D32」です。この機種はAmazonで1000円未満で購入できました。
リチウムイオン電池給電での運用も想定しているのか、バッテリー接続端子が付いています(今回は使用しませんが)。
ESP32とPCとの接続は、機器本体にあるマイクロUSB端子とPC側のUSB端子をマイクロUSB変換ケーブルで繋ぎます。
ESP32とPCを接続するときの注意点としては、安価なマイクロUSB変換ケーブルだと充電にしか対応していないケーブルがあるので、ちゃんと通信に対応したケーブルを使いましょう。
筆者はケーブルのチェックを怠ったばかりに、CH340ドライバ(USBポートをCOMポートとして認識させArduino IDEと通信させるためのドライバ)やArduino IDEを再インストールしたりするなど、無駄に時間を使ってしまいました。
今回は「モノの登録」までを解説します。
(次回以降、ESP32側にプログラムを登録し、AWS IoT側と通信させます)
準備「モノの作成、証明書とキーの取得、ポリシーの作成・設定」
#手順は以下の解説の流れに従います。
AWS サーバーレスと ESP32 を使用して AWS IoT Core デバイスを構築する
モノの作成
#ESP32をAWS IoTに登録していきます。
AWS IoTのコンソールから「管理」-「すべてのデバイス」-「モノ」を選択して、「モノを作成」を押します。
「一つのもの」を選択し「次へ」を押します。
「モノのプロパティを指定」で「モノの名前」を指定します。
ここでは”モノの名前”は「ESP32-LOLIN-D32」としました。
他の項目はデフォルトのままにして「次へ」を押します。
「デバイス証明書を設定 - オプション」で「新しい証明書を自動生成(推奨)」を選択し「次へ」を押します。
「証明書にポリシーをアタッチ - オプション」で「モノを作成」を押します。
証明書とキーの取得
#証明書とキーのダウンロードダイアログが表示されるので、ダイアログを操作して
- デバイス証明書
- キーファイル
- ルートCA証明書(CA1だけでOKです)
の3つをダウンロードします。
キーファイルはこのタイミングでしかダウンロードできないので、ダウンロードは必須です。
「完了」ボタンを押します。
モノが作成されました。
「管理」-「モノ」で作成された”モノ”が確認できます。
ポリシーの作成・設定
#次に「ポリシー」を作成します。
「セキュリティ」-「ポリシー」で「ポリシーを作成」を押します。
ポリシー名を「ESP32-LOLIN-D32-Policy」にします。
「ポリシードキュメント」を「JSON」にして、以下のデータを設定します。
データのうち、以下の項目は各自の環境に合わせて変更してください。
- REGION: 自分のアカウントのリージョン名(例:ap-northeast-1)
- ACCOUNT_ID: AWSのアカウントID
- <モノの名前>: この例では「ESP32-LOLIN-D32」
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iot:Connect",
"Resource": "arn:aws:iot:REGION:ACCOUNT_ID:client/<モノの名前>"
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/esp32/sub"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"Resource": "arn:aws:iot:REGION:ACCOUNT_ID:topic/esp32/sub"
},
{
"Effect": "Allow",
"Action": "iot:Publish",
"Resource": "arn:aws:iot:REGION:ACCOUNT_ID:topic/esp32/pub"
}
]
}
個々の”Action”の詳細については以下のサイトの説明を御覧ください。
AWS IoT Core ポリシーアクション
詳しい説明は次回以降に行いますが、この設定によって
- esp32/pub : パブリッシュ
- esp32/sub : サブスクライブ
のエントリーポイントを指定しています。
「作成」ボタンを押します。
ポリシーが作成されました。
モノにポリシーをアタッチ
#次に、モノにポリシーをアタッチします。
「管理」-「すべてのデバイス」-「モノ」で対象のモノ「ESP32-LOLIN-D32」を選択して
「証明書タブ」をクリックし、証明書を選択します。
「ポリシーをアタッチ」を選択します。
先程作成したポリシー「ESP32-LOLIN-D32-Policy」を選択し「ポリシーをアタッチ」を押します。
以下のようにポリシーにアタッチできました。
まとめ
#AWS IoTコンソールから「モノの作成」「証明書の取得」「ポリシーの作成・設定」の操作をそれぞれ行いました。
証明書とキーのファイルは再ダウンロードができないので、証明書とキーを無くしてしまうとAWS IoTへの接続ができなくなってしまいますので、大切に保管しておいてください。
次回以降、IoTデバイス(ESP32)側にプログラムを登録し、簡単なPub/Sub通信を行っていきます。
過去記事インデックス: