文章目录
1. ESP32 WIFI功能概述
- 支持仅 station 模式、仅 AP 模式、station/AP 共存模式
- 支持使用 IEEE 802.11b、IEEE 802.11g、IEEE 802.11n 和 API 配置协议模式
- 支持 WPA/WPA2/WPA3/WPA2-企业版和 WPS
- 支持 AMPDU、HT40、QoS 以及其它主要功能
- 支持 Modem-sleep
- 支持乐鑫专属协议,可实现 1 km 数据通信量
- 空中数据传输最高可达 20 MBit/s TCP 吞吐量和 30 MBit/s UDP 吞吐量
- 支持 Sniffer
- 支持快速扫描和全信道扫描
- 支持多个天线
- 支持获取信道状态信息
2. 使用ESP32模块快速接入WIFI热点
2.1 硬件准备
- 路由器或开启热点的手机
- ESP32模块或ESP32开发板,本文使用的ESP32-DevKitM-1
2.2 软件环境准备
- ESPress-IDF开发工具链已经安装完毕,若未安装,参考文章:从零开始玩转ESP32产品开发(一):开发环境搭建
2.3 测试例程
-
打开例程所在目录
\workspace\esp-idf\examples\wifi\getting_started\station
,使用vscode打开例程工程后,如图所示:
如果不显示【终端栏】,则按下【CTRL+~】开启。
-
点击最下角工具栏中的齿轮图标,配置工程。
- 输入WIFI名称和密码,然后点击保存
-
编译工程:点击左下角工具栏中的圆柱图标,编译工程,如图:
在终端栏中可以看到编译日志:
-
烧写程序
- 配置烧写方式及串口号
- 选择烧写串口,串口号根据实际情况选择。
- 烧写程序到ESP32
- 配置烧写方式及串口号
-
监听串口,查看WIFI连接结果
- 启动监听
- 串口输出如下:
- 启动监听
--- WARNING: GDB cannot open serial ports accessed as COMx
--- Using \\.\COM70 instead...
--- idf_monitor on \\.\COM70 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jul 29 2019 12:21:46
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:6624
load:0x40078000,len:14780
load:0x40080400,len:3792
0x40080400: _init at ??:?
entry 0x40080694
I (28) boot: ESP-IDF v4.4-dirty 2nd stage bootloader
I (28) boot: compile time 17:05:51
I (28) boot: chip revision: 3
I (31) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (38) boot.esp32: SPI Speed : 40MHz
I (43) boot.esp32: SPI Mode : DIO
I (47) boot.esp32: SPI Flash Size : 4MB
I (52) boot: Enabling RNG early entropy source...
I (57) boot: Partition Table:
I (61) boot: ## Label Usage Type ST Offset Length
I (68) boot: 0 nvs WiFi data 01 02 00009000 00006000
I (76) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (83) boot: 2 factory factory app 00 00 00010000 00100000
I (91) boot: End of partition table
I (95) boot_comm: chip revision: 3, min. application chip revision: 0
I (102) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=13510h ( 79120) map
I (139) esp_image: segment 1: paddr=00023538 vaddr=3ffb0000 size=03810h ( 14352) load
I (145) esp_image: segment 2: paddr=00026d50 vaddr=40080000 size=092c8h ( 37576) load
I (161) esp_image: segment 3: paddr=00030020 vaddr=400d0020 size=6d6a8h (448168) map
I (323) esp_image: segment 4: paddr=0009d6d0 vaddr=400892c8 size=0b01ch ( 45084) load
I (342) esp_image: segment 5: paddr=000a86f4 vaddr=50000000 size=00010h ( 16) load
I (352) boot: Loaded app from partition at offset 0x10000
I (352) boot: Disabling RNG early entropy source...
I (364) cpu_start: Pro cpu up.
I (365) cpu_start: Starting app cpu, entry point is 0x40081174
0x40081174: call_start_cpu1 at D:/110_Work_ProductsResearch/111-Router/ESP32Work/esp-idf/components/esp_system/port/cpu_start.c:156
I (0) cpu_start: App cpu up.
I (379) cpu_start: Pro cpu start user code
I (379) cpu_start: cpu freq: 160000000
I (379) cpu_start: Application information:
I (383) cpu_start: Project name: wifi_station
I (389) cpu_start: App version: v4.4-dirty
I (394) cpu_start: Compile time: Apr 1 2022 17:05:28
I (400) cpu_start: ELF file SHA256: 0755f744dd970668...
I (406) cpu_start: ESP-IDF: v4.4-dirty
I (411) heap_init: Initializing. RAM available for dynamic allocation:
I (418) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (424) heap_init: At 3FFB74B0 len 00028B50 (162 KiB): DRAM
I (431) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (437) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (443) heap_init: At 400942E4 len 0000BD1C (47 KiB): IRAM
I (451) spi_flash: detected chip: generic
I (454) spi_flash: flash io: dio
I (459) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (528) wifi station: ESP_WIFI_MODE_STA
I (538) wifi:wifi driver task: 3ffc0548, prio:23, stack:6656, core=0
I (538) system_api: Base MAC address is not set
I (538) system_api: read default base MAC address from EFUSE
I (558) wifi:wifi firmware version: 7679c42
I (558) wifi:wifi certification version: v7.0
I (558) wifi:config NVS flash: enabled
I (558) wifi:config nano formating: disabled
I (558) wifi:Init data frame dynamic rx buffer num: 32
I (568) wifi:Init management frame dynamic rx buffer num: 32
I (568) wifi:Init management short buffer num: 32
I (578) wifi:Init dynamic tx buffer num: 32
I (578) wifi:Init static rx buffer size: 1600
I (588) wifi:Init static rx buffer num: 10
I (588) wifi:Init dynamic rx buffer num: 32
I (588) wifi_init: rx ba win: 6
I (598) wifi_init: tcpip mbox: 32
I (598) wifi_init: udp mbox: 6
I (598) wifi_init: tcp mbox: 6
I (608) wifi_init: tcp tx win: 5744
I (608) wifi_init: tcp rx win: 5744
I (618) wifi_init: tcp mss: 1440
I (618) wifi_init: WiFi IRAM OP enabled
I (618) wifi_init: WiFi RX IRAM OP enabled
I (628) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
I (738) wifi:mode : sta (44:17:93:b4:c4:3c)
I (738) wifi:enable tsf
I (748) wifi station: wifi_init_sta finished.
I (758) wifi:new:<11,0>, old:<1,0>, ap:<255,255>, sta:<11,0>, prof:1
I (758) wifi:state: init -> auth (b0)
I (788) wifi:state: auth -> assoc (0)
I (808) wifi:state: assoc -> run (10)
I (848) wifi:connected with Redmi Note 10 Pro, aid = 2, channel 11, BW20, bssid = da:ff:5c:70:d8:2f
I (848) wifi:security: WPA2-PSK, phy: bgn, rssi: -32
I (858) wifi:pm start, type: 1
I (938) wifi:AP's beacon interval = 102400 us, DTIM period = 2
I (1528) esp_netif_handlers: sta ip: 192.168.141.162, mask: 255.255.255.0, gw: 192.168.141.105
I (1528) wifi station: got ip:192.168.141.162
I (1528) wifi station: connected to ap SSID:Redmi Note 10 Pro password:xxxxx
可以看到最后一行的输出,ESP32模块已经连入了WIFI热点。
3. 总结
以上就是采用ESP32模块作为STA模式使用时快速接入WIFI热点的使用方法,同时也详细的描述了ESP32开发的基本开发工作流。
相关博文:
- 从零开始玩转ESP32产品开发(一):开发环境搭建