環境モニタを作ろう with ESP32 DEV Module 〜 No3. wifiに接続して、https通信を試してみよう

ここまででできたこと

  1. 環境モニタを作ろう with ESP32 DEV Module 〜 No1. まずは動かして見よう
  2. 環境モニタを作ろう with ESP32 DEV Module 〜 No2. 温度湿度センサーをつけよう

さて、前回で温度と湿度のデータを取ることができましたね。

あれ、このままではシリアルモニタでみるだけですよね。AWS-IoT

ここから、Wifi 、もしくはSoracomなどを使って通信できるようにして、クラウドにデータを保存して、スマホやタブレットやPCでその状況をみれたりすると良いですよね。

さて、一つ一つやっていきましょう。

Wifiに接続してみる

う、どうやって?

Arduinoには、スケッチ例というサンプルコードがたくさんあるので、まずはそのスケッチ例を見て見ましょう。

Arduinoスケッチ例

Wifiのサンプルだけでもたくさんありますね。

この中で、WifiClientBasicの例を見て見ましょう。

WiFi/examples/WiFiClientBasic/WiFiClientBasic.ino

setupのメソッド部分だけ動かすだけで、Wifiに接続できます。

ssidとpasswordだけ、自分の環境に合わせるだけです。

シリアルモニターを開いて、Wifiに接続したメッセージとIPアドレスが取得できたか確認しましょう。

httpに接続してみる

さて、Wifiに繋がったので、次はインターネットに接続して、どこかのサイトを取得できるか試してみましょう。

今回もスケッチ例を参考にします。

HTTPClient/examples/BasicHttpClient/BasicHttpClient.ino

setup()の部分は、Wifiに接続している部分なので、説明は省略します。

loop()の部分でhttpに接続しています。

HTTPClientのライブラリを使うことで、サイトをgetすることができます。
上記の「http://example.com/index.html」を実際にあるWebサイトのURLに書き換えて実行してみましょう

httpsに接続してみる

さて、上記のコードを見てみると、httpsのサイトへのアクセスも、ルート証明書を渡すことでできるようです。

簡単にできるかなー、と思ったのですが、この証明書の取得で引っかかりました。

こちらのサイトでChromeからの証明書の取得方法が書かれているのですが、

私のChromeでは、すでに証明書の取得がDeveloperToolでできませんでした・・。

バージョン: 62.0.3202.94(Official Build) (64 ビット)

なので、今回はFireFoxから以下のようにして取得しました。

httpsのサイトを表示し、アドレスバーの鍵をクリックして、MoreInformationでさらに情報を表示させ、View Certificateで証明書の情報を表示させます。

Certificate FieldsでSubject’s Private Keyを選択してExportします。

これで証明書が取得できます。

ルート証明書取得

取得できた証明書は、変数にセットして

証明書を引数につけて呼ぶだけです。

ESP32 DEV Moduleはhttpsも使えるんですね。
暗号化には馬力が足りないデバイスも多いのですが、これなら、ここからAWS-IoTとかにつながるかも?

ということで、次回はAWS-IoTにつなぎにいきましょう

参考サイト

Arduino – ESP32 WiFiClientSecure ライブラリで、安定して https ( SSL )記事をGETする方法 | mgo-tec電子工作