基于STM32的物联网环境监测与远程控制系统实训套件-淘宝网

任务1 硬件设备连接OneNET MQTT服务器

一、任务描述

本任务基于STM32F103C8T6 最小系统板与ESP-01S WiFi模块,在已连接路由器 WiFi 的基础上,通过MQTT 协议与OneNET 物联网平台建立通信连接。

二、任务目标

1. 知识目标

1)深入理解ESP-01S WiFi 模块的硬件结构、通信方式、工作模式。

2)掌握串口 UART 异步通信原理、电平标准、数据格式。

3)熟练掌握ESP-01S 基础 AT 指令集。

4)理解 **STA 模式(客户端模式)** 连接路由器的工作流程。

2. 能力目标

1)能够完成 ESP-01S 硬件接线:TX→PA3,RX→PA2,VCC→3.3V,GND→GND。

2)能够在 STM32CubeMX 中正确配置USART2。

3)能够编写串口发送 AT 指令、接收模块响应数据的程序。

4)能够实现ESP-01S 成功连接路由器 WiFi并获取 IP。

3. 素质目标

1)培养串口通信严谨、AT 指令规范的开发习惯。

2)提升硬件接线、串口调试、指令收发、问题排查能力。

3)养成先测试模块 → 再设置模式 → 最后连接 WiFi的工程流程。

三、任务重难点

1. 任务重点

1)USART2 配置:波特率 115200、8N1、PA2-TX、PA3-RX。

2)TX/RX 交叉连接。

3)ESP-01S 必须 3.3V 供电。

4)核心 AT 指令:测试、设置 STA 模式、连接 WiFi、查询 IP。

2. 任务难点

1)供电不足导致模块不响应、乱码、重启。

2)串口数据收发不完整、指令缺少\r\n。

3)WiFi 名称 / 密码错误、信号弱导致连接失败。

4)串口调试与数据解析。

四、知识准备

1.ESP-01S WiFi模块介绍

ESP-01S是乐鑫公司推出的一款低成本、高性能的 WiFi 模块,它基于 ESP8266 芯片,具有体积小、功耗低、易于集成等特点,广泛应用于物联网(IoT)项目中。

  • 芯片:ESP8266
  • 接口:UART 串口
  • 通信方式:AT 指令集
  • 工作电压:3.3V(严禁 5V)
  • 模式:STA 模式(连接路由器)
  • 默认波特率:115200

2. 串口 UART 通信知识(STM32 ↔ESP-01S)

本任务使用 USART2

PA2 = USART2_TX (发送)

PA3 = USART2_RX (接收)

串口必须配置:

  • 波特率:115200
  • 数据位:8
  • 停止位:1
  • 校验位:无
  • 流控:无

注意:TX 与 RX 必须交叉连接!

STM32_TX(PA2) → ESP_RX

STM32_RX(PA3) → ESP_TX

3. AT 指令知识(连接 WiFi 核心)

所有 AT 指令必须以 \r\n 结尾。

1)AT

功能:测试模块是否正常

回复:OK

2)AT+CWMODE=1

功能:设置为 STA 模式(客户端,连接路由器)

回复:OK

  1. AT+CWJAP="SSID","PASSWORD"

功能:连接 WiFi

示例:AT+CWJAP="MyWiFi","12345678"

回复:OK 表示连接成功

4)AT+CIFSR

功能:获取模块 IP

回复:WIFI GOT IP

4.供电要求

  • ESP-01S 必须 3.3V 供电
  • 工作电流峰值较大,必须共地(GND 连在一起)
  • 供电不足会导致模块乱码、无响应、反复重启
五、硬件连接

ESP-01S模块与主控STM32F103C8T6的引脚连接如表1所示。

      表1 ESP-01S模块与主控STM32F103C8T6的引脚连接

编号

ESP-01S模块

主控STM32F103C8T6

1

VCC

3V3

2

GND

GND

3

TX

PA3(USART2_RX)

4

RX

PA2(USART2_TX)

硬件连接电路图如图1所示。

图1 硬件连接电路图

六、任务实现
任务1.1 添加onenet.c文件

1.将onenet文件夹拷贝到工程根目录。

2.在项目中添加onenet.c文件如图2所示

图2 添加onenet.c文件

3.修改onenet.c文件中的代码。

#define PROID "tsK7G227aH"  //产品ID

#define ACCESS_KEY "version=2018-10-31&res=products%2FtsK7G227aH%2Fdevices%2Fa1&et=1812532952&method=sha1&sign=nA1SYqi8zVaAjiMXpvxGhrdgang%3D" //token                  

#define DEVICE_NAME "a1" //设备名称

4.将\onenet\inc添加到Include Paths中,如图3所示。

图3 将\onenet\inc添加到Include Paths中

任务1.2 添加MqttKit.c文件

1.将MQTT文件夹拷贝到工程根目录。

2.在项目中添加MqttKit.c文件如图4所示

图4 添加MqttKit.c文件

3.将\MQTT添加到Include Paths中,如图5所示。

图5 将\onenet\inc添加到Include Paths中

任务 1.3 修改 main.c 代码

1.在/* USER CODE END Includes */前添加如下代码:

//连接onenet

#include "onenet.h"

2.在/* USER CODE END 2 */前添加如下代码:

 while(OneNet_DevLink()) //连接OneNET

HAL_Delay(1000);

任务 1.4 编译、下载、查看结果

1.点击编译按钮,编译程序。

2.点击下载按钮,下载程序。

      3.打开串口调试助手,按stm32f103c8t6主控板上的复位键,在串口调试助手中输出打印信息,如图6所示。

图6 输出打印信息

4.刷新 OneNET设备页面,设备状态由离线变为在线,如图7所示。

图7 设备在线

更多推荐