esp8266-01s温湿度传感器,小爱查询

在这里插入图片描述
在这里插入图片描述
模块用esp8266-01s或者miniD1,需要在程序里面改一下端口就可以了。
程序:
#define BLINKER_WIFI //定义wifi模块
#define BLINKER_MIOT_SENSOR//小爱同学定义为传感器设备
#include <Blinker.h>//包含Blinker头文件
#include <DHT.h>//包含DHT头文件

#define DHTPIN 2 //定义DHT11模块连接管脚4
#define DHTTYPE DHT11 // 使用温度湿度模块的类型为DHT11
#define LED_ONBOARD 0//继电器

char auth[] = “***”; //点灯科技app秘钥key
char ssid[] = “***”; //你的wifi 名称
char pswd[] = “******”; //你的wifi 密码

//新建数据类型组件对象,作用:将数据传输到手机blinker app
BlinkerNumber HUMI(“humi”); //定义湿度数据键名
BlinkerNumber TEMP(“temp”); //定义温度数据键名
BlinkerNumber BETTV(“bettv”); //定义电压数据键名
BlinkerButton Button1(“btn-12”); //定义按钮开关数据键名
DHT dht(DHTPIN, DHTTYPE); //生成DHT对象,参数是引脚和DHT的类型

float humi_read = 0, temp_read = 0;//定义浮点型全局变量 储存传感器读取的温湿度数据
float bettv_read=0;
void heartbeat()
{
HUMI.print(humi_read); //给blinkerapp回传湿度数据
TEMP.print(temp_read); //给blinkerapp回传温度数据
BETTV.print(bettv_read); //给blinkerapp回电压数据
}

void button1_callback(const String & state) {
BLINKER_LOG(“get button state: “, state);
//digitalWrite(LED_ONBOARD, !digitalRead(LED_ONBOARD));
if (state==“on”) {
digitalWrite(LED_ONBOARD, HIGH);
// 反馈开关状态
Button1.text(“打开”);
Button1.color(”#0ddb00”);
Button1.print(“on”);

} else if(state=="off"){
    digitalWrite(LED_ONBOARD, LOW);
    // 反馈开关状态
    Button1.text("关闭");
    Button1.color("#fddb00");
    Button1.print("off");
    
}

}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
// counter++;
// Number1.print(counter);
}
void miotQuery(int32_t queryCode) //小爱同学语音命令反馈 需要修改
{
BLINKER_LOG("MIOT Query codes: ", queryCode);

        int humi_read_int=humi_read;     //去掉湿度浮点数
        BlinkerMIOT.humi(humi_read_int); //小爱反馈湿度属性
        BlinkerMIOT.temp(temp_read);     //小爱反馈温度属性
   /*传感器类型{设备名}室内{温度}/{湿度}/{PM2.5}/{空气质量}/{二氧化碳含量}
    每次小爱同学会有两次MIOT Query codes: 0
    效果是灯闪烁一下。
    pm25返回电压值;
    co2返回灯状态
 */
    digitalWrite(LED_ONBOARD, !digitalRead(LED_ONBOARD));    
      
    BlinkerMIOT.pm25(bettv_read);
    BlinkerMIOT.co2(!digitalRead(LED_ONBOARD));       
    BlinkerMIOT.print();//将以上属性发送给小爱,使得小爱可以接收到温湿度的数据

}

void setup()//将设置代码放在此处,运行一次;
{
pinMode(LED_ONBOARD, OUTPUT);
digitalWrite(LED_ONBOARD, HIGH);
//初始化端口
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();

Blinker.begin(auth, ssid, pswd); // // 初始化blinker 
Blinker.attachHeartbeat(heartbeat);//将传感器获取的数据传给blinker app上
Button1.attach(button1_callback);
dht.begin();//初始化DHT传感器
//在回调函数中反馈该控制状态
BlinkerMIOT.attachQuery(miotQuery);//每次呼出小爱同学,就会调用miotQuery()函数

}
//通过循环不断读取温湿度传感器获取的数据
void loop() //把主代码放在这里,重复运行:
{
Blinker.run();//运行Blinker

float h = dht.readHumidity();//读取DHT11传感器的湿度 并赋值给h
float t = dht.readTemperature();//读取传感器的温度   并赋值给t
if (isnan(h) || isnan(t))//判断是否成功读取到温湿度数据
{
    BLINKER_LOG("Failed to read from DHT sensor!");//读取温湿度失败!
}
else//成功读取到数据
{   
    //打印
    BLINKER_LOG("Humidity: ", h, " %");
    BLINKER_LOG("Temperature: ", t, " *C");
   
    humi_read = h;//将读取到的湿度赋值给全局变量humi_read
    temp_read = t;//将读取到的温度赋值给全局变量temp_read
}
bettv_read=analogRead(A0)*0.00527; //大概电压值
BLINKER_LOG("Bettary: ", bettv_read, " v");
Blinker.delay(10000);//延时函数

}
在这里插入图片描述
编译程序,需要添加DHT11库

猜你喜欢

转载自blog.csdn.net/weixin_45442198/article/details/121329326