news 2026/6/24 23:32:33

TM32F103与ESP8266联网实战:搭建简易物联网终端S

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TM32F103与ESP8266联网实战:搭建简易物联网终端S

文章目录

    • 摘要
    • 一、项目概述
    • 二、开发环境搭建
      • 硬件清单
      • 软件安装步骤
    • 三、硬件连接
    • 四、ESP8266固件配置
      • AT指令测试代码
    • 五、STM32程序开发
      • 核心代码结构
      • DMA环形缓冲区实现
      • AT指令状态机
    • 六、系统集成测试
      • MQTT连接代码
      • 测试结果
    • 七、典型问题排查
      • 常见故障表
    • 完整技术图谱

摘要

本文详细介绍基于STM32F103与ESP8266的物联网终端开发全流程,包含硬件电路设计、AT指令解析、TCP协议栈实现及云端对接,通过20+代码示例与5个关键流程图,助你快速构建可量产级物联网设备。


一、项目概述

本教程实现可通过手机APP控制的物联网终端,核心架构:

UART
WiFi
STM32F103
ESP8266
云平台
手机APP

二、开发环境搭建

硬件清单

组件型号数量
MCUSTM32F103C8T61
WiFi模块ESP8266-01S1
电平转换TXS0108E1
电源模块AMS1117-3.32

软件安装步骤

  1. Keil MDK安装流程:
    choco install keil-mdk
  2. ST-Link驱动检测:
    lsusb|grepST-Link

三、硬件连接

电路设计要点:

ESP8266侧
5V
5V
TXS0108_B1
ESP_RX
ESP_TX
TXS0108_B2
STM32侧
3.3V
3.3V
TXS0108_A1
USART2_TX
USART2_RX
TXS0108_A2

四、ESP8266固件配置

AT指令测试代码

创建esp_at_tester.c

// 发送AT指令并等待响应ESP_StatussendATCommand(constchar*cmd,uint32_ttimeout){HAL_UART_Transmit(&huart2,(uint8_t*)cmd,strlen(cmd),1000);uint8_tbuffer[128]={0};returnwaitResponse("OK",buffer,timeout);}

常用指令序列:

STM32ESP8266AT+CWMODE=1OKAT+CWJAP="SSID","PWD"WIFI CONNECTEDSTM32ESP8266

五、STM32程序开发

核心代码结构

创建文件:

  • main.c:系统主循环
  • esp8266_driver.c:AT指令引擎
  • network_protocol.c:数据封包

DMA环形缓冲区实现

usart_dma.c关键代码:

#defineRX_BUF_SIZE512typedefstruct{uint8_tbuffer[RX_BUF_SIZE];volatileuint32_thead;volatileuint32_ttail;}RingBuffer;// DMA中断接收回调voidHAL_UART_RxCpltCallback(UART_HandleTypeDef*huart){ringbuf.buffer[ringbuf.head]=rx_byte;ringbuf.head=(ringbuf.head+1)%RX_BUF_SIZE;}

AT指令状态机

IDLE
CMD_SENT:
发送指令
CMD_SENT
WAIT_RESP:
启动定时器
WAIT_RESP
SUCCESS:
收到OK
ERROR:
收到ERROR或超时
SUCCESS
ERROR
RETRY:
重试计数<3

六、系统集成测试

MQTT连接代码

mqtt_client.c

voidconnectToMQTT(){charcmd[128];sprintf(cmd,"AT+MQTTUSERCFG=0,1,\"clientID\",\"user\",\"pass\",0,0,\"\"");sendATCommand(cmd,2000);sprintf(cmd,"AT+MQTTCONN=0,\"%s\",%d,1",MQTT_BROKER,1883);sendATCommand(cmd,5000);}

测试结果

测试项结果延迟
WiFi连接成功1.2s
TCP连接成功0.8s
数据上传成功25ms

七、典型问题排查

常见故障表

现象原因解决方案
AT无响应波特率不匹配统一为115200bps
频繁断线电源干扰增加220uF电容
数据错误未启用流控开启RTS/CTS

完整技术图谱

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 6:00:05

39、Linux Shell 高级特性与技巧解析

Linux Shell 高级特性与技巧解析 1. 数组相关操作 在处理数组时,有时需要对数组元素的输出进行排序。由于数组元素扩展后的结果通常是无序的,所以可以将循环的整个输出通过管道传递给 sort 命令来实现排序。另外,使用 ${!array[@]} 扩展可以得到数组索引列表,而不是数…

作者头像 李华
网站建设 2026/6/24 13:42:06

Java设计模式系列 - 基本概念

基本思想设计模式是软件开发中经过反复验证的、解决特定问题的优秀解决方案模板。在Java开发中&#xff0c;设计模式不仅是一种编程技巧&#xff0c;更是提高代码质量、可维护性和可扩展性的重要工具。使用设计模式的主要目的是为了重用代码、让代码更容易被他人理解、保证代码…

作者头像 李华
网站建设 2026/6/23 16:20:15

非专业也能看懂的AI大模型工作原理!(非常详细)从零基础到精通,一篇就够了!

本文全面介绍AI大语言模型工作流程&#xff0c;从文本输入预处理到输出生成全过程。涵盖分词嵌入、Transformer架构、自注意力机制、位置编码及长文本外推等技术&#xff0c;并结合DeepSeek V3实例解析模型如何将语言转换为数学矩阵并生成回答。同时提供丰富的工程实践指导&…

作者头像 李华
网站建设 2026/6/24 21:09:39

前端锚点定位,零基础入门到精通,收藏这篇就够了

一 背景知识: 1.1 #号的作用 #代表网页中的一个位置。其右面的字符&#xff0c;就是该位置的标识符。比如&#xff0c;http://www.example.com/index.html#print 就代表网页index.html的print位置。浏览器读取这个URL后&#xff0c;会自动将print位置滚动至可视区域。 为网页…

作者头像 李华
网站建设 2026/6/24 22:02:57

AI应用架构师避坑指南:虚拟协作架构中的依赖问题

AI应用架构师避坑指南:虚拟协作架构中的依赖问题——从“木桶效应”到“弹性网络”的进化之路 关键词 虚拟协作架构、依赖管理、服务耦合、故障隔离、弹性设计、AI应用架构、断路器模式 摘要 在AI应用规模化落地的今天,虚拟协作架构(由多个分布式服务/模块协同完成复杂任…

作者头像 李华
网站建设 2026/6/24 11:36:34

公司局域网访问外网的原理

公司局域网访问外网的原理 在现代企业环境中&#xff0c;如何让内部员工既能访问公司内部资源&#xff0c;又能安全地访问互联网是一个重要的网络架构问题。本文将以通俗易懂的方式介绍公司局域网访问外网的基本原理和常见配置方式。 基本网络架构 大多数公司的网络架构通常…

作者头像 李华