esp32的wifi連接與esp8266的有區別;
wifi
ESP8266 and ESP32 differ a lot:
ESP8266
- events are captured via
wifi.eventmon.*
:wifi.eventmon.register(event[, function(T)])
wifi.eventmon.STA_CONNECTED
wifi.eventmon.STA_DISCONNECTED
wifi.eventmon.STA_AUTHMODE_CHANGE
wifi.eventmon.STA_GOT_IP
wifi.eventmon.STA_DHCP_TIMEOUT
wifi.eventmon.AP_STACONNECTED
wifi.eventmon.AP_STADISCONNECTED
wifi.eventmon.AP_PROBEREQRECVED
ESP32:
- events are captured via
wifi.on()
wifi.ap.on(event, callback)
event
:start
: no additional infostop
: no additional infosta_connected
: information about the client that connected:mac
: the MAC addressid
: assigned station id (AID)disconnected
: information about disconnecting clientmac
: the MAC addressprobe_req
: information about the probing clientfrom
: MAC address of the probing clientrssi
: Received Signal Strength Indicator value
ESP32的WiFi函數
我只列出esp32的代碼
print("系統啟動了") gpio.config({ gpio=2, dir=gpio.OUT }) gpio.write(2,1) print("設置wifi工作模式 連接到WiFi路由器時") wifi.mode(wifi.STATION,true) print("啟動wifi") wifi.start() print("連接訪問點(將配置保存到flash中)") station_cfg={} station_cfg.ssid="xz220" station_cfg.pwd="www.kyhmy.com" wifi.sta.config(station_cfg, true) print("連接") wifi.sta.connect() print("獲取MAC") print(wifi.sta.getmac())
比較有意思的是,我沒有發現獲取IP的方法,可能是官方取消了
只能登陸路由器查看板子獲取到的ip地址了
我給板子綁定了固定ip這樣就不會來回變了;
后續繼續研究,還是發現了獲取IP的方法;
並且還有很多有意思的;
可以設置回調函數
wifi.sta.on() 注冊WiFi站狀態事件回調。
可以設置幾個狀態的回調
"start" "stop" "connected" "disconnected" "authmode_changed" "got_ip"
--register callback wifi.sta.on("got_ip", function(ev, info) print("NodeMCU IP config:", info.ip, "netmask", info.netmask, "gw", info.gw) end) --unregister callback wifi.sta.on("got_ip", nil)
上面的代碼完成了獲取Ip地址的操作,如果連上網絡並且獲取到了IP會調用這函數打印當前信息
也可以寫成這樣的 如果連接成功就點亮LED
print("wifi狀態打印") --register callback wifi.sta.on("connected", function(ev, info) print("WiFi已經連接") gpio.write(2,1) end) wifi.sta.on("disconnected", function(ev, info) print("wifi連接已經斷開") gpio.write(2,0) end)