2017-08-24 63 views
0

我有一个NodeMcu的Lua ESP8266 ESP-12E,我想用来控制通过WiFi网络继电器。无线网络与ESP8266-的Arduino

的第一步是写一个Arduino草图,其扫描的网络和连接到网络。但是,即使是示例菜单中的标准示例也无效(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

要我需要包括图书馆什么的正确初始化无线固件的作品? 由于提前,

+0

'没有工作'意味着什么?固件没有启动?没有找到WiFi网络?您是否使用Arduino IDE编译和上传代码?唯一能够解释为什么它在以前刷新NodeMCU固件时起作用的原因是,固件会将一些数据存入闪存(初始化数据,rf校准,..),Arduino IDE未将其放入固件/闪存中。 –

+0

它没有找到任何无线网络。是的,我正在使用arduino ide。我同意你的看法,nodemcu固件似乎初始化了某事。问题是如何实现与arduino ide相同 – CAFEBABE

+0

@MaximilianGerhardt你几乎是正确的。见下文 – CAFEBABE

回答

0

(谷歌搜索)我想通了这个问题,一个解决。问题似乎是,当设备上电或复位时,RF模块未正确初始化。

可悲存在似乎没有手动模式到RF模块上进行切换。

但是,我找到了解决方法。首先,我建立了连接以启用深度睡眠,为此,我们需要将ESP8266上的RST引脚连接到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模块电源回来时被启用。