ESP8266-NodeMCU项目:ESP8266-NodeMCU+Blinker+DHT11+小爱同学
Posted 错开呀!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ESP8266-NodeMCU项目:ESP8266-NodeMCU+Blinker+DHT11+小爱同学相关的知识,希望对你有一定的参考价值。
错开の折腾经历:ESP8266 NodeMCU
文章目录
前言
经过上一项目,以及后来的学习,俺感觉可以入手新的项目辽。
So,就突然有了个 idea:身边不但有个ESP8266-NodeMCU(可以上网的板),还有个DHT11传感器,就想看看能不能数据上云,这个也是前期学习的一个重要方向,然后就开始网上冲浪找资料,不经意间触发了我的小爱同学(emmm,可能是误触,自己跑出来,吓一跳),突然就有个想法,温湿度传感器接入米家、小爱同学。折腾嘛,就是怕你没idea,有的话就可以尽情折腾了。说干就干。。。。。。
滴滴:以下是本篇文章正文内容
一、Blinker
1、Blinker——点灯科技
官网:点我传送
Blinker是一套专业且易用物联网解决方案,提供了服务器、应用、设备端sdk支持。 基于高性能异步框架开发的服务器端可以承载大量设备连接,让设备所有者方便的进行设备管理;简单便捷的应用配合多设备支持的sdk,可以让开发者在3分钟内实现设备的接入。 点灯服务有三个版本,社区版开源且免费,让大家可以体验到点灯方案的特点和优势;云服务版提供更多增值服务与功能,且有效降低客户的项目实施成本,让客户更快的进行物联网升级;商业版可进行独立部署,可以满足客户更多样的需求;
blinker支持多种主流通信方式,如:蓝牙 、 WiFi ,理论上只要是支持蓝牙或者WiFi的设备,都可以使用blinker连接。(✪ω✪) (小白大爱)
特性:
其由服务器端、app端、设备端组成,可以部署到几乎所有物联网平台
app端支持ios、android
设备端可以使用蓝牙、WiFi、MQTT等方式接入,支持Arduino、freeRTOS、mbed OS、Linux等开发平台
服务器端可以部署到阿里云、腾讯云、OneNET、百度云、AWS、google cloud等平台
通过界面布局器,免费版用户可自己拖拽布局设备控制界面,自由打造您的物联网设备
通过专属SDK,专业版用户可以使用Blinker开发自己的产品,并用于商业用途
blinker应用场景:
快速开发物联网 / 智能家居 / 无线遥控项目;
手机 / 语音助手 控制设备;
蓝牙ble / 局域网WiFi / 远程MQTT 接入设备;
设备联动交互;
数据采集分析 / 数据可视化;
二、任务开始
1.实验材料
老朋友:ESP8266-NodeMCU板子
温湿度传感器:DHT11
杜邦线、usb线
pc(Arduino IDE)、手机(安装blinker_APP、米家、小爱同学)
特写:
2.安装库文件
安装blinker库文件:
安装DHT11库文件:
并安装所需依赖:
3.安装Blinker_APP并配置设备
下载:Blinker官网下载
PS:按照自己所需进行下载
进行账号注册,登录后进入界面,创建设备,获取key
如图操作:
获取你的key,记得保存好哈,后面要凭此接入Blinker的
然后,别走开,点进设备里面,创建组件:
选数据组件
组件键名比较重要,建议设为自己好记的,代码方面要对接键名的
其他样式、颜色、文本都可以自己按情况设置
保存好后退出,准备进入紧张刺激的代码环节─=≡Σ(((つ•̀ω•́)つ
4.代码环节
首先当然是要看资料啦:
Blinker官网:esp8266 & WiFi帮助文档
Blinker官网:对接小爱同学帮助文档
Blinker官网:Arduino支持库帮助文档
Blinker官网:Arduino入门库帮助文档
基本找以上帮助文档都可以解决大部分问题
我这边直接贴代码了
#define BLINKER_WIFI //协议所需宏定义
#define BLINKER_MIOT_SENSOR //小爱同学定义为传感器设备
#include <Blinker.h> //点灯科技的头文件
#include <DHT.h> //DHT11传感器的头文件
#define DHTPIN 4 //定义DHT11模块连接管脚io4(D2脚)
#define DHTTYPE DHT11 // 使用DHT11温度湿度模块,当然也可以换其他DHT
#define BLINKER_PRINT Serial //启用串口调试输出功能
char auth[] = "自己的key"; //点灯app的密钥key
char ssid[] = "WiFi名"; //所需连接的WiFi名
char pswd[] = "WiFi密码"; //WiFi的密码
BlinkerNumber HUMI("humi"); //定义湿度数据键名
BlinkerNumber TEMP("temp"); //定义温度数据键名
DHT dht(DHTPIN, DHTTYPE); //定义dht
float humi_read = 0, temp_read = 0; //初始化读取的数据
void heartbeat()
{
HUMI.print(humi_read); //给blinkerapp回传湿度数据
TEMP.print(temp_read); //给blinkerapp回传温度数据
}
void miotQuery(int32_t queryCode) //小爱同学语音命令反馈
{
BLINKER_LOG("MIOT Query codes: ", queryCode);
int humi_read_int=humi_read; //将float转成int类型,整数
BlinkerMIOT.humi(humi_read_int); //小爱接收湿度
BlinkerMIOT.temp(temp_read); //小爱接收温度
BlinkerMIOT.print(); //将以上属性发送出去, 务必最后调用该函数
}
void setup()
{
//初始化串口Serial,开启调试输出
Serial.begin(115200);//波特率
BLINKER_DEBUG.stream(Serial);
BLINKER_DEBUG.debugAll();
Blinker.begin(auth, ssid, pswd);//WIFI初始化设置
Blinker.attachHeartbeat(heartbeat);//注册回调函数
dht.begin();
BlinkerMIOT.attachQuery(miotQuery);//注册回调函数
}
void loop()
{
Blinker.run();//负责处理blinker收到的数据,每次运行都会将设备收到的数据进行一次解析。(这个很重要)
float h = dht.readHumidity();//读取DHT11采集的湿度数据
float t = dht.readTemperature();//读取DHT11采集的温度数据
if (isnan(h) || isnan(t))//判断温湿度值是否为空
{
BLINKER_LOG("读取传感器数据失败");
}
else
{
BLINKER_LOG("Humidity: ", h, " %");//打印输出调试信息
BLINKER_LOG("Temperature: ", t, " *C");
humi_read = h;
temp_read = t;
}
Blinker.delay(3000);//这里至少要延时2s,不然小爱回返回设备不在线
//延时函数, 在延时过程中仍保持设备间连接及数据接收处理
}
接线:
烧录进板子:
烧录后,连网没问题的话,app就可以看见设备上线啦(~ ̄▽ ̄)~
5.接入米家、小爱同学
输入Blinker的账号密码,进行绑定
可以看见设备啦
然后小爱同学可以进行训练
三、测试效果
点它传送:小爱同学交互读取宿舍温湿度的录屏
PS:Blinker_APP的数据刷新有点问题,得每次重新点进设备才能刷新数据,你要是一直在那个页面,数据是不会动态刷新的,emmm
所以,可以在里面加个调试组件,进行刷新数据:
手动刷新,emmm
问题不大,小爱同学数据有更新,目的达到√
总结
又到了总结的时候了:不得不说ESP8266-NodeMCU板子实在的太方便了,10多块钱,支持WIFI,啧啧啧,老香了。
Blinker的应用也很棒,小白感觉很友好,还有更多功能等待探索呢。
DHT11的话,感觉数据还是不太精准,有空换个贵的(啧,有钱也可以!)
OK,下一个项目就是ESP8266-NodeMCU+红外+美的空调之间的故事了,害,等我红外发射模块到货再说了。
拜了个拜,共勉!!!
以上是关于ESP8266-NodeMCU项目:ESP8266-NodeMCU+Blinker+DHT11+小爱同学的主要内容,如果未能解决你的问题,请参考以下文章
基于ESP8266 NodeMCU + DHT22 记录室内温湿度
基于ESP8266 NodeMCU + DHT22 记录室内温湿度
基于ESP8266 NodeMCU + DHT22 记录室内温湿度