516 Views
December 18, 24
スライド概要
https://jawsug-iot.connpass.com/event/323788/
JAWS-UG IoT専門支部「これからの方もDiveDeepも!FreeRTOSでIoT」LT資料
IoT初心者が! CO2センサーから ユーザに通知するまで JAWS-UG IoT専門支部「これからの方もDiveDeepも!FreeRTOSでIoT」 @raiha_tec
aws sts get-caller-identity ● 仕事 ○ ○ ● IoT歴 ○ ○ ○ ○ ○ 𝕏: @raiha_tec ● Arduino :昔ちょっと触った ESP32 :先月初めて電源つけた AWS IoT Core :昔パトライトで使った 場当たり的に解決してる初心者です。 わからないことをわからないまま動かしています 趣味(最近やってないけど) ○ ● セキュリティ SOCやログ分析基盤を作ってます 自作スピーカー、自作キーボード 好きなAWSサービス ECS CDK IoT…?
2021年7月 CO2を測りたい…! ● とりあえず測った ○ ○ ○ ● 在宅ワークで家に引きこもりがち&なんか作りたい CO2センサー(Sensirion SCD40)を購入 Arduino+ブレッドボード +CO2センサーでシリアルモニタに CO2や湿度を表示まで その前後にESP32-DevKitC-32Dも買った(先月まで放置)
時は流れ先月末 ● せっかく余ってるしESP32でCO2センサー作るかと思い立つ ○ ○ ○ ○ CO2センサー高いので使わないともったいない 作るなら電子ペーパーとかで表示させるか ESP32だしWiFi使ってみたい AWS IoT Core使って記録とか通知ができたらよさそう ■ 2021年当時はAWS触ったことなかった
最終的な構成図 WiFi ②WiFi接続 ⑥メトリクス ⑤MQTT publish 電子ペーパー Waveshare 1.54inch NTP ③時刻同期 ④情報表示 ESP32-DevKitC-32D ①センサー情報収集 ステータス表示 AWS IoT Core ⑦アラーム AWS User Notifications CO2/温度/湿度センサー Sensirion SCD40 ステータス表示 LED Amazon CloudWatch ⑧通知 AWS Console Mobile Application
センサーの利用と電子ペーパーへの表示 ● センサー ○ ○ ● 電子ペーパー ○ ○ ● Sensirionが公開している Arduino向けのサンプルスケッチを参考 3年前にも同じスケッチを利用していたため、取得はすぐにできた ■ ESP32をArduinoとして使っていた センサー情報を電子ペーパーに表示までは サンプルの組み合わせ この電子ペーパーは 180秒以上の更新間隔が推奨 ■ センサー取得はし続けて、 AWS IoT Coreに送る? ■ 電子ペーパーの更新タイミングでのみセンサー情報を取得す る? 5分間隔の電子ペーパーの更新に合わせてセンサー情報を 取得するようにした
WiFiへの接続 ● ESP32はWiFi接続ができるので使ってみたい ○ WiFi ● WiFI接続のためのパスワードはどうするんだろう? ■ コードに書く ● 認証情報埋め込みは個人利用なので許容はできる ● SSIDやパスワード変更するのに書き換えがメンドウ ■ 専用アプリを使った共有 ● SmartConfigやBLE経由のプロビジョニング ● 専用アプリをスマホに入れて、認証情報を ESP32に共有す る ■ Wi-Fi Easy Connect(DPP) ● ESP32でQRコードを生成し、 Androidスマホで読み込む Wi-Fi Easy Connect(DPP)よさそう!
Wi-Fi Easy Connect(DPP)への準備 ● 初めてESP-IDFという単語を認識 ○ ○ ○ ESP-IDFを使う必要がありそう そもそもESP32でArduinoを使える ■ Espressif IoT Development Framework と聞いたので買った ■ ESP32をArduino以外として使うことに 開発環境の整備 ■ Arduino IDEからVSCode PlatformIOへ ■ 導入自体はプラグインインストールだけなのですぐに終わった 多少つまるところもありつつ、センサーと電子ペーパーも動作するようになった https://docs.espressif.com/projects/esp-idf/en/stable/esp32/index.html
Wi-Fi Easy Connect(DPP)への一歩 ● EspressifのDPPのサンプルを動かしてみる ○ 電源 ON 全然動かん… ■ DPP Auth Failed on dpp-enrollee example (IDFGH-9228) ● https://github.com/espressif/esp-idf/issues/10615 ● 成功率が50%程度の人もいた ■ 何回もやり直していると確かに成功した … ● 妥協してたまたま成功した認証情報を NVSに保存することに WiFi DPP 試行 RTCメモリ 保存 WiFI 接続 センサー 取得 NVS 保存 ● ● やりたかったこと deep sleep復帰時には RTCメモリに保存した認証情報を利用 SSID/パスワードが変わっても電源をオフにすれば WiFi DPPから試行 電子ペーパー 表示 5分後 AWS IoT Core 送信 deep sleep
ESP32からAWS まで ● ● ● ESP32 -> AWS IoT Core ○ ○ ○ 1. モノの登録(パトライトで経験済み) 2. 各証明書をESP32に導入 3. 証明書を使ってMQTT ClientでAWS IoT Coreへ接続 ○ "SELECT co2, temperature, humidity FROM 'esp32/sensorData'" ■ 唐突のSQLに困惑した思い出 AWS IoT Core -> Amazon CloudWatch Metrics AWS User Notificationsで通知 ○ ● ● ● ● ● このあたりから ChatGPT比率多め ESP-IDFやFreeRTOS、タスクなんかのワードも ChatGPTに教えてもらった AWSモバイルコンソールを経由するとスマホへの通知が簡単で気に入っている IoT CoreのTopicRuleからCloudWatchまでAWS CDKで作成 s s ⑥メトリクス ⑤MQTT publish ⑦アラーム AWS User Notifications AWS IoT Core Amazon CloudWatch
物として完成させる ● 完成させる=今後いじりたくない ○ ○ ● ある程度の完成度を目指す ■ wifiのdppは迷い中 LT発表駆動 タイムライン ○ ○ ○ ○ ○ 11/23 ESP32に電源入れる 12/5 ブレッドボード上で動作確認 12/6 IoT支部LT応募 & 基板発注 12/14 基板が届く 12/15 アクリル加工 & 完成
参考 ● ● ● ● ● ● ● Arduino Uno Rev3 ○ https://akizukidenshi.com/catalog/g/g107385/ ESP32-DevKitC-32D ○ https://akizukidenshi.com/catalog/g/g113628/ 電子ペーパー ○ https://www.waveshare.com/wiki/1.54inch_e-Paper_Module_(B)_Manual#Introduction センサー ○ https://ssci.to/7169 NICT ○ https://jjy.nict.go.jp/ LED ○ https://akizukidenshi.com/catalog/g/g112605/ Espressif dpp_enrollee ○ https://github.com/espressif/esp-idf/blob/master/examples/wifi/wifi_easy_connect/dpp-enrollee/main/dpp_enrollee_ main.c
IoTはいいぞ! ご清聴ありがとうございました! 12/17 目黒の計測データです↑