ESP8266+DHT11+Blinker温湿度显示

本文介绍了如何使用Arduino和点灯科技APP来显示DHT11传感器测量的温湿度数据,涉及BlinkerAPP数据控件设置和数据存储方法。
摘要由CSDN通过智能技术生成

使用Arduino和点灯科技APP显示温湿度数据,密钥为注册点灯科技账号后生成。

Blinker APP数据控件设置,修改对应的组件键名和显示文本,组件键名要和程序中设置的一致,否则无法正常接收数据。本程序中设置的为温度num,湿度num2.

实际效果:

#define BLINKER_WIFI
 
#include <Blinker.h>
 
char auth[] = "3a3ede408ab1";
char ssid[] = "zps";
char pswd[] = "152356zps";
 

//BlinkerNumber HUMI("humi"); //对应blinkerapp上的数据名
//BlinkerNumber TEMP("temp"); //在blinkerapp下有温度数据名为
 
// Download Adafruit DHT-sensor-library library here:
// https://github.com/adafruit/DHT-sensor-library
#include <DHT.h>
 
#define DHTPIN 2
 
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
 
DHT dht(DHTPIN, DHTTYPE);
 
uint32_t read_time = 0;
 
float humi_read, temp_read;

BlinkerNumber Number1("num");
BlinkerNumber Number2("num2");
void dataStorage(){
   Blinker.dataStorage("num", temp_read);
   Blinker.dataStorage("num2", humi_read);
}
/*void dataStorage2(){
   Blinker.dataStorage2("num2", humi_read);
}*/
/*void heartbeat()
{
    //HUMI.print(humi_read);        //给blinkerapp湿度数据
    //TEMP.print(temp_read);        //给blinkerapp温度数据
    Number1.print(temp_read);
    Number2.print(humi_read);
}*/
 
void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
 
    //pinMode(LED_BUILTIN, OUTPUT);
    //digitalWrite(LED_BUILTIN, LOW);
 
    Blinker.begin(auth, ssid, pswd);
    //Blinker.attachHeartbeat(heartbeat);//将传感器回调函数加载,回传数据
    
    Blinker.attachDataStorage(dataStorage);
    //Blinker.attachDataStorage(dataStorage2);


    dht.begin();
}
 
void loop()
{
    Blinker.run();

    
 
    if (read_time == 0 || (millis() - read_time) >= 2000)
    /*这是一个条件语句,它的作用是判断是否满足两个条件中的任意一个:
    1.read_time等于0。
    2.自上次读取以来经过的时间大于等于2000毫秒。
    如果满足其中一个条件,就会执行条件语句块内的代码。在给定的代码中,
    这段条件语句用于检查是否需要读取DHT11传感器的数据。
    当read_time为0或者距离上次读取的时间超过2秒时,就会执行读取数据的操作。
    
    millis()是一个Arduino函数,用于获取自上电以来的毫秒数。它返回一个无符号长整型数,
    代表了从上电开始到当前时刻的毫秒数。在给定代码中,
    (millis() - read_time) >= 2000这个条件判断语句的作用是检查自上次读取数据以来是否已经过了2秒钟。
    如果是,则会执行读取DHT11传感器数据的操作。*/
    {
        read_time = millis();
 
        float h = dht.readHumidity();//读取DHT11传感器的湿度 并赋值给h
        float t = dht.readTemperature();        
 
        if (isnan(h) || isnan(t)) {
            BLINKER_LOG("Failed to read from DHT sensor!");
            return;
        }
        else
        {
          BLINKER_LOG("Humidity: ", h, " %");
          BLINKER_LOG("Temperature: ", t, " *C");
          humi_read = h;//将读取到的湿度赋值给全局变量humi_read
          temp_read = t;//将读取到的温度赋值给全局变量temp_read
        }
    }
    //Number1.print(temp_read);
    Number1.print(temp_read);
    Number2.print(humi_read);
    Blinker.delay(1000);
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值