通过AT指令控制ESP8266

注:上述所有操作都要在同一网段下就行。esp8266当TCP服务器的时候可以用AT+CIFSR 查询 ESP8266 设备的 IP 地址,即服务器的地址。

简介

用到的软件:
网络调试助手在这里插入图片描述
串口调试助手在这里插入图片描述
硬件:esp8266 usb转TTL

ESP8266 模块用到的指令
在这里插入图片描述

1.串口无线 WIFI(COM-WIFI AP)

串口无线 WIFI(COM-WIFI AP)模式,模块作为无线 WIFI 热点,允许其他 WIFI 设备连接到本模块。

1.1串口无线 WIFI AP 模式,TCP 服务器配置
发送指令作用
AT+CWMODE=2设置模块 WIFI 模式为 AP 模式
AT+RST重启生效
AT+CWSAP=”SSID”,”password”,1,4设置模块的 AP 参数:账号为SSID ,密码为password,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=1开启多连接
AT+CIPSERVER=1,8086开启 SERVER 模式,设置端口为 8086
AT+CIPSEND=0,n向 ID0 发送 n 字节数据包,n的值自己定
1.2.串口无线 WIFI AP 模式,TCP 客户端配置
发送指令作用
AT+CWMODE=2设置模块 WIFI 模式为 AP 模式
AT+RST重启生效
AT+CWSAP=”SSID”,”password”,1,4设置模块的 AP 参数:账号为SSID ,密码为password,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=0开启单连接
AT+CIPSTART=“TCP”,"192.168.4.XXX”,8086建立 TCP 连接到”192.168.4.XXX”,8086
AT+CIPMODE=1开启透传模式(仅单连接 client 时支持)
AT+CIPSEND开始发送数据
1.3.串口无线 WIFI AP 模式,UDP 配置
发送指令作用
AT+CWMODE=2设置模块 WIFI 模式为 AP 模式
AT+RST重启生效
AT+CWSAP=”SSID”,”password”,1,4设置模块的 AP 参数:账号为SSID ,密码为password,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=0开启单连接
AT+CIPSTART=“UDP”,“192.168.4.XXX”,8086建立 UDP 连接到”192.168.4.XXX”,8086
AT+CIPSEND=0,n向 ID0 发送 n 字节数据包,n的值自己定

2. 串口无线 STA(COM-WIFI STA)

串口无线 STA(COM-WIFI STA)模式,模块作为无线 WIFI STA,用于连接到无线网络,实现串口与其他设备之间的无线(WIFI)数据转换互传。

2.1. 串口无线 STA 模式,TCP 服务器配置
发送指令作用
AT+CWMODE=1设置模块 WIFI 模式为 STA 模式
AT+RST重启模块并生效
AT+CWJAP="SSID,“password”加入 WIFI 热点:SSID ,密码为:password
AT+CIPMUX=1开启多连接
AT+CIPSERVER=1,8086开启服务器,端口号为 8086
AT+CIPSEND=0,n向 ID0 发送 n 字节的数据
2.2.串口无线 STA 模式,TCP 客户端配置
发送指令作用
AT+CWMODE=1设置模块 WIFI 模式为 STA 模式
AT+RST重启模块并生效
AT+CWJAP="SSID,“password”加入 WIFI 热点:SSID ,密码为:password
AT+CIPMUX=0开启单连接
AT+CIPSTART=“TCP”,“192.168.1.XXX”,8086建立 TCP 连接到”192.168.1.XXX”,8086
AT+CIPMODE=1开启透传模式
AT+CIPSEND开始传输
AT+CIPMODE=0退出透传
AT+CIPCLOSE断开 TCP 连接

退出发送数据:
在透传发送数据过程中,若识别到单独的⼀包数据 “+++”,则退出透传发送。

  • 如果使⽤键盘打字输⼊ “+++” ,可能耗时太⻓,不被认为是连续的三个 “+”,建议使
    ⽤串⼝⼯具⼀次性发送 “+++”,并请注意不要携带空格或换⾏符等不可⻅字符。
  • 之后,请⾄少间隔 1 秒,再发下⼀条 AT 指令.
2.3串口无线 STA 模式,UDP 配置
AT+CWMODE=1设置模块 WIFI 模式为 STA 模式
AT+RST重启生效
AT+CWSAP=”SSID”,”password”,1,4设置模块的 AP 参数:账号为SSID ,密码为password,通道号为 1,加密方式为:WPA_WPA2_PSK
AT+CIPMUX=0开启单连接
AT+CIPSTART=“UDP”,“192.168.4.XXX”,8086建立 UDP 连接到”192.168.4.XXX”,8086
AT+CIPSEND=0,n向 ID0 发送 n 字节数据包,n的值自己定

3.配置WiFi 模式

2.1. WIFI 模式,TCP 服务器配置
发送指令作用
AT+CWMODE=3配置 WiFi 模式
AT+RST重启模块并生效
AT+CWJAP="SSID,“password”加入 WIFI 热点:SSID ,密码为:password
AT+CIPMUX=1开启多连接
AT+CIPSERVER=1,8086开启服务器,端口号为 8086
AT+CIPSEND=0,n向 ID0 发送 n 字节的数据
2.2. WIFI 模式,TCP 客户端配置
发送指令作用
AT+CWMODE=3配置 WiFi 模式
AT+RST重启模块并生效
AT+CWJAP=“SSID”,“password”加入 WIFI 热点:SSID ,密码为:password
AT+CIFSR查询 ESP8266 设备的 IP 地址
AT+CIPSTART=“TCP”,“192.168.1.XXX”,8086建立 TCP 连接到”192.168.1.XXX”,8086
AT+CIPMODE=1开启透传模式(也可以不进入)
AT+CIPSEND=n开始传输,n表示需要传输的字节数
AT+CIPMODE=0退出透传
AT+CIPCLOSE断开 TCP 连接
2.3.WIFI 模式,UDP 配置
发送指令作用
AT+CWMODE=3配置 WiFi 模式
AT+RST重启生效
AT+CWSAP=”SSID”,”password”设置模块的 AP 参数:账号为SSID ,密码为password
AT+CIFSR查询 ESP8266 设备的 IP 地址
AT+CIPMUX=1使能多连接
AT+CIPSTART=“UDP”,“192.168.4.XXX”,8086建立 UDP 连接到”192.168.4.XXX”,8086
AT+CIPSEND=0,n向 ID0 发送 n 字节数据包,n的值自己定

4.串口无线 AP+STA(COM-WIFI AP+STA)

串口无线 AP+STA(COM-WIFI AP+STA)模式,模块既作无线 WIFI AP,又作无线 STA,其他 WIFI 设备可以连接到该模块,模块也可以连接到其他无线网络,实现串口与其他设备之间的无线(WIFI)数据转换互传。该模式下,根据应用场景的不同,可以设置 9 个子模式:(TCP 服务器、TCP 客户端,UDP)||(TCP 服务器、TCP 客户端UDP)。

4.1.串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 做 TCP 服务器的配置

在这里插入图片描述

4.2.串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 作 TCP 客户端的配置

在这里插入图片描述

4.3.串口无线 AP+STA 模式,AP 作 TCP 服务器,STA 作 UDP 的配置

在这里插入图片描述

注:上述所有操作都要在同一网段下就行。esp8266当TCP服务器的时候可以用AT+CIFSR 查询 ESP8266 设备的 IP 地址,即服务器的地址。

  • 12
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个涉及嵌入式开发、网络通信和串口通信的问题,需要进行以下几步操作: 1. 在STM32开发板上配置串口通信,并连接ESP8266模块,确保能够通过AT指令控制ESP8266模块连接到云平台。 2. 在ESP8266模块上使用MQTT协议连接到云平台,并订阅需要接收的报文。 3. 在STM32开发板上编写程序,通过串口发送MQTT协议中需要发送的报文,并接收ESP8266模块发送的报文,并通过串口打印出来。 以下是具体步骤: 1. 在STM32开发板上配置串口通信: 在STM32开发板上使用HAL库配置串口通信,例如: ``` c /* 配置串口1 */ huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { Error_Handler(); } ``` 然后连接ESP8266模块,使用AT指令控制ESP8266模块连接到云平台,例如: ``` c /* 连接到Wi-Fi网络 */ char cmd[100] = "AT+CWJAP=\"ssid\",\"password\"\r\n"; HAL_UART_Transmit(&huart1, (uint8_t *)cmd, strlen(cmd), HAL_MAX_DELAY); /* 连接到MQTT服务器 */ char cmd[100] = "AT+MQTTCONN=clientid,\"username\",\"password\",60,\"mqttserver\",1883\r\n"; HAL_UART_Transmit(&huart1, (uint8_t *)cmd, strlen(cmd), HAL_MAX_DELAY); ``` 2. 在ESP8266模块上使用MQTT协议连接到云平台,并订阅需要接收的报文: 使用ESP8266模块上的AT指令连接到MQTT服务器,并订阅需要接收的报文,例如: ``` c /* 连接到MQTT服务器 */ char cmd[100] = "AT+MQTTCONN=clientid,\"username\",\"password\",60,\"mqttserver\",1883\r\n"; HAL_UART_Transmit(&huart1, (uint8_t *)cmd, strlen(cmd), HAL_MAX_DELAY); /* 订阅需要接收的报文 */ char cmd[100] = "AT+MQTTSUB=0,\"topic\",0\r\n"; HAL_UART_Transmit(&huart1, (uint8_t *)cmd, strlen(cmd), HAL_MAX_DELAY); ``` 3. 在STM32开发板上编写程序,通过串口发送MQTT协议中需要发送的报文,并接收ESP8266模块发送的报文,并通过串口打印出来: 在STM32开发板上使用HAL库编写程序,通过串口发送MQTT协议中需要发送的报文,例如: ``` c /* 发送MQTT报文 */ char cmd[100] = "AT+MQTTPUB=0,\"topic\",0,0,\"message\"\r\n"; HAL_UART_Transmit(&huart1, (uint8_t *)cmd, strlen(cmd), HAL_MAX_DELAY); ``` 然后通过串口接收ESP8266模块发送的报文,并通过串口打印出来,例如: ``` c /* 接收MQTT报文 */ uint8_t buffer[100]; uint8_t index = 0; while (1) { uint8_t data; if (HAL_UART_Receive(&huart1, &data, 1, HAL_MAX_DELAY) == HAL_OK) { if (data == '\n') { buffer[index] = '\0'; printf("Received: %s\r\n", buffer); index = 0; } else { buffer[index++] = data; } } } ``` 注意,在实际开发中,还需要根据具体需要对程序进行优化和完善,例如加入错误处理和重试机制等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梨花落-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值