【硬件模块】ESP-01SWiFi模块基于AT指令详解(WiFi,TCP/IP,MQTT)

ESP-01S

ESP-01S是由安信可科技开发的一款Wi-Fi模块。其核心处理器是ESP8266,该处理器在较小尺寸的封装中集成了业界领先的Tensilica L106超低功耗32位微型MCU,带有16位精简模式,主频支持80MHz和160MHz,并集成了Wi-Fi MAC/BB/RF/PA/LNA。

ESP-01S具有多种特性和功能:

  • 尺寸小巧,设计紧凑,适用于空间有限的应用。
  • 支持标准的IEEE802.11 b/g/n协议和完整的TCP/IP协议栈,可以方便地与其他设备或网络进行通信。
  • 可以通过路由器连接到互联网,使手机或电脑能够实现对设备的远程控制(STA模式)。
  • 也可以作为热点,使其他设备能够连接到它(AP模式)。
  • 提供了多个可编程的GPIO引脚,可以用于控制外部设备,如传感器和执行器等。

在硬件连接方面,ESP-01S模块需要与主控制器(如Arduino、STM32等)进行连接,通过串行UART接口与主控制器进行数据传输。同时,该模块通常工作在3.3V的电压下,建议使用2节干电池或经过LDO转换后的3.3V进行供电,而不应使用USB转TTL的3.3V或5V进行供电。

在软件方面,初始情况下,ESP-01S通常预装了Espressif提供的AT指令固件,这意味着可以通过发送简单的AT指令来控制模块的Wi-Fi连接和数据传输。此外,用户还可以根据需要进行固件烧录和配置,以满足特定的应用需求。

总的来说,ESP-01S是一款功能强大、易于使用的Wi-Fi模块,适用于各种物联网和智能家居应用,为设备添加联网功能或构建独立的网络控制器提供了方便和灵活的选择。

以上介绍来自文心一言。

上面就是我买的ESP-01S,它的芯片是ESP8266,但是看得出来引脚少的可怜,不过我买的价格是六块。

也就是说如果我们的项目仅仅只是需要联网的话,那么选择ESP-01S的性价比会比直接整一块NodeMCU更高。

使用它的原理跟我们之前的蓝牙模块一样,都是AT指令,也就是通过串口来进行交互。

还有要注意的就是供电问题。

不能用USB转TTL供电,不能用ST-Link供电,不能用STM32供电。

建议用电池供电。

也可以像我一样买个底座。一般卖ESP-01S的店家都会有配件一起卖。

AT指令

ESP8266系列模组出厂自带AT固件,默认波特率为115200。虽然文档里没写其他配置,但是测试之后得出了其他的配置要求:八位数据位,一位停止位,无校验。也是最常见的配置了。

接下来我们直接就拿串口助手来进行AT指令的实验。

串口助手可以上网搜,随便一搜都有,也可以跟着我之前的文章动手敲一个。

200行C++代码写一个QT串口助手-CSDN博客文章浏览阅读1k次,点赞21次,收藏29次。今天分享一个用QT写的串口助手,关键代码会直接在文章的对应位置贴出,完整的工程文件(用的VS 2019)可以进入我的主页免费下载,也可以关注我的公众号“折途想要敲代码” 回复关键词“qt串口助手”免费获取。如果是使用QTCreator的小伙伴在项目配置完毕后可以通过复制我提供的工程文件中的.cpp和.h文件来达到同样的效果。要配置的就是在配置文件中加上串口对应的部分。使用VS的需要再拓展插件中找到模块管理再加上串口的模块。需要包含以下头文件。https://blog.csdn.net/m0_63235356/article/details/135283060?spm=1001.2014.3001.5501有个小问题就是我写这个串口助手的时候没有115200这个选项,因此需要改两个地方来支持115200的波特率。

也可以使用之前实验蓝牙模块的AT指令的时候用的串口助手,那个功能相对齐全一些,虽然是跟蓝牙模块配套的,但是在我们这里也能用。

在安信可的手册里只有很少一部分的AT指令。

提供的网站也打不开(用了魔法也打不开,看来是服务器停了)。

于是我直接杀到ESP-01S的老家——乐鑫,找到了完整版的文档(在线的,跟ESP-IDF的编程指南不一样,这个不需要魔法就可以直接访问)。

基础 AT 命令 — ESP-AT 用户指南 文档 (readthedocs-hosted.com)icon-default.png?t=N7T8https://espressif-docs.readthedocs-hosted.com/projects/esp-at/zh-cn/release-v2.2.0.0_esp8266/AT_Command_Set/Basic_AT_Commands.html

基础AT命令 

基础的AT指令有上面这些,我们挑几个常用的来介绍一下。

需要注意的是不是所有指令都是可以用的。

有一些是ESP32用的。

也有一些是需要额外烧录一些AT固件才能使用的(例如flash)。可以通过发送“指令+?”来判断一些具体的指令能不能用。

测试启动

AT

先来个简单的,直接通过串口发送“AT”,会得到响应“OK”,表示我们的ESP-01S在正常地工作着。

重启命令

AT+RST

发送重启命令,ESP-01S回复OK之后进行重启,重启之后会打印一堆调试信息,可以不用管。

进入休眠

AT+GSLP=<time>

发送命令进入休眠之后可以省电,这一点在嵌入式应用中还是很重要的。过了休眠时间之后又会自动启动,我们也可以通过拉低RST引脚强制唤醒。

我们的ESP-01S用的是8266,因此一次最多只能休眠3个小时,不过硬件层面解决不了的问题可以通过软件解决。

说是说按照毫秒为单位进行休眠,

但是我一旦发送这个命令之后ESP-01S就醒不来了,得手动拉低RST进行重启才行。

大家可以拿自己的模块进行测试,实在不行我们就当没有参数,发送这个命令就是进入睡眠,要拉低RST进行重启才行。

打开关闭回显

ATE0ATE1

回显是什么东西呢,比如说上面的“AT”,ESP-01S回复的应该的“OK”,但是我们收到的却是“AT”和一行空白和“OK”。其中“AT”就是回显,也就是我们发送的命令。

关闭回显之后我们就只会收到响应了。平时应用的时候可以关闭方便接收响应而不需要过滤。

不过后面的演示我们还是打开回显,这样方便对照AT命令。

修改串口配置

一共有两个修改命令。

一个是临时修改,也就是说重启之后又回到默认配置了。

AT+UART_CUR=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>

另一个是直接修改falsh里的默认配置,重启之后也是修改过后的配置了。

AT+UART_DEF=<baudrate>,<databits>,<stopbits>,<parity>,<flow control>

AT+UART_CUR?AT+UART_DEF?

查看当前配置的话就是上面两个命令不加参数,改为加个“?”。

一般不建议修改这个,都是用默认的。

但是以防大家看到这么多参数感到害怕,就小小的演示一下。

其实参数就是用逗号隔开就行。

恢复出厂设置

AT+RESTORE

如果配置了太多想改回去,但是又嫌麻烦的话,可以直接恢复出厂设置。

这个命令直接把flash中保存的参数都删掉。并且会重启ESP-01S。

WiFi命令

WiFi相关的命令有上面这么多,但是常用的就那几个,我们一样是挑着演示。 

查看/设置模式

AT+CWMODE?AT+CWMODE=<mode>[,<auto_connect>]

我们一般是要连接WiFI的,而不是释放热点。

因此我们常用的模式是1(Station)或者3(SoftAP+Station)。

并且默认情况下ESP-01S会帮助我们把连接过的WiFi记录在flash,之后如果还是Station模式就会自动连接。

连接WiFi

AT+CWJAP=[<ssid>],[<pwd>][,<bssid>][,<pci_en>][,<reconn_interval>][,<listen_interval>][,<scan_mode>][,<jap_timeout>][,<pmf>]

这个命令的参数很多,但是我们只需要配置上前两个,WiFi名和密码即可,剩下的都用默认值就行。

确实是可以连接上我的热点。

断开连接

AT+CWQAP

如果我们自动连接上了上次连接过的WiFi,但是这次我们想要换一个WiFi来连接,那么我们可以选择断开连接。

查询STA模式下的MAC/IP地址

AT+CIPSTAMAC?

上面这个是查询MAC地址的。

需要注意的是需要为STA模式,如果是AP模式则是另一个命令。

另一个就是需要先连上网。

下面这个是查询IP地址的。

AT+CIPSTA?

扫描当前可用WiFi

AT+CWLAP

这个命令实际上可以有参数,但是参数太长而且基本上用不上,这里就不贴出来了,感兴趣的小伙伴可以自己去文档里看。

TCP/IP命令

连上了网,我们自然是要通信的。

那么必然是离不开TCP/IP协议栈的。

建立TCP连接

// 单连接 (AT+CIPMUX=0):
AT+CIPSTART=<"type">,<"remote host">,<remote port>[,<keep alive>][,<"local IP">]// 多连接 (AT+CIPMUX=1):
AT+CIPSTART=<link ID>,<"type">,<"remote host">,<remote port>[,<keep alive>][,<"local IP">]

测试发现了一个奇怪的问题。

那就是我尝试连接网络调试助手的TCP服务器的时候死活连不上。

但是乐鑫提供的测试服务器却一下就连上去了。

我的电脑和ESP-01S连的都是我手机的热点,因此不是不在一个局域网的问题。

具体是什么原因我还没有找到,知道的小伙伴可以在评论区分享一下。

断开连接

AT+CIPCLOSE

如果是多连接模式,那么断开连接需要对应的ID号(0~4)。

如果是单连接模式那么不需要参数。

发送数据

// 单连接:(AT+CIPMUX=0)
AT+CIPSEND=<length>// 多连接:(AT+CIPMUX=1)
AT+CIPSEND=<link ID>,<length>// UDP 传输可指定对端主机和端口
AT+CIPSEND=[<link ID>,]<length>[,<"remote host">,<remote port>]

有上面三种发送情况,分别是TCP单连接,TCP多连接,UDP(UDP不需要连接)。

link ID是连接ID号(0~4)。

length是发送数据的长度。

当我们发送完命令,ESP-01S回复OK之后,我们就可以发送数据了。

当数据达到length这个长度之后就会开始发送数据。

查询/设置接收数据模式

AT+CIPRECVMODE?AT+CIPRECVMODE=<mode>

简单来说是分为两种,一种主动,一种被动。

主动模式下,TCP服务器发来数据,ESP-01S马上就会通过串口打印出来。

被动模式下则是需要我们手动去获取。

因为本地的网络调试助手连接不上,无法模拟出服务器发来信息,因此只能连接上乐鑫的测试服务器,等连接久了没有发送任何消息然后断开连接之后接收断开连接的通知。

手动获取接收数据

// 单连接:(AT+CIPMUX=0)
AT+CIPRECVDATA=<len>// 多连接:(AT+CIPMUX=1)
AT+CIPRECVDATA=<link_id>,<len>

查询MAC地址和IP地址

AT+CIFSR

这个命令可以直接获取到MAC地址和IP地址。比上面的命令方便一些。

MQTT命令

重头戏来啦,没想到吧,它居然支持MQTT。

但是问题在于我们需要去烧录MQTT的AT固件,你买来ESP-01S,卖家大概率是不会给你烧好的。

所以我们需要自己去烧录。

烧录软件和固件可以去安信可官网去找。

也可以关注我的公众号“折途想要敲代码”回复关键词“ESP01S”免费下载,我会把所有资料打包好,包括串口助手,网络调试助手。

配置MQTT

AT+MQTTUSERCFG=<LinkID>,<scheme>,<"client_id">,<"username">,<"password">,<cert_key_ID>,<CA_ID>,<"path">

参数看着多,实际上很多是没得选的。比如第一个就选0,第二个就是1。倒数第二和第三都填0。

大家可以自行去找一些免费的公用的MQTT服务器,然后连接服务器用的ID一般是用自己的MAC地址,因为不能和别人重复。

另外还有一堆命令是单独配置MQTT的单项配置的,这个大家去文档里看就行,这边就不重复介绍了,用这一个总和的配置命令即可。

查询/连接MQTT服务器

AT+MQTTCONN?AT+MQTTCONN=<LinkID>,<"host">,<port>,<reconnect>

配置完之后我们就可以连接了。

断开MQTT服务器连接

AT+MQTTCLEAN=<LinkID>

参数只能填0,因为目前只支持0。

发布信息

AT+MQTTPUB=<LinkID>,<"topic">,<"data">,<qos>,<retain>AT+MQTTPUBRAW=<LinkID>,<"topic">,<length>,<qos>,<retain>

发布信息分为两种,第一种是发布字符串信息,第二种是发布二进制信息。

只是命令名字不一样而已,参数是一样的。

ESP-01S一个显著的缺点就是MQTT发布是数据长度受限,不过也是够我们正常使用的。

通过电脑端的MQTT客户端,发现可以正常接收到来自ESP-01S发布的信息。

订阅&取消订阅主题

AT+MQTTSUB=<LinkID>,<"topic">,<qos>AT+MQTTUNSUB=<LinkID>,<"topic">

订阅和取消订阅相比,除了命令名字不一样,订阅还多一个参数,那就是指定订阅的主题的等级,一般就是0或者1。

当我们收到来自订阅的主题的信息时,ESP-01S会通过串口打印出来。就不像之前TCP那样可以选择是主动接收还是被动接收了。

可以发现,我们的ESP-01S可以正常接收订阅的主题的信息。

收到数据后串口打印的数据格式为“+MQTTSUBRECV:0,主题名,数据长度,数据”

结尾

那么差不多到这边就结束啦。

相信通过上面这堆命令的介绍,各位小伙伴应该都可以使用ESP-01S了。

上面我是拿串口助手来进行实验的,大家在实际项目中只需要把单片机对ESP-01S进行串口通信即可实现一样的效果。

还有一点就是ESP-01S的供电问题,最好就是听官方文档的,拿俩干电池来供电。

另外文中涉及的所有资料,包括串口助手,MQTT固件,固件烧录软件,MQTT客户端软件等,我都已经打包好了。大家可以关注我的公众“折途想要敲代码”,回复关键词“ESP01S”即可免费下载。

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

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

相关文章

手把手教你用 spacy3 训练中文NER

文章目录 模型文件下载训练模型准备数据转化成 doc_bin 格式模型训练配置生成初始配置补全完整配置 开始训练 测试模型参考文献 模型文件下载 https://github.com/explosion/spacy-models/releases?qzh&expandedtrue 简单测试一下ner效果&#xff0c;发现根本不能用 训…

Maven:继承和聚合

Maven高级 分模块设计和开发 如果在我们自己的项目中全部功能在同一个项目中开发,在其他项目中想要使用我们封装的组件和工具类并不方便 不方便项目的维护和管理 项目中的通用组件难以复用 所以我们需要使用分模块设计 分模块设计 在项目设计阶段,可以将大的项目拆分成若…

物联网杀虫灯—新型的环保杀虫设备

型号推荐&#xff1a;云境天合TH-FD2S】物联网杀虫灯是一种新型环保杀虫设备&#xff0c;其中风吸式太阳能杀虫灯作为其一种特殊类型&#xff0c;展现了独特的工作原理和优势。 风吸式太阳能杀虫灯以太阳能电池板为电源&#xff0c;白天储存电源&#xff0c;晚上为杀虫灯提供电…

spsr 的恢复出错,导致 thumb 指令集的 it 条件运行指令运行异常,清晰的调试思路帮助快速解决问题

记一次调试过程 这是一个在 arm 架构上的 RTOS 上的调试过程。问题现象为使用 thumb 指令集的 libgcc 库的情况下&#xff0c;浮点运算随机出错。经过一番追踪调试&#xff0c;逐步缩小问题范围&#xff0c;最后定位问题&#xff0c;成功解决。 场景 在某款的国产 RTOS 上&a…

使用Flask构建POST请求的Web应用

文章目录 准备工作创建路由处理POST请求创建表单页面运行应用结论 在Web开发中&#xff0c;处理POST请求是一项常见任务&#xff0c;特别是在构建表单提交、用户注册和数据提交等功能时。Flask是一个简单而强大的Python Web框架&#xff0c;它提供了方便的工具来处理HTTP请求&a…

Spring编程使用DDD的小把戏

场景 现在流行充血领域层&#xff0c;在原本只存储对象的java类中&#xff0c;增加一些方法去替代原本写在service层的crud&#xff0c; 但是例如service这种一般都是托管给spring的&#xff0c;我们使用的ORM也都托管给spring&#xff0c;这样方便在service层调用mybatis的m…

数据结构绪论

1.数据&#xff1a;是客观事物的符号表示&#xff0c;是一切能够输入到计算机中&#xff0c;并被计算机处理的符号的总称。 数据元素&#xff1a;数据的基本单位。 数据项&#xff1a;是数据元素中独立的&#xff0c;最小的单位。 数据对象&#xff1a;是性质相同的数据元素…

OSTE-Web-Log-Analyzer:基于Python的Web服务器日志自动化分析工具

关于OSTE-Web-Log-Analyzer OSTE-Web-Log-Analyzer是一款功能强大的Web服务器日志自动化分析工具&#xff0c;该工具专为安全研究人员设计&#xff0c;能够使用Python Web日志分析工具&#xff08;Python Web Log Analyzer&#xff09;帮助广大研究人员以自动化的形式实现Web服…

云动态摘要 2024-05-12

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]即刻畅享自研SaaS产品 腾讯云 2024-04-25 涵盖办公协同、营销拓客、上云安全保障、数据分析处理等多场景 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

Linux学习笔记7---仿STM32自建寄存器库

为了开发方便&#xff0c;ST 官方为 STM32F103 编写了一个叫做 stm32f10x.h 的文件&#xff0c;在这个文件里面定义了 STM32F103 所有外设寄存器。而有些芯片是没有这种寄存器库的&#xff0c;在没有的情况下要学会自己建立一个寄存器库。NXP 官方并没有为 I.MX6UL 编写类似 st…

Linux与windows网络管理

文章目录 一、TCP/IP1.1、TCP/IP概念TCP/IP是什么TCP/IP的作用TCP/IP的特点TCP/IP的工作原理 1.2、TCP/IP网络发展史1.3、OSI网络模型1.4、TCP/IP网络模型1.5、linux中配置网络网络配置文件位置DNS配置文件主机名配置文件常用网络查看命令 1.6、windows中配置网络CMD中网络常用…

springboot中mybatisplus注意事项

使用代码生成工具CodeGenerator 需要修改的内容 dsc.setUsername(“root”); mysql账号dsc.setPassword(“root”); mysql密码strategy.setInclude(“crm_edu”); 表名pc.setModuleName(“eduservice”); //模块名 package com.test.demo;import com.baomidou.mybatisplus.a…

Flink checkpoint 源码分析- Checkpoint snapshot 处理流程

背景 在上一篇博客中我们分析了代码中barrier的是如何流动传递的。Flink checkpoint 源码分析- Checkpoint barrier 传递源码分析-CSDN博客 最后跟踪到了代码org.apache.flink.streaming.runtime.io.checkpointing.CheckpointedInputGate#handleEvent 现在我们接着跟踪相应…

面向电商家居行业3D室内场景合成中的空间感知

本文主要介绍了3D场景合成技术在电商领域&#xff0c;尤其是家居家装行业的应用。它解释了如何使用3D场景合成创建逼真的室内设计&#xff0c;让消费者能够交互式地查看和体验产品&#xff0c;提高购物的趣味性和效率。文章提到了两种主要的3D室内场景生成算法&#xff1a;传统…

Electron | 桌面应用的开发神器

初探 Electron 教程将介绍 Electron 打包应用的全过程&#xff0c;从本地测试&#xff0c;打包&#xff0c;到 GitHub 自动化。讲解 Electron Forge 和 Electron Builder 的用法&#xff0c;以及如何在 GitHub Actions 中自动化生成和发布应用。 官方资源 Electron Document…

Vue.js【路由】

初识路由 提到路由&#xff08;Route&#xff09;&#xff0c;一般我们会联想到网络中常见的路由器&#xff08;Router&#xff09;&#xff0c;那么路由和路由器之间有什么关联呢&#xff1f;路由是指路由器从一个接口接收到数据&#xff0c;根据数据的目的地址将数据定向传送…

Linux开发--Linux内核开发移植

Linux内核开发移植 Linux内核版本变迁及其获得 Linux是最受欢迎的自由电脑操作系统内核&#xff0c; 是一个用C语言写成&#xff0c; 并且符合POSIX标准的类Unix操作系统 Linux是由芬兰黑客Linus Torvalds开发的&#xff0c; 目的是尝试在英特尔x86架构上提供自由免费的类Un…

IDEA及Maven配置代理及Maven中央仓库配置详解

一、配置代理 首先&#xff0c;需要本地开启代理入口&#xff0c;如图。 这个跟你使用代理软件有关。像我使用的是qv2ray。 其次&#xff0c;idea配置代理&#xff0c;如图。 1.1 idea配置代理 打开Settings&#xff0c;如图 1.2 maven配置代理 maven配置代理&#xff0c;修…

[单机]完美国际_V155_GM工具_VM虚拟机

[端游] 完美国际单机版V155一键端PC电脑网络游戏完美世界幻海凌云家园 本教程仅限学习使用&#xff0c;禁止商用&#xff0c;一切后果与本人无关&#xff0c;此声明具有法律效应&#xff01;&#xff01;&#xff01;&#xff01; 教程是本人亲自搭建成功的&#xff0c;绝对是…

易图讯三维电子沙盘-大数据处理服务

易图讯科技10名高级大数据工程师&#xff0c;高效、快速进行POI、DEM、高清卫星影像、地形地貌、路网、矢量地图等海量大数据处理服务。 免费专业提供POI、AOI、DEM、高清卫星影像、地形地貌、路网、矢量地图等海量大数据处理服务。 1年更新2次POI、高清卫星影像。