
今回は前回構築したESP32 + VScode + Platformioの環境でAWS-IoTを試してみました。元々ESP32を使ってIoT環境を構築したいと前から思っており、今回はそれの走りをやった感じです。
ESP32+AWS-IoTの簡単なサンプル実装は結構やっている方が多くとても参考にさせていただいたのですが、ESP32の機能であるOTAや各種センサとの連携などはあまりやられておらず、いろんな実装をかき集める必要があったので、この記事に簡単にまとめていきたいと思います。
前回書いたESP32 + VScode + Platformioの記事はこちらです。
www.takeshi-1222.com
また今回の実装はこちらのリポジトリにまとめています。
github.com
ESP32,AWS-IoTの簡単な説明
ESP32
ESP32の大きな特徴はWifi, Bluetoothを搭載しているところです。そのうえでArduinoよりも安価に購入でき、ArduinoコードやC++などいくつかの言語の互換性があります。そのため、1つのマイコンでいろいろなことを試したい方には大変おすすめなマイコンです。
リンク
AWS-IoT
AWS-IoTに関しては公式の以下のページを見たほうがわかりやすいですが、簡単に説明すると、今まではESP32, Arduinoなどのエッジデバイス単体で動作させていた (場合によってはESP32複数通信等はやられていた)のに対し、複数台のデバイスをクラウドを通して連携するまさにIoTのプラットフォームのようなサービスだと理解しています。
セットアップ
まずAWSとESP32の環境設定についてですが、
こちらの記事が大変参考になりました!
完全にこちらの記事の通りに設定を進めていくだけで動作まで持っていくことができました。本当に感謝です!!
ということでESP32, AWS-IoTのセットアップは割愛します。
*一つ注意点 (というか私が詰まったところ)としては、THINGNAMEを定義するときのhoge_piyoはOKなのですが、hoge-piyoはNGのようで、THINGを何回か作り直しました。(本当に原因がそれなのかは怪しいですが、-ではなく_を使うのが無難だと思います)
今回のデモではESP32にHC-SR04を取り付け、OTAを用いてプログラム書き込みをできるようにしています。また、取得した距離情報をAWSにesp32/pubトピックとして送信し、AWS側でそれをモニタリング、グラフにプロットする。といったことをしました。 (本当は温湿度センサとかの方が勝手が良かったのですが、手元にあってすぐ使えたHC-SR04を使いました)
ESP32 + HC-SR04の記事、ESP32 + OTAの記事はそれぞれ以下で書いています。
実験
githubにソースコードをおいてあるので、それをそのまま使っていただければ動作確認はできると思います。
こちらを参照してください。
github.com
secrets.hは自分のものを用意して、デフォルトであれば、include/secrets.hにおいてください。
また、HC-SR04を使わない場合はコメントアウト等が必要になります。(boolで使うかどうかの判定文は入れたいと思います)
また、OTAを使う場合はplatformio.iniのupload portを自分のESP32のIPに変更する必要があります。
こちらは有線で書き込み完了後、シリアルモニター等でoutputを確認すると、local_IPを出力するように実装しているので、こちらの数値を参照していただきたいです。
実際の動作動画が以下です。
www.youtube.com
こちらが出力結果をグラフにプロットしたものです。
