基于Arduino IDE平台开发ESP8266通过MQTT连接阿里云

Arduino教程传送门🧭🏔🌋🛤🏞🏜

1. 简介

ESP8266-NodeMCU的环境配置已经在一篇文章有所交代,接下让我们开启阿里云的MQTT物联网开发吧!😀😀😀

设计目标

  1. 实现可以通过WIFI_DEBUG选择是使用一键配网功能还是使用代码中写入的无线账号密码连接;
  2. 实现ESP8266通过MQTT协议连接阿里云
  3. 实现DHT11温湿度数据的获取,串口发送调试,并将数据上发阿里云平台,于平台控件中显示数据;
  4. 实现阿里云平台对ESP8266板载LED亮灭的控制

2. 实验准备

实验准备包括硬件和软件两部分。

2.1 硬件

你要实现用UNO+ESP 8266+阿里云+物联网你需要准备以下材料

  1. ESP8266-NodeMCU单片机(外加安卓数据线);
  2. DHT11温湿度传感器;
  3. 三根母母杜邦线;
    在这里插入图片描述

2.2 软件

  1. Arduino IED 1.8.5以上(越高越好);
  2. 必须添加PubSubClient、ArduinoJson、dht11库,有空大家可以仔细读里面的例程;
  3. 浏览器登录阿里云平台
    在这里插入图片描述

3. 实验步骤

首先搭建阿里云平台,记录对应创建的产品相关参数,以便后期程序端口接入开发。👩👩👩

3.1 搭建阿里云物联网平台

  1. 登录阿里云物联网平台,选择控制台🎈
    在这里插入图片描述

  2. 来到控制台首页,选择公共实例,点击创建产品🎈🎈
    在这里插入图片描述

  3. 进入创建产品界面,选择MQTT(旧版),然后添加产品,以此根据实际需求填写,点击确认完成产品创建🎈🎈🎈

在这里插入图片描述

  1. 立即添加设备,完善相关信息,点击添加完成设备添加🎈🎈🎈🎈
    在这里插入图片描述

在这里插入图片描述

  1. 这样就添加产品和设备都完成了,然后点击详情🎈🎈🎈🎈🎈
    在这里插入图片描述

  2. 敲黑板,重头戏来了,添加APIKey,点击提交,接入onenet需要基础的三个参数,依次记录第一参数设备ID,第二个参数是APIKey
    在这里插入图片描述

大家复制自己的,用我的参数将直接导致实验失败!!!✨✨✨

{
  "ProductKey": "a1HAueJJyJr",
  "DeviceName": "1234vor",
  "DeviceSecret": "4ed78ea51675d07fee8491fd30636960"
}
  1. 进行功能配置,编辑草稿,添加温度,湿度,电源三个属性。
    在这里插入图片描述
    在这里插入图片描述

3.2 搭建阿里云Web平台

  1. 进入IoT Studio开发,选择应用开发,然后新建应用。
    在这里插入图片描述

  2. 进入页面设置,选择合适页面布局,新建页面
    在这里插入图片描述

  3. 点击组件,添加开关和仪表盘

在这里插入图片描述
灯交互设置
在这里插入图片描述
温湿度仪表盘配置
在这里插入图片描述
最后保存发布,退出Web查看
在这里插入图片描述

3.2 为ESP8266-NodeMCU烧入程序

  1. 硬件连接,ESP8266-NodeMCU硬件连接非常简单,只需将DHT11数据线接入D6引脚就好,具体接线如下
ESP8266-NodeMCU -----> USBtoTLL
VCC -----> 3.3V 
GND -----> GND
out -----> D6

在这里插入图片描述

  1. 修改PubSubClient.h,找到PubSubClient.h文件,将#define MQTT_MAX_PACKET_SIZE后的数字改为1024,将#define MQTT_KEEPALIVE后的数字改为60
    在这里插入图片描述
  2. 程序设计,新建,然后复制粘贴,保存

在这里插入图片描述

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

生成海报
点赞 0

创世纪

单片机学习,电子制作DIY学习与分享,各种新鲜的,有趣的,好玩的,一起来吧!机器人、无人机、树莓派/Raspberry Pi、arduino、极客、创客等

暂无评论

发表评论

相关推荐

(一)STM32连上阿里云

STM32连上Aliyun 1、首先你得有一个阿里云的账号,没有的话就注册一个 2、找到物联网平台 3、选择华东2,点击公共实例 4、创建产品 5、给产品添加设备,这里添加两个设备,将