首页 文章

NodeMCU ESP8266用C连接到iPhone Hotspot

提问于
浏览
1

我有一个关于从NodeMCU ESP8266板到Apple iPhone6个人热点的wifi连接的问题 . iOS版本是10.2.1(14027) . 我使用的NodeMCU代码使用WPA2与家庭WLAN一起工作,没有任何问题 . 如果我更改SSID和密码以连接到Apple热点, while() 循环将永远运行(请参阅代码,我使用的是Arduino IDE 1.8.2):

#include <ESP8266WiFi.h>

const char* ssid = "iPhone6";
const char* password = "passwd";

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(1500);
  }
}

void loop() {
  // do something
  delay(10000);
}

为了检查一下,我使用NodeMCU扫描wifi网络并列出了我的Apple热点(也使用了WPA2),因此主板可以“看到”它 . 我可以使用iPad和戴尔笔记本电脑连接到Apple热点,这样也可以 . 我找到的所有网页都在处理将NodeMCU设置为WiFi服务器而不是客户端的问题 . 我的代码中是否还有其他细节?还是有其他WiFi库,而不是我可以使用的ESP8266WiFi?如果有人设法使这个连接工作,我将不胜感激 .

1 回答

  • 3

    问题是(我相信)ESP8266将处于上次启动时的任何模式( APSTAAP_STA ),除非您明确更改它 . 所以,例如,你的代码对我来说很好,因为有几次取决于我之前在我的电路板上所做的事情 .

    为了使代码始终如一地工作,您必须(如@cagdas所说)明确地将其置于STA模式 . 因此,对您的代码进行以下更改将会这样做 . 我已经使用我的主板和iPhone 6s,1.8.2 Arduino IDE和ESP8266库1.0.0版验证了这一点 .

    #include <ESP8266WiFi.h>
    
    const char* ssid = "iPhone6";
    const char* password = "passwd";
    
    void setup() {
      Serial.begin(115200);
      WiFi.mode(WIFI_STA); // SETS TO STATION MODE!
      WiFi.begin(ssid, password);
    
      while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        delay(1500);
      }
    }
    
    void loop() {
      Serial.print("IP is ");
      Serial.println(WiFi.localIP());
      delay(10000);
    }
    

相关问题