有可能吗? ESP8266通过iOS应用程序连接到路由器wifi? 我想通过ESP8266进行应用程序控制。我的工作流程如下:
首先感谢您的建议。
我试过这种方式,但我获得了用户体验。因为用户必须做很多步骤。 - 使用WiFiManager,使ESP8266成为wifi路由器。 - 从设备转到Wifi设置以连接到ESP8266 Wifi。 - 从网页浏览器转到192.168.4.1,提供Wifi信息(SSID,PASSWORD)。 请注意这里以避免这种方式
请给我你的意见。 谢谢
答案 0 :(得分:1)
首先,我不认为您将ESP8266作为Wi-Fi路由器。我认为你的意思是它进入AP模式以提示用户提供凭据。
我通过使用EEPROM库解决了这个问题。您可以轻松找到代码示例here
基本上是这样的:
现在,它不是每次都有用户输入凭据,而是首先尝试连接。如果失败,那么用户将不得不做额外的工作。
如果我能提供帮助,请告诉我,我已经就这个问题进行了广泛的工作,并且有工作代码。
答案 1 :(得分:0)
WiFiManager要求您:
这是用户必须做的最小的事情。他/她必须连接到ESP8266的AP并以某种方式提供WiFi凭证。您可以更改的唯一事情是用户如何提供凭据。如果您已经让用户下载了iOS应用程序,那么可以在应用程序中添加配置ESP8266的可能性。
为了配置带有WiFiManager的ESP8266,您的应用必须:
但是,请记住没有意义。如果您的用户在配置ESP8266之前不需要下载任何应用程序,则不要求他/她执行此操作。 Web应用程序是目前的一种方式。此方法不需要用户下载另一个应用程序只是为了输入WiFi凭据。用户连接到设备的AP后,WiFiManager应自动出现。
答案 2 :(得分:0)
我找到了这样做的方法: 这是iOS应用程序上的代码: https://github.com/EspressifApp/EsptouchForIOS
这是在Arduino上运行的ESP8266上的代码:
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
WiFiUDP Udp;
void setup() {
int cnt = 0;
//Allocate baud 115200
Serial.begin(115200);
//Mode wifi is station
WiFi.mode(WIFI_STA);
//Waiting for connect
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
if(cnt++ >= 10){
WiFi.beginSmartConfig();
while(1){
delay(1000);
//Check the connect and print inform if success
if(WiFi.smartConfigDone()){
Serial.println("SmartConfig Success");
break;
}
}
}
}
Serial.println("");
Serial.println("");
WiFi.printDiag(Serial);
// Allocate server
Udp.begin(49999);
Serial.println("Server started");
// Print IP address
Serial.println(WiFi.localIP());
}
void loop() {
// Receive the package from ESPTouch
Udp.parsePacket();
//Print IP of ESP8266
while(Udp.available()){
Serial.println(Udp.remoteIP());
Udp.flush();
delay(5);
}
}