NodeMCU ESP8266 使用 C 连接到 iPhone 热点
NodeMCU ESP8266 connecting to iPhone Hotspot with C
我有一个关于从 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),因此开发板可以 "see" 它。我可以用我的 iPad 和我的戴尔笔记本电脑连接到 Apple 热点,所以这也可以。我发现的所有网页都在处理将 NodeMCU 设置为 WiFi 服务器而不是客户端的问题。我在代码中忘记了另一个细节吗?或者除了我可以使用的 ESP8266WiFi 之外,还有其他 WiFi 库吗?如果有人设法使此连接正常工作,我将不胜感激。
问题是(我相信)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);
}
我有一个关于从 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),因此开发板可以 "see" 它。我可以用我的 iPad 和我的戴尔笔记本电脑连接到 Apple 热点,所以这也可以。我发现的所有网页都在处理将 NodeMCU 设置为 WiFi 服务器而不是客户端的问题。我在代码中忘记了另一个细节吗?或者除了我可以使用的 ESP8266WiFi 之外,还有其他 WiFi 库吗?如果有人设法使此连接正常工作,我将不胜感激。
问题是(我相信)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);
}