ESP32-Azure IoT Kit ソフト編

これの続きです。

matsujirushi.hatenablog.jp

それでは、ESP32-Azure IoT Kitを動かしてみたいと思います。

Getting Started的な手順は、いろいろとリンクを漁ってみたところ、次の2箇所にありました。

  1. Easily Connect Espressif Devices to Azure IoT
  2. Samples for Espressif (ESP) Microcontrollers

前者はブログ記事で、ESP32-Azure IoT Kitを試す手順が一通り書いてあります。
一方、後者はgithubにアップされているESP8266/ESP32サンプルコードのREADMEです。

後者のほうがコードとセットになっているので良いと思い、これを見ながらやってみましたが、、、いくつかのケースがまとめて書かれていて都度判断が必要(たとえばESP8266は無視とか)なのと、手順としての完成度がいまひとつ(手順通りにできない)だったので、前者でやり直しました。
ちなみに、前者だけでは手順が成立しないです。前者と後者を両方読んで実行するスキルが必要ですw

手順をざっくりいうと、

  1. Windows Subsystem for Linux(WSL)で、(←開発環境OS)
  2. esp-setup.shを実行して、(←開発ツールのセットアップ)
  3. サンプルコードをgithubからクローンして、
  4. サンプルコードにAzure IoT SDK Cをコピーして、
  5. 設定情報を入力して、(←COMポート、Wi-FiSSIDなど)
  6. ビルド、デバイスへ書き込み

という感じ。

それでは、順にやってみましょう。

Windows Subsystem for Linux (WSL)

いきなりWSL。なんとも感慨深い。

スタートメニューで「wsl」を実行すればOK。

ただし、素のWindows 10だと、WSL環境がインストールされていません。
Windowsの機能を有効化して、
f:id:matsujirushix:20200126213627p:plain
Microsoft StoreのWSL関連ページUbuntuのインストールが必要です。
f:id:matsujirushix:20200126215409p:plain

esp-setup.sh

適当なディレクトリで、githubにあがっているesp-setup.shをダウンロードして、実行します。

$ wget https://github.com/Azure-Samples/ESP-Samples/blob/master/install-script/esp-setup.sh
$ source ./esp-setup.sh

ネットから開発ツールをドカッとダウンロードしてきて、インストールします。それなりに時間がかかります待ちましょう。

あとで分かったのですが、このesp-setup.sh内で開発ツール関連の環境変数をセットアップしていますが、esp-setup.shを実行したウィンドウを閉じると、環境変数が忘れられてしまいます。
もう一度、環境変数をセットアップするためにesp-setup.shを実行すると、、、またドカッとダウンロードが。(涙
というわけなので、ウィンドウを開いたときにesp-setup.sh内の環境変数設定だけ再実行しています。誰も不満無いのかなぁ。

サンプルコードをクローン

適当なディレクトリで、githubESP-Samplesをクローンします。

$ git clone https://github.com/Azure-Samples/ESP-Samples.git

Azure IoT SDK Cをコピー

ESP-Samplesには、サンプルコード(samples配下)とともに、2種類のAzure IoT SDK C(components)、非Plug and Play版とPlug and Play版が含まれています。
使う方のAzure IoT SDK Cを、サンプルコードのcomponentsにコピーしてください。

わたしは、非Plug and Playと思われるazure-esp-starterを試しますので、samples/azure-esp-starterで、下記コマンドを実行しました。

$ cp -r ../../components/esp-azure ./components/

設定情報を入力

専用ツールで、

  • ESP32-Azure IoT Kitが接続されたCOMポート
  • Wi-Fi SSID
  • Wi-Fi パスワード
  • Azure IoT Hubのデバイス接続文字列

を設定します。

samples/azure-esp-starterでmake menuconfigを実行すると、専用の画面が立ち上がりますので、そこで入力すればOKです。

f:id:matsujirushix:20200128211514p:plain

f:id:matsujirushix:20200128211716p:plain

f:id:matsujirushix:20200128212451p:plain

ビルド、デバイスへ書き込み

make flashを実行すると、ビルドしてデバイスへ書き込み(Flash)します。

がっ!
書き込むときにタイムアウトエラーが発生しました。

f:id:matsujirushix:20200128213423p:plain

リセット動作に問題がある!?みたい。

Connectingしている最中に、ESP32-Azure IoT KitのKEY_IO0ボタンを押しながらKEY_ENボタンをチョン押ししたところ、書き込みが開始されて成功しました。

f:id:matsujirushix:20200128213911p:plain

指定したAzure IoT Hubに、温度、湿度、照度が送られてきました!

f:id:matsujirushix:20200128214058p:plain

結果

  • ESP32-Azure IoT Kit動いた。
  • 現状のドキュメントだとムズい。
  • 環境変数の再設定が用意されていない。辛い。
  • make menuconfig便利。どういう仕組みなんだろう?

次は、サンプルコードの中身を覗いてみたいと思います。