WiFi通信——STM32通过ESP8266-01S与阿里云通信

        嵌入式设计中常用的无线通信方式主要由蓝牙、WiFi、Zigbee、Lora、NB-IOT等等。这些是最常用的,也是在实际项目开发中根据项目的数据通信特点来选择相应的无线通信方式。本设计主要是讲解WiFi在嵌入式开发中的使用。

1.ESP8266的三种模式

1.1 STA模式(Station)

        工作在STA模式下的ESP8266-01S模块就像你的手机一样,它可以接收你家无线路由器发出的WiFi信号,实现了ESP8266-01S模块通过接收路由器的信号而能够上网,跟手机连WiFi上网没区别,当然如果把ESP8266-01S模块按正确方式接在STM32单片机上,就可以实现STM32控制的比如灯、继电器、舵机等具有开关功能的远程控制。

1.2 AP模式(Wireless Access Point)

        工作在AP模式下的ESP8266-01S模块就像是一个手机热点一样,也像你家的简易版无线路由器,你自己的手机、Pad、笔记本电脑等都可以连接到此“热点”,从而实现了手机、电脑等设备可以和ESP8266-01S模块进行局域网的无线通信。在AP模式下的ESP8266-01S模块是一个无线网络的创建者,可以理解为此时ESP8266-01S模块是被别的设备连接,即此时的ESP8266-01S模块是一个服务器端,为被他人连接的模式。

1.3 STA+AP模式

        两种模式共存,ESP8266-01S模块既可以通过路由器连接到互联网,也可以作为WiFi热点使其他设备连接到这个ESP8266-01S模块,实现广域网与局域网的无缝切换。

        至于这三种模式在STM32单片机开发中怎么用,后面有详细藐视。

2. ESP8266-01S烧录固件

        WiFi通信的频段和蓝牙一样,都是2.4G免费频段。我们使用ESP8266-01S模块,这款WiFi模块的芯片是乐鑫公司设计的,由安信可公司生产的模组。相当于ARM公司设计芯片,ST公司生产STM32单片机。ESP8266-01S是基于乐鑫ESP8266芯片制造的一款WiFi通信模组,其内部集成了802.11b/g/n协议栈和TCP/IP协议栈,具备完整的Wi-Fi和网络功能。但是多数人都喜欢拿它来做WiFi通信使用。ESP芯片的多款模组选型如下:

2.1 ESP8266-01S模块引脚图

管脚号管脚名字功能
1脚GND接地
2脚IO2GPIO2/UART1_TXD
3脚IO0

GPIO0。下载模式:内部拉低

               运行模式:外部拉高或者悬空

4脚RXDUART0_RXD/GPIO3
5脚TXDUART0_TXD/GPIO1
6脚EN芯片使能端,高电平有效
7脚RST复位
8脚VCC3,.3V供电

提示:电源供电不足会导致烧录固件程序失败,烧录固件的时候就会出现一直在等待上电情况,建议采用外部专用电源供电,使用TTL转USB烧录时候可以用万用表检测一下你的TTL转USB模块3.3V供电是不是达到了3.3V,如果没有的话就把ESP8266-01S的把VCC端接到5V上。

        该模块出厂时默认自带出厂固件的,但如果进行其他开发需要烧录固件,比如如果想用机智云结合ESP8266-01S开发就需要烧录机智云的固件(这个可以在机智云网站找到),如果想用ESP8266-01S把STM32的数据传到阿里云上,就需要烧录MQTT的固件,因为传数据到阿里云上需要用到MQTT协议。

2.2 ESP8266-01S烧录MQTT固件

烧录方式有两种:一种是用ESP8266-01S的专用下载器下载,淘宝卖7块钱一个,下载器采用CH340C USB转TTL芯片,并增加了ESP8266自动下载电路,非常方便用户给安信可的ESP-01/01S 下载程序、升级固件、串口调试等,支持Arduino IDE 、安信可ESP8266 Flasher和乐鑫FLASH_DOWNLOAD_TOOLS 等下载软件软件一键下载,不需要接线,不需要按任何按键。WiFi模块会自动进入下载模式。我用下载器下载出现串口连接失败,不知道是不是我买的下载器有问题,已经弃用。下载器长这样:

把ESP8266-01S直接插上去就行了,注意插的方向。

一种是用USB转TTL模块配合烧录软件操作,我用这种方式烧录成功的,先把USB转TTL模块和ESP8266-01S接线,接线如下:

ESP8266-01SUSB转TTL模块
GNDGND
IO0GND
IO2悬空不接
RXDTXD
TXDRXD
EN3.3V(如果你的3.3V输出电压不够则改接5V)
RST3.3V(如果你的3.3V输出电压不够则改接5V)
VCC3.3V(如果你的3.3V输出电压不够则改接5V)

        接好线后把USB端插到电脑上,要提前在电脑上安装好CH340的驱动程序,这个网上教程和驱动程序一大堆,自己百度去吧。

        然后进入安信可公司官网->开发资料->WiFi模组系列->ESP8266系列->资源汇总->各类AT固件,选择第7个:MQTT透传AT固件(固件号:1471),点击固件下载

        然后下载烧录软件,进入安信可公司官网->开发资料->WiFi模组系列->ESP8266系列->资源汇总->开发工具,选择第二个:烧录WiFi固件工具:ESP_DOWNLOAD_TOOL,下载烧录软件

        固件和烧录软件准备好以后,解压烧录软件压缩包,然后打开下图的flash_download_tool_v3.8.5.exe

然后界面就如下分步讲解:

1.选择你上面下载的AT固件解压后的位置

2.然后手动输入0x00000(我不知道是不是自动加载的)

3.选择晶振频率24M(下图的40M是不对的,我懒得重新截图了,要改成24M)

4.选择SPI MODE:DOUT。若是下载失败可以改SPI MODE为QIO试看看。

5.选择FLASH SIZE:8Mbit。因为ESP8266-01S的flash大小就是8Mbit

6.选择你的CH340的端口,这个可以通过你电脑的设备管理器查看,我的是COM7,波特率选择115200

7.点击START开始烧录固件

然后拔插一下ESP8266-01模块的3V3那根线,相当于复位操作,然后可以看到显示下载中,下载进度条也可以看到。

等个几十秒,显示下载完成。

2.3 测试固件是否下载成功 

接下来只接这几个线,其他线都不接。

ESP8266-01S模块USB转TTL模块
3V33V3        
TXDRXD
RXDTXD
GNDGND

接好后如下图所示。

然后打开串口助手,选择对应的COM口,波特率选择115200,勾选新行

然后发送:AT。回复OK就说明烧录成功。

3.阿里云配置并验证

3.1阿里云物联网平台创建设备

        首先进入阿里云官网,然后登录账号(没有账号的需要自己注册一个),登陆成功后在搜索款搜索:物联网平台然后找到公共实例,这个是免费的,需要开通一下。

进入到公共实例后,按下图操作

创建完产品后,还需要在创建的产品下创建设备。如下图操作

添加完设备后,可以去查看一下设备,显示未激活状态

然后点击产品,查看创建好的产品名字,点击查看,如下图所示。

 

添加一个灯开关的功能

再添加一个温度的功能

然后可以看到下图添加了两个功能,一个是灯开关,还有一个是温度的,然后点击发布上线。

 刚刚的是功能定义的设备发布,下面还要点产品的发布

连接的设备正式创建成功,接下来使用mqtt.fx测试连接创建好的产品和设备 ,看是否连接成功。

3.2 MQTT.fx模拟测试连接阿里云

 首先需要安装MQTT.fx软件,安装包链接如下:

链接:https://pan.baidu.com/s/1y0GBknZGC5hypt173PcGkg?pwd=1234 
提取码:1234 
安装好后打开界面如下图

 这个MQTT.fx想要连接阿里云需要有阿里云的MQTT连接参数,在下图找到

 

把上面的MQTT连接参数复制到电脑的记事本或者word文档都行,因为MQTT.fx连接阿里云要用到。然后打开MQQTT.fx,如下图操作

点完connect后,可以看到connect按钮从蓝色变灰色了,右上角的灯变绿了

        然后去阿里云物联网平台查看对应的设备,可以看到状态为在线,说明MQTT.fx已经成功连接到阿里云上了。

 3.3 MQTT.fx上传数据到阿里云

        在创建产品下面的设备时定义了温度和LED开关的功能,而这些功能数据的就是通过物模型通信topic来接收的,进入到物模型通信topic列表,选择一个具有发布权限的topic:/sys/ic62GWmkta2/${deviceName}/thing/event/property/post,然后复制,${deviceName}替换为设备名,设备名可在设备管理->设备 页面查看

我把${deviceName}替换为我的设备名字:phdd2024,然后粘贴到MQTT.fx,然后将物模型数据按照以下格式进行发布

多个功能数据发布格式:{params:{"标识符1":数据1,"标识符2":数据2}}

单个功能数据发布格式:{params:{"标识符1":数据1}}

这个标识符在下图这样找

所以我的这个物模型数据按格式是:

{params:{"temp":24,"LEDSwitch":1}}

点publish后,就可以把消息从MQTT.fx发到阿里云上了,可以进入阿里云的日志系统查看,如下图所示。

然后查看数据是否传输成功,如下图

3.4 阿里云下发数据到MQTT.fx

下发数据步骤和上传数据其实差不多,在自定义topic列表里复制一个具有订阅权限的topic :/sys/ic62GWmkta2/${deviceName}/thing/event/property/post_reply,将${deviceName}替换为设备名。

然后打开MQTT.fx,按下图操作。

然后打开阿里云发布消息,按如下图操作。

4.下位机代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA开发——独立仿真和联合仿真

一、概述 我们在进行FPGA开发的过程之中,大部分情况下都是在进行仿真,从而验证代码实现结果的正确与否,这里我们引入了独立仿真和联合仿真进行一个简单介绍。 联合仿真:一般我们在进行仿真之前需要在相应的软件中建立相应的工程…

昇思25天学习打卡营第01天|昇思MindSpore大模型基础j介绍

昇思MindSpore和华为昇思MindSpore大模型学习打卡系列文章,本文仅供参考~ 文章目录 前言一、昇思MindSpore是什么?二、执行流程三、设计理念四、层次结构五、Huawei昇腾AI全栈 前言 随着计算机大模型的不断发展,Ai这门技术也越来越重要&#…

【LeetCode 随笔】C++入门级,详细解答加注释,持续更新中。。。

文章目录 58.【简单】最后一个单词的长度🌟 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊 🌸愿您在此停留的每一刻,都…

使用vfbox网关实现modbus opc profinet iec61850等协议间的转换

在当今物联网(IoT)与工业自动化日益融合的时代背景下,协议转换网关作为连接不同设备与系统之间的桥梁,扮演着至关重要的角色。VFBox协议转换网关,作为这一领域内的佼佼者,以其高效、灵活、可靠的性能&#…

学习周报:文献阅读+HEC RAS案例

目录 摘要 Abstract 文献阅读:通过HEC RAS软件为罗马尼亚布加勒斯特市的Dmbovița河水管理的水力模型 文献摘要 讨论|结论 理论知识 边界条件计算 流量计算方式 曼宁公式 (Mannings Equation) 连续性方程 (Continuity Equation) 能量方程 (Energy Equatio…

API资源对象CRD、认识Operator-理论知识和认识Operator-初次上手(2024-07-17)

一、API资源对象CRD Kubernetes 自定义资源定义(Custom Resource Definition,简称 CRD)是一种强大的 Kubernetes API 扩展机制,允许你定义和创建自己的资源类型,以满足您的应用程序或基础设施需求。 CRD 的核心思想是…

LeetCode 2766题: 重新放置石块(原创)

【题目描述】 给你一个下标从 0 开始的整数数组 nums ,表示一些石块的初始位置。再给你两个长度 相等 下标从 0 开始的整数数组 moveFrom 和 moveTo 。 在 moveFrom.length 次操作内,你可以改变石块的位置。在第 i 次操作中,你将位置在 moveF…

基于Pytorch框架的深度学习densenet121神经网络鸟类行为识别分类系统源码

第一步:准备数据 5种鸟类行为数据:self.class_indict ["bowing_status", "grooming", "headdown", "vigilance_status", "walking"] ,总共有23790张图片,每个文件夹单独放一…

从零搭建pytorch模型教程(八)实践部分(二)目标检测数据集格式转换

前言 图像目标检测领域有一个非常著名的数据集叫做COCO,基本上现在在目标检测领域发论文,COCO是不可能绕过的Benchmark。因此许多的开源目标检测算法框架都会支持解析COCO数据集格式。通过将其他数据集格式转换成COCO格式可以无痛的使用这些开源框架来训…

【计算机网络】静态路由实验

一:实验目的 1:掌握通过静态路由方法实现网络的连通性。 二:实验仪器设备及软件 硬件:RCMS-C服务器、网线、Windows 2019/2003操作系统的计算机等。 软件:记事本、WireShark、Chrome浏览器等。 三:实验方…

《分析模式:可重用对象模型》学习笔记之四:企业财务分析中的观察和测量02

这个模型基本解决问题,可以方便定义层次,以及反映了三个不同的维数元素,也反映了企业部门单元和维数元素的关系,但是很快可以看到,在这里,维数被局限在三个:也就是说,如果维数需要改…

静止轨道卫星大气校正(Atmospheric Correction)和BRDF校正

文章内容仅用于自己知识学习和分享,如有侵权,还请联系并删除 :) 目的: TOA reflectance 转为 surface refletance。 主要包含两步: 1)大气校正; 2)BRDF校正 进度&#x…

抖音矩阵管理系统开发:全面解析与推荐

在数字时代,短视频平台如抖音已经成为人们生活中不可或缺的一部分。随着内容创作者数量的激增,如何高效地管理多个抖音账号,实现内容矩阵化运营,成为了众多创作者关注的焦点。今天,我们就来全面解析抖音矩阵管理系统的…

Java_如何在IDEA中使用Git

注意:进行操作前首先要确保已经下载git,在IDEA中可以下载git,但是速度很慢,可以挂梯子下载。 导入git仓库代码 第一次导入: 首先得到要加载的git仓库的url: 在git仓库中点击 “克隆/下载” 按钮&#xf…

SpringBoot教程(十七) | SpringBoot集成swagger

SpringBoot教程(十七) | SpringBoot集成swagger 一、Swagger的简述二、SpringBoot集成swagger21. 引入依赖2. 新建SwaggerConfig配置类当 SpringBoot为2.6.x及以上时 需要注意 3.配置Swagger开关4. 给Controller 添加注解(正式使用&#xff0…

PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘

1,下载 RTL8125B driver 下载页: https://www.realtek.com/Download/List?cate_id584 2,RTL8125B datasheet下载 下载页: https://file.elecfans.com/web2/M00/44/D8/poYBAGKHVriAHnfWADAT6T6hjVk715.pdf3, 编译driver 解压: $ tar xj…

鸿蒙OpenHarmony Native API【drawing_color.h与drawing_font_collection.h】 头文件

drawing_color.h Overview Related Modules: [Drawing] Description: 文件中定义了与颜色相关的功能函数 Since: 8 Version: 1.0 Summary Functions FunctionDescription[OH_Drawing_ColorSetArgb] (uint32_t alpha, uint32_t red, uint32_t green, uint32_t blue)u…

机器学习第四十九周周报 GT

文章目录 week49 GY摘要Abstract1. 题目2. Abstract3. 网络结构3.1 graphon3.2 框架概览 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 有效性4.3.2 可转移性4.3.3 消融研究4.3.4 运行时间 5. 结论6.代码复现小结参考文献 week49 GY 摘要 本周阅读了题为Fine-tun…

几个小创新模型,Transformer与SVM、LSTM、BiLSTM、Adaboost的结合,MATLAB分类全家桶再更新!...

截止到本期MATLAB机器学习分类全家桶,一共发了5篇,参考文章如下: 1.机器学习分类全家桶,模式识别,故障诊断的看这一篇绝对够了!MATLAB代码 2. 再更新,机器学习分类全家桶,模式识别&a…

【四】jdk8基于m2芯片arm架构Ubuntu24虚拟机下载与安装

文章目录 1. 安装版本2. 开始安装3. 集群安装 1. 安装版本 如无特别说明,本文均在root权限下安装。进入oracle官网:https://www.oracle.com/java/technologies/downloads/找到最下面Java SE 看到java 8,下载使用 ARM64 Compressed Archive版…