ESP32设备连接WiFi (STA/softAP模式)
一、写在前面
-
硬件板子:XIAO ESP32 S3 Sense
- 完整的 2.4GHz Wi-Fi 子系统
- BLE:蓝牙 5.0,蓝牙网格
-
ESP-IDF: v5.4.2
二、WiFi相关的简单知识
- Station (STA) 站点模式:
IDF_PATH/examples/wifi/getting_started/station - Access Point (AP) 接入点模式:
IDF_PATH/examples/wifi/getting_started/softAP - WIFI_AP_STA 混合模式:
IDF_PATH/examples/wifi/softap_sta
| 特性 | Station (STA) | Access Point (AP) | WIFI_AP_STA (混合) |
|---|---|---|---|
| 角色 | 客户端 (Client) | 热点 / 服务端 (Host) | 同时是客户端和服务端 |
| 连接对象 | 连接到路由器 | 等待其他设备连接 | 连接路由器的同时允许设备连接 |
| 互联网访问 | 支持 (通过路由器) | 不支持 (通常仅限局域网) | 支持 (自身可上网,也可做中继) |
| IP 地址来源 | 由路由器分配 | 自己生成并分配给客户端 | 拥有两个 IP (一个来自路由,一个自建) |
| 典型用途 | 数据上云、远程控制 | 初始配网、离线直连控制 | 信号中继、网关、复杂配网 |
| 功耗 | 中等 | 较高 (需维持射频广播) | 最高 |
三、ESP32 Station (STA) 站点模式例程
3.1 编译ESP-IDF例程
-
Station (STA) 站点模式:
IDF_PATH/examples/wifi/getting_started/station -
通过
idf.py menuconfig修改WIFI账号密码:SSID和PASSWORD -
idf.py set-target esp32s3 -
idf.py build & flash & monitor
ESP32设备:
I (2242) esp_netif_handlers: sta ip: 192.168.1.7, mask: 255.255.255.0, gw: 192.168.1.1
I (2242) wifi station: got ip:192.168.1.7
I (2242) wifi station: connected to ap SSID:MY_SSID password:MY_PASSWORD
ES32P设备分配的IP地址为:192.168.1.7,子网掩码为255.255.255.0,网关为192.168.1.1
路由器管理后台:
查看路由器连接的设备(设备名,IP地址和MAC地址)
可以看到:ESP32的设备名为:espressif,IP地址:192.168.1.7, MAC地址为:
3.2 修改ESP32设备的hostname
- ESP32 模块的默认主机名通常是 "espressif"
- 为了在路由器的 DHCP 客户端列表中更容易识别设备,或者为了匹配产品品牌,开发者通常需要自定义这个名称。
// create default station
esp_netif_t *sta = esp_netif_create_default_wifi_sta();
esp_netif_set_hostname(sta, "esp32-wifi-station");
四、ESP32 Acess Point(AP)模式例程
4.1 编译ESP-IDF例程
-
softAP (Access Point) 模式:
IDF_PATH/examples/wifi/getting_started/softAP -
通过
idf.py menuconfig修改WIFI账号密码:WiFi SSID和WiFi PASSWORD -
idf.py set-target esp32s3 -
idf.py build & flash & monitor
ESP32设备:
# ESP32 wifi softAP初始化
I (571) wifi softAP: wifi_init_softap finished. SSID:myssid password:mypassword channel:1
I (571) esp_netif_lwip: DHCP server started on interface WIFI_AP_DEF with IP: 192.168.4.1
I (591) main_task: Returned from app_main()
# 设备1连接
I (30311) wifi:new:<1,1>, old:<1,1>, ap:<1,1>, sta:<255,255>, prof:1, snd_ch_cfg:0x0
I (30311) wifi:station: ee:1a:35:fb:9e:08 join, AID=1, bgn, 40U
I (30361) wifi softAP: station ee:1a:35:fb:9e:08 join, AID=1
I (30571) wifi:<ba-add>idx:2 (ifx:1, ee:1a:35:fb:9e:08), tid:0, ssn:0, winSize:64
I (30621) esp_netif_lwip: DHCP server assigned IP to a client, IP is: 192.168.4.2
# 设备2连接
I (71101) wifi:new:<1,1>, old:<1,1>, ap:<1,1>, sta:<255,255>, prof:1, snd_ch_cfg:0x0
I (71101) wifi:station: ce:1e:13:14:67:6c join, AID=2, bgn, 40U
I (71171) wifi softAP: station ce:1e:13:14:67:6c join, AID=2
I (71281) wifi:<ba-add>idx:3 (ifx:1, ce:1e:13:14:67:6c), tid:0, ssn:0, winSize:64
I (71441) esp_netif_lwip: DHCP server assigned IP to a client, IP is: 192.168.4.3
# 设备2 断开连接
I (467591) wifi:station: ce:1e:13:14:67:6c leave, AID = 2, reason = 3, bss_flags is 9014339, bss:0x3fcb6b7c
I (467591) wifi:new:<1,1>, old:<1,1>, ap:<1,1>, sta:<255,255>, prof:1, snd_ch_cfg:0x0
I (467591) wifi:<ba-del>idx:3, tid:0
I (467601) wifi softAP: station ce:1e:13:14:67:6c leave, AID=2, reason=3
# 设备1 断开连接
I (573031) wifi:station: ee:1a:35:fb:9e:08 leave, AID = 1, reason = 3, bss_flags is 9014355, bss:0x3fca4f38
I (573031) wifi:new:<1,0>, old:<1,1>, ap:<1,1>, sta:<255,255>, prof:1, snd_ch_cfg:0x0
I (573041) wifi:<ba-del>idx:2, tid:0
I (573041) wifi softAP: station ee:1a:35:fb:9e:08 leave, AID=1, reason=3
五、softAP_sta模式
TODO

浙公网安备 33010602011771号