基于esp8266的物联网温湿度监测模块
摘要
基于esp8266(esp01)的物联网(MQTT)温湿度监测模块;实现无线获取温湿度数据;
平台信息
- Arduino IDE
- EMQX
原理简介
dht11温湿度底板
- IO2接到了DHT11_DAT
实现
核心代码
/*
备注:
- esp01s温湿度模块
- MQTT5.0
- server:192.168.100.227:1883
- mqtt://home.qsbye.cn:11883
- emqx账户:emqx,你的密码
硬件:
- io2:dht11_dat
依赖库:
- DHT sensor library
- PubSubClient(MQTT)
*/
#include <ESP8266WiFi.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#include <PubSubClient.h>
/* start 宏定义 */
#define DHTPIN 2
#define DHTTYPE DHT11
/* end 宏定义 */
/* start 全局变量 */
// DHT11
DHT_Unified g_dht(DHTPIN, DHTTYPE);
uint32_t g_delay_ms;
sensor_t g_sensor;
sensors_event_t g_event;
// WIFI
const char* g_ssid = "xiaomi.home";
const char* g_password = "xiaomiwifi";
String g_hostname = "esp01s-dht11";
WiFiClient g_espclient;
// MQTT
const char *g_mqtt_broker = "home.qsbye.cn";
const char *g_topic = "/weekend/s/dht11";
const char *g_mqtt_username = "emqx";
const char *g_mqtt_password = "你的密码";
const int g_mqtt_port = 11883;
PubSubClient g_mqtt_client(g_espclient);
/* end 全局变量 */
void setup(){
// 初始化串口
Serial.begin(115200);
Serial.print("start init");
// 初始化WIFI
WiFi.begin(g_ssid, g_password);
while (WiFi.status() != WL_CONNECTED){
Serial.println("wifi connecting");
delay(1000);
}// end while
Serial.print("wifi init ok");
// 初始化DHT11
g_dht.begin();
g_dht.temperature().getSensor(&g_sensor);
g_dht.humidity().getSensor(&g_sensor);
g_delay_ms = g_sensor.min_delay / 1000;
g_dht.temperature().getEvent(&g_event);
g_dht.humidity().getEvent(&g_event);
// 初始化mqtt
g_mqtt_client.setServer(g_mqtt_broker, g_mqtt_port);
g_hostname += "-";
g_hostname += String(WiFi.macAddress());// 拼接字符串
while (!g_mqtt_client.connected()) {
Serial.println("mqtt connecting");
if (g_mqtt_client.connect(g_hostname.c_str(), g_mqtt_username, g_mqtt_password)){
break;
}
delay(1000);
}// end while
}
void loop(){
String s_message;
s_message += g_hostname;
s_message += ";";
g_dht.temperature().getEvent(&g_event);
s_message += String(g_event.temperature);
s_message += "°C;";
g_dht.humidity().getEvent(&g_event);
s_message += String(g_event.relative_humidity);
s_message += "%;";
g_mqtt_client.publish(g_topic,s_message.c_str());
delay(5000);
}
效果
安装效果 | 获取到的数据 | 网页展示数据 |
---|---|---|
![]() |
![]() |
![]() |