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

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

1. 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芯片的多款模组选型如下:

1.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协议。

1.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那根线,相当于复位操作,然后可以看到显示下载中,下载进度条也可以看到。

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

1.3 测试固件是否下载成功 

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

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

接好后如下图所示。

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

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

2.阿里云物联网网页端配置

配置的话可以参考这篇文章,如有侵权请联系我

https://archie.blog.csdn.net/article/details/135248254

按照这篇文章的配置就可以了,包括测试配置是否正确。

3.下位机代码实现

今天困了,明天下班继续写...

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

vue3前端开发-小兔鲜项目-图片切换效果和动态class

vue3前端开发-小兔鲜项目-图片切换效果和动态class!这次实现的效果是&#xff0c;图片预览效果&#xff0c;根据小图片&#xff0c;来实时改变大图&#xff08;预览&#xff09;的效果。同时让动态的特征class也跟着显示出来。 <script setup> import {ref} from vue // …

k8s中部署Jenkins、SonarQube、StorageClass部署流程

部署Jenkins 系统环境&#xff1a; • kubernetes 版本&#xff1a;1.23.3 • jenkins 版本&#xff1a;2.172 • jenkins 部署示例文件 Github 地址&#xff1a;https://github.com/my-dlq/blog-example/tree/master/jenkins-deploy 一、设置存储目录 在 Kubenetes 环境下…

【Linux】条件变量及生产者消费者模型

为什么要将这两者放在一起进行呢&#xff1f; 主要是因为生产消费与条件变量关系密切&#xff0c;正好相辅相成。 目录 条件变量&#xff1a;条件变量的引出&#xff1a;条件变量的解释与接口&#xff1a;测试代码&#xff1a; 生产者消费者模型&#xff1a;概念&#xff1a;代…

raise JSONDecodeError(“Expecting value”, s, err.value) from None

raise JSONDecodeError(“Expecting value”, s, err.value) from None 目录 raise JSONDecodeError(“Expecting value”, s, err.value) from None 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是…

unity文字||图片模糊

一.文字模糊 1、增大字体大小后等比缩放 快捷键R 2、更改字体渲染模式 二.图片模糊 1、更改过滤模式 2、更改格式或者压缩 3、如果只是图片边缘看不清&#xff0c;可以增加canvas/图片的每单位参考像素

41-50题矩阵和字符串 在Java中,将大写字符转换为小写字符的方法主要有以下几种:

20240723 一、数组最后几个和字符串的两个448. 找到所有数组中消失的数字&#xff08;和645. 错误的集合差不多&#xff09;283. 移动零118. 杨辉三角119. 杨辉三角 II661. 图片平滑器&#xff08;没看懂&#xff09;598. 区间加法 II566. 重塑矩阵303. 区域和检索 - 数组不可变…

【计算机网络】三次握手、四次挥手

问&#xff1a;三次握手 四次挥手 TCP 连接过程是 3 次握手&#xff0c;终止过程是 4 次挥手 3次握手 第一步&#xff1a;客户端向服务器发送一个带有 SYN&#xff08;同步&#xff09;标志的包&#xff0c;指示客户端要建立连接。 第二步&#xff1a;服务器收到客户端的请求…

麒麟V10安装nginx、mysql报错缺少包:error while loading shared libraries libssl.so.10

背景 启动nginx报错&#xff1a;error while loading shared libraries libssl.so.10 解决 查看nginx启动文件所依赖的动态链接库&#xff08;即共享库或动态库&#xff09; ldd nginx-1.22.1/sbin/nginx离线安装compat-openssl10包 将依赖包麒麟v10安装openssl10依赖包上…

Vuex数据持久化实现

版本&#xff1a;vue 3.4.29 vuex4.1.0 1. 出现的问题 当我使用 vuex 作为状态管理组件来存储用户的一些信息之后&#xff0c;发现从/login 页面跳转到/home 界面后拿不到vuex信息。 之后查阅资料了解&#xff0c;当切换路由后&#xff0c;vue 会重新渲染&#xff0c;而vuex 也…

为什么样本方差(sample variance)的分母是 n-1?

样本均值与样本方差的定义 首先来看一下均值&#xff0c;方差&#xff0c;样本均值与样本方差的定义 总体均值的定义&#xff1a; μ 1 n ∑ i 1 n X i \mu\frac{1}{n}\sum_{i1}^{n} X_i μn1​i1∑n​Xi​ 也就是将总体中所有的样本值加总除以个数&#xff0c;也可以叫做总…

运维团队如何借助分布式部署提升监控效率与可靠性

随着企业IT基础设施的日益复杂和分布式架构的广泛应用&#xff0c;传统的监控解决方案已经难以满足现代运维团队的需求。在这样的背景下&#xff0c;分布式部署作为一种新型的监控架构&#xff0c;以其灵活性、可扩展性和高可用性&#xff0c;成为了运维团队提升监控效率与可靠…

centos系统mysql数据库差异备份与恢复

文章目录 差异备份mysql数据一、 安装 Percona XtraBackup数据库中创建一些数据三、创建全备份四、创建差异备份1. 在数据库中添加数据&#xff0c;让数据发生一些改变2. 创建第一个差异备份3. 数据库中再次添加一些数据4. 创建第二个差异备份 五、模拟数据丢失&#xff0c;删库…

nest学习笔记(一)

介绍 nest是一个用于构建高效&#xff0c;可拓展的nodejs服务端应用程序的框架&#xff0c;它使用渐进式javascript&#xff0c;使用Typescript构建并且完全支持Typescript&#xff0c;而且运行开发者使用javascript编写代码&#xff0c;提供了OOP、FP、FRP nest的底层是基于…

Kolla-Ansible的确是不支持CentOS-Stream系列产品了

看着OpenStack最新的 C 版本出来一段时间了&#xff0c;想尝个鲜、用Kolla-Ansible进行容器化部署&#xff0c;结果嘛。。。 根据实验结果&#xff0c;自OpenStack Bobcat版本开始&#xff0c;Kolla-Ansible就适合在CentOS系列产品上部署了&#xff0c;通过对 Bobcat和Caracal…

springcloud接入skywalking作为应用监控

下载安装包 需要下载SkyWalking APM 和 Java Agent 链接: skywalking 安装 下载JDK17&#xff08;可不配置环境变量&#xff09; 目前skywalking 9.0及以上版本基本都不支持JDK8&#xff0c;需要JDK11-21&#xff0c;具体版本要求在官网查看。 我这里使用的是skywalking9.…

每日好题(2)

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) {int arr[6] { 1,2,3,4,5,6 };char* p arr;int sz sizeof(arr) / sizeof(arr[0]);for (int a 0; a < sz; a){printf("%d\n", *p);p 4;}return 0; }这串代码遍历打印数组的结果是没…

BGP选路之Preferred value

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时&#xff0c;BGP协议会对这些BGP路由的属性进行比较&#xff0c;以确定去往该目标网络的最优BGP路由&#xff0c;然后将该最优BGP路由与去往同一目标网络的其他协议路由进行比较&#xff0c;从而决定是否将该最优…

小程序多排数据横向滚动实现

如何实现多排数据滚动效果 swiper 外部容器 swiper-item 每一页的数据 因为现在有多排数据,现在在swiper-item 中需要循环一个数组 初版 <template><view><view class"container"><view class"swiper-box"><swiper class&qu…

操作系统——笔记(1)

操作系统是管理计算机硬件资源&#xff0c;控制其他程序运行并为用户提供交互操作界面的系统软件的集合&#xff0c;控制和管理着整个计算机系统的硬件和软件资源&#xff0c;是最基本的系统软件。 常见的操作系统&#xff1a;ios、windows、Linux。 计算机系统的结构层次&am…

“论软件测试中缺陷管理及其应用”写作框架,软考高级论文,系统架构设计师论文

原创范文 软件缺陷指的是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误&#xff0c;或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。在目前的软件开发过程中&#xff0c;缺陷是不可避免的。软件测试是发现缺陷的主要手段&#xf…