手把手教你如何使用ESP8266(ESP-01S)连接到阿里云物联网平台,并通过微信小程序控制设备(如灯的亮、灭、数据上报到微信中显示)

前言

最近在做智能家居的项目,主要是通过esp8266接入云端实现远程控制的效果,于是就想到用微信小程序进行控制。由于阿里云物联网平台为设备提供安全可靠的连接通信能力,向下连接海量设备,支撑设备数据采集上云;向上提供云端API,服务端通过调用云端API将指令下发至设备端,实现远程控制,采用MQTT协议和设备端进行交互,通过MQTT协议与物联网平台建立长连接上报数据(通过Publish发布Topic和Payload)到物联网平台,因此选择了阿里云物联网平台作为开发环境。

效果展示

ESP-01S连接到阿里云物联网平台,使用微信小程序远程控制灯的亮灭

前期准备

硬件:ESP-01S模块、ESP-01S 专用继电器模块、烧录器或USB to TTL 模块 

软件:Arduino IDE

相关工具库:ESP8266、PubSubClient、Crypto、ArduinoJson、AliyunIoTSDK

硬件介绍及使用

ESP-01S模块 + 继电器模块
ESP-01S模块和ESP-01S专用继电器的组合,由于价格低廉(某宝上面可以买到),连接方便,很适合做一些,如灯、风扇及一些小型家用电器控制开关的物联网小项目。因此,受到很多电子DIY爱好者的青睐。同时也是一款非常适合对物联网感兴趣的小白,作为入门的练手项目的产品。

 ESP-01S模块

ESP-01S WiFi Relay Module 是专门为 ESP-01S 量身定制的继电器模块,基于AI Thinker ESP-01S WIFI模块,可以直接插入 ESP-01S,省去复杂的接线。它是为智能家居、物联网等DIY项目而设计的。有了这个继电器,你可以很容易地自己动手制作智能开关,在任何地方通过手机控制任何设备。(如下图)

 ESP-01S 专用继电器模块

专用断电器与ESP-01S连接方法

插入时需要注意插入的方向(如下图所示),不要插反了,否则上电后可能会导致芯片烧毁。

该模块有一个复位按钮,可以重启 ESP-01S。控制继电器的引脚连接在 ESP-01S 的 IO0(GPIO0),控制方式是,GPIO0 输出低电平时,继电器线圈得电;GPIO0 输出高电平时,继电器线圈失电。

专用烧录器与ESP-01S模块连接方法

插入时需要注意插入的方向(如下图所示),不要插反了,否则上电后可能会导致芯片烧毁。

专用烧录器与ESP-01S插接图

ESP-01或ESP-01S专用烧录器 

使用 USB to TTL 模块烧录代码

如果你没有专用的烧录器,手里刚好有 USB to TTL 模块,也可以把代码烧录进去。就是接线相对麻烦,最好有面包板。

根据 ESP-01S 的手册提供,ESP-01S 有两种启动模式:下载模式和运行模式。两种模式对 GPIO 口要求的电平状态不同,具体如下表所示:

模式ENRSTGPIO15GPIO0GPIO2UART0_TXD
下载模式HIGHHIGHLOWLOWHIGHHIGH
运行模式HIGHHIGHLOWHIGHHIGHHIGH

部分引脚在芯片内部已经上拉,下载程序时只需要把 EN 引脚拉高,把 GPIO0 脚拉低即可。具体接下图如下:

 接线完成后,其他操作跟专用烧录器的操作一样,这里不做赘述。在烧录完成后,拔掉 IO0 的引脚线。RST 引脚用杜邦线接一下 GND,再拿开可以完成重启,或者拔掉 3V3 引脚线,再接入也是一样的效果。

硬件与设备接线

3PIN 的接线端只需要接COM端(公共端)和NO端(常开触点),具体如下图。 

ESP8266固件烧录

新买回来的ESP-01S,不支持MQTT ,需要重新烧录MQTT透传AT固件

固件下载(ESP-01S)固件:1471_esp8266-at_mqtt-1m(MQTT透传AT固件(固件号:1471)

下载地址:AT固件汇总 | 安信可科技 (ai-thinker.com) 中找到

烧录方法

需要使用新版的烧录软件,如flash_download_tool_3.9.5。如果使用旧版本的烧录进去,使用时会报一些不知名的错误。

下载地址:https://www.espressif.com.cn/zh-hans/support/download/other-tools

打开烧录软件,如下图配置进行烧录固件

按照上图配置好后,点"START"开始烧录,直至烧录完成,关闭即可。需要注意的是串口选择,是根据自已安装驱动时的串口配置,我的电脑使用是COM8串口,所以这里选择COM8。

测试是否烧录成功

使用串口工具,发送AT指令,返回OK,代表固件烧录成功。(如下图)

软件环境配置

安装Arduino IDE

使用Arduino IDE作为项目开发的主要工具,自行安装。同时也需要安装相关工具库,如下:

安装相应的库

ESP8266、PubSubClient、Crypto、ArduinoJson等这些库文件可以在ArduinoIDE上下载安装。这里就不详细讲解,不懂的,自行百度。

阿里云物联网平台配置

MQTT(Message Queuing Telemetry Transport)是一种轻量级的通信协议,常用于物联网设备之间的通信。而阿里云物联网平台是阿里云提供的物联网解决方案,可以帮助用户快速搭建物联网应用。

通过MQTT协议,物联网设备可以与阿里云物联网平台进行稳定可靠的通信,实现设备之间的数据交换和控制。其次,通过连接阿里云物联网平台,用户可以方便地管理和监控物联网设备,实现远程配置、升级和故障排查等功能。此外,阿里云物联网平台提供了丰富的数据分析和可视化展示功能,可以帮助用户更好地理解和利用物联网设备生成的数据,实现智能化决策和优化。

因此,将MQTT与阿里云物联网平台连接可以极大地提升物联网应用的可靠性、灵活性和智能化水平,为用户提供更加便捷和高效的物联网解决方案。

下面为大家讲解一下,如何使用阿里云物联网平台配置我们的物联网环境。

从阿里云平台中找到物联网平台

选择“管理控制台”进入平台管理界面,再找到“公共实例”进入配置(如下图)

创建产品

找到“产品”,然后选择“创建产品”,如下图 

参照下图红框中的选项进行选择,产品名称填写你自已的

以上是添加微信端的设备,确认后,会进入到下图的界面,找到添加设备,点击“前往添加” 你的设备。

添加设备

添加ESP-01S端设备

下面是添加ESP-01S设备端的流程

点击“添加设备” 后,会弹出如下图所示界面,填写上相应的名称,确认

添加微信端

下面是添加微信端的流程,原理同上

至始,两端设备,添加完成。下面是配置Topic。

自定义Topic 

回到“产品”选项,添加自定义的Topic,如下图 

添加ESP01S端的Topic 
添加微信端的Topic 

定义完成后,选择“消息转发”,找到“云产品流转”,如下图

创建规则

 选择“返回旧版”,创建ESP01S端和微信端的规则

创建ESP01S端的规则

ESP01S端处理数据的规则创建  

ESP01S端转发数据规则的创建 

确认后,返回到创建规则的界面,找到刚才创建的ESP01S端的规则,启动它,即可。 

创建微信端的规则
微信端处理数据的规则创建 

微信端转发数据规则的创建 

 最后别忘记启动它

 最后,就是选择设置,分别找到两端的三元组,复制出来备用

ESP-01S端三元组的获取办法,同上,不再详细讲解。按照上述所示,自行查看。 

配置ESP-01S设备的自定义功能

 这里我需要配置三个自定义功能(根据自已的需要配置)。首先在阿里云物联网平台中找到“产品”,再找到“功能定义”,打开“查看”,如下图

 然后,找到“前往编辑草稿”,进去添加自已需要的功能

最后,记得要发布上线,不然,它们是不会生效的。 

至始,阿里云物联网平台就配配完成。接下来就是实现微信端与ESP8266端的代码了。 

微信小程序端代码参数设置

小程序导入设置

修改小程序的appid  

微信端的三元组参数填写

当阿里云物联网配置完成后,打开设备,发现两端的设备处于未激活状态。如下图

那么,要如何才能激活使用呢?这里就需要打开微信小程序的代码,找到,填写设备三元组的地方,填写上微信端的三元组,如下面所示。

aliyunInfo: {
    productKey: '设备Key,对应上面阿里云平台中的微信端的Key', //阿里云连接的三元组 ,请自己替代为自己的产品信息!!
    deviceName: '根据你创建的设备名称来填写,如上面阿里云平台中,微信端的名称标识填写的是WeChat,这里就写WeChat', //阿里云连接的三元组 ,请自己替代为自己的产品信息!!
    deviceSecret: '设备密钥', //阿里云连接的三元组 ,请自己替代为自己的产品信息!!
    regionId: '主机所在地区,如上海,就填cn-shanghai', //阿里云连接的三元组 ,请自己替代为自己的产品信息!!
    pubTopic: '发布主题的地址', //发布消息的主题
    subTopic: '订阅消息主题的地址', //订阅消息的主题
},

//以上的所有参数,可以在阿里云物联网平台,微信端中可以找到,不懂的,参考上面阿里云配置可以找到

将以上参数填写完成后,保存或编译运行,这时打开阿里云物联网平台,就会发现你的微信端已经在线了(如下图)

如何填写发布主题和订阅消息主题

发布主题

在阿里云物联网平台中,找到“消息转发”,然后打开“云产品流转”,找到红框中的地址,粘贴到微信小程序对应的位置,即可。如下图

订阅消息主题

 同理,在“云产品流转”中打开ESP-01S端,找到红框中的地址,粘贴到微信小程序对应的位置,即可。如下图

它们两者的关系,不懂的,看到两遍,好好理解下。

订阅消息

第一次使用,需要先订阅一下设备(也就是微信绑定ESP01S模块),这里只需订阅一次,即可。在微信小程序源码中可以找到,取消注释,等待成功连接服务器之后,在随便点击(开灯)或(关灯)就可以订阅函数,订阅后,打上注释。

this.data.client.subscribe(this.data.aliyunInfo.subTopic,function(err){
    if(!err){
        console.log("订阅成功");
    };
    wx.showModal({
        content: "订阅成功",
        showCancel: false,
    })
})

 发布消息

if (this.data.client && this.data.client.connected) {
    //{"method":"thing.service.property.set","id":"2117888738","params":{"LightSwitch":1},"version":"1.0.0"}
    this.data.client.publish(this.data.aliyunInfo.pubTopic, '{"params":'+JSON.stringify(sendData)+'}');
    console.log(this.data.aliyunInfo.pubTopic)
    console.log(JSON.stringify(sendData))
} else {
    wx.showToast({
        title: '请先连接服务器',
        icon: 'none',
        duration: 2000
    })
}

设备开关控制 

onLightClick:function(){
    if(this.data.switchStatus){
       that.sendCommond(1);
       this.setData({
           switchStatus: !this.data.switchStatus
       });
    }else{
       that.sendCommond(0);
       this.setData({
           switchStatus: !this.data.switchStatus,
       });
    }
},

ESP8266端代码参数设置

ESP8266端三元组填写

同理,ESP-01S端,也需要填写设备的三元组,使用Arduino打开ESP01S项目的源码,找到,如下所示位置,填写上对应的三元组(这里根据自已配置的来填写)

// 设置产品和设备的信息,从阿里云设备信息里查看
const String productKey = "a1SIobCLvYD";                        //替换
const String deviceName = "ESP-01S";               //替换
const String deviceSecret = "b8298ac5f763da25ee92ea44e17921bc"; //替换
//订阅主题
const String subTopic = "/sys/" + productKey + "/" + deviceName + "/thing/service/property/set";
//发送主题
const String pubTopic = "/" + productKey + "/" + deviceName + "/user/update";
const String regionId = "cn-shanghai"; //替换自己的区域id
const String serverUrl = productKey + ".iot-as-mqtt." + regionId + ".aliyuncs.com";
const int serverPort = 1883;

ESP-01S设备状态回调

需要注意,LightSwitch,需要对应阿里云中的功能定义属性标识符,参考上面的配置

填写完ESP-01S设备的三元组后,在Wifi信息处,填写你自的Wifi名称和密码。接下来,将代码烧录到ESP-01S模块里面了。当烧录完成来后,打开阿里云物联网平台,可以在设备中看到ESP-01S设备已经上线了。如下图

到始,一个简单可用的物联网小项目就完成了,接下来就是整个项目测试了。

项目测试 

开关灯测试

将烧录好的ESP-01S模块,插入专用的继电器中(参考:硬件介绍及使用中的,连接方法),然后,打开微信小程序点击智能灯开关进行测试效果,如下图

温度和湿度测试 

在阿里云平台中,找到设备,再找到微信端,点“查看”进入,如下图

 点击“前往查看”,进入调试界面,如下图

填写好参数后,点“设置”,这时温度值及湿度值就会同步更新到微信端了。如下图 

总结

阿里云平台配置那里有些绕,不懂的,多看看,理解一下。主要是区分哪里是微信端,哪里是ESP-01S端, 理清这些后,很快就能上手了,整体项目并不是很难。

项目源码及资料下载

所有代码亲测有效,只要你按照上面图解,配置好阿里云物联网平台后,微信小程序端代码直接导入并修改好对应的参数,并且将ESP-01S代码下载到你模块中,就能实现微信小程序远程控制你的设备了。有兴趣的,快来试试吧!

下载地址:ESP8266(ESP-01S)连接到阿里云物联网平台,并通过微信小程序控制设备(如灯的亮、灭、数据上报到微信中显示)资源-CSDN文库

  • 60
    点赞
  • 307
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论
### 回答1: ESP8266是一种低成本、低功耗的Wi-Fi芯片,可以实现物联网设备的无线连接。而阿里云是一种云计算服务,可用于存储和处理物联网设备数据。将ESP8266阿里云连接可以实现物联网设备与云平台之间的数据传输和通信。 要实现ESP8266连接阿里云,首先需要在阿里云平台上创建设备。然后,在ESP8266开发环境配置设备的身份验证信息,包括设备身份标识和密钥。在ESP8266代码设备身份标识和密钥与阿里云进行通信,以便进行数据传输和命令控制。 为了连接ESP8266阿里云,需要使用MQTT(消息队列遥测传输)协议。MQTT是一种轻量级发布/订阅协议,用于物联网设备和服务之间的实时通信。 在ESP8266上,需要使用MQTT库来实现与阿里云连接。首先,配置ESP8266与Wi-Fi网络连接的信息,包括SSID和密码。然后,在ESP8266的代码设置阿里云的服务器地址和端口号,并根据阿里云的要求,设置设备连接阿里云的身份验证信息。 一旦连接建立,ESP8266就可以通过MQTT协议向阿里云发布数据或订阅主题。可以通过阿里云的云服务来管理和处理设备数据,比如存储数据、分析数据控制设备。 总之,通过将ESP8266阿里云连接,可以实现物联网设备与云平台之间的实时数据传输和通信。这样,我们可以更好地管理和控制物联网设备,提高物联网系统的效率和智能化水平。 ### 回答2: ESP8266是一款低功耗的Wi-Fi模块,可以用于连接互联网。为了将ESP8266连接阿里云平台,需要进行一些设置和配置。 首先,我们需要创建一个阿里云账户,并登录到阿里云物联网平台。在平台上创建一个设备,并获取设备的三元组信息,包括设备名称、设备密钥和设备ID。 接下来,在Arduino开发环境,需要安装ESP8266开发板库文件,并导入相应的库。然后,打开一个新的Arduino项目,将以下库文件包含在代码: - ESP8266WiFi.h // 用于连接Wi-Fi网络 - PubSubClient.h // 用于连接到MQTT服务器 在代码,需要通过Wi-Fi连接到网络,使用Wi-Fi的连接函数,并向其传递网络名称和密码。 然后,需要设置MQTT服务器的地址和端口号,在代码使用以下函数进行设置: - mqtt.setServer("mqtt.aliyun.com", 1883); 接下来,需要设置用户名和密钥信息: - mqtt.setCredentials("Device ID", "Device Name", "Device Secret"); 在代码,可以设置一个回调函数,用于处理接收到的消息。可以选择订阅并接收特定主题的消息,并在回调函数处理这些消息。 最后,在循环,需要使用mqtt.loop()函数以保持与阿里云服务器的连接,并应答服务器的PING请求。 通过这些步骤,ESP8266就可以成功连接阿里云平台,并可以通过发布和订阅主题进行双向通信。请确保设备阿里云平台之间的网络连接正常,并且设备的三元组信息正确设置。 ### 回答3: 要使用ESP8266连接阿里云,首先需要进行以下几个步骤: 1. 注册阿里云账号并创建一个IoT实例。登录阿里云控制台,选择IoT物联网平台,按照指引创建一个实例。 2. 在实例创建一个产品和设备。产品是设备的抽象描述,设备是具体的物理设备。设置产品的通信协议为MQTT协议。 3. 下载并安装Arduino IDE,并在IDE安装ESP8266开发板库和MQTT库。这些库可以通过“库管理器”进行安装。 4. 在IDE打开示例程序,连接ESP8266到WiFi网络。根据自己的网络配置,修改WiFi名称和密码,将示例代码烧录进ESP8266。 5. 在代码配置阿里云物联网平台的参数。包括设备的ProductKey、DeviceName、DeviceSecret等信息。这些可以在阿里云控制台的产品与设备页面找到。 6. 在代码配置MQTT服务器地址和端口。阿里云物联网平台的MQTT服务器地址和端口可以在实例的概览页面找到。 7. 编写程序实现与阿里云的通信。利用MQTT库提供的接口,可以实现设备数据发送和接收。可以根据需求,编写具体的数据处理逻辑。 8. 将程序烧录进ESP8266设备将与阿里云建立MQTT连接,并实现数据的传输。 总结以上步骤,我们就可以通过ESP8266连接阿里云,并实现设备与云端的数据交互。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金戈鐡馬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值