概述
STA模式用于使ESP32模块连接到由接入点(AP)建立的Wi-Fi网络。
API理解
1.1、配置STA模式
请注意,这一步不需要一定进行配置,但具有静态IP配置的工作站通常可以更快地连接到网络。因为通过DHCP客户端获取IP配置会花费时间,在这种情况下,将跳过此步骤。
如果将所有三个参数都传递为0.0.0.0(local_ip,网关和子网),它将重新启用DHCP。需要重新连接设备以获得新的IP。
/**
* Change IP configuration settings disabling the dhcp client
* @param local_ip Static ip configuration
* @param gateway Static gateway configuration
* @param subnet Static Subnet mask
* @param dns1 Static DNS server 1
* @param dns2 Static DNS server 2
*/
bool WiFiSTAClass::config(IPAddress local_ip, IPAddress gateway, IPAddress subnet, IPAddress dns1, IPAddress dns2)
参数的含义如下:
- local_ip -在此处输入您要分配ESP32接口的IP地址
- gateway -应包含用于访问外部网络的网关(路由器)的IP地址
- subnet -这是一个掩码,用于定义本地网络的IP地址范围
- dns1,dns2-可选参数,用于定义维护域名目录(例如www.google.co.uk)的域名服务器(DNS)的IP地址,并将其转换为IP地址
1.2、开启STA模式,连接AP
/**
* Start Wifi connection
* if passphrase is set the most secure supported mode will be automatically selected
* @param ssid const char* Pointer to the SSID string.
* @param passphrase const char * Optional. Passphrase. Valid characters in a passphrase must be between ASCII 32-126 (decimal).
* @param bssid uint8_t[6] Optional. BSSID / MAC of AP
* @param channel Optional. Channel of AP
* @param connect Optional. call connect
* @return
*/
wl_status_t WiFiSTAClass::begin(const char* ssid, const char *passphrase, int32_t channel, const uint8_t* bssid, bool connect)
参数的含义如下:
- ssid -包含我们要连接的接入点的SSID的字符串,最多可以包含32个字符
- passphrase 到接入点的字符串,长度至少应为8个字符且不超过64个字符
- channel 的AP,如果我们想使用特定的信道进行操作,则可以省略此参数
- bssid -AP的mac地址,此参数也是可选的
- connect-一个boolean参数,如果设置为false,将指示模块仅保存其他参数而不实际建立与接入点的连接
1.3、查看网络信息
IPAddress localIP();
String macAddress();
IPAddress subnetMask();
IPAddress gatewayIP();
IPAddress dnsIP(uint8_t dns_no = 0);
IPAddress broadcastIP();
IPAddress networkID();
uint8_t subnetCIDR();
const char * getHostname();
static wl_status_t status();
String SSID() const;
String psk() const;
uint8_t * BSSID();
String BSSIDstr();
int8_t RSSI();
例子
#include <Arduino.h>
#include <WiFi.h>
const char* ssid = "zy";
const char* password = "123456789";
IPAddress staticIP(192,168,1,22);
IPAddress gateway(192,168,1,9);
IPAddress subnet(255,255,255,0);
void setup()
{
Serial.begin(9600);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.config(staticIP, gateway, subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
}
int value = 0;
void loop()
{
delay(5000);
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.println(" mac address: ");
Serial.println(WiFi. macAddress());
}
评论区