我有一个关于从NodeMCU ESP8266板到苹果iPhone6个人热点的无线连接的问题。iOS版本为10.2.1 (14027)。我使用的NodeMCU代码与我的家庭无线局域网工作,使用WPA2没有任何问题。如果我更改SSID和密码以连接到苹果热点,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扫描无线网络,并列出了我的苹果热点(也使用WPA2),以便董事会可以“看到”它。我可以连接到苹果热点与我的iPad和我的戴尔笔记本电脑,所以这也是工作。我发现的所有网页都在处理将NodeMCU设置为WiFi服务器而不是客户端的问题。在我的代码中还有其他的细节我忘记了吗?或者,我是否可以使用另一个WiFi库而不是ESP8266WiFi呢?如果有人设法得到这种连接工作,我将感谢任何提示。
发布于 2017-04-29 16:01:07
问题是(我相信) ESP8266将处于任何模式(AP、STA、AP_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);
}https://stackoverflow.com/questions/43354086
复制相似问题