STM32+AppInventor+ESP8266设置AP模式和手机TCP通信

完整程序和APP下载链接:下载链接

1、设置AP模式

AT+CWMODE=2

2、开启热点供手机连接

AT+CWSAP="ESP8266_01","12345678",6,4

3、设置模块为多连接模式

注:该AT指令每次上电都需要重新配置,否则无法工作

AT+CIPMUX=1

说明: 建⽴ TCP 、UDP 或 SSL 连接时,设置模块的连接模式(单连接模式多连接模式)。

用途: 发送指令“AT+CIPMUX=0”,设置模块为单连接模式;
    发送指令“AT+CIPMUX=1”,设置模块为多连接模式。

 4、开启服务端,设置端口号

注:该AT指令每次上电都需要重新配置,否则无法工作

AT+CIPSERVER=1,8080

用途: 单连接模式时,该指令无意义且报错error。
      多连接模式时,发送指令AT+CIPSERVER=1,8080”,参数1取值范围 [0,1] ,0表示关闭服务器,1表示建立服务器;参数2表示端口号,可自行设定,但是避免常用的端口号,如8080等。例:此处我设置为:建立服务器,并且端口值设置为8080

ESP8266 处于AP热点模式时,其他设备连接上 ESP8266 提供的热点时,如需要进一步搭建TCP 通讯,此时需要将 ESP8266 模块设置为服务端,而开启或关闭服务端便是通过该指令实现的。但是开启服务端有一个前提条件,那就是必须是在多连接模式 (AT+CIPMUX=1)下,才能开启 TCP 服务器。

5、查询本地IP地址

AT+CIFSR

使用STM32单片机配置使用ESP-01S

1、首先使用串口调试助手向ESP-01S模块发送两个接入网络的AT指令。

2、剩下的两个 AT+CIPMUX=1  和  AT+CIPSERVER=1,8080 指令每次上电需要重新配置一次,所以该指令需要使用单片机的串口发送。

3、接受ESP-01S模块的信息

其它在网络中的无线设备发送到ESP-01S的数据会被模块通过串口发送到单片机。数据格式如下:

+IPD,0,15:This is message
+IPD,<客户ID>,<信息长度>:<信息内容>

需要在单片机的串口中断中接收解析以上的数据,就可以得到其它无线设备发送的信息。

### 如何通过AT指令设置ESP8266STM32连接到手机APP #### 硬件连接配置 为了实现 STM32 ESP8266通信,需完成如下硬件连接: - **串口连接**:将 ESP8266 的 `TX` 引脚连接至 STM32 的 USART 接收引脚(如 PA10),并将 ESP8266 的 `RX` 引脚连接至 STM32 的 USART 发送引脚(如 PA9)。 - **电源连接**:ESP8266 的 `VCC` 引脚应连接到 3.3V 电源,而其 `GND` 引脚则接地[^2]。 #### 软件初始化与 AT 指令集 以下是常用的 AT 指令及其功能描述: 1. 测试模块是否正常工作: ```plaintext AT ``` 如果返回 `OK`,说明模块已成功启动[^3]。 2. 查询模块的软件硬件信息: ```plaintext AT+TCMODULE ``` 3. 查看模块版本号: ```plaintext AT+GMR ``` 4. 获取当前 Wi-Fi 工作模式: ```plaintext AT+CWMODE? ``` 5. 设置为 Station (STA) 模式以连接路由器: ```plaintext AT+CWMODE=1 ``` 6. 连接到指定的无线网络(SSID 密码替换为实际值): ```plaintext AT+CWJAP="your_ssid","your_password" ``` 7. 验证网络连通性(例如 Ping 百度服务器): ```plaintext AT+PING="baidu.com" ``` 以上步骤完成后,ESP8266 将能够接入互联网并准备接受来自云端或 APP 的命令。 #### MQTT 协议集成 为了让 STM32ESP8266 收发数据并与手机应用交互,可以采用 MQTT 协议。具体操作流程包括以下几个方面: - 建立与 MQTT Broker 的连接; - 订阅感兴趣的主题以便接收消息; - 向目标主题发布状态更新或其他形式的数据流。 示例代码展示了如何利用 UART 实现两者间的通讯以及发送简单的字符串作为测试用途: ```c #include "usart.h" void send_AT_command(char *command){ HAL_UART_Transmit(&huart1, (uint8_t*)command, strlen(command), HAL_MAX_DELAY); } int main(void){ char command[] = "AT\r\n"; /* 初始化外设 */ MX_USART1_Init(); while(1){ send_AT_command(command); // 发送 AT 指令 HAL_Delay(1000); // 延迟一秒再重复执行 } } ``` 上述 C 函数定义了一个名为 `send_AT_command()` 的函数来简化向 ESP8266 发送任意 AT 指令的过程,并在主循环里周期性的调用该函数发出基础的心跳信号确认链路畅通无阻。 #### 注意事项 当尝试调试时需要注意波特率匹配问题,默认情况下大多数 ESP8266 设备运行于 115200bps 下运作;另外还需考虑供电稳定性因为高负载下可能引起电压波动影响性能表现[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

洲洲不是州州

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

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

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

打赏作者

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

抵扣说明:

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

余额充值