温湿度数据的采集,远程开关遥控
- #define BLINKER_PRINT Serial
- #define BLINKER_WIFI
- #define BLINKER_ALIGENIE_SENSOR//顺序错了都不行
- #include <Blinker.h>
- #include <DHT.h>
- #define LED1 D3//滑块亮度
- #define LED2 D5//开关
- #define DHTPIN D4//温湿度传感器串角
- #define DHTTYPE DHT11
- DHT dht(DHTPIN, DHTTYPE);//识别温湿度的类型和脚位
- char auth[] = "fffc80f0c814";//设备密钥,由平台赋予,与那块esp8266开发板没关系
- char ssid[] = "CMCC-PbWq"; //wifi名称
- char pswd[] = "9bf07201"; //wifi密码
- int i=0,j=0,counter=0;
- float humi_read = 0, temp_read = 0, sin_read = 0, bb = 0.0;
-
- // 新建组件对象
- BlinkerButton Button1("btn-zuz");//按钮标识
- BlinkerNumber HUMI("humi");//湿度组件名
- BlinkerNumber TEMP("temp");//温度组件名
- BlinkerNumber SIN("sin");//自编函数组件名
- BlinkerText Text1("inp-z6e"); //文本组件名
- BlinkerSlider Slider1("SliderKey1");//用于控制滑块的语句
- void setup()//设定函数
- { Serial.begin(115200);//串口频率设定
- BLINKER_DEBUG.stream(Serial);//指定DEBUG信息输出的串口号
- BLINKER_DEBUG.debugAll();//
- pinMode(LED1, OUTPUT);//将脚位D3设置成输出
- pinMode(LED2, OUTPUT);//将脚位D4设置成输出
- pinMode(LED_BUILTIN, OUTPUT);//将自带的LED灯脚位设置成输出
- digitalWrite(LED_BUILTIN, HIGH);//使自带的LED熄灭
- dht.begin();//初始温湿度传感器
- Blinker.begin(auth, ssid, pswd);// 初始化blinker
- Blinker.attachHeartbeat(heartbeat);//在Blinker中注册一个心跳包,用于传输数据
- Blinker.attachDataStorage(dataStorage);//在Blinker中注册数据储存包,将相应数据储存到相应的组件名下
- Button1.attach(button1_callback);//注册按钮回调函数,当app中组件触发并发送到设备端时将触发该组件注册的回调函数
- Slider1.attach(slider1_callback);//注册滑块回调函数
- Blinker.attachData(dataRead);
- }
- void loop()
- { Blinker.run();//每次运行都会将设备收到的数据进行一次解析。在使用WiFi接入时,该语句也负责保持网络连接
- //Blinker.run()函数中包含了heartbeat()和dataStorage(),且首先运行dataStorage()
- //也包括button1_callback()
- for(j=0;j<=i;j++){analogWrite(LED1,j);}//控制LED灯闪烁频率
- //analogWrite(LED1,j);
- float h = dht.readHumidity(),t = dht.readTemperature(),sine = sin(bb);
- bb=bb+0.1;
-
- if (isnan(h) || isnan(t)||isnan(sine))//isnan()函数,如果括号里面的值不是一个正常值则执行if语句
- { BLINKER_LOG("Failed to read from DHT sensor!");
- }
- else
- { BLINKER_LOG("Humidity: ", h, " %");//从串口输出
- BLINKER_LOG("Temperature: ", t, " *C");
- BLINKER_LOG("sin: ", sine, " -");
- humi_read = h;//将得到传感器的数据传给组件名下的变量名
- temp_read = t;
- sin_read = sine;
- }
- Blinker.delay(2000);
- }
- void button1_callback(const String & state) {// 按下按键即会执行该函数
- BLINKER_LOG("get button state: ", state);//在APP中的Monitor控件打印信息
- digitalWrite(LED2, !digitalRead(LED2)); //改变灯的状态
- Blinker.vibrate();//手机发生震动
- }
- void slider1_callback(int32_t value)//控制灯的明暗程度
- { BLINKER_LOG("get slider value: ", value);//在APP中的Monitor控件打印信息
- i=value;
- }
- void heartbeat()//将设备端采集的温湿度数据,通过心跳包同步数据的方式显示到APP上
- { HUMI.print(humi_read);//将传感器采集的的数据传到APP的特定组件上
- TEMP.print(temp_read);
- SIN.print(sin_read);
- }
- void dataStorage()//定义不同组件下的上传数据的变量名
- { Blinker.dataStorage("temp", temp_read);
- Blinker.dataStorage("humi", humi_read);
- Blinker.dataStorage("sin", sin_read);
- //Blinker.dataStorage("inp-z6e", inp-z6e_read);
- }
- void dataRead(const String & data)
- { BLINKER_LOG("Blinker readString: ", data);
- j=atoi("data");
- Blinker.vibrate();
- }
复制代码
|