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库