文章目录[隐藏]
1. 简介
ESP8266-NodeMCU的环境配置已经在一篇文章有所交代,接下让我们开启阿里云的MQTT物联网开发吧!😀😀😀
设计目标
- 实现可以通过WIFI_DEBUG选择是使用一键配网功能还是使用代码中写入的无线账号密码连接;
- 实现ESP8266通过MQTT协议连接阿里云;
- 实现DHT11温湿度数据的获取,串口发送调试,并将数据上发阿里云平台,于平台控件中显示数据;
- 实现阿里云平台对ESP8266板载LED亮灭的控制。
2. 实验准备
实验准备包括硬件和软件两部分。
2.1 硬件
你要实现用UNO+ESP 8266+阿里云+物联网你需要准备以下材料
- ESP8266-NodeMCU单片机(外加安卓数据线);
- DHT11温湿度传感器;
- 三根母母杜邦线;
2.2 软件
- Arduino IED 1.8.5以上(越高越好);
- 必须添加PubSubClient、ArduinoJson、dht11库,有空大家可以仔细读里面的例程;
- 浏览器登录阿里云平台。
3. 实验步骤
首先搭建阿里云平台,记录对应创建的产品相关参数,以便后期程序端口接入开发。👩👩👩
3.1 搭建阿里云物联网平台
- 立即添加设备,完善相关信息,点击添加完成设备添加🎈🎈🎈🎈
-
这样就添加产品和设备都完成了,然后点击详情🎈🎈🎈🎈🎈
-
敲黑板,重头戏来了,添加APIKey,点击提交,接入onenet需要基础的三个参数,依次记录第一参数设备ID,第二个参数是APIKey
大家复制自己的,用我的参数将直接导致实验失败!!!✨✨✨
{
"ProductKey": "a1HAueJJyJr",
"DeviceName": "1234vor",
"DeviceSecret": "4ed78ea51675d07fee8491fd30636960"
}
- 进行功能配置,编辑草稿,添加温度,湿度,电源三个属性。
3.2 搭建阿里云Web平台
-
进入IoT Studio开发,选择应用开发,然后新建应用。
-
进入页面设置,选择合适页面布局,新建页面
-
点击组件,添加开关和仪表盘
灯交互设置
温湿度仪表盘配置
最后保存发布,退出Web查看
3.2 为ESP8266-NodeMCU烧入程序
- 硬件连接,ESP8266-NodeMCU硬件连接非常简单,只需将DHT11数据线接入D6引脚就好,具体接线如下
ESP8266-NodeMCU -----> USBtoTLL
VCC -----> 3.3V
GND -----> GND
out -----> D6
- 修改PubSubClient.h,找到PubSubClient.h文件,将#define MQTT_MAX_PACKET_SIZE后的数字改为1024,将#define MQTT_KEEPALIVE后的数字改为60
- 程序设计,新建,然后复制粘贴,保存
esp8266_mqtt代码如下,只需要修改对应的wifi和阿里云的五个参数,选择NodeMCU1.0,端口选对应的,其他默认,最后点击上传;;
// 引入 wifi 模块,并实例化,不同的芯片这里的依赖可能不同
#include <ESP8266WiFi.h>
static WiFiClient espClient;
// 引入阿里云 IoT SDK
#include <AliyunIoTSDK.h>
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN D6
// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "a1HAueJJyJr"//需要修改
#define DEVICE_NAME "1234vor"//需要修改
#define DEVICE_SECRET "4ed78ea51675d07fee8491fd30636960"//需要修改
#define REGION_ID "cn-shanghai"
// 设置 wifi 信息
#define WIFI_SSID "J09 502"//需要修改
#define WIFI_PASSWD "qwertyuiop111"//需要修改
void setup()
{
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
// 初始化 wifi
wifiInit(WIFI_SSID, WIFI_PASSWD);
// 初始化 iot,需传入 wifi 的 client,和设备产品信息
AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
// 绑定一个设备属性回调,当远程修改此属性,会触发 powerCallback
// PowerSwitch 是在设备产品中定义的物联网模型的 id
AliyunIoTSDK::bindData("PowerSwitch", powerCallback);
// 发送一个数据到云平台,CurrentTemperature 是在设备产品中定义的物联网模型的 id
AliyunIoTSDK::send("CurrentTemperature", 26);
}
void loop()
{
int chk = DHT11.read(DHT11PIN);
AliyunIoTSDK::send("CurrentHumidity", (int)DHT11.humidity);
AliyunIoTSDK::send("CurrentTemperature", (int)DHT11.temperature);
Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("Temperature (oC): ");
Serial.println((float)DHT11.temperature, 2);
AliyunIoTSDK::loop();
}
// 初始化 wifi 连接
void wifiInit(const char *ssid, const char *passphrase)
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, passphrase);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("WiFi not Connect");
}
Serial.println("Connected to AP");
}
// 电源属性修改的回调函数
void powerCallback(JsonVariant p)
{
int PowerSwitch = p["PowerSwitch"];
if (PowerSwitch == 1)
{
// 启动设备
Serial.println("开关=1了");
digitalWrite(LED_BUILTIN, HIGH); // 熄灯
}
else
{
// 启动设备
Serial.println("开关=0了");
digitalWrite(LED_BUILTIN, LOW); // 亮灯
}
}
然后进入应用开发,就可以看见温湿度的动态变化🎉🎉🎉
Arduino输出显示
阿里云操作
我自己在尝试其他的拓展,显示效果如下
4. 总结
- 本文是一个难度中等的物联网项目,实现ESP8266一键配网功能、MQTT协议连接阿里云、DHT11温湿度数据的获取、数据上发阿里云平台、ESP8266板载LED亮灭的控制 😁😁😁
- 在以后的博文中我们将学会用ESP8266做常用的物联网开发,从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。
- 参考链接:
第一个链接十分有用,主要参考代码,期待大家都可以实现!🎉🎉🎉 - 基于 arduino IDE使用AliyunIoTSDK库接入阿里云[
- ESP8266接入阿里云物联网平台上传温湿度数据
版权声明:本文为CSDN博主「2345VOR」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/vor234/article/details/121318443
暂无评论