STM32
直播中

张浩

7年用户 1118经验值
私信 关注
[问答]

为什么ESP8266连接固定的路由会在程序中写死呢

为什么ESP8266连接固定的路由会在程序中写死呢?

ESP8266是怎样自动连接上一次配置的路由呢?

回帖(1)

石胜厚

2021-12-2 11:47:02
1、SmartConfig

2、连接固定的路由

  在程序中写死;
  例如:

void ESP8266_Init_Fixed_WiFi(void)
{
        ESP8266_Clear();
        /* AT测试 */
        printf("0. ATrn");
        ESP8266_SendCmd("ATrn", "");
                delay_ms(500);
        /* 重启 */
        printf("1. RSTrn");
        ESP8266_SendCmd("AT+RSTrn", "");
                delay_ms(500);
                /* 设置WiFi模式
         * 1:Station 模式
         * 2:SoftAP 模式
         * 3:SoftAP+Station 模式
         */
        printf("2. CWMODErn");
        while(ESP8266_SendCmd("AT+CWMODE=1rn", "OK"))
                delay_ms(500);
        /* 连接路由 */
        printf("3. CWJAPrn");
        while(ESP8266_SendCmd(ESP8266_WIFI_INFO, "OK"))
                delay_ms(500);
        /* 建立TCP连接 */
        printf("4. CIPSTARTrn");
        while(ESP8266_SendCmd(ESP8266_TCP_INFO, "CONNECT"))
                delay_ms(500);
        printf("5. ESP8266 Init OKrn");
}
#define ESP8266_WIFI_INFO                "AT+CWJAP="FAST_E162","12345678"rn"

#define ESP8266_TCP_INFO                "AT+CIPSTART="TCP","www.bilibili.com",80rn"
例子中:


  第三步实际发送的指令是    AT+CWJA,"12345678"rn
  在一对双引号内要表示双引号要加转义字符;
  WiFi名称及密码,连接的服务器及端口需要修改,这里只是作为例子;
   
  3、自动连接上一次配置的路由


void ESP8266_Init_Disconnected(void)
{
        ESP8266_Clear();
        printf("1. RSTrn");
        ESP8266_SendCmd("AT+RSTrn", "");
        delay_ms(500);
        ESP8266_Clear();
        while(1)
        {
                if(strstr((char *)esp8266_buf, "GOT IP"))
                        break;
                delay_ms(500);
        }
        /* 建立TCP连接 */
        printf("2. CIPSTARTrn");
        while(ESP8266_SendCmd(ESP8266_TCP_INFO, "CONNECT"))
                delay_ms(500);
}
发送完命令后的延时不可少,可以适当调小,自行调试;
  重启后会自动连接上次配置过的WiFi,如果该WiFi可用;
  连接成功后ESP-01S会通过串口发送包含    GOT IP    字符串;
  STM32通过检测串口接收到的数据有无包含该字符串来判断有无连上WiFi;
  使用时可以注释掉  printf();  语句,这里只是方便串口调试。
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分