带ESP8266-arduino的WiFi

时间:2017-08-24 08:31:09

标签: esp8266 arduino-esp8266

我有一台NodeMcu Lua ESP8266 ESP-12E,我想用它通过Wifi网络控制到继电器。

第一步是编写一个扫描网络并连接到网络的Arduino Sketch。但是,即使示例菜单中的标准示例也不起作用(例如,https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/WiFiScan/WiFiScan.ino)。

#include "ESP8266WiFi.h"

void setup() {
  Serial.begin(115200);

  // Set WiFi to station mode and disconnect from an AP if it was previously connected
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);

  Serial.println("Setup done");
}

void loop() {
  Serial.println("scan start");

  // WiFi.scanNetworks will return the number of networks found
  int n = WiFi.scanNetworks();
  Serial.println("scan done");
  if (n == 0)
    Serial.println("no networks found");
  else
  {
    Serial.print(n);
    Serial.println(" networks found");
    for (int i = 0; i < n; ++i)
    {
      Serial.print(WiFi.SSID(i));
      delay(10);
    }
  }
  Serial.println("");

  // Wait a bit before scanning again
  delay(5000);
}

为了排除硬件问题,我尝试了列表API文档中的LUA版本(见下文),该版本有效。

 -- print ap list
function listap(t)
      for k,v in pairs(t) do
        print(k.." : "..v)
      end
end

wifi.sta.getap(listap)

使用http://nodemcu.com/index_en.html的固件版本。

之后,我再试一次INO版本,它似乎也有效。但事实证明,只有先前的固件来自http://nodemcu.com/index_en.html

的固件才有效

我需要包含一个库或其他东西才能正确初始化wifi? 提前谢谢,

1 个答案:

答案 0 :(得分:0)

(通过谷歌搜索)我想出了问题和解决方法。问题似乎是当设备通电或从复位唤醒时,RF模块未正确初始化。

可悲的是,似乎没有手动模式来打开RF模块。

然而,我找到了一个解决方法。首先,我建立连接以启用深度睡眠,为此,我们需要将RST引脚连接到ESP8266上的D0 / GPIO 16

然后我添加了以下代码来设置

extern "C" {
  #include "user_interface.h"
}

void setup(){
  if (resetInfo->reason != REASON_DEEP_SLEEP_AWAKE) {

      ESP.deepSleep(10, WAKE_RF_DEFAULT)
  }

基本上,只要系统从深度睡眠以外的其他方式进入设置,系统就会进入深度睡眠状态,并且在启用RF模块的电源时会启用。