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

本文主要是介绍手把手教你如何使用ESP8266(ESP-01S)连接到阿里云物联网平台,并通过微信小程序控制设备(如灯的亮、灭、数据上报到微信中显示),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

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

前期准备

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

软件:Arduino IDE

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

硬件介绍及使用

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

 ESP-01S模块

ESP-01S WiFi Relay Module 是专门为 ESP-01S 量身定制的继电器模块,可以直接插入 ESP-01S,省去复杂的接线。(如下图)

 ESP-01S 专用继电器模块

连接方法

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

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

烧录器或USB to TTL 模块 

如果手上没有这种烧录器,可以用 USB to TTL 模块代替,下图是两种不同芯片的 USB to TTL 模块,任意一种都可以,就是接线相对麻烦,最好有面包板。后面再具体讲解一下如何烧录的问题。

使用 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、AliyunIoTSDK这些库文件可以在ArduinoIDE上下载安装。这里就不详细讲解,不懂的,自行百度。

其中,AliyunIoTSDK可以帮助你快速连接阿里云 IoT 平台,通过和阿里云物联网开发平台配合,可快速实现各种硬件应用,包括了很上层的封装,无需自己解析数据体,绑定事件即可。

阿里云物联网平台配置

第一步:

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

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

创建产品

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

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

确认后,会进入到下图的界面,找到添设备,点击“前往添加” 

添加设备

添加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项目的源码,找到,如下所示位置,填写上对应的三元组(这里根据自已配置的来填写)

// 设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "a1SIobCLvYD"
#define DEVICE_NAME "ESP-01S"
#define DEVICE_SECRET "b8298ac5f763da25ee92ea44e17921bc"
#define REGION_ID "cn-shanghai"

ESP-01S设备状态回调

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

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

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

项目测试 

开关灯测试

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

温度和湿度测试 

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

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

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

总结

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

项目源码及资料下载

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

这篇关于手把手教你如何使用ESP8266(ESP-01S)连接到阿里云物联网平台,并通过微信小程序控制设备(如灯的亮、灭、数据上报到微信中显示)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/760929

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数