玩转 ESP32 + Arduino (十) WIFI(AP模式) (STA模式) (smartConfig)

本文详细介绍了ESP32在Arduino环境下的WiFi工作模式,包括AP、STA和AP混合STA模式,并提供了相关API的使用说明。此外,还探讨了WiFi的扫描、连接以及智能配网的过程,帮助用户更便捷地进行物联网设备的网络配置。
摘要由CSDN通过智能技术生成

一. 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. 设置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模式, 默认开启休眠, 如果对实时性要求高,应关闭休眠

三. 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("主机
  • 28
    点赞
  • 221
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,我可以回答你的问题。为了实现这个功能,你可以参考以下步骤: 1. 首先,你需要使用 Arduino IDE 和 ESP32 的开发板库来编写代码。 2. 在代码中,你需要配置 ESP32 的 Wi-Fi 模式AP STA 模式。这可以通过以下代码实现: ``` WiFi.mode(WIFI_AP_STA); ``` 3. 接下来,你需要配置 ESP32APSTA 的连接参数,以便 ESP32 可以连接到 Wi-Fi 网络并提供 AP 服务。这可以通过以下代码实现: ``` WiFi.begin(ssid, password); WiFi.softAP(ap_ssid, ap_password); ``` 其中 `ssid` 和 `password` 是你要连接的 Wi-Fi 网络的 SSID 和密码,`ap_ssid` 和 `ap_password` 是你要设置的 AP 的 SSID 和密码。 4. 然后,你需要创建一个网页,允许用户更改 Wi-Fi 配置和 AP 配置。这可以使用 HTML、CSS 和 JavaScript 来完成。 5. 当用户更改了配置并提交表单时,你需要在 ESP32 上处理表单数据,并将其保存到 LittleFS 文件系统中。这可以通过以下代码实现: ``` File configFile = LittleFS.open("/config.json", "w"); if (configFile) { configFile.print(jsonData); configFile.close(); } ``` 其中 `jsonData` 是从表单中获取的 JSON 数据。 6. 最后,你需要编写代码来读取 LittleFS 文件系统中的配置数据,并将其应用于 ESP32 的 Wi-Fi 配置和 AP 配置。这可以通过以下代码实现: ``` File configFile = LittleFS.open("/config.json", "r"); if (configFile) { size_t size = configFile.size(); std::unique_ptr<char[]> buf(new char[size]); configFile.readBytes(buf.get(), size); configFile.close(); // Parse JSON data and apply Wi-Fi and AP configuration // ... } ``` 其中 `// Parse JSON data and apply Wi-Fi and AP configuration` 部分需要你根据你的 JSON 数据格式和 ESP32 的配置方式来编写代码。 希望这些步骤能够帮助你实现你的需求。如果你有任何问题,请随时问我。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值