---
title: IoT初心者がCO2センサーから ユーザに通知するまで
tags: 
author: [raiha](https://convert.docswell.com/user/raiha)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/YJ6Q2RM6JV.jpg?width=480
description: https://jawsug-iot.connpass.com/event/323788/ JAWS-UG IoT専門支部「これからの方もDiveDeepも！FreeRTOSでIoT」LT資料
published: December 18, 24
canonical: https://convert.docswell.com/s/raiha/5QR21Y-From_IoT_Beginner_to_User_Notification_via_CO2_Sensor
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/YJ6Q2RM6JV.jpg)

IoT初心者が！
CO2センサーから
ユーザに通知するまで
JAWS-UG IoT専門支部「これからの方もDiveDeepも！FreeRTOSでIoT」
@raiha_tec


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GJ5R28Z574.jpg)

aws sts get-caller-identity
●
仕事
○
○
●
IoT歴
○
○
○
○
○
𝕏: @raiha_tec
●
Arduino
：昔ちょっと触った
ESP32
：先月初めて電源つけた
AWS IoT Core
：昔パトライトで使った
場当たり的に解決してる初心者です。
わからないことをわからないまま動かしています
趣味（最近やってないけど）
○
●
セキュリティ
SOCやログ分析基盤を作ってます
自作スピーカー、自作キーボード
好きなAWSサービス
ECS
CDK
IoT…?


# Page. 3

![Page Image](https://bcdn.docswell.com/page/9E2D4KRGER.jpg)

2021年7月 CO2を測りたい…！
●
とりあえず測った
○
○
○
●
在宅ワークで家に引きこもりがち＆なんか作りたい
CO2センサー(Sensirion SCD40)を購入
Arduino+ブレッドボード +CO2センサーでシリアルモニタに CO2や湿度を表示まで
その前後にESP32-DevKitC-32Dも買った（先月まで放置）


# Page. 4

![Page Image](https://bcdn.docswell.com/page/D7Y2MNDG7M.jpg)

時は流れ先月末
●
せっかく余ってるしESP32でCO2センサー作るかと思い立つ
○
○
○
○
CO2センサー高いので使わないともったいない
作るなら電子ペーパーとかで表示させるか
ESP32だしWiFi使ってみたい
AWS IoT Core使って記録とか通知ができたらよさそう
■ 2021年当時はAWS触ったことなかった


# Page. 5

![Page Image](https://bcdn.docswell.com/page/VEN8WX68J8.jpg)

最終的な構成図
WiFi
②WiFi接続
⑥メトリクス
⑤MQTT publish
電子ペーパー
Waveshare 1.54inch
NTP
③時刻同期
④情報表示
ESP32-DevKitC-32D
①センサー情報収集
ステータス表示
AWS IoT Core
⑦アラーム
AWS User
Notiﬁcations
CO2/温度/湿度センサー
Sensirion SCD40
ステータス表示
LED
Amazon
CloudWatch
⑧通知
AWS Console
Mobile
Application


# Page. 6

![Page Image](https://bcdn.docswell.com/page/Y79KX8LX73.jpg)

センサーの利用と電子ペーパーへの表示
●
センサー
○
○
●
電子ペーパー
○
○
●
Sensirionが公開している Arduino向けのサンプルスケッチを参考
3年前にも同じスケッチを利用していたため、取得はすぐにできた
■ ESP32をArduinoとして使っていた
センサー情報を電子ペーパーに表示までは サンプルの組み合わせ
この電子ペーパーは 180秒以上の更新間隔が推奨
■ センサー取得はし続けて、 AWS IoT Coreに送る？
■ 電子ペーパーの更新タイミングでのみセンサー情報を取得す
る？
5分間隔の電子ペーパーの更新に合わせてセンサー情報を
取得するようにした


# Page. 7

![Page Image](https://bcdn.docswell.com/page/G78R28X9ED.jpg)

WiFiへの接続
●
ESP32はWiFi接続ができるので使ってみたい
○
WiFi
●
WiFI接続のためのパスワードはどうするんだろう？
■ コードに書く
● 認証情報埋め込みは個人利用なので許容はできる
● SSIDやパスワード変更するのに書き換えがメンドウ
■ 専用アプリを使った共有
● SmartConﬁgやBLE経由のプロビジョニング
● 専用アプリをスマホに入れて、認証情報を ESP32に共有す
る
■ Wi-Fi Easy Connect(DPP)
● ESP32でQRコードを生成し、 Androidスマホで読み込む
Wi-Fi Easy Connect(DPP)よさそう！


# Page. 8

![Page Image](https://bcdn.docswell.com/page/L7LK2R8MER.jpg)

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


# Page. 9

![Page Image](https://bcdn.docswell.com/page/4EM28R66EW.jpg)

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


# Page. 10

![Page Image](https://bcdn.docswell.com/page/PERM5RPN79.jpg)

ESP32からAWS まで
●
●
●
ESP32 -&gt; AWS IoT Core
○
○
○
1. モノの登録(パトライトで経験済み)
2. 各証明書をESP32に導入
3. 証明書を使ってMQTT ClientでAWS IoT Coreへ接続
○
&quot;SELECT co2, temperature, humidity FROM &#039;esp32/sensorData&#039;&quot;
■ 唐突のSQLに困惑した思い出
AWS IoT Core -&gt; Amazon CloudWatch Metrics
AWS User Notiﬁcationsで通知
○
●
●
●
●
●
このあたりから ChatGPT比率多め
ESP-IDFやFreeRTOS、タスクなんかのワードも
ChatGPTに教えてもらった
AWSモバイルコンソールを経由するとスマホへの通知が簡単で気に入っている
IoT CoreのTopicRuleからCloudWatchまでAWS CDKで作成
ｓ
ｓ
⑥メトリクス
⑤MQTT publish
⑦アラーム
AWS User
Notiﬁcations
AWS IoT Core
Amazon
CloudWatch


# Page. 11

![Page Image](https://bcdn.docswell.com/page/P7XVKR38JX.jpg)

物として完成させる
●
完成させる＝今後いじりたくない
○
○
●
ある程度の完成度を目指す
■ wiﬁのdppは迷い中
LT発表駆動
タイムライン
○
○
○
○
○
11/23 ESP32に電源入れる
12/5 ブレッドボード上で動作確認
12/6 IoT支部LT応募 &amp; 基板発注
12/14 基板が届く
12/15 アクリル加工 &amp; 完成


# Page. 12

![Page Image](https://bcdn.docswell.com/page/37KQ5RYL7D.jpg)

参考
●
●
●
●
●
●
●
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/wiﬁ/wiﬁ_easy_connect/dpp-enrollee/main/dpp_enrollee_
main.c


# Page. 13

![Page Image](https://bcdn.docswell.com/page/LJ3PK89675.jpg)

IoTはいいぞ！
ご清聴ありがとうございました！
12/17 目黒の計測データです↑


