查看: 199|回复: 1

WiFi怎么从AP模式切换到STA?

[复制链接]

该用户从未签到

发表于 2019-3-2 11:56 | 显示全部楼层 |阅读模式
打算程序开始的时候先使用AP模式,然后通过手机链接到ESP8266 WIFI,在通过web来配置STA要链接的账户密码,配置完成后,在重新mode的过程中好像出错了。
发现一直连不上。

kittenblock中小学创客名师推荐的图形化编程软件

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <string.h>


#define AP_SSID  "esp8266-nl9001"
#define AP_PASS  "85913323"
#define ROOT_HTML  "<!DOCTYPE html><html><head><title>WIFI Config</title><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head><style type=\"text/css\">.input{display: block; margin-top: 10px;}.input span{width: 100px; float: left; float: left; height: 36px; line-height: 36px;}.input input{height: 30px;width: 200px;}.btn{width: 120px; height: 35px; background-color: #000000; border:0px; color:#ffffff; margin-top:15px; margin-left:100px;}</style><body><form method=\"GET\" action=\"connect\"><label class=\"input\"><span>WiFi SSID</span><input type=\"text\" name=\"ssid\"></label><label class=\"input\"><span>WiFi PASS</span><input type=\"text\"  name=\"pass\"></label><input class=\"btn\" type=\"submit\" name=\"submit\" value=\"Submie\"></form></body></html>"
ESP8266WebServer server(80);

void setup() {
  WiFi.mode(WIFI_AP);
  Serial.begin(115200);
  boolean result = WiFi.softAP(AP_SSID,AP_PASS);
  if(result)
  {
    IPAddress myIP = WiFi.softAPIP();
    Serial.println("");
    Serial.print("Soft-AP IP address = ");
    Serial.println(myIP);
    Serial.println(String("MAC address = ")  + WiFi.softAPmacAddress().c_str());
  }else{
    Serial.println("WiFiAP Failed");
  }
  //首页
  server.on("/", [](){
    server.send(200,"text/html",ROOT_HTML);
    });

    //链接
  server.on("/connect", [](){
        WiFi.softAPdisconnect(true);
        String ssid = server.arg("ssid");
        String pass = server.arg("pass");
        Serial.println("WiFi Connect SSID:"+ssid+"  PASS:"+pass);
        WiFi.mode(WIFI_STA);
        WiFi.begin(ssid, pass);
        while (WiFi.status() != WL_CONNECTED) {
          delay(500);
          Serial.print(".");
        }
        if (MDNS.begin("esp8266")) {
          Serial.println("MDNS responder started");
        }
        server.send(200,"text/html","successd,conning...");
    });
  
  server.begin();
  // put your setup code here, to run once:

}

void loop() {
    server.handleClient();
  // put your main code here, to run repeatedly:

}

  • TA的每日心情
    奋斗
    2019-3-13 19:17
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2019-3-5 21:24 | 显示全部楼层
    你要把wifi的账号密码写在EEPROM里面去。因为当前状态只会有一个模式,要重启才能切换模式,可是你现在的这样写,wifi的账号密码重启就会丢失。所以要写去EEPROM里
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    BlinkerAT固件不能用
    BlinkerAT固件不能用
    如图,在配网的时候就卡住了,再发指令就没用了,固件和库都是今天刚下载的,以前的也不好
    为什么这个库已经装好了可是在调用的时候却没有显示
    为什么这个库已经装好了可
    为什么这个库已经装好了可是在调用的时候却没有显示求解决
    UART 传输(字符)不稳定,如何解决数据错位和乱码的情况
    UART 传输(字符)不稳定
    求助大家,我正在写一个 UART 传输多组数据的项目,想要将一端 Arduino 的多组数据通
    请问这是什么板子?
    请问这是什么板子?
    如图,两年前比赛学校发的,但网上找不到资料,现在翻出来,想问问有人知道它怎么用吗
    【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
    【原创】 drawbot平面关节
    这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表