#ESPからAWSIoTにデータをあげる
ポリシーを作りましょう
AWS IoTを始めよう
ここからIoTデバイス(ESP32)の登録を行う
今回は単一のモノを作成します
将来的にESP32を複数台繋げる予定、BME280センサデータを取得する予定ですのでこのようにしました
証明書を作成します
ダウンロード画面が現れるので全てダウンロードしましょう
AWS IoT のルート CAも忘れずに
ここからespに入ります
esp-ifd内examples/protocols/_aws-iot/subscribe_publish
に入っていきます
aws-root-ce.pem
を先ほど落としたAWSIoTのルートCAに書き換えます
先ほど落とした証明書のうち二つを
・private.pem.key
・certificate.pem.crt
にファイル名を変更しmain/certsに配置します
make menuconfig
で各種設定をします
WiFi SSID
WiFiPassword
AWS IoT Client ID(さきほど作ったモノの名前)
AWS IoT Endpoint Hostname
を設定します
最後にシリアル通信の設定を行い
make flashで書き込み完了です
繋がりました
#ESP32でBME280のデータを取得しよう
今回はこいつを使います
BME280使用 温湿度・気圧センサモジュール
http://akizukidenshi.com/catalog/g/gK-09421/
I2CとSPIが使えるらしいですね
I2Cのほうが線が少なくて済むのでここではI2Cを選択します
I2Cの場合はJ1 J2 J3をはんだジャンパしましょう
(ここでずっとこけてた^^;データシートは使う前に読もうね^^;)
Sample code for reading values from a BME280 via ESP-IDF's I2C master driver
https://github.com/yanbe/bme280-esp-idf-i2c
先人様の力を借ります
make flashでエラーが出る場合
cloneがうまくいっておらずcomponents内でこけている場合が多いので
components/bme280/driver内に
https://github.com/BoschSensortec/BME280_driver
これらをいれてあげてください
自分の環境はDevkit-Cなので
SCK-GPIO22
SCL-GPIO21
SDO-VDD
と接続し、main.c内のdefineを
#define SDA_PIN GPIO_NUM_21
#define SCL_PIN GPIO_NUM_22
とし、make flash
make monitorをしてみるとデータが取得できました。
#BME280のデータをAWS IoTにPublishしよう
とりあえずとれました。
https://github.com/notitle420/upload_bme280_to_aws_iot
これじゃどこにもログが残らなくて Lambdaから取得できないことに気づく涙