M5StickCで外気の温度をスマホで確認

M5StickCで外気と室内の温度·湿度を測定して、スマホでも確認したいと思います。

DHT11を2個使って、室外と室内に設置します。

f:id:higenonagaineko:20190814074910j:plain

M5StickC 室内 外気

外への接続はエアコン配管用の穴を使います。穴の隙間を塞いでいるパテを少し開けて配線を通します。

f:id:higenonagaineko:20190814075028j:plain

DHT11 エアコンの配管

DHT11との接続例(ライブラリの追加等)は次を参照してください。

 

スマホで確認するため、Ambient のサービスを使用します。今回参考にしたものは次のサイトです。ユーザー登録と使い方は親切に説明されています。

M5StickCで小型環境センサ端末を作る – Ambient

 

サンプルを変更したものが次のプログラムです。

#include <M5StickC.h>
#include "DHT.h"
#include "Ambient.h"

#define DHTPIN1 26
#define DHTPIN2 0
#define DHTTYPE DHT11

DHT dht1(DHTPIN1, DHTTYPE);
DHT dht2(DHTPIN2, DHTTYPE);
WiFiClient client;
Ambient ambient;

const char* ssid = "***************"; // ルータのssid
const char* password = "***************"; // ルータのパスワード

unsigned int channelId = ***************; // AmbientのチャネルID
const char* writeKey = "***************"; // ライトキー

void setup() {
  M5.begin();
  M5.Axp.ScreenBreath(8);
  M5.Lcd.setRotation(1);
  M5.Lcd.fillScreen(BLACK);
  
  dht1.begin();
  dht2.begin();
  
  WiFi.begin(ssid, password);  //  Wi-Fi APに接続
  while (WiFi.status() != WL_CONNECTED) {  //  Wi-Fi AP接続待ち
    delay(500);
    Serial.print(".");
  }
  Serial.print("WiFi connected\r\nIP address: ");
  Serial.println(WiFi.localIP());
  
  ambient.begin(channelId, writeKey, &client); // Ambientの初期化
}

void loop() {
  double vbat = M5.Axp.GetVbatData() * 1.1 / 1000;  // バッテリー電圧を取得
  float hum1 = dht1.readHumidity();
  float tmp1 = dht1.readTemperature();
  float hum2 = dht2.readHumidity();
  float tmp2 = dht2.readTemperature();
  
  M5.Lcd.setTextSize(1);
  M5.Lcd.setCursor(45, 0, 2);
  M5.Lcd.println("IN / OUT");
  M5.Lcd.setTextSize(2);
  M5.Lcd.setCursor(0, 17);
  M5.Lcd.printf("T%3.1f %3.1f \r\n", tmp1, tmp2);
  M5.Lcd.printf("H%3.1f %3.1f", hum1, hum2);

  ambient.set(1, vbat);
  ambient.set(2, tmp1);
  ambient.set(3, hum1);
  ambient.set(4, tmp2);
  ambient.set(5, hum2);
  ambient.send();
  
  delay(180000);  // 5分待機  5*60*1000ms.
}

f:id:higenonagaineko:20190814081022j:plain

室内 室外

上側が室内と室外の温度、下側が湿度です。

 

Ambient の設定画面で表示する内容を選択します。

チャネルとチャートのカスタマイズ – Ambient

f:id:higenonagaineko:20190814090039j:plain

温度 湿度

外との温度·湿度の差がわかります。