編集履歴一覧に戻る
monoのアイコン画像

mono が 2020年05月06日19時34分22秒 に編集

初版

タイトルの変更

+

ESP8266とDHT11とAmbientを使って部屋の温度と湿度をグラフ化

タグの変更

+

ESP8266

+

Arduino

+

Ambient

+

Leafonyプレゼントキャンペーン

本文の変更

+

**はじめに** wifiが使えるマイコン「ESP8266」と温度湿度センサー「DHT11」を使って「Ambient」という簡単にデータを可視化するサービスで部屋の温度と湿度を可視化していきます **準備** ESP8266への書き込みはArduinoIDEを使用します。ArduinoIDEでESP8266を使う手順はこちらのサイトがわかりやすいです。「[ESP-WROOM-02開発ボードをArduino IDEで開発する方法 ](https://trac.switchscience.com/wiki/esp_dev_arduino_ide)」 グラフの生成にAmbientを使用するので、事前にユーザー登録とチャンネルの生成をしておきます サービスの概要は「[Ambientを使ってみる](https://ambidata.io/docs/gettingstarted/)」を参照してください。 また、使用するためにAmbientライブラリをインポートする必要がありますのでこちらも併せて参照してください。「[Arduino ESP8266で温度・湿度を測定し、Ambientに送ってグラフ化する](https://ambidata.io/docs/esp8266/)」 ESP8266とDHT11の接続にはGPIOピン12番を指定してます DHT11のライブラリは「DHT sensor library」を使用しています ```arduino:Ambient #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分置きにデータ取得してます ![キャプションを入力できます](https://camo.elchika.com/c70696e978da1fb57fffb440b058f97924bba752/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f34623535663234372d343264612d346463342d383136312d3465313134383033653664362f63633138346334372d323565662d343039652d623732352d326230333732356134396263/) **最後に** 今回はambientというサービスを使って温度と温度を可視化を解説してみました グラフを簡単に作成してくれる便利なサービスなのでぜひ使ってみてください