ESP32 Arduino 学习篇(四)WIFI

本文详细介绍了ESP8266的三种工作模式:AP、STA和AP混合STA,以及相关API,包括模式切换、AP热点建立与配置、STA模式连接、扫描WIFI等。此外,还讨论了智能配网方法,如微信配网和网页Web自动配网,以简化设备连接过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

一. WiFi的STA和AP模式指什么?

ESP8266有三种工作模式,分别为:AP,STA,AP混合STA

1. AP

AP,也就是无线接入点,是一个无线网络的创建者,是网络的中心节点。一般家庭或办公室使用的无线路由器就一个AP。

2. STA

STA是Station的简称,类似于无线终端,STA本身并不接受无线的接入,它可以连接到AP,简单来说就是和手机连接WIFI热点的工作状态相同,可以连接其它的热点。

3. AP混合STA

了解了前两个概念,AP混合STA模式就不难理解了,就是既可以连接到其它的WIFI热点,也可以让别的无线终端连接,这两个过程能同时进行。

二. 相关API

1.模式切换相关API

1. 设置WIFI模式

WiFi.mode(WIFI_MODE_AP);

模式定义如下:

typedef enum {
    WIFI_MODE_NULL = 0,  /**< null mode */
    WIFI_MODE_STA,       /**< WiFi station mode */
    WIFI_MODE_AP,        /**< WiFi soft-AP mode */
    WIFI_MODE_APSTA,     /**< WiFi station + soft-AP mode */
    WIFI_MODE_MAX
} wifi_mode_t;

2. 获取WIFI工作模式

WiFi.getMode();

3. 使能/使能STA模式

WiFi.enableSTA(true);

4. 使能/使能AP模式

WiFi.enableAP(true);

5. 使能/使能Wifi休眠

WiFi.setSleep(true);
仅限STA模式, 默认开启休眠, 如果对实时性要求高,应关闭休眠

2. AP热点

1. WIFI AP热点建立:WiFisoftAP()

bool WiFiAPClass::softAP(const char *ssid, const char *passphrase = (const char *)__null, int channel = 1, int ssid_hidden = 0, int max_connection = 4)

功能:建立AP热点
参数:
ssid – WIFI名称SSID (max 63 char).
passphrase – WIFI密码(for WPA2 min 8 char, for open use NULL)
channel – WiFi 信道, 1 - 13.(默认1)
ssid_hidden – 是否隐藏WIFI名 (0 = broadcast SSID, 1 = hide SSID) 默认0,不隐藏
max_connection – 最大可连接数, 1 - 4. 默认4

2. 配置AP 热点: WiFi.softAPConfig();

bool WiFiAPClass::softAPConfig(IPAddress local_ip, IPAddress gateway, IPAddress subnet)

功能: 配置AP 热点

参数:
local_ip – 本地IP 192.168.4.1
gateway – 网关IP 192.168.4.1
subnet – 子网掩码 255.255.255.0

3. 断开:wifi WiFi.disconnect();

bool WiFiSTAClass::disconnect(bool wifioff = false, bool eraseap = false)

功能: 断开AP热点

参数:
wifioff : 为true则还将关闭网络功能, 默认false 
eraseap : 为true则清空AP热点配置信息, 默认false 

返回:
返回wlan状态码

4. 一些获取AP热点信息的API

#include <Arduino.h>
#include "WiFi.h"
void setup()
{
  Serial.begin(115200);
  WiFi.softAP("ESP_AP", "12345678");
}
void loop()
{
  Serial.print("主机名:");
  Serial.println(WiFi.softAPgetHostname());
  Serial.print("主机IP:");
  Serial.println(WiFi.softAPIP());
  Serial.print("主机IPV6:");
  Serial.println(WiFi.softAPIPv6());
  Serial.print("主机SSID:");
  Serial.println(WiFi.SSID());
  Serial.print("主机广播IP:");
  Serial.println(WiFi.softAPBroadcastIP());
  Serial.print("主机mac地址:");
  Serial.println(WiFi.softAPmacAddress());
  Serial.print("主机连接个数:");
  Serial.println(WiFi.softAPgetStationNum());
  Serial.print("主机网络ID:");
  Serial.println(WiFi.softAPNetworkID());
  Serial.print("主机状态:");
  Serial.println(WiFi.status());
  delay(1000);
}

5. 设置主机名称 WiFi.softAPsetHostname("ESP_oudafa");

bool WiFiAPClass::softAPsetHostname(const char *h
### ESP32 使用 Arduino Framework 连接 WiFi 的教程 在使用 ESP32Arduino 开发框架时,可以通过 `WiFi` 库来实现设备与无线网络的连接。以下是关于如何配置并建立 WiFi 连接的具体方法。 #### 1. 安装开发环境 为了能够运行基于 ESP32 的项目,需先安装支持该硬件平台的工具链以及库文件。推荐通过 Arduino IDE 添加板级支持包完成设置过程[^2]。具体操作如下: - 打开 **Arduino IDE** 软件; - 前往菜单栏中的路径:“文件 -> 首选项”,于附加开发板管理器网址处填入官方地址 https://dl.espressif.com/dl/package_esp32_index.json; - 接着切换至 “工具 -> 开发板 -> 开发板管理器...” 查找 esp32 并点击安装按钮; #### 2. 编写代码示例 下面提供一段简单的程序用于演示如何利用 arduino framework 实现 wifi 功能: ```cpp #include <WiFi.h> const char* ssid = "YourNetworkName"; // 替换为实际 SSID 名称 const char* password = "YourPassword"; // 对应密码字符串 void setup() { Serial.begin(115200); WiFi.begin(ssid, password); // 初始化 Wi-Fi while (WiFi.status() != WL_CONNECTED) { // 循环等待直到成功关联目标 AP delay(1000); Serial.println("Connecting to WiFi.."); } Serial.println("Connected!"); } void loop(){} ``` 上述脚本定义了一个基本的应用场景,在其中包含了必要的头文件 `<WiFi.h>` 来访问底层驱动接口函数。随后声明两个全局变量分别保存接入点的身份标识符及其密钥信息以便后续调用验证身份之用。最后再 main 函数内部执行初始化序列并通过循环检测当前状态直至确认已加入指定局域网为止[^3]。 #### 3. 关键参数解释 - `ssid`: 表示要连接的目标热点名称。 - `password`: 是对应的安全码或者无加密情况下留空即可。 - `Serial.print()` : 输出调试消息到串口监视窗口方便观察进度情况。 - `delay(ms)` :暂停一定毫秒数让处理器有时间处理其他任务或响应外部事件。 #### 4. 测试与部署 上传编译后的二进制镜像前记得核对所选端口号是否匹配实物连线关系,并且确保供电稳定充足以免影响正常启动流程。一旦固件烧录完毕重启模块后应该可以在电脑终端看到打印出来的日志表明已经顺利上线互联网服务[^4]。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值