【基于Arduino IDE平台开发ESP8266连接阿里云】

Arduino教程传送门🧭🏔🌋🛤🏞🏜
 @[TOC](基于Arduino IDE平台开发ESP8266通过MQTT连接阿里云)


# 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. 浏览器登录[阿里云平台](https://www.aliyun.com/?spm=5176.19720258.J_8058803260.1.19852c4aSN6fO8)。


# 3. 实验步骤
首先搭建阿里云平台,记录对应创建的产品相关参数,以便后期程序端口接入开发。👩👩👩
## 3.1 搭建阿里云物联网平台

 1. 登录[阿里云物联网平台](https://iot.aliyun.com/?spm=5176.19720258.J_8058803260.28.bb412c4aNZa8H1),选择控制台🎈
![在这里插入图片描述](https://img-blog.csdnimg.cn/a36debc94cbb4eb687ac912526a39bdc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

2. 来到[控制台首页](https://iot.console.aliyun.com/lk/summary/new),选择公共实例,点击创建产品🎈🎈
![在这里插入图片描述](https://img-blog.csdnimg.cn/e6f631f2c6d748e8b66dba7f81f0ce69.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)


3. 进入[创建产品界面](https://iot.console.aliyun.com/product),选择MQTT(旧版),然后添加产品,以此根据实际需求填写,点击确认完成产品创建🎈🎈🎈

![在这里插入图片描述](https://img-blog.csdnimg.cn/3abb3fd1d7fb407a9a55ddbcc8ea3c61.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)


4. 立即添加设备,完善相关信息,点击添加完成设备添加🎈🎈🎈🎈
![在这里插入图片描述](https://img-blog.csdnimg.cn/329e1032de0f4e909cf5628a35321ada.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

![在这里插入图片描述](https://img-blog.csdnimg.cn/bc23426680e844b6a4e6563959805109.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

5. 这样就添加产品和设备都完成了,然后点击详情🎈🎈🎈🎈🎈
![在这里插入图片描述](https://img-blog.csdnimg.cn/fd55c04d83bc4e19a4391e5e7ce3a862.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

6. 敲黑板,重头戏来了,添加APIKey,点击提交,接入onenet需要基础的三个参数,依次记录第一参数设备ID,第二个参数是APIKey
![在这里插入图片描述](https://img-blog.csdnimg.cn/3bd7794f84d54adaad2b9091f42a69b9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

大家复制自己的,用我的参数将直接导致实验失败!!!✨✨✨
```c
{
  "ProductKey": "a1HAueJJyJr",
  "DeviceName": "1234vor",
  "DeviceSecret": "4ed78ea51675d07fee8491fd30636960"
}
```
7. 进行功能配置,编辑草稿,添加温度,湿度,电源三个属性。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ec9371e35b84cc199269ef29e3daae9.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3c03b9294dde45faae9f1a22ef207208.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

## 3.2 搭建阿里云Web平台
1. 进入[IoT Studio开发](https://studio.iot.aliyun.com/?spm=5176.cniotstudio.0.0.7b4ebec69RGg4Z),选择应用开发,然后新建应用。
![在这里插入图片描述](https://img-blog.csdnimg.cn/0b75f75f87774aae977471d1389566b0.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)
2. 进入页面设置,选择合适页面布局,新建页面
![在这里插入图片描述](https://img-blog.csdnimg.cn/6b43f7da2d8a461a81c0eae2e7ec3512.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/ad1ad00d5e48482a98c70a693b87dfc7.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)
灯交互设置
![在这里插入图片描述](https://img-blog.csdnimg.cn/8511195ce2f046649c73311fc0b97d4a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)
温湿度仪表盘配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/025c72cc880f46eb9feff2ce0fcf57d1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)
最后保存发布,退出Web查看
![在这里插入图片描述](https://img-blog.csdnimg.cn/f267a8ff7e62473cba743f607144547f.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)


## 3.2 为ESP8266-NodeMCU烧入程序
1. **硬件连接**,ESP8266-NodeMCU硬件连接非常简单,只需将DHT11数据线接入D6引脚就好,具体接线如下

```c
ESP8266-NodeMCU -----> USBtoTLL
VCC -----> 3.3V 
GND -----> GND
out -----> D6
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/b19c9bb6ebe24cb7bae74c5802413767.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

2. **修改PubSubClient.h**,找到PubSubClient.h文件,将#define MQTT_MAX_PACKET_SIZE后的数字改为1024,将#define MQTT_KEEPALIVE后的数字改为60
![在这里插入图片描述](https://img-blog.csdnimg.cn/829ab35fd70e4c85afc7dc911efb7598.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)
3. **程序设计**,新建,然后复制粘贴,保存

![在这里插入图片描述](https://img-blog.csdnimg.cn/88b43d045ba9457c9bec4025a1ce7234.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)

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);   // 亮灯
  }
}

然后进入[应用开发](https://studio.iot.aliyun.com/?spm=5176.cniotstudio.0.0.7b4ebec69RGg4Z),就可以看见温湿度的动态变化🎉🎉🎉
Arduino输出显示
![在这里插入图片描述](https://img-blog.csdnimg.cn/a529b82fada44212a2d976db9264e74a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)
阿里云操作
![在这里插入图片描述](https://img-blog.csdnimg.cn/550d7197e0be4bb9a34d20773729e7df.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/21812038229845da89df40eaf7c23492.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAMjM0NVZPUg==,size_20,color_FFFFFF,t_70,g_se,x_16)


我自己在尝试其他的拓展,显示效果如下


# 4. 总结
 - **==本文是一个难度中等的物联网项目,实现ESP8266一键配网功能、MQTT协议连接阿里云、DHT11温湿度数据的获取、数据上发阿里云平台、ESP8266板载LED亮灭的控制==** 😁😁😁
 - 在以后的博文中我们将学会用ESP8266做常用的物联网开发,**从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力**。
 - 参考链接:
第一个链接十分有用,主要参考代码,期待大家都可以实现!🎉🎉🎉
 - [基于 arduino IDE使用AliyunIoTSDK库接入阿里云]()[
 - [ESP8266接入阿里云物联网平台上传温湿度数据]()

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将Arduino ESP8266连接到阿里云,您需要执行以下步骤: 1. 在阿里云上创建一个IoT实例,并获取设备的身份验证信息,例如设备ID和设备密钥。 2. 在Arduino IDE中安装ESP8266的支持库,并将其连接到您的计算机。 3. 在Arduino IDE中编写代码,以便ESP8266可以连接到阿里云,并将数据发送到云端。您可以使用MQTT协议或HTTP协议来实现此目的。 4. 在阿里云上创建一个设备影子,以便您可以在云端控制设备,并获取设备的状态信息。 5. 测试您的代码,并确保ESP8266可以成功连接到阿里云,并将数据发送到云端。 请注意,连接到阿里云需要一些技术知识和经验。如果您不熟悉这些技术,请寻求专业人士的帮助。 ### 回答2: 在现代物联网时代,将Arduino UNO或其他单控制板连接到互联网并与阿里云进行通信是一项重要而有趣的任务。使用ESP8266无线模块,可以将Arduino连接到互联网并将其作为物联网设备使用。本文将介绍如何使用ESP8266连接阿里云。 第一步:准备ESP8266无线模块 ESP8266已经成为物联网世界中的主要玩家之一。它是一款低成本、低能耗、小尺寸的Wi-Fi无线模块。可以通过Arduino IDE编程,用于在物联网应用中通信和控制。 将ESP8266与Arduino UNO或其他控制板连接的方法如下: · 将ESP8266模块的VCC接口连接Arduino的3.3V端口。 · 将ESP8266模块的GND接口连接Arduino的GND端口。 · 将ESP8266模块的TX接口连接Arduino的RX端口。 · 将ESP8266模块的RX接口连接Arduino的TX端口。 备注:ESP8266的电气规格不支持5V级别的操作电压,因此请不要把ESP8266的VCC连接Arduino的5V端口。否则会损坏该模块。 第二步:安装阿里云IoT套件 在连接设备之前,您需要在阿里云控制台中创建帐户并注册IoT套件。该套件将使Arduino设备连接到阿里云IoT平台。 第三步:在Arduino IDE中安装ESP8266插件 默认情况下,Arduino IDE不支持ESP8266板的开发。因此,您需要安装一个额外的插件,使IDE支持ESP8266。要安装ESP8266插件,请按照以下步骤操作: · 必须下载Arduino的最新版本IDE · 打开Arduino IDE,选择“文件”菜单 · 选择“首选项”子菜单 · 在“附加板管理器的网址”框中输入以下网址: http://arduino.esp8266.com/stable/package_esp8266com_index.json · 保存并关闭首选项 · 接下来,选择“工具”菜单 · 在“板”子菜单下找到“开发板管理器” · 在“开发板管理器”中搜索ESP8266,并安装最新版本。 第四步:编写代码 在Arduino IDE中编写实现ESP8266和阿里云连接的代码。代码的主要功能是连接到Wi-Fi网络并将数据发送到阿里云。 #include <ESP8266WiFi.h> // WiFi网络标识信息 const char* ssid = "你的WiFi名称"; const char* password = "你的WiFi密码"; void setup() { Serial.begin(115200); // 连接到WiFi网络 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi连接成功"); } void loop() { // 在这里添加发送数据到阿里云的代码逻辑 } 在上述代码中,需要替换注释中的“你的WiFi名称”和“你的WiFi密码”为实际值。 第五步:在阿里云平台上创建设备 在阿里云IoT平台上创建设备,以将Arduino连接到物联网。在控制台中,创建设备并获取设备名称和密钥,这些将用于在Arduino代码中连接到IoT平台。 第六步:在Arduino代码中添加设备ID和密钥 在Arduino代码中,为连接到阿里云IoT平台,需要添加设备ID和密钥。下述代码显示了如何在ESP8266上使用Arduino IDE连接到阿里云。 #include <ESP8266WiFi.h> #include <PubSubClient.h> // WiFi const char* ssid = "你的WiFi名称"; const char* password = "你的WiFi密码"; // MQTT const char* mqtt_server = "你的阿里云mqtt服务器地址(IP)"; const char* mqtt_user = "你的设备ID"; const char* mqtt_password = "你的设备密钥"; // 使用ESP8266内置的Pin const int ledPin = 16; // 创建WiFi对象和MQTT客户端 WiFiClient espClient; PubSubClient client(espClient); void setup() { Serial.begin(115200); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // 连接到WiFi网络 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi连接成功"); // 连接到MQTT服务器 client.setServer(mqtt_server, 1883); client.setCallback(callback); while (!client.connected()) { Serial.println("连接MQTT服务器..."); if (client.connect(mqtt_user, mqtt_password, NULL)) { Serial.println("连接成功"); } else { Serial.print("连接失败, rc="); Serial.print(client.state()); Serial.println("重试在5秒后"); delay(5000); } } } void loop() { client.loop(); } void callback(char* topic, byte* payload, unsigned int length) { String cmd = ""; for (int i = 0; i < length; i++) { cmd += (char)payload[i]; } if (topic != NULL) { Serial.print("MQTT消息到达:"); Serial.print(topic); Serial.print(". PayLoad消息:"); Serial.println(cmd); } if (cmd == "ON") { digitalWrite(ledPin, HIGH); } else if (cmd == "OFF") { digitalWrite(ledPin, LOW); } } 在上述代码中,需要将“你的WiFi名称”、“你的WiFi密码”、“你的阿里云mqtt服务器地址(IP)”,以及“你的设备ID”和“你的设备密钥”替换为实际值。此外,您还可以更改其他变量如ledPin等。 第七步:上传代码到Arduino并测试 将代码上传到Arduino控制板,然后打开控制台监视器。这将显示ESP8266模块连接到Wi-Fi网络和阿里云IoT平台的状态。在阿里云IoT控制台中的Web控制台设备管理中找到要控制的设备。在“控制台监视器”中输入“ON”或“OFF”命令,以检查控制Arduino是否可以正常工作。 结论: 转到阿里云IoT平台控制台和设备管理器中看到设备是在线的。所以,现在,您已成功将Arduino ESP8266连接到阿里云。在现代物联网应用中,我们可以将其他传感器和执行器链接到Arduino控制板,并将其作为IoT设备使用。这些设备可以使用阿里云IoT平台进行全面控制和监控。 ### 回答3: Arduino是一种简单易用的单片机开发板,而ESP8266是一种高性能的Wi-Fi模块,两者结合可以实现闭环控制、物联网等应用。而阿里云则提供了云计算平台的技术方案,它可以方便地将传感器和执行器与云端连接起来,通过互联网实现远程监控、控制和数据采集。 要将Arduino与阿里云平台连接起来,需要遵循以下步骤: 第一步,准备硬件 需要准备的硬件有ESP8266模块、Arduino开发板、一些杜邦线和一些传感器或执行器等。其中ESP8266模块需要进行特殊设置,为防止接口冲突,可以使用一些简单的线路修改,将ESP8266引脚与Arduino引脚相连。 第二步,下载官方库 应该从GitHub上下载官方库,并将其解压到Arduino IDE的库文件夹中。这个库应该包含了连接阿里云的所有代码和API接口,可以在程序中调用这些函数以实现数据上传和下载等功能。 第三步,设置设备 应该在阿里云平台的控制面板中创建设备,并获取其设备密钥。这个密钥需要放在ESP8266的引脚中,以便进行连接和认证。可以使用阿里云提供的一些模拟器来测试设备的连接和通信。 第四步,编写程序 需要编写一个程序来将ArduinoESP8266连接,并将传感器数据上传到阿里云平台。程序可以包含一些特定的API调用来处理数据,例如验证设备令牌、解析传感器数据并插入数据库等。此外,程序还可以包含一些错误处理和连接管理代码,以便保持良好的连接和通信质量。 总之,将ArduinoESP8266与阿里云平台连接起来需要一些专业的技能和知识,但只要熟悉编程和硬件设置,便能轻松实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值