查看: 362|回复: 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里
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    有对屏幕了解的大神吗?
    有对屏幕了解的大神吗?
    这种屏幕可以用arduino板或者树莓派做出来吗?小白对这方面一无所知,求指点
    编写了个贪食蛇小程序
    编写了个贪食蛇小程序
    8*8双色3mm红蓝雾状发光二极管 用595驱动的
    Adruino小型自平衡机器人EVA(+硬件+源代码+3D文件)
    Adruino小型自平衡机器人E
    [*]2个月前做的小机器人,在CSDN个人博客上发了,从没接触过PID、3D打印、电机等,就
    超萌机器人  pando
    超萌机器人 pando
    ## 准备工作准备好如下材料: · DFRobot Romeo BLE mini V2.0 控制器 × 1·
    红外模块在接收时码值变动
    红外模块在接收时码值变动
    在使用arduino连接一个红外接收后,下载的红外模块的库IRremote,在使用时发现,遥控
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表