ESP-IDF例程浅析——Wi-Fi部分

目录

softAP

station

nan_console

nan_publisher

nan_subscriber

dpp-enrollee

antenna

espnow

fast_scan

ftm

iperf

itwt

power_save

roaming

scan

smart_config

softap_sta

wifi_eap_fast

wifi_enterprise

wps

wps_softap_registrar


softAP

1. 功能概述

  • SoftAP(软件接入点):该示例展示了如何将ESP32配置为一个Wi-Fi接入点(AP),允许其他设备(如手机、电脑等)连接到它。通过这种方式,ESP32可以作为一个Wi-Fi热点,为连接的设备提供网络服务。

  • 支持PMF(Protected Management Frames):SoftAP支持受保护的管理帧(PMF),这是一种增强Wi-Fi安全性的机制。PMF可以通过配置标志来启用。

2. 如何使用该示例

  • 配置项目:在使用该示例之前,需要通过idf.py menuconfig命令进入项目配置菜单:

    • 设置Wi-Fi的SSID(网络名称)。

    • 设置Wi-Fi的密码。

    • 可选:根据需求更改其他配置选项。

  • 编译和烧录:配置完成后,使用idf.py -p PORT flash monitor命令编译项目,并将固件烧录到ESP32开发板上。同时该命令还会启动串口监视器用于查看设备的输出信息。

  • 退出串口监视器:在串口监视器中,可以通过按下Ctrl+]组合键退出。

3. 示例输出

当ESP32成功启动并作为SoftAP运行时,串口监视器会输出以下信息:

  • Wi-Fi初始化完成:显示SoftAP的SSID和密码。

  • 设备连接信息:当有设备连接到ESP32时,会显示设备的MAC地址和分配的IP地址。

    • 例如,station:70:ef:00:43:96:67 join, AID=1表示一个设备成功连接,并获得了192.168.4.2的IP地址。

4. 代码实现的功能

  • Wi-Fi初始化:代码会初始化ESP32的Wi-Fi驱动,并将其配置为SoftAP模式。

  • SSID和密码设置:用户可以通过配置菜单设置SoftAP的SSID和密码,确保只有知道密码的设备可以连接。

  • DHCP服务器:ESP32会作为DHCP服务器,为连接的设备自动分配IP地址。

  • 连接管理:代码会监控设备的连接和断开事件,并在串口监视器中输出相关信息。

5. 应用场景

  • 物联网设备配置:在物联网设备中,ESP32可以作为SoftAP,允许用户通过手机或电脑连接到设备并进行配置。

  • 临时网络:在某些场景下,ESP32可以作为临时网络热点,为其他设备提供网络连接。

  • 安全通信:通过启用PMF,可以增强Wi-Fi通信的安全性,防止管理帧被篡改或伪造。

station

1. 功能概述

  • Wi-Fi Station(工作站):该示例展示了如何将ESP32配置为一个Wi-Fi工作站,使其能够连接到外部的Wi-Fi接入点(AP),从而实现与互联网或其他设备的通信。

  • 连接管理:代码会尝试连接到用户指定的Wi-Fi网络(通过SSID和密码),并处理连接成功或失败的情况。

2. 如何使用该示例

  • 配置项目:在使用该示例之前,需要通过idf.py menuconfig命令进入项目配置菜单:

    • 设置目标Wi-Fi网络的SSID(网络名称)。

    • 设置目标Wi-Fi网络的密码。

    • 可选:根据需求更改其他配置选项(如重试次数、连接超时等)。

  • 编译和烧录:配置完成后,使用idf.py -p PORT flash monitor命令编译项目,并将固件烧录到ESP32开发板上。同时该命令还会启动串口监视器用于查看设备的输出信息。

  • 退出串口监视器:在串口监视器中,可以通过按下Ctrl+]组合键退出。

3. 示例输出

  • 连接成功时的输出

    • 当ESP32成功连接到目标Wi-Fi网络时,串口监视器会输出以下信息:

      • Wi-Fi初始化完成。

      • 连接到的AP的SSID、BSSID(MAC地址)、信道、信号强度(RSSI)等信息。

      • 分配到的IP地址、子网掩码和网关地址。

I (939) wifi: connected with myssid, aid = 1, channel 6, BW20, bssid = ac:9e:17:7e:31:40
I (939) wifi: security type: 3, phy: bgn, rssi: -68
I (2089) esp_netif_handlers: sta ip: 192.168.77.89, mask: 255.255.255.0, gw: 192.168.77.1
I (2089) wifi station: got ip:192.168.77.89
  • 连接失败时的输出

    • 当ESP32无法连接到目标Wi-Fi网络时,串口监视器会输出以下信息:

      • 连接失败的提示。

      • 重试连接的次数。

      • 最终连接失败的总结。

4. 代码实现的功能

  • Wi-Fi初始化:代码会初始化ESP32的Wi-Fi驱动,并将其配置为Station模式。

  • 连接目标AP:代码会尝试连接到用户指定的Wi-Fi网络(通过SSID和密码)。

  • IP地址分配:当连接成功后,ESP32会通过DHCP从AP获取IP地址、子网掩码和网关地址。

  • 连接重试机制:如果连接失败,代码会多次重试,直到达到最大重试次数。

  • 连接状态监控:代码会监控连接状态的变化,并在串口监视器中输出详细的信息。

5. 应用场景

  • 物联网设备联网:在物联网应用中,ESP32可以作为Station连接到家庭路由器或企业Wi-Fi网络,实现与云平台或其他设备的通信。

  • 数据采集与传输:ESP32可以通过Wi-Fi连接到网络,采集传感器数据并上传到服务器。

  • 远程控制:通过Wi-Fi连接,ESP32可以接收远程控制指令,实现对设备的控制。

  • OTA升级:ESP32可以通过Wi-Fi连接,从服务器下载固件并进行空中升级(OTA)。

nan_console

        该示例展示了如何在ESP32上使用**Neighbor Awareness Networking (NAN)**协议,实现设备间的近距离服务发现和通信。NAN(Neighbor Awareness Networking,邻居感知网络)是一种直接设备到设备的通信协议,不需要互联网或接入点(AP)的支持。NAN的核心功能是服务发现设备间。以下是该示例的详细功能分析:

1. NAN 协议概述

  • NAN 集群:多个NAN设备在附近时会形成一个NAN集群,集群中的设备可以通过NAN协议进行通信。

  • 服务发现:NAN设备可以发布(Publish)或订阅(Subscribe)服务。服务发现通过服务名称和可选的匹配过滤器来实现。

  • 通信模式

    • Publisher(发布者):发布服务,可以选择主动广播(Unsolicited模式)或响应订阅者的请求(Solicited模式)。

    • Subscriber(订阅者):搜索服务,可以选择被动监听(Passive模式)或主动发送广播帧(Active模式)。

  • 数据路径(Datapath):当服务匹配成功后,设备可以通过**NDP(NAN Datapath)**建立数据路径,并使用IPv6地址进行通信。

2. 示例功能

该示例通过控制台(Console)实现了以下功能:

  • 启动和停止NAN:设备可以加入或退出NAN集群。

  • 发布和订阅服务:设备可以发布服务或订阅其他设备发布的服务。

  • 服务匹配:当订阅者找到匹配的服务时,可以发送Follow-up消息或建立NDP数据路径。

  • 数据通信:通过NDP建立连接后,设备可以使用IPv6地址进行通信(如Ping测试)。

  • 消息传递:设备之间可以发送和接收文本消息。

3. 如何使用示例

示例提供了一个控制台界面,用户可以通过输入命令来配置NAN和进行服务发现。以下是主要命令及其功能:详见ReadME

4. 应用场景

  • 近距离设备发现:在物联网应用中,设备可以通过NAN发现附近的设备和服务。

  • 无网络通信:在无互联网或AP的环境下,设备可以通过NAN直接通信。

  • 动态服务交互:设备可以动态发布和订阅服务,实现灵活的交互(如文件传输、消息传递等)。

nan_publisher

1. 功能概述

  • NAN Publisher:该示例实现了一个NAN发布者,可以发布服务并与其他NAN设备(订阅者)进行通信。

  • 服务发布:发布者可以发布一个服务,其他设备(订阅者)可以通过服务名称和匹配过滤器来发现该服务。

  • 交互模式

    • Follow-up消息交换:当订阅者发现服务后,可以发送Follow-up消息,发布者会回复消息。

    • Datapath建立:订阅者可以请求与发布者建立Datapath(数据路径),发布者会接受请求并分配IPv6地址,双方可以通过IPv6进行通信。

2. 如何使用该示例

  • 配置服务:在menuconfig中配置发布者的服务名称、发布类型(Unsolicited或Solicited)、匹配过滤器和回复消息。

  • 运行示例:将代码烧录到ESP32设备上,设备会自动启动NAN并发布服务。

  • 交互测试:在附近运行NAN Subscriber示例的设备可以发现该发布者,并与之进行Follow-up消息交换或建立Datapath。

3. 应用场景

  • 设备发现:发布者可以发布服务,订阅者可以发现并与之交互。

  • 数据共享:通过Datapath,设备之间可以直接共享数据。

  • 无网络通信:在无互联网或AP的环境中,设备可以通过NAN进行通信。

nan_subscriber

1. 功能概述

  • NAN Subscriber:该示例实现了一个NAN订阅者,可以搜索并订阅发布者发布的服务。

  • 服务订阅:订阅者可以订阅特定名称的服务,并通过匹配过滤器来筛选服务。

  • 交互模式

    • Follow-up消息交换:当订阅者发现匹配的服务后,可以发送Follow-up消息,发布者会回复消息。

    • Datapath建立:订阅者可以请求与发布者建立Datapath(数据路径),并通过IPv6地址进行通信(如Ping测试)。

2. 如何使用该示例

  • 配置服务:在menuconfig中配置订阅者要订阅的服务名称、订阅类型(Passive或Active)和匹配过滤器。

  • 运行示例:将代码烧录到ESP32设备上,设备会自动启动NAN并订阅服务。

  • 交互测试:在附近运行NAN Publisher示例的设备可以发布服务,订阅者会发现该服务并与之进行Follow-up消息交换或建立Datapath。

5. 应用场景

  • 设备发现:订阅者可以发现发布者发布的服务,并与之交互。

  • 数据共享:通过Datapath,设备之间可以直接共享数据。

  • 无网络通信:在无互联网或AP的环境中,设备可以通过NAN进行通信。

dpp-enrollee

        这段代码展示了如何使用Device Provisioning Protocol (DPP),也称为Wi-Fi Easy Connect,将ESP32配置为Enrollee(被配置设备)。DPP提供了一种简单且安全的方式,将设备连接到Wi-Fi网络。以下是代码的详细功能介绍:

1. 功能概述

  • DPP Enrollee:该示例实现了一个DPP Enrollee,允许ESP32通过DPP协议连接到Wi-Fi网络。

  • QR码配置:ESP32会生成一个QR码,用户可以使用支持DPP Initiator的设备(如Android 10+手机)扫描该QR码,将ESP32配置到目标Wi-Fi网络。

  • PSK认证:DPP支持PSK(Pre-Shared Key)认证模式,确保连接的安全性。

2. 如何使用该示例

2.1 准备工作

  • 一个支持DPP Initiator模式的设备(如Android 10+手机)。

  • 目标Wi-Fi网络的SSID和密码。

2.2 运行步骤

  1. 编译和烧录:将代码编译并烧录到ESP32设备上。

  2. 生成QR码:ESP32启动后,会在串口监视器中显示一个QR码。

  3. 扫描QR码

    • 将手机连接到目标Wi-Fi网络(例如“Example-AP”)。

    • 进入手机的Wi-Fi设置,选择“添加设备”或类似选项。

    • 使用手机的QR码扫描功能扫描ESP32生成的QR码。

  4. 自动连接:扫描成功后,ESP32会自动连接到目标Wi-Fi网络。

2.3 可选配置

  • 可以通过menuconfig配置QR码的显示方式和其他参数。

3. 应用场景

  • 物联网设备配置:在物联网应用中,DPP可以简化设备连接到Wi-Fi网络的过程,尤其是对于没有用户界面的设备(如智能家居设备)。

  • 安全性要求高的场景:DPP提供了更高的安全性,适合需要保护网络凭证的场景。

  • 批量设备配置:DPP可以用于批量配置设备,减少手动输入Wi-Fi密码的工作量。

4. 注意事项

  • QR码显示:QR码应确保在白色背景上显示为黑色,且没有断线,以确保扫描成功。

  • 设备兼容性:需要使用支持DPP Initiator的设备(如Android 10+手机)来扫描QR码。

  • 网络环境:确保目标Wi-Fi网络信号良好,且ESP32在信号覆盖范围内。

antenna

        这段代码展示了如何在ESP32上实现多天线软件切换功能。通过该功能,ESP32可以在多个天线之间动态切换,以优化Wi-Fi信号的接收和发送性能。以下是代码的详细功能介绍:

1. 功能概述

  • 多天线切换:ESP32支持多个天线的配置,可以通过软件动态切换天线,以优化Wi-Fi性能。

  • 天线选择:代码会根据配置选择特定的天线进行信号接收(RX)和发送(TX)。

  • Wi-Fi连接:ESP32作为Station模式,尝试连接到指定的Wi-Fi网络,并在连接成功后输出天线切换的详细信息。

2. 如何使用该示例

2.1 配置项目

  • 打开项目配置菜单(idf.py menuconfig)。

  • Example Configuration菜单中:

    • 设置Wi-Fi配置(SSID和密码)。

    • 可选:根据需要更改其他配置选项。

2.2 编译和烧录

  • 使用以下命令编译项目并将其烧录到ESP32开发板上:idf.py -p PORT flash monitor

3. 应用场景

  • 信号优化:在信号较弱或不稳定的环境中,通过动态切换天线可以优化Wi-Fi性能。

  • 多天线设备:适用于配备多个天线的ESP32设备,通过软件切换选择最佳天线。

  • 物联网设备:在物联网应用中,通过优化天线配置可以提高设备的通信可靠性。

espnow

        ESPNOW是Espressif开发的一种协议,允许设备在没有建立传统Wi-Fi连接的情况下直接发送和接收数据。以下是代码的详细功能介绍:

1. 功能概述

  • ESPNOW通信:该示例实现了ESPNOW协议,允许两个或多个ESP32设备之间直接发送和接收数据。

  • 广播与单播:设备可以通过广播方式发现其他设备,并通过单播方式进行定向通信。

  • 低功耗:ESPNOW不需要建立完整的Wi-Fi连接,因此具有较低的功耗。

  • 安全性:支持主密钥(Primary Master Key)和本地密钥(Local Master Key)加密,确保通信的安全性。

2. 如何使用该示例

2.1 准备工作

  • 至少两个ESP32设备。

  • 确保设备在同一Wi-Fi信道上,并使用相同的密钥配置。

2.2 配置项目

  1. 打开项目配置菜单(idf.py menuconfig)。

  2. Example Configuration菜单中:

    • 设置Wi-Fi模式(Station或SoftAP)。

    • 设置ESPNOW主密钥(Primary Master Key)和本地密钥(Local Master Key)。

    • 设置Wi-Fi信道。

    • 设置发送次数(Send count)、发送延迟(Send delay)和数据长度(Send len)。

    • 可选:启用长距离模式(Enable Long Range),以支持更远距离的通信。

2.3 编译和烧录

3. 应用场景

  • 物联网设备通信:在物联网应用中,ESPNOW可以用于设备间的低功耗通信。

  • 传感器网络:在传感器网络中,ESPNOW可以用于传感器数据的快速传输。

  • 远程控制:在远程控制应用中,ESPNOW可以用于发送控制指令。

  • 长距离通信:启用长距离模式后,ESPNOW可以支持更远距离的通信。

fast_scan

        这段代码展示了如何使用ESP32的Wi-Fi驱动实现**快速扫描(Fast Scan)全信道扫描(All Channel Scan)**功能,并连接到目标Wi-Fi网络。以下是代码的详细功能介绍:

1. 功能概述

  • Wi-Fi扫描:ESP32支持两种扫描模式:

    • 快速扫描(Fast Scan):在扫描到匹配的AP(接入点)后立即结束扫描,即使未完成所有信道的扫描。

    • 全信道扫描(All Channel Scan):扫描所有信道,并存储最多4个完全匹配的AP信息。

  • 连接AP:扫描完成后,ESP32会尝试连接到信号最强的AP。

  • 过滤条件:可以设置信号强度阈值和认证模式(如Open、WEP、WPA、WPA2),Wi-Fi驱动会忽略不满足条件的AP。

2. 如何使用该示例

2.1 准备工作

  • 一块ESP32开发板(如ESP32-DevKitC)。

  • 一根USB线用于供电和编程。

2.2 配置项目

  1. 打开项目配置菜单(idf.py menuconfig)。

  2. Example Configuration菜单中:

    • 设置Wi-Fi的SSID和密码。

    • 可选:根据需要更改其他配置选项(如扫描模式、信号强度阈值等)。

3. 应用场景

  • 快速连接:在已知目标AP的环境中,使用快速扫描可以快速连接到目标网络。

  • 信号优化:在多个AP的环境中,使用全信道扫描可以找到信号最强的AP并连接到它。

  • 物联网设备:在物联网应用中,ESP32可以通过扫描功能自动连接到最佳的网络。

ftm

        这段代码展示了如何使用**Fine Timing Measurement (FTM)**协议,通过Wi-Fi信号测量设备与接入点(AP)之间的距离。FTM是一种基于Wi-Fi Round Trip Time (RTT)的技术,通过计算信号往返时间来确定设备与AP之间的距离。以下是代码的详细功能介绍:

1. 功能概述

  • FTM协议:FTM协议用于测量Wi-Fi信号的往返时间(RTT),从而计算设备与AP之间的距离。

  • RTT计算:通过测量信号从设备到AP的发送时间(TOD)和接收时间(TOA),计算RTT并转换为距离。

    distance = RTT * c / 2           其中,c是光速。

  • 应用场景:适用于室内定位、距离测量以及基于位置的服务。

2. 如何使用该示例

2.1 准备工作

  • 至少两个支持FTM的ESP32设备。

  • 确保设备在同一Wi-Fi信道上。

2.2 配置项目

  1. 打开项目配置菜单(idf.py menuconfig)。

  2. Component config -> Wi-Fi中启用FTM功能。

    • 在Station端启用FTM Initiator支持。

    • 在SoftAP端启用FTM Responder支持。

  3. Example Configuration中启用FTM报告日志(可选)。

2.3 编译和烧录

3. 应用场景

  • 室内定位:在室内环境中,通过FTM测量设备与多个AP的距离,实现精确定位。

  • 距离测量:测量设备与AP之间的实际距离,适用于基于位置的服务。

  • 物联网设备:在物联网应用中,通过FTM实现设备的位置感知和动态路由。

技术精度实现复杂度环境适应性硬件要求时间同步接收端数量
RSSI低(5-10米)简单无需特殊硬件不需要单AP
TOA中高(米级)复杂需要特殊硬件需要单AP
TDOA中高(米级)复杂需要特殊硬件不需要多AP(≥3)
FTM高(1-3米)中等较好需要支持FTM不需要单AP
技术精度覆盖范围硬件要求实现复杂度功耗成本适用场景
Wi-Fi RSSI低(5-10米)无需特殊硬件简单大范围覆盖,低精度需求
Wi-Fi FTM高(1-3米)需要支持FTM中等大范围覆盖,高精度需求
BLE RSSI低(2-5米)无需特殊硬件简单小范围覆盖,低功耗需求
BLE AoA/AoD高(0.1-1米)需要支持AoA/AoD复杂小范围覆盖,高精度需求

iperf

        Iperf是一种网络性能测试工具,用于测量网络带宽、延迟、丢包等指标。该示例实现了Iperf协议,可以在ESP32设备之间或ESP32与计算机之间进行性能测试。以下是代码的详细功能介绍:

1. 功能概述

  • 性能测试:该示例支持TCP和UDP协议的网络性能测试,包括带宽、延迟和丢包等指标

  • 多种模式

    • Station模式:ESP32作为客户端,连接到目标AP并测试与服务器的性能。

    • SoftAP模式:ESP32作为服务器,测试与客户端的性能。

  • 兼容性:支持与Iperf 2.x版本的兼容性。

2. 如何使用该示例

2.1 准备工作

  • 两个ESP32设备,或一个ESP32设备和一台运行Iperf工具的计算机。

  • 确保设备在同一网络中。

2.2 配置项目

  1. 打开项目配置菜单(idf.py menuconfig)。

  2. Component config/ESP System Settings/Channel for console output中选择适当的串口输出接口(默认使用UART0)。

  3. 使用sdkconfig.defaults文件进行性能测试的特定配置。

2.3 编译和烧录

3. 应用场景

  • 网络性能测试:用于测量Wi-Fi网络的带宽、延迟和丢包等指标。

  • 设备性能评估:评估ESP32设备的网络性能。

  • 网络优化:通过性能测试结果优化网络配置和参数。

itwt

        这段代码展示了如何使用**iTWT(Individual Target Wake Time)**功能,这是一种Wi-Fi 6(802.11ax)引入的节能技术,允许设备与AP协商唤醒时间,从而减少功耗。以下是代码的详细功能介绍:

1. 功能概述

  • iTWT功能:iTWT允许设备与AP协商特定的唤醒时间,设备在非唤醒时间可以进入低功耗模式,从而节省能量。

  • 工作模式

    • Modem Sleep(默认模式):支持iTWT功能,并可以通过控制台命令配置iTWT。

    • Light Sleep(未来支持):需要系统支持轻睡眠模式,控制台命令在此模式不可用

  • 节能效果:启用iTWT后,设备的典型电流消耗和平均电流显著降低。

2. 如何使用该示例

2.1 准备工作

  • 一个支持iTWT功能的ESP32设备。

  • 一个支持iTWT功能的AP(接入点)。

2.2 配置项目

  1. 打开项目配置菜单(idf.py menuconfig)。

  2. Component config -> Wi-Fi中启用iTWT功能。

  3. 配置Wi-Fi模式为Station模式。

2.3 编译和烧录

3. 应用场景

  • 低功耗设备:适用于需要长时间运行的电池供电设备,如物联网传感器、智能家居设备等。

  • 节能优化:通过iTWT功能优化设备的功耗,延长电池寿命。

  • Wi-Fi 6网络:适用于支持Wi-Fi 6的网络环境,充分利用iTWT的节能特性。

    power_save

            这段代码展示了如何使用ESP32的Wi-Fi节能模式(Power Save Mode),通过在不同的睡眠模式下降低功耗,从而延长设备的电池寿命。以下是代码的详细功能介绍:

    1. 功能概述

    • 节能模式:ESP32支持多种Wi-Fi节能模式,在Station模式下通过周期性地切换活跃状态和睡眠状态来降低功耗。

    • 工作模式

      • 无节能模式(默认模式):ESP32以全功率运行,不启用节能功能。

      • 最小Modem Sleep模式:设备在每个DTIM(Delivery Traffic Indication Message)周期唤醒以接收信标(Beacon),广播数据不会丢失。

      • 最大Modem Sleep模式:设备在每个监听间隔(Listen Interval)唤醒以接收信标,广播数据可能会丢失,但功耗更低。

    • 节能效果:启用节能模式后,设备的典型电流消耗和平均电流显著降低。

    2. 应用场景

    • 低功耗设备:适用于需要长时间运行的电池供电设备,如物联网传感器、智能家居设备等。

    • 节能优化:通过节能模式优化设备的功耗,延长电池寿命。

    • Wi-Fi连接保持:在节能模式下,设备可以保持与AP的连接,同时降低功耗。

    3. 注意事项

    • AP配置:DTIM周期和监听间隔由AP决定,影响节能效果。

    • 数据丢失:在最大Modem Sleep模式下,广播数据可能会丢失。

    • 模式选择:根据应用需求选择合适的节能模式,平衡功耗和数据接收。

    roaming

            这段代码展示了如何使用**802.11k(Radio Resource Measurement)802.11v(Wireless Network Management)**协议实现Wi-Fi漫游功能。漫游功能允许设备在多个AP之间无缝切换,以保持最佳的网络连接质量。以下是代码的详细功能介绍:

    1. 功能概述

    • 漫游功能:通过802.11k和802.11v协议,设备可以在多个AP之间无缝切换,以保持最佳的网络连接质量。

    • 802.11k:提供无线资源测量功能,帮助设备收集周围AP的信息。

    • 802.11v:提供无线网络管理功能,支持BSS(Basic Service Set)过渡管理,允许AP指导设备切换到另一个AP。

    2. 如何使用该示例

    2.1 准备工作

    • 一个ESP32开发板(如ESP32-DevKitC)。

    • 多个支持802.11k和802.11v的AP。

    • 一根USB线用于供电和编程。

    2.2 配置项目

    1. 打开项目配置菜单(idf.py menuconfig)。

    2. Component config -> Wi-Fi中启用802.11k和802.11v支持。

    3. 配置Wi-Fi模式为Station模式。

    3. 应用场景

    • 移动设备:适用于需要在多个AP之间移动的设备,如智能手机、平板电脑等。

    • 无缝漫游:适用于需要无缝漫游的场景,如企业办公、医院、商场等。

    • 网络优化:通过漫游功能优化设备的网络连接质量,提高用户体验。

    4. 注意事项

    • AP支持:确保AP支持802.11k和802.11v协议,否则无法正常使用漫游功能。

    • 信号强度:设备会根据AP的信号强度和质量决定是否切换,确保AP的覆盖范围重叠。

    • 网络配置:确保所有AP使用相同的SSID和安全设置,以实现无缝漫游。

    scan

            这段代码展示了如何使用ESP32的Wi-Fi驱动进行AP(接入点)扫描,以发现附近的Wi-Fi网络。以下是代码的详细功能介绍:

    1. 功能概述

    • AP扫描:ESP32可以扫描附近的Wi-Fi网络,并获取每个AP的详细信息,包括SSID、RSSI(信号强度)、认证模式、加密方式和信道等。

    • 扫描结果:扫描结果会显示在串口监视器中,用户可以根据需要选择目标网络进行连接。

    2. 如何使用该示例

    2.1 准备工作

    • 一块ESP32开发板(如ESP32-DevKitC)。

    • 一根USB线用于供电和编程。

    2.2 配置项目

    1. 打开项目配置菜单(idf.py menuconfig)。

    2. Example Configuration菜单中:
      设置扫描列表的最大大小(Max size of scan list),即最多可以扫描的AP数量。

    2.3 编译和烧录

    3.扫描结果:扫描结果显示每个AP的SSID、RSSI、认证模式、加密方式和信道等信息

    I (2783) scan: SSID 		IoTNetwork
    I (2783) scan: RSSI 		-50
    I (2783) scan: Authmode 	WIFI_AUTH_WPA2_PSK
    I (2783) scan: Pairwise Cipher 	WIFI_CIPHER_TYPE_CCMP
    I (2793) scan: Group Cipher 	WIFI_CIPHER_TYPE_CCMP
    I (2793) scan: Channel 		5

    4. 应用场景

    • 网络发现:适用于需要发现附近Wi-Fi网络的应用,如智能家居、物联网设备等。

    • 网络选择:用户可以根据扫描结果选择目标网络进行连接。

    • 网络分析:适用于需要分析Wi-Fi网络环境的场景,如网络优化、故障排查等。

    5. 注意事项

    • 扫描范围:ESP32的Wi-Fi扫描范围受限于硬件和信号强度,建议在信号较强的环境下进行扫描。

    • 扫描列表大小:根据需求设置扫描列表的最大大小,以避免内存不足。

    • 功耗:Wi-Fi扫描会消耗一定的电量,建议在电池供电的应用中合理使用。

      smart_config

      1. 功能概述

      • SmartConfig功能:通过ESPTOUCH协议,ESP32可以从手机APP获取目标Wi-Fi网络的SSID和密码,并自动连接到该网络。

      • ESPTOUCH协议:ESPTOUCH是一种基于UDP广播的协议,手机APP将Wi-Fi配置信息通过数据包发送给ESP32设备。

      • 适用场景:适用于需要快速配置设备连接到Wi-Fi的场景,如智能家居、物联网设备等

      2. 如何使用该示例

      2.1 准备工作

      • 一个ESP32开发板(如ESP32-DevKitC)。

      • 一部安装了ESPTOUCH APP的手机(Android或iOS)。

      • 一根USB线用于供电和编程。

      2.2 配置项目

      1. 打开项目配置菜单(idf.py menuconfig)。

      2. Component config -> Wi-Fi中启用SmartConfig功能。

      2.3 编译和烧录

      3. 应用场景

      • 智能家居:适用于智能家居设备的快速Wi-Fi配置,如智能灯泡、智能插座等。

      • 物联网设备:适用于物联网设备的快速联网配置,如传感器、控制器等。

      • 快速部署:适用于需要快速部署大量设备的场景,如商场、酒店等。

      softap_sta

              这段代码展示了如何使ESP32同时作为**SoftAP(软接入点)Station(客户端)工作,并支持NAPT(网络地址端口转换)**功能,从而实现Wi-Fi NAT路由器的功能。以下是代码的详细功能介绍:

      1. 功能概述

      • SoftAP模式:ESP32作为接入点,允许其他设备连接到它。

      • Station模式:ESP32作为客户端,连接到另一个Wi-Fi网络。

      • NAPT功能:在SoftAP接口上启用NAPT,使连接到SoftAP的设备可以通过Station接口访问外部网络。

      • 应用场景:适用于需要将设备同时作为AP和客户端使用的场景,如Wi-Fi中继器、NAT路由器等。

      2. 如何使用该示例

      2.1 准备工作

      • 一个ESP32开发板(如ESP32-DevKitC)。

      • 一个外部Wi-Fi网络(用于Station模式连接)。

      • 一根USB线用于供电和编程。

      2.2 配置项目

      1. 打开项目配置菜单(idf.py menuconfig)。

      2. Example Configuration中:

        • 设置SoftAP的SSID和密码。

        • 设置Station模式的目标AP的SSID和密码。

      3. 可选:根据需要修改其他配置选项。

      2.3 编译和烧录

      3. 应用场景

      • Wi-Fi中继器:适用于需要扩展Wi-Fi覆盖范围的场景。

      • NAT路由器:适用于将本地网络连接到外部网络的场景。

      • 物联网网关:适用于需要将多个设备连接到外部网络的物联网应用。

      4. 注意事项

      • 网络配置:确保SoftAP和Station模式的网络配置正确,以避免连接问题。

      • NAPT性能:NAPT功能可能会影响网络性能,建议在低负载环境下使用。

      • 安全性:确保SoftAP和Station模式的密码设置足够安全,以防止未经授权的访问。

      wifi_eap_fast

      wifi_enterprise

              这段代码展示了如何使用WPA2-Enterprise加密EAP-FAST方法,使ESP32设备能够连接到支持企业级加密的Wi-Fi网络。以下是代码的详细功能介绍:

      1. 功能概述

      • WPA2-Enterprise加密:WPA2-Enterprise是一种基于802.1X认证的Wi-Fi加密方式,适用于企业级网络。

      • EAP-FAST方法:EAP-FAST(Extensible Authentication Protocol - Flexible Authentication via Secure Tunneling)是一种基于隧道的认证方法,支持快速重新认证。

      • 认证流程:设备通过EAP-FAST方法与AP进行认证,使用用户名、密码和可选的身份信息(Identity)进行身份验证。

      2. 如何使用该示例

      2.1 准备工作

      • 一个ESP32开发板(如ESP32-DevKitC)。

      • 一个支持WPA2-Enterprise加密的AP。

      • 一根USB线用于供电和编程。

      2.2 配置项目

      1. 打开项目配置菜单(idf.py menuconfig)。

      2. Example Configuration中:

        • 设置目标AP的SSID。

        • 输入EAP-ID、用户名和密码。

        • 启用或禁用服务器验证(Validate Server)选项。

      2.3 编译和烧录

      3. 应用场景

      • 企业网络:适用于需要高安全性的企业级Wi-Fi网络。

      • 教育机构:适用于学校、大学等教育机构的Wi-Fi网络。

      • 政府机构:适用于政府机构的内部网络,确保数据安全。

      wps

              这段代码展示了如何使用**WPS(Wi-Fi Protected Setup)**协议,使ESP32设备能够快速连接到Wi-Fi路由器。WPS协议简化了Wi-Fi连接的过程,特别适用于需要简化用户操作的场景。以下是代码的详细功能介绍:

      1. 功能概述

      • WPS协议:WPS是一种简化Wi-Fi网络连接的技术,支持两种模式:

        • PBC(Push Button Configuration)模式:用户按下路由器上的WPS按钮,ESP32会自动连接到路由器。

        • PIN(Personal Identification Number)模式:ESP32生成一个PIN码,用户需在路由器上输入该PIN码以完成连接。

      • 适用场景:适用于需要简化Wi-Fi连接流程的场景,如智能家居设备、物联网设备等。

      2. 如何使用该示例

      2.1 准备工作

      • 一个ESP32开发板(如ESP32-DevKitC)。

      • 一个支持WPS功能的路由器。

      • 一根USB线用于供电和编程。

      2.2 配置项目

      1. 打开项目配置菜单(idf.py menuconfig)。

      2. Example Configuration中:

        • 选择WPS模式(PBC或PIN)。

        • 如果是PBC模式,确保路由器支持PBC功能。

        • 如果是PIN模式,ESP32会生成一个PIN码,用户需在路由器上输入该PIN码。

      2.3 编译和烧录

      3. 应用场景

      • 智能家居设备:适用于需要简化Wi-Fi连接流程的智能家居设备,如智能灯泡、智能插座等。

      • 物联网设备:适用于需要快速连接到Wi-Fi网络的物联网设备,如传感器、控制器等。

      • 用户友好性:适用于需要简化用户操作的场景,如商场、酒店等公共场所的Wi-Fi连接。

      4. 注意事项

      • 路由器支持:确保路由器支持WPS功能,并启用WPS模式。

      • 安全性:WPS协议存在一定的安全风险,建议在安全的环境中使用。

      • PIN码管理:在PIN模式下,确保PIN码的正确性,以避免连接失败。

      wps_softap_registrar

              这段代码展示了如何使用WPS(Wi-Fi Protected Setup)Registrar模式,使ESP32设备作为软接入点(SoftAP)时,能够通过WPS协议简化客户端设备的连接过程。以下是代码的详细功能介绍:

      1. 功能概述

      • WPS Registrar模式:ESP32作为WPS注册器(Registrar),允许客户端设备通过WPS协议快速连接到SoftAP。

      • WPS模式

        • PBC(Push Button Configuration)模式:用户按下客户端设备上的WPS按钮,ESP32会自动与设备建立连接。

        • PIN(Personal Identification Number)模式:ESP32生成一个PIN码,用户需在客户端设备上输入该PIN码以完成连接。

      • 适用场景:适用于需要简化客户端设备连接到SoftAP的场景,如智能家居设备、物联网设备等。

      2. 如何使用该示例

      2.1 准备工作

      • 一个ESP32开发板(如ESP32-DevKitC)。

      • 一个支持WPS功能的客户端设备(如智能手机、平板电脑等)。

      • 一根USB线用于供电和编程。

      2.2 配置项目

      1. 打开项目配置菜单(idf.py menuconfig)。

      2. Example Configuration中:

        • 选择WPS模式(PBC或PIN)。

        • 如果是PBC模式,确保客户端设备支持PBC功能。

        • 如果是PIN模式,ESP32会生成一个PIN码,用户需在客户端设备上输入该PIN码

      2.3 编译和烧录

      3. 应用场景

      • 智能家居设备:适用于需要简化客户端设备连接到SoftAP的智能家居设备,如智能灯泡、智能插座等。

      • 物联网设备:适用于需要快速连接到SoftAP的物联网设备,如传感器、控制器等。

      • 用户友好性:适用于需要简化用户操作的场景,如商场、酒店等公共场所的Wi-Fi连接。

      4. 注意事项

      • 客户端设备支持:确保客户端设备支持WPS功能,并启用WPS模式。

      • 安全性:WPS协议存在一定的安全风险,建议在安全的环境中使用。

      • PIN码管理:在PIN模式下,确保PIN码的正确性,以避免连接失败。

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值