├── 人体红外探测 ├── 温湿度nodemcu设备一键配网 └── 自制网络温湿度计(带温湿度曲线) /人体红外探测: -------------------------------------------------------------------------------- 1 | //没有加延时函数,需要的话自行修改 2 | 3 | #define BLINKER_WIFI //定义wifi模块 4 | #include 5 | 6 | char auth[] = "**********"; //你的设备key 7 | char ssid[] = "**********"; //你的wifi 名称 8 | char pswd[] = "**********"; //你的wifi 密码 9 | 10 | //新建数据类型组件对象, 11 | //作用:将文本数据传输到手机blinker app 12 | BlinkerText BODY("body"); //定义湿度数据键名 13 | int bodySensorData=0; 14 | //将人体红外传感器的数据回传给Blinker_APP 15 | void heartbeat() 16 | { 17 | if(bodySensorData==0) 18 | { 19 | BODY.print("无人进入"); 20 | }else{ 21 | BODY.print("有人进入"); 22 | } 23 | } 24 | void setup() { 25 | //初始化串口 26 | Serial.begin(115200); 27 | BLINKER_DEBUG.stream(Serial); 28 | BLINKER_DEBUG.debugAll(); 29 | Blinker.begin(auth, ssid, pswd); // 初始化blinker 30 | Blinker.attachHeartbeat(heartbeat);//将传感器获取的数据传给blinker app上 31 | } 32 | void loop() 33 | { 34 | Blinker.run();//运行Blinker 35 | //定义发量i 36 | int BodySensor_value=analogRead(A0);//读取模拟5口电压值 37 | Serial.print("模拟电压值:"); 38 | Serial.print(BodySensor_value); 39 | Serial.print("\n"); 40 | if(BodySensor_value>512) 41 | { 42 | bodySensorData=1; 43 | Serial.print("有人进入\n"); 44 | }else{ 45 | bodySensorData=0; 46 | Serial.print("无人进入\n"); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /温湿度nodemcu设备一键配网: -------------------------------------------------------------------------------- 1 | #define BLINKER_WIFI //定义wifi模块 2 | 3 | #include //包含Blinker头文件 4 | #include //包含DHT头文件 5 | 6 | #define DHTPIN 13 //定义DHT11模块连接管脚D7引脚 7 | 8 | #define DHTTYPE DHT11 // 使用温度湿度模块的类型为DHT11 9 | 10 | int count=0; 11 | bool WIFI_Status = true; 12 | 13 | char auth[] = "***********"; //你的设备key 14 | 15 | //新建数据类型组件对象,作用:将数据传输到手机blinker app 16 | BlinkerNumber HUMI("humi"); //定义湿度数据键名 17 | BlinkerNumber TEMP("temp"); //定义温度数据键名 18 | 19 | DHT dht(DHTPIN, DHTTYPE); //定义dht 20 | 21 | float humi_read = 0, temp_read = 0;//定义浮点型全局变量 储存传感器读取的温湿度数据 22 | 23 | void heartbeat() 24 | { 25 | HUMI.print(humi_read); //给blinkerapp回传湿度数据 26 | TEMP.print(temp_read); //给blinkerapp回传温度数据 27 | } 28 | void smartConfig()//配网函数 29 | { 30 | WiFi.mode(WIFI_STA);//使用wifi的STA模式 31 | Serial.println("\r\nWait for Smartconfig...");//串口打印 32 | WiFi.beginSmartConfig();//等待手机端发出的名称与密码 33 | //死循环,等待获取到wifi名称和密码 34 | while (1) 35 | { 36 | //等待过程中一秒打印一个. 37 | Serial.print("."); 38 | delay(1000); 39 | if (WiFi.smartConfigDone())//获取到之后退出等待 40 | { 41 | Serial.println("SmartConfig Success"); 42 | //打印获取到的wifi名称和密码 43 | Serial.printf("SSID:%s\r\n", WiFi.SSID().c_str()); 44 | Serial.printf("PSW:%s\r\n", WiFi.psk().c_str()); 45 | break; 46 | } 47 | } 48 | } 49 | void WIFI_Init() 50 | { 51 | Serial.println("\r\n正在连接"); 52 | //当设备没有联网的情况下,执行下面的操作 53 | while(WiFi.status()!=WL_CONNECTED) 54 | { 55 | if(WIFI_Status)//WIFI_Status为真,尝试使用flash里面的信息去 连接路由器 56 | { 57 | Serial.print("."); 58 | delay(1000); 59 | count++; 60 | if(count>=5) 61 | { 62 | WIFI_Status = false; 63 | Serial.println("WiFi连接失败,请用手机进行配网"); 64 | } 65 | } 66 | else//使用flash中的信息去连接wifi失败,执行 67 | { 68 | smartConfig(); //smartConfig技术配网 69 | } 70 | } 71 | //串口打印连接成功的IP地址 72 | Serial.println("连接成功"); 73 | Serial.print("IP:"); 74 | Serial.println(WiFi.localIP()); 75 | } 76 | 77 | void setup()//将设置代码放在此处,运行一次; 78 | { 79 | //初始化端口 80 | Serial.begin(115200); 81 | BLINKER_DEBUG.stream(Serial); 82 | BLINKER_DEBUG.debugAll(); 83 | 84 | WIFI_Init();//调用WIFI函数 85 | Blinker.begin(auth, WiFi.SSID().c_str(), WiFi.psk().c_str());//运行blinker 86 | dht.begin();//初始化DHT传感器 87 | Blinker.attachHeartbeat(heartbeat);//将传感器获取的数据传给blinker app上 88 | } 89 | 90 | //通过循环不断读取温湿度传感器获取的数据 91 | void loop() //把主代码放在这里,重复运行: 92 | { 93 | Blinker.run();//运行Blinker 94 | 95 | float h = dht.readHumidity();//读取DHT11传感器的湿度 并赋值给h 96 | float t = dht.readTemperature();//读取传感器的温度 并赋值给t 97 | if (isnan(h) || isnan(t))//判断是否成功读取到温湿度数据 98 | { 99 | BLINKER_LOG("Failed to read from DHT sensor!");//读取温湿度失败! 100 | } 101 | else//成功读取到数据 102 | { 103 | //打印 104 | BLINKER_LOG("Humidity: ", h, " %"); 105 | BLINKER_LOG("Temperature: ", t, " *C"); 106 | 107 | humi_read = h;//将读取到的湿度赋值给全局变量humi_read 108 | temp_read = t;//将读取到的温度赋值给全局变量temp_read 109 | } 110 | Blinker.delay(2000);//2秒延时 111 | } 112 | -------------------------------------------------------------------------------- /自制网络温湿度计(带温湿度曲线): -------------------------------------------------------------------------------- 1 | #define BLINKER_WIFI //定义wifi模块 2 | #define BLINKER_MIOT_SENSOR//小爱同学定义为传感器设备 3 | #include //包含Blinker头文件 4 | #include //包含DHT头文件 5 | 6 | #define DHTPIN 2 //定义DHT11模块连接管脚io2 7 | 8 | #define DHTTYPE DHT11 // 使用温度湿度模块的类型为DHT11 9 | 10 | char auth[] = "*********"; //你的设备key 11 | char ssid[] = "*********"; //你的wifi 名称 12 | char pswd[] = "*********"; //你的wifi 密码 13 | 14 | //新建数据类型组件对象,作用:将数据传输到手机blinker app 15 | BlinkerNumber HUMI("humi"); //定义湿度数据键名 16 | BlinkerNumber TEMP("temp"); //定义温度数据键名 17 | 18 | DHT dht(DHTPIN, DHTTYPE); //定义dht 19 | 20 | float humi_read = 0, temp_read = 0;//定义浮点型全局变量 储存传感器读取的温湿度数据 21 | 22 | void heartbeat() 23 | { 24 | HUMI.print(humi_read); //给blinkerapp回传湿度数据 25 | TEMP.print(temp_read); //给blinkerapp回传温度数据 26 | } 27 | 28 | void dataStorage() 29 | { 30 | Blinker.dataStorage("temp", temp_read); 31 | Blinker.dataStorage("humi", humi_read); 32 | } 33 | void miotQuery(int32_t queryCode) //小爱同学语音命令反馈 34 | { 35 | BLINKER_LOG("MIOT Query codes: ", queryCode); 36 | 37 | int humi_read_int=humi_read; //去掉湿度浮点数 38 | BlinkerMIOT.humi(humi_read_int); //小爱反馈湿度属性 39 | BlinkerMIOT.temp(temp_read); //小爱反馈温度属性 40 | BlinkerMIOT.print();//将以上属性发送给小爱,使得小爱可以接收到温湿度的数据 41 | 42 | } 43 | 44 | 45 | void setup()//将设置代码放在此处,运行一次; 46 | { 47 | //初始化端口 48 | Serial.begin(115200); 49 | BLINKER_DEBUG.stream(Serial); 50 | BLINKER_DEBUG.debugAll(); 51 | 52 | dht.begin();//初始化DHT传感器 53 | Blinker.begin(auth, ssid, pswd); // // 初始化blinker 54 | Blinker.attachHeartbeat(heartbeat);//将传感器获取的数据传给blinker app上 55 | Blinker.attachDataStorage(dataStorage);//调用云函数 56 | //在回调函数中反馈该控制状态 57 | BlinkerMIOT.attachQuery(miotQuery);//每次呼出小爱同学,就会调用miotQuery()函数 58 | } 59 | 60 | //通过循环不断读取温湿度传感器获取的数据 61 | void loop() //把主代码放在这里,重复运行: 62 | { 63 | Blinker.run();//运行Blinker 64 | 65 | float h = dht.readHumidity();//读取DHT11传感器的湿度 并赋值给h 66 | float t = dht.readTemperature();//读取传感器的温度 并赋值给t 67 | if (isnan(h) || isnan(t))//判断是否成功读取到温湿度数据 68 | { 69 | BLINKER_LOG("Failed to read from DHT sensor!");//读取温湿度失败! 70 | } 71 | else//成功读取到数据 72 | { 73 | //打印 74 | BLINKER_LOG("Humidity: ", h, " %"); 75 | BLINKER_LOG("Temperature: ", t, " *C"); 76 | 77 | humi_read = h;//将读取到的湿度赋值给全局变量humi_read 78 | temp_read = t;//将读取到的温度赋值给全局变量temp_read 79 | } 80 | Blinker.delay(2000);//2秒延时 81 | } 82 | --------- 83 | --------------------------------------------------------------------------------