Arduino core for ESP8266 WiFi chip ESP8266 WiFi中文文档

https://github.com/esp8266/Arduino
https://arduino-esp8266.readthedocs.io/en/2.4.2/
这个项目为Arduino环境带来了对ESP8266芯片的支持。它允许您使用熟悉的Arduino函数和库编写草图,并直接在ESP8266上运行,不需要外部微控制器。ESP8266 Arduino core拥有使用TCP和UDP通过WiFi通信的库,设置HTTP、mDNS、SSDP和DNS服务器,做OTA更新,使用闪存中的文件系统,使用SD卡、伺服器、SPI和I2C外设。

ESP8266WiFi library ESP8266WiFi库

Quick Start 快速入门

#include <ESP8266WiFi.h>

void setup()
{
  Serial.begin(115200);
  Serial.println();

  WiFi.begin("network-name", "pass-to-network");

  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();

  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {}

在线路WiFi。开始(“network-name”, “pass-to-network”)将"network-name"和"pass-to-network"替换为您想要连接的Wi-Fi网络的名称和密码。然后将草图上传到ESP模块,打开串口监视器应该能看到有IP输出。
#include <ESP8266WiFi.h> 包括ESP8266WiFi库。这个库提供了ESP8266特定的Wi-Fi例程,我们调用它来连接网络。

实际连接到Wi-Fi是通过调用:`

WiFi.begin("network-name", "pass-to-network");

连接过程可能需要几秒钟的时间,我们正在检查,以完成以下循环:

while (WiFi.status() != WL_CONNECTED)
{
  delay(500);
  Serial.print(".");
}

while()循环将在WiFi.status()不是WL_CONNECTED时继续循环。只有当状态更改为WL_CONNECTED时,循环才会退出。
最后一行将打印出DHCP分配给ESP模块的IP地址:

Serial.println(WiFi.localIP());

注意:如果连接被建立,然后由于某种原因丢失,ESP将自动重新连接到最后使用的接入点,一旦它再次联机。这将由Wi-Fi库自动完成,无需任何用户干预。

Who is Who 工作模式

连接到Wi-Fi网络的设备称为工作站(STA)。连接到Wi-Fi由一个接入点(AP)提供,它充当一个或多个站点的集线器。另一端的接入点连接到有线网络。接入点通常与路由器集成在一起,提供从Wi-Fi网络到internet的访问。每个接入点都由一个SSID(服务集标识符)识别,它本质上是连接设备(站)到Wi-Fi时选择的网络名称。
ESP8266模块可以作为一个站运行,所以我们可以连接到Wi-Fi网络。它还可以作为软接入点(soft- ap)运行,以建立自己的Wi-Fi网络。因此,我们可以将其他站连接到这种ESP模块。ESP8266还可以在站和软接入点模式下运行。这提供了建立例如网状网络的可能性
在这里插入图片描述
ESP8266WiFi库提供了广泛的C方法(功能)和属性集合来配置和操作车站和/或软接入点模式下的ESP8266模块。

Class Description 类描述

Station (STA)模式

站(STA)模式用于使ESP模块连接到由接入点建立的Wi-Fi网络。
站类描述分为四个部分。首先讨论到接入点建立连接的方法。第二,提供管理连接的方法,例如重新连接或isConnected。第三种是属性,用于获取有关连接的信息,如MAC或IP地址。最后,第四部分提供了连接的其他方法,比如Wi-Fi保护设置(WPS)。
下面是另一个重载的开始的语法,所有可能的参数:

WiFi.begin(ssid, password, channel, bssid, connect)

参数的含义如下:* ssid-一个字符串,其中包含访问点的名称,我们想连接,可能有多达32个字符* * password,一个字符串,应该至少8个字符长,不超过64个字符** channel渠道,如果我们喜欢操作使用特定渠道,否则这个参数可以省略,* bssid- AP的mac地址,这个参数也可选 * connect——一个boolean,如果设置为false,指示模块只保存其他参数,而不实际建立接入点.

config 配置

禁用DHCP客户端(动态主机配置协议),并将站接口的IP配置设置为用户定义的任意值。接口将是静态IP配置,而不是DHCP提供的值。

WiFi.config(local_ip, gateway, subnet, dns1, dns2)

如果配置更改成功应用,函数将返回true。如果无法应用配置,例如模块不在站或站软接入点模式,则返回false。
可提供以下IP配置:

  1. local_ip ——在这里输入您想要分配ESP站接口的IP地址
  2. gateway ——应该包含网关(路由器)的IP地址来访问外部网络
  3. subnet ——这个掩码定义了本地网络的IP地址范围
  4. dns1, dns2 -可选参数,定义域名服务器(DNS)的IP地址,维护一个域名目录(如www.google.co.uk),并将它们转换为IP地址
    代码示例
#include <ESP8266WiFi.h>

const char* ssid = "********";
const char* password = "********";

IPAddress staticIP(192,168,1,22);
IPAddress gateway(192,168,1,9);
IPAddress subnet(255,255,255,0);

void setup(void)
{
  Serial.begin(115200);
  Serial.println();

  Serial.printf("Connecting to %s\n", ssid);
  WiFi.begin(ssid, password);
  WiFi.config(staticIP, gateway, subnet);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {}

示例输出:

Connecting to sensor-net
.
Connected, IP address: 192.168.1.22

请注意,静态IP配置的工作站通常连接到网络更快。在上面的例子中,它花费了大约500ms(一个点)。显示)。这是因为DHCP客户端获取IP配置需要时间,在本例中跳过了这一步。如果您将所有三个参数都传递为0.0.0.0 (local_ip、网关和子网),它将重新启用DHCP。您需要重新连接设备以获得新的ip。

Manage Connection 连接管理

https://arduino-esp8266.readthedocs.io/en/2.4.2/esp8266wifi/station-class.html#isconnected

reconnect 重新连接

重新连接。这是通过从接入点断开连接,然后开始连接到同一个AP来完成的。

WiFi.reconnect()

注:1。模块应该已经连接到一个接入点。如果不是这样,那么函数将返回false,不执行任何操作。2。如果返回true,则意味着连接序列已经成功启动。用户仍需检查连接状态,等待WL_CONNECTED报告:

WiFi.reconnect();
while (WiFi.status() != WL_CONNECTED)
{
  delay(500);
  Serial.print(".");
}

disconnect 断开连接

将当前配置的SSID和密码设置为空值,并从访问点断开站点连接。

WiFi.disconnect(wifioff)

wifioff是一个可选的布尔参数。如果设置为true,则将关闭站点模式。

isConnected 在客户终端和服务器执行数据之间函数返回主要连接状态

WiFi.setAutoConnect(autoConnect)

如果autoConnect连接到接入点,返回true;如果不连接接入点,返回false。

getAutoConnect 检测自动连接

这是setAutoConnect()的“伴侣”函数。如果模块配置为自动连接到电源上最后使用的接入点,则返回true。

WiFi.getAutoConnect()

如果自动连接功能被禁用,那么函数返回false

setAutoReconnect 设置自动连接

设置模块是否在断开连接时尝试重新连接到接入点。

WiFi.setAutoReconnect(autoReconnect)

如果参数autoReconnect设置为true,那么模块将尝试重新建立到AP的丢失连接。如果设置为false,模块将保持断开连接。
注意:当模块已经断开连接时,运行setAutoReconnect(true)将不会使其重新连接到接入点。应该使用reconnect()

waitForConnectResult 等待连接结果

等待直到模块连接到接入点。此功能适用于在站或站软接入点模式下配置的模块。

WiFi.waitForConnectResult()

函数返回下列连接状态之一:* WL_CONNECTED-成功建立连接后 ,* WL_NO_SSID_AVAIL-如果无法访问已配置的SSID,*WL_CONNECT_FAILED-如果密码不正确,*WL_IDLE_STATUS-当Wi-Fi在状态之间变化时,*WL_DISCONNECTED-如果模块没有在站模式下配置

localIP 获取IP

WiFi.localIP()

返回值的类型是IP。有一些方法可以显示这种类型的数据。它们在下面的示例中给出,这些示例包括返回IP的subnetMask、gatewayIP和dnsIP的描述。
代码示例

if (WiFi.status() == WL_CONNECTED)
{
  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
}

示例输出:Connected, IP address: 192.168.1.10

status 连接状态

返回Wi-Fi连接状态。

WiFi.status()

函数返回下列连接状态之一:
1.WL_CONNECTED 成功建立连接后
2.WL_NO_SSID_AVAIL 如果无法访问已配置的SSID
3.WL_CONNECT_FAILED 如果密码不正确
4.WL_IDLE_STATUS 当Wi-Fi在状态之间变化时
5.WL_DISCONNECTED 如果模块没有在站模式下配置
返回值是在wl_definitions.h中定义的wl_status_t类型
代码示例

#include <ESP8266WiFi.h>

void setup(void)
{
  Serial.begin(115200);
  Serial.printf("Connection status: %d\n", WiFi.status());
  Serial.printf("Connecting to %s\n", ssid);
  WiFi.begin(ssid, password);
  Serial.printf("Connection status: %d\n", WiFi.status());
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.printf("\nConnection status: %d\n", WiFi.status());
  Serial.print("Connected, IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {}

示例输出:

Connection status: 6
Connecting to sensor-net
Connection status: 6
......
Connection status: 3
Connected, IP address: 192.168.1.10

在wl_definitions.h中可以查找特定的连接状态6和3。

3 - WL_CONNECTED
6 - WL_DISCONNECTED

基于此示例,当运行上述代码时,模块最初与网络断开连接,并返回连接状态6 - WL_DISCONNECTED。在运行WiFi后,运行后立即断开连接WiFi.begin(ssid, password)。大约3秒后(基于每500ms显示的点数),它最终连接返回状态3 - WL_CONNECTED。

SSID wifi名字

返回Wi-Fi网络的名称,正式名称为服务集标识(SSID)。

WiFi.SSID()

返回的值是字符串类型。
代码示例Serial.printf("SSID: %s\n", WiFi.SSID().c_str());
示例输出:SSID: sensor-net

psk 共享密钥(密码)

返回与Wi-Fi网络相关联的当前预共享密钥(密码)

WiFi.psk()

函数返回字符串类型的值。

RSSI 信号强度

返回Wi-Fi网络的信号强度,正式称为接收信号强度指示(RSSI)。WiFi.RSSI()
信号强度值用dBm表示。返回值的类型是int32_t。
代码示例 Serial.printf("RSSI: %d dBm\n", WiFi.RSSI());
示例输出:RSSI: -68 dBm

Smart Config 智能配置

ESP模块和接入点的智能配置连接是通过嗅探包含所需AP的SSID和密码的特殊数据包来完成的。要做到这一点,移动设备或计算机应该具有广播编码SSID和密码的功能。
下面提供了三个函数来实现智能配置。
通过嗅探包含所需访问点的SSID和密码的特殊包,启动智能配置模式。根据结果返回true或false。

beginSmartConfig()

查询智能配置状态,决定何时停止配置。函数返回布尔类型的true或false。

smartConfigDone()

停止智能配置,释放由beginSmartConfig()获取的缓冲区。根据结果函数返回布尔类型的true或false。

stopSmartConfig()

有关智能配置的详细信息,请参阅ESP8266 API用户指南。

Soft Access Point 中续模式

https://arduino-esp8266.readthedocs.io/en/2.4.2/esp8266wifi/soft-access-point-class.html

猜你喜欢

转载自blog.csdn.net/oXingChenWuJi/article/details/84036512