ESP8266 TCP client透传模式配置

文章目录

    • 什么是TCP client、什么是透传
    • 为什么使用TCP client透传模式
    • AT指令
      • ESP-B为AP(server)———AT指令
      • ESP-A为STA(client))———AT指令
    • 配置AP的代码

什么是TCP client、什么是透传

TCP client是TCP客户端,在建立TCP连接时一般有服务器和客户端两方。
透传是指不做任何数据处理的数据透明传输。

为什么使用TCP client透传模式

目的是做两块板子的近距离传输,蓝牙同时开两组会产生数据干扰,所以使用两个esp8266,使用AT指令配置简单。
两个esp8266可以建立TCP连接和UDP连接,但是UDP不可靠且易丢数,所以建立TCP连接,由于 TCP 的AP模式不能够进入透传所以只能使用TCP的STA模式进入透传,即TCP client。原因后面解释。

AT指令

AT指令很多,相关手册我上传到资料中(免费,不需要积分),配置TCP client透传的相关指令如下:
TCP连接需要一个服务器释放热点,释放TCP连接,配置TCP连接的端口、IP等参数。
这里ESP-A为STA(client)模式ESP-B为AP(server)模式

ESP-B为AP(server)———AT指令

指令 含义
AT 测试是否连接正常
AT+CWMODE_DEF=2 设置ap模式并保存到flash中,下次上电直接是ap模式
AT+RST 重启模式生效
AT+CIPMUX=1 设置多连模式
AT+CIFSR 查询本地IP
AT+CWSAP=“null”,“12345678”,1,4 创建热点
AT+CIPSERVER=1,8080 开启 TCP 连接,设置端口 8080

注意点:
1.具体每个指令可以到手册里面查,正常返回什么,错误返回什么,返回的错误码是什么,根据这个调试
2.这里我B的模块的IP使用的是默认的,你可以根据指令修改,我记得是可以修改station的,ap的esp32可以修改,具体查看at指令手册,我这里默认的是192.168.4.1
3.开启tcp连接的前提是要设置多连模式:AT+CIPMUX=1;也正是因为开启了多连接模式才不能够开启透传模式:AT+CIPMODE=1;也进不去透传:AT+CIPSEND;所以AP模式(server)不能开启透传
即:开启透传的条件是AT+CIPMUX=0(单连)和AT+CIPMODE=1(sta)同时满足才能进入
4.如果AP模式一直配置错误,使用指令:AT+RESTORE恢复出厂设置,断电重上后再配置。
5.也是因为使用了AT+CWMODE_DEF=2,此时为AP模式,只能释放热点,不能加入热点,

ESP-A为STA(client))———AT指令

指令 含义
AT 测试是否连接正常
AT+CWMODE_DEF=1 设置sta模式并保存到flash中,下次上电直接是sta模式
AT+RST 重启模式生效
AT+CIPMUX=0 设置单连模式
AT+CWJAP=“null”,“12345678” 加入热点
AT+CIPSTART=“TCP”,“192.168.4.1”,8080 TCP 连接
AT+CIPMODE=1 设置透传模式
AT+CIPSEND 进入透传

配置AP的代码

因为sta的代码太多了,有时间后续补上吧(主要是我用服务器测试的,没用代码测)

#define DELAY_MS(x) HAL_Delay(x) // 使用 HAL 库的延时函数
#define BUF_SIZE 128 // 修改为实际的最大缓冲区大小

// 辅助函数:发送 AT 指令
void SendATCommand(UART_HandleTypeDef *huart, const char *cmd, uint32_t delay) {
    HAL_UART_Transmit_DMA(huart, (uint8_t *)cmd, strlen(cmd));
    DELAY_MS(delay);
}

// 初始化 ESP8266
void ESP8266_Init(void) {
    // 定义 AT 指令
    const char *commands[] = {
        "AT+UART_DEF=115200,8,1,0,0\r\n", // 设置串口
        "AT+CWMODE=2\r\n",               // AP 模式
        "AT+RST\r\n",                    // 重启 AP 模式生效
        "AT+CIPMUX=1\r\n",               // 设置多连模式
        "AT+CIFSR\r\n",                  // 查询服务器 IP
        "AT+CWSAP=\"gwtrans1\",\"12345678\",1,4\r\n", // 创建热点
        "AT+CIPSERVER=1,8080\r\n"       // 开启 TCP 连接,设置端口 8080
    };

    // 延时设置
    const uint32_t delay_ms = 5000;

    // 发送每一条 AT 指令
    for (int i = 0; i < sizeof(commands) / sizeof(commands[0]); i++) {
        SendATCommand(&huart2, commands[i], delay_ms);
    }
}


你可能感兴趣的:(嵌入式,tcp/ip,网络,单片机,stm32,嵌入式硬件)