我有一个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 回答
(通过谷歌搜索)我找出问题和解决方法 . 问题似乎是当设备通电或从复位唤醒时,RF模块未正确初始化 .
遗憾的是,似乎没有手动模式来打开RF模块 .
但是,我找到了一个解决方法 . 首先我 Build 连接以启用深度睡眠,为此,我们需要将
RST
引脚连接到ESP8266上的D0
/GPIO 16
.然后我添加了以下代码进行设置
基本上,只要系统从深度睡眠以外的其他设置进入设置,系统就会进入深度睡眠状态,并且启用RF模块的电源后 .