当前位置: 首页 > article >正文

stm32-wifi模块

STM32 与 ESP8266 Wi-Fi 模块资料

1. ESP8266 简介

ESP8266 是一款 低成本的 Wi-Fi 模块,可以方便地将设备连接到无线网络。它通常用于物联网(IoT)项目中,支持 TCP/IP 协议栈,能够通过 AT 指令 或者 串口通信 来与外部设备(如 STM32)进行数据交换。

2. ESP8266 的特点
  • 内置 Wi-Fi:支持 2.4 GHz Wi-Fi 网络。
  • 低功耗:在待机模式下的功耗非常低,适合电池供电的设备。
  • AT 指令集:通过串口与主机通信,使用 AT 命令 配置模块。
  • 支持连接最多 4 个客户端:ESP8266 可以作为 Wi-Fi 热点 或连接到现有的 Wi-Fi 网络
  • 支持加密:支持 WPA2 等加密协议。
  • 较高的数据传输速率:支持高达 80 Mbps 的数据传输速率。
3. STM32 与 ESP8266 连接方式

STM32 可以通过 USART(串口)与 ESP8266 模块通信。下面是如何连接的详细信息:

  • STM32 TX(PA9) —— ESP8266 RX
  • STM32 RX(PA10) —— ESP8266 TX
  • GND —— GND
  • 3.3V 电源 —— VCC(ESP8266 通常需要 3.3V 电源)

注意:ESP8266 模块不支持 5V 输入电压,务必确保使用 3.3V 电源。

4. ESP8266 AT 指令集

ESP8266 使用 AT 指令进行配置,以下是一些常用的指令:

  • AT:检查是否能与模块进行通信。
  • AT+RST:重启模块。
  • AT+CWJAP="SSID","PASSWORD":连接到 Wi-Fi 网络。
  • AT+CWMODE=1:设置为 Station 模式(连接 Wi-Fi 网络)。
  • AT+CIFSR:查看 ESP8266 模块的 IP 地址。
  • AT+CIPSTART="TCP","","":与指定的 IP 和端口建立 TCP 连接。
  • AT+CIPSEND=:发送数据到指定的端口。
5. STM32 控制 ESP8266 模块

可以通过 STM32 的 USART 发送 AT 指令来控制 ESP8266 模块。以下是简单的代码示例,展示如何通过 STM32 配置 ESP8266 模块:

#include "stm32f10x.h"

// 串口初始化函数
void USART_Init(void) {
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;

    // 使能 USART 和 GPIO 时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);

    // 配置 PA9 和 PA10 为串口 TX 和 RX
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // 配置 USART
    USART_InitStructure.USART_BaudRate = 115200;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
    USART_Init(USART1, &USART_InitStructure);
    USART_Cmd(USART1, ENABLE);
}

// 发送 AT 指令
void USART_SendData(uint8_t data) {
    while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
    USART_SendData(USART1, data);
}

// 从 USART 接收数据
uint8_t USART_ReceiveData(void) {
    while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
    return USART_ReceiveData(USART1);
}

// 发送 AT 指令示例
void ESP8266_Init(void) {
    USART_Init();
    USART_SendData('A');
    USART_SendData('T');
    USART_SendData('\r');
    USART_SendData('\n');
}

int main(void) {
    SystemInit();  // 系统初始化

    // 初始化 USART 串口通信
    ESP8266_Init();

    while (1) {
        // 在此处添加与 ESP8266 通信的代码
    }
}

6. 常见问题和调试

  1. 电源问题:确保 ESP8266 获得稳定的 3.3V 电源,如果电源不稳定,模块可能会无法正常工作。
  2. 串口配置:确保 STM32 的串口波特率与 ESP8266 的波特率一致(通常为 115200)。
  3. AT 命令调试:使用串口助手工具(如 PuttyTera Term)调试 AT 指令,查看 ESP8266 模块的响应。

ESP8266 与串口芯片的接线

ESP8266 通常通过串口通信与其他设备(如 STM32)进行连接。如果你想通过 USB 转串口芯片(如 CP2102FT232CH340)将 ESP8266 连接到电脑或者其他设备,这里是常见的接线方式:

接线说明
  1. ESP8266 与 USB 转串口芯片接线图

    • ESP8266 TX —— USB 转串口 RX(例如 FT232CP2102 的 RX 引脚)
    • ESP8266 RX —— USB 转串口 TX(例如 FT232CP2102 的 TX 引脚)
    • ESP8266 GND —— USB 转串口 GND
    • ESP8266 VCC —— USB 转串口 3.3V(注意:ESP8266 需要 3.3V 电源,不要连接到 5V)
  2. 接线示意图(以 FT232 为例):

    ESP8266 引脚FT232 引脚
    TXRX
    RXTX
    GNDGND
    VCC3.3V
连接注意事项
  1. 电压问题:ESP8266 模块工作电压为 3.3V,切记不要将其连接到 5V,否则可能会烧坏模块。
  2. 电流问题:ESP8266 在进行 Wi-Fi 传输时,可能会出现瞬时电流较大的情况。确保你使用的 USB 转串口芯片 能提供足够的电流,最好使用 3.3V 稳定的电源
  3. 串口配置:确保 串口波特率 与 ESP8266 模块一致。默认波特率通常是 115200,可以通过 AT 命令来修改。
常见 USB 转串口芯片型号
  • FT232:常见的 USB 转串口芯片,支持 3.3V 和 5V 的通信,可以用于连接 ESP8266 和电脑。
  • CP2102:也是一种常见的 USB 转串口芯片,具有类似 FT232 的功能。
  • CH340:便宜且常用的 USB 转串口芯片,适用于连接 ESP8266。

ESP8266 与串口芯片(CH340)的接线:

2. Wi-Fi 配置指令

3. TCP/IP 连接

4. 数据发送与接收

5. Wi-Fi 热点配置

6. 高级功能

  • ESP8266 引脚CH340引脚
    3V33.3v
    RST5v
    EN接单片机3.3/5v
    TXRXD
    RXTXD
    IO0GND
    IO2不接
    GND接单片机的GND

    AT模式指令配置:

    基础 AT 指令一览表

    以下是一些常见的 AT 指令,用于控制 ESP8266 模块:

    1. 基础指令
  • AT:检查 ESP8266 模块是否正常工作(回复:OK)。
  • AT+RST:重启 ESP8266 模块(回复:OK)。
  • AT+GMR:查看模块的固件版本(回复:OK)。
  • AT+CSQ:查询信号强度(返回信号强度的数值)。
  • AT+CWJAP="SSID","PASSWORD":连接 Wi-Fi 网络,SSID 为网络名称,PASSWORD 为密码(回复:OK)。
  • AT+CWMODE=1:设置 ESP8266 为 Station 模式(连接现有 Wi-Fi 网络)。
  • AT+CWMODE=2:设置 ESP8266 为 Access Point 模式(创建 Wi-Fi 热点)。
  • AT+CIFSR:查询 ESP8266 的 IP 地址(返回 IP 地址)。
  • AT+CIPSTART="TCP","","":启动 TCP 连接,连接到指定的 IP 和端口。
  • AT+CIPSEND=:准备发送数据,<length> 为数据长度。
  • AT+CIPCLOSE:关闭 TCP 连接。
  • AT+CIPSEND=4:准备发送 4 字节的数据。
  • AT+IPD:接收数据。
  • AT+CIPMUX=1:允许多个连接。
  • AT+CWSAP="SSID","PASSWORD",,:设置 ESP8266 为 Wi-Fi 热点模式,SSID 为热点名称,PASSWORD 为密码,CHANNEL 为信道(0-13),SECURITY 为加密方式(如 WPA2)。
  • AT+RST:重启 ESP8266 模块。
  • AT+UART=9600,8,1,0,0:设置串口参数,9600 为波特率,8 为数据位,1 为停止位。

之前上传的文件已经过期,无法查看。如果你希望我重新查看这些文件,请重新上传相关文件,或者我可以直接为你提供 TCP、UDP 和透传 的相关资料。

TCP、UDP 和透传简介

1. TCP(传输控制协议)

TCP 是一种 面向连接的 协议,提供可靠的数据传输服务。它确保数据从发送端到接收端的可靠传递,即使发生丢包也会自动重传数据。 特点

  • 可靠性:通过握手过程确保连接建立,并通过确认机制保证数据的准确送达。
  • 顺序传输:数据包按发送顺序到达接收端。
  • 流量控制:通过滑动窗口控制发送速度,避免接收端接收不过来。
  • 拥塞控制:根据网络状况调整传输速率,避免网络过载。

应用:适用于需要高可靠性和完整性的数据传输,如 网页浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP)等。

2. UDP(用户数据报协议)

3. 透传(Transparent Transmission)

透传可以基于 TCP 或 UDP 协议进行。在透传模式下,数据直接从发送方传输到接收方,中间不做协议解析,适用于串口、Wi-Fi 等连接方式。


总结

如果你有更具体的问题或需要详细的代码示例,随时告诉我!

4. TCP Clint连接:建立客户端和ESP8266同一局域网IP地址,

  • UDP 是一种 无连接的 协议,不保证数据传输的可靠性和顺序,适用于实时性要求高但不要求完全可靠的数据传输。
  • 特点
    • 不可靠性:没有连接建立过程,不保证数据的到达与顺序。
    • 低延迟:由于没有重传和确认机制,数据传输延迟较低。
    • 无拥塞控制:没有流量控制和拥塞控制,适用于实时应用。
  • 应用:适用于对实时性要求较高的应用,如 视频直播VoIP 电话在线游戏DNS 查询 等。
  • 透传 是一种将数据从一个设备直接传输到另一个设备的方式,而不需要中间设备对数据进行解析或处理。透传常见于串口通信、网络传输等场景,数据从发送端透明地传输到接收端。
  • 特点
    • 无协议解析:透传模式下,传输的数据不经过协议解析,发送方和接收方仅关心数据本身。
    • 高效性:因为没有协议层的复杂性,数据可以快速传输。
    • 灵活性:可以用于串口设备、无线设备和网络通信等多种场景。
  • 应用:常见于 串口通信(如 ESP8266 模块的透传功能),用于 物联网设备 之间的数据交换。
  • 透传+TCP:在 TCP 连接上进行透传时,数据的传输仍然可靠并且保证顺序。
  • 透传+UDP:在 UDP 连接上进行透传时,数据传输不保证可靠性,适用于要求低延迟的场景。
  • TCP:可靠,适用于需要高可靠性和完整性的数据传输。
  • UDP:实时性高,但不可靠,适用于要求低延迟的场景。
  • 透传:直接传输数据,不做解析,适用于物联网设备和串口通信。
2.
单连接 TCP Client
1. 配置 WiFi 模式
AT+CWMODE=3 // softAP+station mode
响应 :
OK
2. 连接路由器
AT+CWJAP="SSID","password" // SSID and password of router
响应 :
OK
3. 查询 ESP8266 设备的 IP 地址
AT+CIFSR
响应 :
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"1a:fe:34:a5:8d:c6"
+CIFSR:STAIP,"192.168.3.133"
+CIFSR:STAMAC,"18:fe:34:a5:8d:c6"
OK
4. PC ESP8266 设备连接同⼀路由器,在 PC 端使⽤⽹络调试⼯具,建⽴⼀个 TCP
务器。
- 假设, PC 创建的服务器 IP 地址为 192.168.3.116 ,端⼝为 8080
5. ESP8266 设备作为 TCP client 连接到上述服务器
AT+CIPSTART="TCP","192.168.3.116",8080 //protocol, server IP and port
响应 :
OK
6. ESP8266 设备向服务器发送数据
AT+CIPSEND=4 // set date length which will be sent, such as 4 bytes
>test // enter the data, no CR
响应 :
Recv 4 bytes
Espressif
2/15
2017.08 2. 单连接 TCP Client
SEND OK
7. ESP8266 设备接收到服务器发来的数据,将提示如下信息:
+IPD,n:xxxxxxxxxx // received n bytes, data=xxxxxxxxxxx
注意:
发送数据时,如果输⼊的字节数超过了设置⻓度( n ):
- 系统将提示 busy ,并发送

特性TCPUDP
连接方式面向连接(需建立连接)无连接(直接发送)
可靠性提供可靠的传输,确保数据到达不保证可靠性,数据可能丢失
顺序保证数据按发送顺序到达不保证顺序
控制拥塞控制、流量控制无流量控制、无拥塞控制
应用场景文件传输、网页浏览、电子邮件等视频会议、实时语音、游戏等


    http://www.kler.cn/a/537902.html

    相关文章:

  • 10vue3实战-----实现登录的基本功能
  • Nutz Dao与Spring集成
  • 基于yolov11的阿尔兹海默症严重程度检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • 【LLM】o1/R1系列LLM数据篇
  • Intellij IDEA如何查看当前文件的类
  • 鸿蒙 router.back()返回不到上个页面
  • ARM嵌入式学习--第十四天(SPI)
  • 自然语言处理NLP_[1]-NLP入门
  • flask实现用户名查重,重复的用户名阻止注册,以及如何优化
  • 单调栈题目
  • 如何让虚拟机联上网
  • windows通过网络向Ubuntu发送文件/目录
  • 在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合
  • 算法基础——容错
  • 蛋糕商城 Rust 版介绍二
  • 网络安全 | 保护智能家居和企业IoT设备的安全策略
  • 【AI】通过修改用户环境变量优化Ollama模型加载与访问
  • 计算机视觉-拟合
  • 聚焦 AUTO TECH China 2025,共探汽车内外饰新未来
  • 21.命令模式(Command Pattern)
  • FlinkCDC适配KADB失败实践
  • 学习 PostgreSQL 流复制
  • 背包问题常见bug
  • Qt—libpng warning: iCCP: known incorrect sRGB profile
  • Linux——网络(http)
  • 绿虫无人机3D光伏设计