#はじめに
wifiが使えるマイコン「ESP8266」と温度湿度センサー「DHT11」を使って「Ambient」という簡単にデータを可視化するサービスで部屋の温度と湿度を可視化していきます
###準備
ESP8266への書き込みはArduinoIDEを使用します。ArduinoIDEでESP8266を使う手順はこちらのサイトがわかりやすいです。「ESP-WROOM-02開発ボードをArduino IDEで開発する方法 」
グラフの生成にAmbientを使用するので、事前にユーザー登録とチャンネルの生成をしておきます
サービスの概要は「Ambientを使ってみる」を参照してください。
また、使用するためにAmbientライブラリをインポートする必要がありますのでこちらも併せて参照してください。「Arduino ESP8266で温度・湿度を測定し、Ambientに送ってグラフ化する」
ESP8266とDHT11の接続にはGPIOピン12番を指定してます
DHT11のライブラリは「DHT sensor library」を使用しています
Linuxでのシリアルポートへのアクセスは「https://www.arduino.cc/en/Guide/Linux」を参照してください
###コード
#include <ESP8266WiFi.h>
#include <Ambient.h>
#include "DHT.h"
// DHT11の設定
#define DHTPIN 12 // 使用するGPIOピン
#define DHTTYPE DHT11 // DHT 11
#define channelId **** // 生成したAmbientチャネルID
#define writeKey "****" // Ambient のライトキーをセット
WiFiClient client;
DHT dht(DHTPIN, DHTTYPE);
Ambient ambient;
//WiFiのIDとPASS
const char *ssid = "****"; //wifiのssid
const char *password = "****"; //wifiのパスワード
void setup() {
Serial.begin(115200);
// WiFiに接続
Serial.println(ssid);
Serial.print("Waiting for Wi-Fi connection");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
ambient.begin(channelId, writeKey, &client); // チャネルIDとライトキーを指定してAmbientの初期化
dht.begin();
}
void loop() {
// put your main code here, to run repeatedly:
// DHT11から読み込み
float t = dht.readTemperature();
float h = dht.readHumidity();
delay(200);
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
//シリアルモニターに温度・湿度の表示
Serial.println("Temperature: " + String(t) + "C Humidity: " + String(h) + "%");
//Ambientに温度と湿度を送る
ambient.set(1, t); //データセット
ambient.set(2, h);
ambient.send(); // Ambientにデータを送信
//データ取得頻度
delay(1000*60); //1000ミリ秒=1 *60秒なので1分
}
データ送信がうまく行っていたら自動的にグラフが作られます
こんな感じ ※この画像のグラフでは30分置きにデータ取得してます
グラフ名は自分で変更してます
###最後に
今回はambientというサービスを使って温度と温度を可視化を解説してみました
グラフを簡単に作成してくれる便利なサービスなのでぜひ使ってみてください
次回はIFTTTを使ってLINEに温度と温度を通知してくれるプログラムを作ります!
####追記
elchikaにも記事を投稿しました。
(https://elchika.com/article/80b5bc1c-6b88-4aff-98ec-5fdfa4bd4695/)