当前位置:首页 » 《随便一记》 » 正文

ESP32--WIFI_Paranoid☆的博客

12 人参与  2022年05月17日 16:32  分类 : 《随便一记》  评论

点击全文阅读


文章目录

  • 前言
  • 一、WIFI简介
  • 二、AP模式
  • 三、STA模式
  • 四、AP-STA 共存模式
  • 总结


前言

使使用WIFI功能基本操作是:建立/连接网络


提示:以下是本篇文章正文内容

一、WIFI简介

Wi-Fi 库支持配置及监控 ESP32 Wi-Fi 连网功能
在这里插入图片描述

站点(STA):连接到Wi-Fi网络的设备
接入点(AP):提供与Wi-Fi的连接,接入点的另一端一般会连接到有线网络,接入点通常与路由器集成在一起,以提供从Wi-Fi网络到互联网的访问

AP会通过SSID(Service Set IDentifier) 来识别接入的STA设备该名称实际上是将设备(站点)连接到Wi-Fi时选择的网络名称

常用支持配置:
1.基站模式,即STA 模式或 Wi-Fi 客户端模式,ESP32 连接到接入点 (AP)

2.AP 模式,即 Soft-AP 模式或接入点模式,基站连接到 ESP32

3.AP-STA 共存模式,ESP32 既是接入点,同时又作为基站连接到另外一个接入点

参考资料:
WIFI使用文档

二、AP模式

在此模式下,模块本身相当于一个路由器,其他设备可链接到该模块发送的信号,主要应用在主从设备的主机部分,可以同时连接到soft-AP的最大站数可以设置4,默认为4,这种操作模式称为软接入点(soft-AP)

建立网络基本步骤

1.引用WiFi库 #include <WiFi.h>
2.配置AP模式IP softAPConfig(非必须)
3.启动AP网络 WiFi.softAP(ssid)

softAPConfig函数原型

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

作用:配置了AP模式下的本地IP、网关IP、子网掩码,若没有配置,系统会默认配置

softAP函数原型:

bool WiFiAPClass::softAP(const char* ssid, const char* passphrase, int channel, int ssid_hidden, int max_connection)

开启AP模式,需要配置其网络名称、连接密码(可忽略)、WiFi信道、是否隐藏信号、最大连接数

ssid:网络名称是必须配置项
passphrase:连接密码如果不配置则默认为开放性网络
channel:WiFi信道的配置,用于避免信号干扰。(1-13)
ssid_hidden:是否隐藏信号,可以选择广播信号(broadcast )所有人直接看到,也可以隐藏则需要指定查找
max_connection:最大连接数在默认下是4,可以配置范围1-4

注:除了ssid必须配置,其余都可以忽略

eg:

#include <WiFi.h>

void setup()
{
	WiFi.softAP("spft-AP","12345678");
}

void loop()
{
}

将程序下载到ESP32可以看到一个spft-APwifi,输入密码12345678可以连接
在这里插入图片描述

常用函数
1.关闭AP模式:bool WiFiAPClass::softAPdisconnect(bool wifioff=false)
若wifioff为true则还将还原网络设置

2.获取连接的设备数:uint8_t WiFiAPClass::softAPgetStationNum()

3.设置AP的主机名:bool WiFiAPClass::softAPsetHostname(const char * hostname)

4.查看IP:IPAddress softAPIP();

三、STA模式

STA模式用于使ESP32模块连接到由接入点(AP)建立的Wi-Fi网,在此模式下,模块相当于一个客户端,可以链接到其他路由器发出的WIFI信号,也被称为客户端模式,主要应用在网络通信中

连接网络基本步骤

1.引用WiFi库 #include <WiFi.h>
2.配置STA模式下IP地址 config()(非必须)
3.开启STA模式,连接AP WiFi.begin(ssid, password);

config函数原型:

bool WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1, IPAddress dns2)

作用:为ESP32分配IP,网关,子网,设置网络地址

local_ip :分配ESP32接口的IP地址
gateway :应包含用于访问外部网络的网关(路由器)的IP地址
subnet :掩码,用于定义本地网络的IP地址范围
dns1,dns2:可选参数,用于定义维护域名目录的域名服务器(DNS)的IP地址,并将其转换为IP地址

begin函数原型

wl_status_t WiFiSTAClass::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect)

作用:该方法用来接入网络

ssid :要连接的接入点的SSID的字符串
passphrase:到接入点的字符串,长度至少应为8个字符
channel :信道
bssid :AP的mac地址,此参数也是可选的
connect:boolean参数,如果设置为false,将指示模块仅保存其他参数而不实际建立与接入点的连接

常用函数:
1.获取联网状态wl_status_t status()

状态类型:

255:WL_NO_SHIELD,兼容WiFi Shield而设计
0:WL_IDLE_STATUS 正在WiFi工作模式间切换
1:WL_NO_SSID_AVAIL 无法访问设置的SSID网络
2:WL_SCAN_COMPLETED 扫描完成
3:WL_CONNECTED 连接成功
4:WL_CONNECT_FAILED 连接失败
5:WL_CONNECTION_LOST 丢失连接
6:WL_DISCONNECTED 断开连接

2.是否已接入网络bool isConnected()

3.断开网络 bool disconnect(bool wifioff = false, bool eraseap = false)
若wifioff为true则还将还原网络设置,若eraseap为true则将清除保存于flash中的网络参数

4.获取模块地址 IPAddress localIP()

5.设置断网自动重连接 bool setAutoReconnect(bool autoReconnect)

eg

//	WiFi的初始化和连接
void WiFi_Connect()
{
	WiFi.begin("qaq", "123456789"); //要连接的wifi和密码
	while (WiFi.status() != WL_CONNECTED)
	{ //这里是阻塞程序,直到连接成功
		delay(300);
		Serial.print(".");
	}
}

void setup()
{

	Serial.begin(115200); // open the serial port at 115200 bps;
	delay(100);

	Serial.print("Connecting.. ");

	WiFi_Connect();

	Serial.println("WiFi connected");

	Serial.println("IP address: "); // 打印本地ip地址
	Serial.println(WiFi.localIP());

  	Serial.println("dns:  "); //打印dns地址
	Serial.println(WiFi.dnsIP()); 
}

void loop()
{
}

连接wifi,并打印出相应的信息
在这里插入图片描述

四、AP-STA 共存模式


总结

提示:这里对文章进行总结:


点击全文阅读


本文链接:http://zhangshiyu.com/post/40328.html

模式  连接  网络  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1