解决:ESP8266作为station加入AP失败

2015年11月20日 13238点热度 0人点赞 0条评论

环境

  • mcu:arduino uno
  • wifi模块:esp8266

  • esp8266版本:安可信 sdk0.9.5

我在使用ESP8266的开源库https://github.com/itead/ITEADLIB_Arduino_WeeESP8266.时,使用库中的程序连接wifi时遇到无法连接AP的问题。库提供的代码如下:

#include "ESP8266.h"

#define SSID "abcdef"
#define PASSWORD "123456789"

ESP8266 wifi(Serial);

void setup(void)
{
    Serial.begin(115200);
    Serial.print("setup begin\r\n");

    Serial.print("FW Version: ");
    Serial.println(wifi.getVersion().c_str());


if (wifi.setOprToStation()) {
    Serial.print("to station ok\r\n");
} else {
    Serial.print("to station err\r\n");
}

if (wifi.joinAP(SSID, PASSWORD)) {
    Serial.print("Join AP success\r\n");
    Serial.print("IP: ");
    Serial.println(wifi.getLocalIP().c_str());
} else {
    Serial.print("Join AP failure\r\n");
}

Serial.print("setup end\r\n");
}

void loop(void)
{
}

程序语法正确、逻辑正确,且编译成功。我怀疑是不是库本身逻辑有问题,于是把库当做黑箱,按照思维定势给程序加了APLIST命令,如下。成功,连接到AP。然而,APLIST命令会引起较大的内存消耗,一旦使用就出现:busy.p...

如果mcu没有富裕的内存,我建议别把APLIST命令放在loop里。


\#include <ESP8266.h> #include <doxygen.h> #define SSID "iotWiFi" #define PASSWORD "20159104" ESP8266 wifi(Serial); void setup(void) { Serial.begin(115200); Serial.print("setup begin\r\n"); Serial.print("FW Version: "); Serial.println(wifi.getVersion().c_str()); if (wifi.setOprToStationSoftAP()) { Serial.print("to station and softap ok\r\n"); } else { Serial.print("to station and softap err\r\n"); } Serial.println(wifi.getAPList().c_str()); delay(150); if (wifi.joinAP(SSID, PASSWORD)) { Serial.print("Join AP success\r\n"); Serial.print("IP: "); Serial.println(wifi.getLocalIP().c_str()); } else { Serial.print("Join AP failure\r\n"); } Serial.print("setup end\r\n"); } void loop(void) { }

结果

2015-11-20_215539

Dong Wang

Master student of computer science at Uppsala University in Sweden. My primary research interests are deep learning, computer vision, federated learning and internet-of-things.

文章评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据