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

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”,8080TCP 连接
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);}
}

http://www.mrgr.cn/news/9870.html

相关文章:

  • 有效三角形个数问题
  • 【蓝桥杯集训100题】scratch游泳时长 蓝桥杯scratch比赛专项预测编程题 集训模拟练习题第27题
  • Layer-refined Graph Convolutional Networks for Recommendation【ICDE2023】
  • java 从ftp服务器上传下载删除文件
  • MessageDialog 是 Qt Quick Controls 中的一个组件,用于显示消息对话框
  • DocuSign客户故事 | iCIMS 通过 DocuSign CLM 和 AI 提高销售和法律的团队的签约速度
  • 【涂色 —— 区间dp】
  • nginx知识补充
  • wpf DynamicResource的ResourceKey值进行绑定
  • 基于x86 平台opencv的图像采集和seetaface6的图像质量评估功能
  • python使用ffmpeg将视频、音频合并合成(速度最快)
  • 使用 Springdoc OpenAPI 为 Spring Boot 应用程序生成 Swagger文档
  • AI图片生成网站Midjourney网页版开放注册 每用户可免费生成25张图片
  • 考试:计算机网络(01)
  • 【碎片】FastAPI 路径参数
  • Gazebo Harmonic 和 ROS2 jazzy 安装和测试
  • 备战秋招60天算法挑战,Day24
  • 开放式耳机危害大吗?6点如何挑选合适的开放式耳机!
  • 嵌入式面经篇十——驱动开发
  • 【hot100篇-python刷题记录】【搜索二维矩阵】