ESP8266 修复刷完nodemcu固件后无法连接wifi网络的故障
最近到手的wifi开发板,编写了一个stm32连接DHT11采集当前温湿度数据(为什么不直接使用esp8266的DHT模块直接采集温湿度,因为我发现nodemcu的DHT采集温湿度实在是太不准确了,反应也很慢,所以使用stm32连接DHT采集),然后通过串口发送给esp8266,esp8266作为TCP Client端,将esp8266串口接收到的温湿度数据做简单的解析发送给树莓派上的TCP Server。
在esp8266中,因为使用了print的原因,不停的print会导致当前无法刷入lua文件的情况,所以我决定重新刷固件,然而使用了nodemcu-flasher-master(https://github.com/nodemcu/nodemcu-flasher)重新刷入nodemcu固件,刷固件失败:( 杯具。。。
查询网上别人的博文说是使用NodeMCU-PyFlasher-3.0-x64.exe(https://github.com/marcelstoer/nodemcu-pyflasher/releases)刷nodemcu固件,用这个软件说是可以格式化擦除整个板子内存,这样子串口就不能干扰刷固件,才能刷机完成。nodemcu-flasher-master是刷以前旧的nodemcu固件的,对新的固件支持不是很好,无法做到先格式化再刷机,没有这种功能在当前这种情况下就会刷机失败。NodeMCU PyFlasher,它是基于esptool.py的可视化版本,无需安装python,在window下可以直接执行exe程序即可。打开操作界面如下:
注意最后选择yes,wipes all data,刷机完后使用ESPlorer,使用如下的连接wifi的demo(选择save to ESP)时发现wifi连接不上。。。gg 完了,心想这块板子也完了。。。串口一直循环打印 waiting for connected, wifi status显示为255,实际上路由器工作是正常的。。。试了n次的重启、format再写入lua程序都是这样的结果。。。
station_cfg={}
station_cfg.ssid="star201"
station_cfg.pwd="xingxinggongyu"
station_cfg.save=false
wifi.sta.config(station_cfg)
wifi.sta.connect()
tmr.alarm(0, 1000, tmr.ALARM_AUTO, function()
if wifi.sta.getip() == nil then
print('waiting for connected')
print('wifi status:'..wifi.sta.status())
else
tmr.stop(0)
print('esp8266 ip :' .. wifi.sta.getip())
end
end)
ledswitch=0
pin=4
gpio.mode(pin,gpio.OUTPUT)
tmr.alarm(1,1000,1,function()
if ledswitch==0 then
ledswitch=1 --led on
gpio.write(pin,gpio.LOW)
else
ledswitch=0 --led off
gpio.write(pin,gpio.HIGH)
end
end)
--dofile('tcpclient.lua')
没辙,网上搜索了一圈,没找到什么好办法,好像大家都没遇到过这种情况似的。。。
继续搜索,,,然后自己看到nodemcu相关文档中有一个LuaLoader(下载介绍地址http://www.benlo.com/esp8266/)的工具,使用这个工具对板子进行操作试试看,死马当活马医。。。
Settings-->Comm Port Settings中设置当前板子的串口参数,然后点击Settings-->Open COMx,连接到板子后,串口输出区依然不断的循环打印'等待连接,wifi status255'的错误信息。然后我尝试点击右边的的我画框的这些按钮,点击这些按钮后实际上也是发送相关的指令给nodemcu,个人尝试最终好像能治好板子无法连接wifi的原因是点击了右边的Set AP 、Survey,我这边的两块wifi板子最终好像就是点击了这几个按钮才好的,猜测有可能esp8266内部本身有bug的什么鬼,点击完这些按钮后,wifi status为 0 ,不是255,并且没有循环打印报错,ip地址后续也能获取打印出来,说明现在wifi工作连接正常了,激动啊,终于活过来了,又可以继续开心的玩耍啦,最后附上两兄弟全家福。。。