首页 文章

带ESP8266-arduino的WiFi

提问于
浏览
0

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

第一步是编写一个Arduino Sketch,它扫描网络并连接到网络 . 但是,即使示例菜单中的标准示例也不起作用(c.f.,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

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

    遗憾的是,似乎没有手动模式来打开RF模块 .

    但是,我找到了一个解决方法 . 首先我 Build 连接以启用深度睡眠,为此,我们需要将 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模块的电源后 .

相关问题