M5StickCで外気の温度をスマホで確認
M5StickCで外気と室内の温度·湿度を測定して、スマホでも確認したいと思います。
DHT11を2個使って、室外と室内に設置します。
外への接続はエアコン配管用の穴を使います。穴の隙間を塞いでいるパテを少し開けて配線を通します。
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.
}
上側が室内と室外の温度、下側が湿度です。
Ambient の設定画面で表示する内容を選択します。
外との温度·湿度の差がわかります。