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账号密码:SSIDPASSWORD

  • 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 SSIDWiFi 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

参考链接

posted @ 2026-02-08 21:27  梦一场6688  阅读(30)  评论(0)    收藏  举报