3人と1匹の日常とモノづくりブログ

興味のあるものをとりあえず動かしてみた、実装してみたシリーズをガンガン上げていきたいと思います。あくまでも自身の備忘録としてですが、誰かの助けになったらうれしいです。

【Wifi , Bluetooth搭載マイコン】ESP32 + AWS-IoTを試してみた。

f:id:bamboomush:20220211235303p:plain


 今回は前回構築したESP32 + VScode + Platformioの環境でAWS-IoTを試してみました。元々ESP32を使ってIoT環境を構築したいと前から思っており、今回はそれの走りをやった感じです。

ESP32+AWS-IoTの簡単なサンプル実装は結構やっている方が多くとても参考にさせていただいたのですが、ESP32の機能であるOTAや各種センサとの連携などはあまりやられておらず、いろんな実装をかき集める必要があったので、この記事に簡単にまとめていきたいと思います。

 

前回書いたESP32 + VScode + Platformioの記事はこちらです。

www.takeshi-1222.com

また今回の実装はこちらのリポジトリにまとめています。

github.com

 

◆ESP32関係の実装記事◆ 
  • DCモータ実装

www.takeshi-1222.com

  • サーボモータ実装

www.takeshi-1222.com

  • 無線書き込み実装

www.takeshi-1222.com

  • Webサーバー実装

www.takeshi-1222.com

  • OLED実装

www.takeshi-1222.com

  • 超音波センサ実装

www.takeshi-1222.com

  • LCDディスプレイ実装

www.takeshi-1222.com

  • 温湿度センサ (安価)

www.takeshi-1222.com

  • 温湿度センサ (ハイスペック)

www.takeshi-1222.com

  • 温湿度センサ (複数)

www.takeshi-1222.com

  • CO2センサ

www.takeshi-1222.com

  • ほこりセンサ

www.takeshi-1222.com

  • 心拍センサ

www.takeshi-1222.com

  • 皮膚電位センサ

www.takeshi-1222.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

 

こちらが出力結果をグラフにプロットしたものです。

https://user-images.githubusercontent.com/57553950/153590003-f6df488e-6352-485d-93f4-ed919d08df39.png