一篇文章教会你ESP8266串口WIFI无线模块实现物联网无线收发,附STM32代码示例
目录
一、ESP-01S无线模块:
(1)特点:
(2)管脚定义:
(3)启动模式:
二、ESP-01S出厂固件烧录:
(1)引脚接线:
(2)烧录工具:
(3)固件库:
(4)烧录方法:
三、ESP-01S AT指令:
(1)串口配置:
(2)启动信息:
(3)基础AT指令:
四、TCP 通信测试:
(1)TCP Server 端配置:
(2)TCP Client 端配置:
(3)测试模式下演示:
五、实际应用:
(1)物联网云平台配置:
(2)设备端配置:
(3)扩展:
编辑 六、STM32代码下载:
一、ESP-01S无线模块:
ESP-01S是一款由安信可科技有限公司生产的低成本、高性能的Wi-Fi模块,基于ESP8266芯片,广泛用于物联网和嵌入式系统。
(1)特点:
核心处理器:ESP-01S的核心是ESP8266芯片,它集成了Tensilica L106超低功耗32位微型MCU,支持80 MHz和160 MHz的主频,并支持RTOS。
Wi-Fi功能:该模块支持标准的IEEE802.11 b/g/n协议和完整的TCP/IP协议栈,允许用户为现有设备添加联网功能或构建独立的网络控制器。
集成度:ESP-01S集成了Wi-Fi MAC/BB/RF/PA/LNA,并内置了1路10 bit高精度ADC,支持UART/GPIO/PWM接口。
封装和尺寸:ESP-01S采用DIP-8封装,尺寸为24.7mm*14.4mm,具有板载PCB天线。
功耗:支持多种休眠模式,待机功耗低至1.0mW,具有出色的节能特性。
串口速率:最高可达4Mbps,内嵌Lwip协议栈,支持STA/AP/STA+AP工作模式。
一键配网:支持安卓、iOS的Smart Config(APP)/AirKiss(微信)一键配网功能。
AT指令:通用AT指令可快速上手,支持二次开发,集成了Windows、Linux开发环境。
应用场景:ESP-01S适用于物联网设备、嵌入式系统、教育与学习等多个领域,可以用于智能家居系统、环境监测设备等。
认证信息:产品符合RoHS环保认证。
(2)管脚定义:
ESP-01S | 引脚名称 | 备注 |
1 | GND | GND |
2 | IO2 | U1_TXD,I2C_SDA, I2SO_WS |
3 | I00 | GPIO0,HSPI_MISO,I2SI_DATA |
4 | RXD | GPIO3,I2SO_DATA |
5 | TXD | GPIO1 |
6 | EN | 芯片使能端,高电平有效 |
7 | RST | 复位引脚,低电平有效 |
8 | VCC | 模组供电引脚,电压范围 3.0~3.6V |
(3)启动模式:
ESP系列模组启动模式说明:
模式 | CH_DP (EN) | RST | GPIO15 | GPIO0 | GPIO2 | TXD0 |
下载模式 | 高 | 高 | 低 | 低 | 高 | 高 |
运行模式 | 高 | 高 | 低 | 高 | 高 | 高 |
测试模式 | 高 | 高 | —— | —— | —— | 低 |
二、ESP-01S出厂固件烧录:
(1)引脚接线:
模块引脚 | USB转TTL |
3.3V | 3.3V |
RST | 3.3V |
EN | 3.3V |
OI2 | 3.3V |
GND | GND |
IO0 | GND |
TX | RX |
RX | TX |
使用ESP-01S模块时,不建议使用USB转TTL模块的3.3V或5V进行供电,主要原因有:
供电电流不足:ESP-01S模块的工作电流可能超过USB转TTL模块所能提供的电流。USB转TTL模块通常设计用于驱动低功耗的串口设备,而ESP-01S在工作时,尤其是启动和通信过程中,可能需要较大的电流,这可能导致供电不稳定或模块无法正常工作。
电压不稳定:USB转TTL模块提供的电压可能不稳定,这对于需要稳定电压工作的ESP-01S模块来说可能会导致运行不稳定或损坏模块。
保护模块:使用独立的电源,如两节干电池或经过LDO(Low Dropout Regulator)转换后的3.3V电源,可以更好地保护ESP-01S模块,避免由于供电问题导致的损坏。
避免干扰:使用独立的电源还可以减少由于USB转TTL模块可能引入的电磁干扰,这对于保持ESP-01S模块的稳定运行也是有益的。
(2)烧录工具:
通过网盘分享的文件:flash_download_tools_v3.6.4
链接: https://pan.baidu.com/s/1FrSQeS002O7HSjZuCfYWLQ?pwd=xs7h 提取码: xs7h
(3)固件库:
通过网盘分享的文件:ESP8266-01S
链接: https://pan.baidu.com/s/1NHd2cw8aVMOjade3l9UAeg?pwd=git3 提取码: git3
(4)烧录方法:
第一步:打开ESPFlashDownloadTool_v3.6.4烧录工具,选择ESP8266 DownloadTool。
第二步: 找到固件库Ai-Thinker_ESP8266_DOUT_8Mbit_v1.5.4.1-a_20171130.bit对应的文件地址,选择相应的参数,找到自己TTL所连串口,波特率选择115200(ESP8266 系列模组默认波特率为115200)。
第三步:点击START开始烧录出厂固件。
如果出现长时间,等待模块上电,迟迟不进入下载中,并下载失败。可以在等待上电期间,将RST脚轻触GND脚,重启ESP-01S,复位上电。
三、ESP-01S AT指令:
(1)串口配置:
端口 | UART0 | 波特率 | 115200 | 校验位 | None |
数据位 | 8 | 停止位 | 1 | HEX | 否 |
(2)启动信息:
(3)基础AT指令:
AT指令 | 说明 | 示例 |
AT | 测试 AT 是否 OK | AT OK |
AT+GMR | 返回固件版本信息 | AT+GMR SDK version:1.5.4.1(39cb9a32) Ai-Thinker Technology Co. Ltd. Dec 2 2016 14:21:16 OK |
AT+RST | 软重启模组 | AT+RST OK |
AT+RESTORE | 重置模组为出厂设置 | AT+RESTORE OK |
四、TCP 通信测试:
TCP Server 为 AP 模式,TCP Client 为 Station 模式。
(1)TCP Server 端配置:
步骤 | 示例 | 说明 |
第一步 | Ai-Thinker Technology Co. Ltd.
| 模块是否准备就绪 (上电后会显示) |
第二步 | AT+CWMODE=2 OK | 配置为 AP 模式 |
第三步 | AT+CWSAP_DEF="TCP_Server","12345678",5,4
| 配置 AP 信息 |
第四步 | AT+CIFSR OK | 查询本机 IP 地址 |
第五步 | AT+CIPMUX=1 OK | 开启多链接 |
第六步 | AT+CIPSERVER=1
| 开启服务器 |
0,CONNECT | 有一个客户端连接到服务器 | |
+PD,0,10:Ai-Thinker | 接收到 10 个数据(Ai-Thinker) | |
第七步 | AT+CIPSERVER=0
| 关闭服务器 |
0,CLOSED | TCP 连接关闭 |
(2)TCP Client 端配置:
步骤 | 示例 | 说明 |
第一步 | Ai-Thinker Technology Co. Ltd.
| 模块是否准备就绪 (上电后会显示) |
第二步 | AT+CWMODE=1
| 配置为 Station 模式 |
第三步 | AT+CWJAP_DEF="TCP Server","12345678"
WIFI GOT IP
| 连接到 AP |
第四步 | AT+CIFSR +CIFSR:STAMAC,"5c:cf:7f91:8b:3b" OK | 查询本机 IP 地址 |
第五步 | AT+CIPMUX=0
| 开启单链接 |
第六步 | AT+CIPSTART="TCP","192.168.4.1",333
| 连接到 TCP 服务器 |
第七步 | AT+CIPSEND=10
| 发送 10 个字节的数据到服务器端 |
> | 出现该符号后串口发送 Ai-Thinker | |
Recv 10 bytes | 串口接收到数据 | |
SEND OK | 发送成功 | |
CLOSED | TCP 连接被关闭 |
(3)测试模式下演示:
引脚接线:
模块引脚 | 接线 |
3.3V | 3.3V |
RST | 3.3V/悬空 |
EN | 3.3V |
OI2 | 悬空 |
GND | GND |
IO0 | 悬空 |
TX | RX(TTL) |
RX | TX(TTL) |
基础AT指令测试:
TCP Server 端配置:
TCP Client 端配置:
连接手机热点,连接到物联网云平台。
打开手机热点,热点名称:AP 密码:88888888 频段:2.4GHz。
名称和密码可自行设置,频段要设置为2.4GHz。
向服务器发送数据:
发送序列号9U6897255YW63AH6,连接到物联网云平台设备端。
打开物联网云平台设备端,查看设备是否正常连接。
根据自定义TCP数据协议发送数据。
打开物联网云平台设备端,查看数据是否传输正常。
五、实际应用:
(1)物联网云平台配置:
打开TLINK物联网平台,登录或注册账号,并进入控制台。
找到项目栏,如下:
监控中心:可以监控设备情况,如查看传感器数据,以及数据下发到设备端等等。
设备管理:可以新增设备组和新增传感器等等。
设备地图:可以查看当前设备所处的位置。
触发器:可以设置传感器的触发条件,如温度高于30摄氏度报警。
进入设备管理界面,新建设备组,并命名设备组名称。
点击添加设备,设置设备名称,链接协议及传感器数量。
选择设备位置后,创建新设备,点击设置连接,配置TCP协议标签。
如图配置好通信协议后,能接收到的数据包为#数据1,数据2#,数据1,数据2按传感器的序号,给到对应的传感器。
在设备连接界面可以看到,设备IP:tcp.tlink.io,端口号:8647,序列号:7S7BJ2E4GS37174X
使用ESP-01S连接到该设备服务器端。
注意事项,连接到服务器端后发送的第一条数据要为设备的序列号:7S7BJ2E4GS37174X,使之连接到该设备。
发送序列号后将连接到对应的设备。
之后发送数据, 使用测试数据#25.10,25.20#。
至此, 物联网云平台配置基本完成,后续可增加和修改相应配置。
(2)设备端配置:
设备端配置采用STM32F103C8T6最小系统板,温湿度采集使用DHT11模块,无线模块使用ESP-01S的测试模式,使用串口1(PA9,PA10)进行数据传输。
引脚接线:
引脚 | 接线 |
ESP-01S_3V3 | 3.3V |
ESP-01S_EN | 3.3V |
ESP-01S_GND | GND |
ESP-01S_RX | PA9 |
ESP-01S_TX | PA10 |
DHT11_VCC | 5V |
DHT11_DAT | PA5 |
DHT11_GND | GND |
ESP-01S_RST | 3.3V/悬空 |
DHT11数据采集教程:
一篇文章教会你DHT11读取温湿度,附STM32代码示例
串口使用教程:
一篇文章教会你串口通信原理,附STM32代码示例
ESP-01S初始化连接到TCP服务器:
//ESP-01S初始化连接到TCP服务器
void Tcp_Init(void){// printf("AT+RESTORE\r\n"); //重置模块为出厂设置// Delay_ms(7000);printf("AT+CWMODE=1\r\n"); //配置为Station模式Delay_ms(3000);printf("AT+CWJAP_DEF=\"AP\",\"88888888\"\r\n"); //连接到APDelay_ms(10000);printf("AT+CIFSR\r\n"); //查询主机IP地址Delay_ms(3000);printf("AT+CIPMUX=0\r\n"); //开启单链接Delay_ms(3000);printf("AT+CIPSTART=\"TCP\",\"tcp.tlink.io\",8647\r\n"); //连接到TCP服务器Delay_ms(3000);printf("AT+CIPSEND=16\r\n"); //发送16个字节到TCP服务器Delay_ms(3000);printf("7S7BJ2E4GS37174X\r\n"); //发送设备序列号,连接设备}
注意,ESP-01S在连接过热点AP之后,若下次上电时为Station模式,热点名称密码若未更改,会自动连接先前连接过的热点AP。
连接TLINK物联网云平台:
//连接TLINK物联网云平台
void TCP_Connect(void){printf("AT+CIPSTART=\"TCP\",\"tcp.tlink.io\",8647\r\n"); //连接到TCP服务器Delay_ms(3000);printf("AT+CIPSEND=16\r\n"); //发送16个字节到TCP服务器Delay_ms(3000);printf("7S7BJ2E4GS37174X\r\n"); //发送设备序列号,连接设备Delay_ms(3000);
}
TCP协议向TLINK物联网云平台发送数据:
//TCP协议向TLINK物联网云平台发送数据
void Tcp_Data_Send(void){printf("AT+CIPSEND=13\r\n");Delay_ms(3000);printf("#%.2f,%.2f#\r\n", Temp, Humi);Delay_ms(2000);
}
加适当的延时等待上一条指令完成。
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "uart.h"
#include "Tcp.h"
#include "DHT11.h"int main(void)
{Uart_Init(115200);DHT11_Init();//Tcp_Init(); //初始化连接TCP_Connect(); //tcp连接Delay_ms(1000);while (1){DH11_Data();Tcp_Data_Send();}
}
可以将ESP-01S_TX引脚接在TTL上的RX脚上,串口助手查看数据发送情况。
TLINK物联网云平台查看数据传输情况。
(3)扩展:
添加触发器触发条件。
TLINK提供了多种报警方式,如短信,语音,微信,邮箱。其中微信与邮箱可免费发送报警信息。
需在个人中心添加联系人。
向DHT11吹气,测试触发器报警情况。
TLINK也可下发数据给设备。
接收到的数据为+IPD,6:123456,即,数据长度为6,内容为123456。
手机APP上实时查看设备状态,变化曲线,历史记录。
六、STM32代码下载:
通过网盘分享的文件:29- ESP-01S物联网
链接: https://pan.baidu.com/s/1P3uguImoLmPeBM0wVdAYsQ?pwd=cfej 提取码: cfej
相关文章:

一篇文章教会你ESP8266串口WIFI无线模块实现物联网无线收发,附STM32代码示例
目录 一、ESP-01S无线模块: (1)特点: (2)管脚定义: (3)启动模式: 二、ESP-01S出厂固件烧录: (1)引脚接线: ࿰…...

算法-基础算法
一、枚举算法 也称为穷举算法,指的是按照问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,将它们逐一与目标状态进行比较以得出满足问题要求的解。在列举的过程中,既不能遗漏也不能重复 1. 问题 …...
特种设备作业人员-G3锅炉水处理如何备考学习?
备考特种设备作业人员 - G3 锅炉水处理可以从了解考试信息、掌握基础知识、选择学习资料、制定学习计划等多个方面入手,以下是具体的建议: 1.了解考试信息 *明确考试大纲:详细了解 G3 锅炉水处理考试大纲的要求,明确考试的…...

Reactor模式详解:高并发场景下的事件驱动架构
文章目录 前言一、Reactor模式核心思想二、工作流程详解2.1 服务初始化阶段2.2 主事件循环2.3 子Reactor注册流程2.4 IO事件处理时序2.5 关键设计要点 三、关键实现技术四、实际应用案例总结 前言 在现代高性能服务器开发中,如何高效处理成千上万的并发连接是一个关…...
UniApp 生产批次管理模块技术文档
UniApp 生产批次管理模块技术文档 1. 运行卡入站页面 (RunCardIn) 1.1 页面结构 <template><!-- 页面容器 --><view class"runCardIn" :style"{ paddingTop: padding }"><!-- 页头组件 --><pageHeader :title"$t(MENU:…...

项目日记 -Qt音乐播放器 -设置任务栏图标与托盘图标
博客主页:【夜泉_ly】 本文专栏:【Qt音乐播放器】 欢迎点赞👍收藏⭐关注❤️ 代码仓库:MusicPlayer v1.0版视频展示:Qt -音乐播放器(仿网易云)V1.0 前言 本文的目标: 一是设置任务栏的图标, 二…...

国产 BIM 软件万翼斗拱的技术突破与现实差距 —— 在创新与迭代中寻找破局之路
万翼斗拱在国产BIM领域迈出重要一步,凭借二三维一体化、参数化建模及AI辅助设计等功能形成差异化竞争力,在住宅设计场景中展现效率优势,但与国际主流软件相比,在功能完整性、性能稳定性和生态成熟度上仍有显著差距,需通…...
记录算法笔记(2025.5.29)最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…...
Android SurfaceFlinger核心工作机制
SurfaceFlinger 核心工作机制解析 1. 启动入口与初始化流程 (1) 进程启动入口 二进制文件:/system/bin/surfaceflinger 源码路径:frameworks/native/services/surfaceflinger/main_surfaceflinger.cppint main(int, char**) {// 1. 初始化进程配置sig…...

Golang|etcd服务注册与发现 策略模式
etcd 是一个开源的 分布式键值存储系统(Key-Value Store),主要用于配置共享和服务发现。 ETCD是一个键值(KV)数据库,类似于Redis,支持分布式集群。ETCD也可以看作是一个分布式文件系统ÿ…...
深度解析UniApp盲盒系统开发:从源码架构到多端部署全流程
一、正版盲盒系统的技术选型与源码设计 跨平台开发框架的核心配置 UniApp多端适配方案 环境搭建:全局安装vue/cli与npm install -g dcloudio/uni-cli,通过uni -V验证版本(需≥3.0)。多端编译命令: # 编译微…...
STM32的OLED显示程序亲测可用:适用于多种场景的稳定显示解决方案
STM32的OLED显示程序亲测可用:适用于多种场景的稳定显示解决方案 【下载地址】STM32的OLED显示程序亲测可用 这是一套专为STM32设计的OLED显示程序,经过实际测试,运行稳定可靠。支持多种OLED屏幕尺寸和类型,提供丰富的显示效果&am…...

【AI News | 20250529】每日AI进展
AI Repos 1、WebAgent 阿里巴巴通义实验室近日发布了WebDancer,一款旨在实现自主信息搜索的原生智能体搜索推理模型。WebDancer采用ReAct框架,通过分阶段训练范式,包括浏览数据构建、轨迹采样、监督微调和强化学习,赋予智能体自主…...

Day12 - 计算机网络 - HTTP
HTTP常用状态码及含义? 301和302区别? 301:永久性移动,请求的资源已被永久移动到新位置。服务器返回此响应时,会返回新的资源地址。302:临时性性移动,服务器从另外的地址响应资源,但…...

Linux驱动学习笔记(十)
热插拔 1.热插拔:就是带电插拔,即允许用户在不关闭系统,不切断电源的情况下拆卸或安装硬盘,板卡等设备。热插拔是内核和用户空间之间,通过调用用户空间程序实现交互来实现的,当内核发生了某种热拔插事件时…...
如何优化Elasticsearch的搜索性能?
优化 Elasticsearch 的搜索性能需要从索引设计、查询优化、硬件配置和集群调优等多方面入手。以下是系统化的优化策略和实操建议: 一、索引设计优化 1. 合理设置分片数 分片大小:单个分片建议 10-50GB(超过50GB会影响查询性能)。分片数量: 总分片数 ≤ 节点数 1000(避免…...

TI dsp FSI (快速串行接口)
简介 快速串行接口(FSI - Fast Serial Interface )模块是一种串行通信外设,能够在隔离设备之间实现可靠的高速通信。在两个没有共同电源和接地连接的电子电路必须交换信息的情况下,电气隔离设备被使用。 虽然隔离设备促进了信号通…...

责任链模式:构建灵活可扩展的请求处理体系(Java 实现详解)
一、责任链模式核心概念解析 (一)模式定义与本质 责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,其核心思想是将多个处理者对象连成一条链,并沿着这条链传递请求,直到有某…...
nlp中的频率就是权重吗
🔢 一、“频率”是什么? 在 NLP 中,**词频(frequency)**通常指的是: 某个单词或 token 在语料库中出现的次数(或比例) 举例: "The cat sat on the mat. The cat i…...
融智学“新五常”框架:五维方式的重构与协同
融智学“新五常”框架:五维方式的重构与协同 一、理论基底:从传统老五常到当代新五常的范式跃迁 邹晓辉教授提出的新五常(生活方式DBA、学习方式DBA、工作方式DBA、旅行方式DBA、娱乐方式DBA),本质是将融智学的核心原…...

wechat-003-学习笔记
1.路由跳转页面:携带的参数会出现在onlaod中的options中。 注意:原生小程序对路由传参的长度也有限制,过长会被截掉。 2.wx.setNavigationBarTitle(Object object) 动态设置当前页面的标题 3.在根目录中的app.json文件中配置 后台播放音乐的能…...

【大模型微调】魔搭社区GPU进行LLaMA-Factory微调大模型自我认知
文章概要: 本文是一篇详细的技术教程,介绍如何使用魔搭社区(ModelScope)的GPU资源来进行LLaMA-Factory的模型微调。文章分为11个主要步骤,从环境准备到最终的模型测试,系统地介绍了整个微调流程。主要内容包…...
基于MATLAB编程针对NCV检测数据去漂移任务的完整解决方案
以下为针对NCV检测数据去漂移任务的完整解决方案,基于MATLAB编程实现,结构清晰,内容详实,满足技术深度。 NCV信号尾部漂移处理与分析 1. 任务背景与目标 神经传导速度(NCV)检测信号易受环境干扰与设备漂移…...

【数据结构】哈希表的实现
文章目录 1. 哈希的介绍1.1 直接定址法1.2 哈希冲突1.3 负载因子1.4 哈希函数1.4.1 除法散列法/除留余数法1.4.2 乘法散列法1.4.3 全域散列法 1.5 处理哈希冲突1.5.1 开放地址法1.5.1.1 线性探测1.5.1.2 二次探测1.5.1.3 双重探测1.5.1.4 三种探测方法对比 1.6.3 链地址法 2. 哈…...

永磁同步电机控制算法--基于电磁转矩反馈补偿的新型IP调节器
一、基本原理 先给出IP速度控制器还是PI速度控制器的传递函数: PI调节器 IP调节器 从IP速度控制器还是PI速度控制器的传递函数可以看出,系统的抗负载转矩扰动能力相同,因此虽然采用IP速度控制器改善了转速环的超调问题,但仍然需要通过其他途…...

RabbitMQ 应用 - SpringBoot
以下介绍的是基于 SpringBoot 的 RabbitMQ 开发介绍 Spring Spring AMQP RabbitMQ RabbitMQ tutorial - "Hello World!" | RabbitMQ 工程搭建步骤: 1.引入依赖 2.编写 yml 配置,配置基本信息 3.编写生产者代码 4.编写消费者代码 定义监听类,使用 RabbitListener…...

基于递归思想的系统架构图自动化生成实践
文章目录 一、核心思想解析二、关键技术实现1. 动态布局算法2. 样式规范集成3. MCP服务封装三、典型应用场景四、最佳实践建议五、扩展方向一、核心思想解析 本系统通过递归算法实现了Markdown层级结构到PPTX架构图的自动转换,其核心设计思想包含两个维度: 数据结构递归:将…...

OpenGL Chan视频学习-9 Index Buffers inOpenGL
bilibili视频链接: 【最好的OpenGL教程之一】https://www.bilibili.com/video/BV1MJ411u7Bc?p5&vd_source44b77bde056381262ee55e448b9b1973 函数网站: docs.gl 说明: 1.之后就不再单独整理网站具体函数了,网站直接翻译会…...
《基于AIGC的智能化多栈开发新模式》研究报告重磅发布! ——AI重塑软件工程,多栈开发引领未来
在人工智能技术迅猛发展的浪潮下,软件开发领域正经历一场前所未有的范式革命。在此背景下,由贝壳找房(北京)科技有限公司、中国信息通信研究院云计算与大数据研究所联合编写,阿里、腾讯、北京大学、南京大学、同济大学…...
热门大型语言模型(LLM)应用开发框架
我们来深入探索这些强大的大型语言模型(LLM)应用开发框架,并且我会尝试用文本形式描述一些核心的流程图,帮助您更好地理解它们的工作机制。由于我无法直接生成图片,我会用文字清晰地描述流程图的各个步骤和连接。 Lang…...