toyoshiの日記

株式会社トクイテンを有名にするための日記です

ESP32からAmbientにデータを送信して可視化

IoT開発スタートブック ── ESP32でクラウドにつなげる電子工作をはじめよう!の内容のとおりESP32とセンサーで温度と湿度を計測してクラウドのデータストレージ&可視化サービスであるAmbientにデータを送信するところまでをやりました。センサーは本と違ってAM2320を使っています。

成果物

f:id:toyoshi:20191013151144p:plain
Ambientで温度と湿度を可視化したもの

本と違うところ

WiFi接続のためのパスワードを平文で書くのが嫌だったのでハッシュ化しました。ハッシュ化にはこちらの記事を参考にさせてもらっています。

qiita.com

コード

ほとんど本の通りですがAM2320を使用しています。

#include <Ambient.h>
#include <WiFi.h>
#include "Adafruit_Sensor.h"
#include "Adafruit_AM2320.h"

const char* ssid = "";
const char* password = "";

WiFiClient client;
Ambient ambient;

unsigned int channelId = 14748;
const char* writeKey = "580604716603c1d1";

Adafruit_AM2320 am2320 = Adafruit_AM2320();

void setup() {
  Serial.begin(115200);
  while (!Serial);

  //WiFiに接続
  WiFi.begin(ssid, password);
  while(WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected");
  Serial.println(WiFi.localIP());

  ambient.begin(channelId, writeKey, &client);
  
  if(!am2320.begin()){
    Serial.println("ERROR: Did not find AM2320");
    while (true) ;
  }
}

void loop() {
  float temp = am2320.readTemperature();
  float humid = am2320.readHumidity();
  Serial.printf("Temp: %.2f, humid: %.2f\r\n", temp, humid);

  ambient.set(1, temp);
  ambient.set(2, humid);
  ambient.send();
  delay(60 * 1000);
}

これでWi-Fi環境があれば電源をつけるだけで勝手にクラウドに自動でデータを記録してくれるデバイスができました。楽しいです。