ESP8266+DHT11温湿度传感器+小爱同学语音智能LED灯(状态可视化)

ESP8266+DHT11温湿度传感器+LED灯(状态可视化)

接线(继电器与DHT11模块的GND与VCC分别对应接好ESP8266即可,下表只列出信号线接法):

模块ESP8266
继电器IND4
DHT11 DATD7

ESP8266编译环境搭建、继电器如何使用及如何接电灯线不再细说,点击下面链接详看即可
ESP8266接入小爱同学—智能LED台灯或风扇(利用继电器)

程序(有冗余但运行无误,可自行删减无用部分或自行增添功能):

#define BLINKER_WIFI
#include <DHT.h>
#include <Blinker.h>


char auth[] = "******";//blinker app注册设备时的密钥
char ssid[] = "******";//wifi名称
char pswd[] = "******";//WiFi密码
//若使用WiFiManager库则更好,具体使用方法以后分享一下,或者去太极创客官网查看

#define DHTPIN D7  //定义DHT11信号引脚
#define DHTTYPE DHT11   // dht系列传感器类型为DHT 11
// 新建组件对象
BlinkerNumber HUMI("humi");//湿度显示
BlinkerNumber TEMP("temp");//温度显示
BlinkerButton Button1("btn-abd");
BlinkerNumber Number1("num-abd");
BlinkerButton Button2("btn-abc");
int counter = 0;

// 按下按键即会执行该函数
void button2_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    if (state=="on") {
        digitalWrite(LED_BUILTIN, LOW);
        // 反馈开关状态
        Button2.print("on");
    } else if(state=="off"){
        digitalWrite(LED_BUILTIN, HIGH);
        // 反馈开关状态
        Button2.print("off");
    }
}
// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}

DHT dht(DHTPIN, DHTTYPE);

float humi_read = 0, temp_read = 0;

void heartbeat()//心跳包
{
    HUMI.print(humi_read);
    TEMP.print(temp_read);
}

void dataStorage()//数据云存储
{
    Blinker.dataStorage("temp", temp_read);
    Blinker.dataStorage("humi", humi_read);
}

void dataGet()//拉取存储数据
{

BLINKER_LOG("Blinker.dataGet(): ", temp_read);
BLINKER_LOG("Blinker.dataGet(): ", humi_read);
}

void setup()
{
    // 初始化串口
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    BLINKER_DEBUG.debugAll();


    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button2.attach(button2_callback);
    Blinker.attachHeartbeat(heartbeat);
    Blinker.attachDataStorage(dataStorage);
    Blinker.dataGet();
    dht.begin();
}

void loop() {
    Blinker.run();

     float h = dht.readHumidity();
    float t = dht.readTemperature();

    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;
        temp_read = t;
    }

    Blinker.delay(2000);
}

blinker app端:
在这里插入图片描述
在这里插入图片描述
由于采用开关按键,所以对比上次控制灯的简单程序,能显示灯的开关状态无疑是一大优点。

当然也可接入米家利用小爱同学控制,具体操作方法见:ESP8266接入小爱同学—智能LED台灯或风扇(利用继电器)

  • 8
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值