嗨,我成功地制作了一个运动传感器。问题是,出于某种原因,当我将 wifi 配置保存到 spiffs 时,需要 6 到 15 秒才能连接到 wifi。同时,使用硬编码值的相同算法在 0.2 秒内连接。只是想知道我错过了什么:-/
注意:这是一个更大的程序的一部分,它提供了一个“配置”和一个“深度睡眠”模式,第一个处于 softAP 模式,第二个使用这个在 setup() 中调用的函数配置设备时以及从深度睡眠返回时,arduino ide 中的功能部分。
(请参阅硬编码版本的注释行)
代码:
全选void start_wifi_client() {
//const char* client_ssid = \"test_iot_2g\";
//const char* client_password = \"Test1234\";
//IPAddress wifi_ip(10,0,0,144);
//IPAddress wifi_dns(10,0,0,4);
//IPAddress wifi_gateway(10,0,0,129);
//IPAddress wifi_subnet(255,255,255,224);
// **** loading from SPIFFS ****
String s,wifi_ssid=\"\",wifi_password;
IPAddress wifi_ip,wifi_subnet,wifi_gateway;
File file = SPIFFS.open(\"/wifi.cfg\",\"r\");
if(!file) {
Serial.println(\"Could not open config file\");
} else {
Serial.println(\"Reading Config...\");
do {
s = file.readStringUn
til(\'\\n\');
if(s.startsWith(\"ssid\")) { wifi_ssid=s.substring(s.indexOf(\'=\')+1,s.length()); Serial.print(wifi_ssid); }
else if(s.startsWith(\"passkey\")) { wifi_password=s.substring(s.indexOf(\'=\')+1,s.length()); } //Serial.print(wifi_password); }
else if(s.startsWith(\"ip\")) { wifi_ip.fromString(s.substring(s.indexOf(\'=\')+1,s.length())); Serial.print(wifi_ip.toString()); }
else if(s.startsWith(\"subnet\")) { wifi_subnet.fromString(s.substring(s.indexOf(\'=\')+1,s.length())); Serial.print(wifi_subnet.toString()); }
else if(s.startsWith(\"gateway\")) { wifi_gateway.fromString(s.substring(s.indexOf(\'=\')+1,s.length())); Serial.print(wifi_gateway.toString()); }
Serial.print(\"\\n\");
} while(file.available());
delay(10);
file.close();
// *** end loading config ***
Serial.println(\"\");
Serial.print(\"Connecting to: \");
Serial.print(wifi_ssid);
Serial.print(\"\\n\");
//WiFi.forceSleepWake();
//WiFi.persistent(false);
WiFi.mode(WIFI_STA);
WiFi.config(wifi_ip,wifi_gateway,wifi_subnet);
float time_count=0;
Serial.println(\"connected to wifi\");
WiFi.begin(wifi_ssid, wifi_password);
do {
delay(100);
// led_blink();
Serial.print(\".\");
time_count+=100;
} while(WiFi.status() != WL_CONNECTED);
Serial.print(\"\\ntook \");
Serial.print((time_count/1000));
Serial.print(\" sec to connect\\n\");
Serial.print(\"Our ip is: \");
Serial.print(WiFi.localIP());
Serial.print(\"\\n\");
}
}