ESP32 WiFi连接非常断断续续



我有一个esp - room -32,它快把我逼疯了。我把它连接到WiFi网络上还好,但它再也连接不上了。我没有做任何更改或更新任何东西,但突然它给出了这个错误:


设置开始连接到"我的网络";回溯(最近一次调用):文件的第22行NameError: name 'sta_if'没有定义


当我第一次尝试设置它时,我被这个完全相同的错误所困扰,但它似乎自己消失了,并工作了一段时间。'

import time
import network
ssidRouter = 'my network'                           #Router name
passwordRouter = 'my password'                         #Router passsword
def STA_Setup(ssidRouter,passwordRouter):
print("Setup start")
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
print('connecting to',ssidRouter)
sta_if.active(True)
sta_if.connect(ssidRouter,passwordRouter)
while not sta_if.isconnected():
pass
print('Connected, IP address:', sta_if.ifconfig())
print("Setup End")
try:
STA_Setup(ssidRouter,passwordRouter)
except:
sta_if.disconnect()


'有人知道是什么导致了这种行为吗?

我试过重置它,循环电源,重新启动我的电脑,不同的USB电缆,以确保未损坏的上传,删除和重新上传代码,使用额外的电源,对它大喊大叫,对它说话很好…

sta_ifSTA_Setup()函数中声明。你试图在函数之外访问它,这就是为什么你得到一个错误。

你可以通过去掉Try/Except来简化事情。如果您想在连接超时时显示错误,那么应该这样做:

from network import WLAN, STA_IF
from time import ticks_ms
AP_NAME = 'myAP'
AP_PASS = 'abc123'
WIFI_TIMEOUT = 60
print('Connecting...')
wlan = WLAN(STA_IF)
wlan.active(True)
wlan.connect(AP_NAME, AP_PASS)
start_time = ticks_ms()
while not wlan.isconnected():
if (ticks_ms() - start_time > WIFI_TIMEOUT * 1000):
break
if (wlan.isconnected()):
print('Connected')
else:
print('Timeout!')

在while循环中,你现在计算秒数,而不仅仅是pass。如果连接没有在分配的时间内发生,则退出循环。最后检查连接,让您知道它是否成功。

最新更新