一.模式介绍
1.接入点模式:在接入点模式下,ESP8266相当于一个无线路由器,能够向外发送wifi信号,其他手机电脑能够连接此wifi信号,但是不提供Internet服务。
2.无线终端模式:在无线终端模式下,ESP8266和手机电脑一样,相当于一个终端,能够连接其他的wifi信号,在同一wifi信号下的终端可以进行通讯。
二.函数介绍
1.WiFi.softAP(ssid,password)
参数:ssid为要创建的wifi信号的名称,password为创建wifi信号的密码
作用:在接入点模式下通过此函数来创建wifi信号
2.WiFi.softAPIP()
作用:在接入点模式下通过此函数来打印ESP8266的IP地址,此时IP地址为固定的
3.WiFi.begin(ssid,password)
参数:ssid为接入无线的名称,password为接入无线的密码
作用:在无线终端模式下,接入以ssid为名称,password为密码的无线信号
4.WiFi.status()
作用:在无线终端模式下,返回esp8266接入无线状态,如果正常接入无线,那么返回WL_CONNECTED。
5.WiFi.localIP()
作用:在无线终端模式下,返回此时ESP8266的IP地址,此时的IP地址由无线路由器分配
6.WiFi.SSID()
作用:在无线终端下,返回接入的无线名称
7.wifiMulti.addAP("HUAWEI Mate 30","1234567890")
作用:添加多个无线名称密码,ESP8266自动选择信号最强的连接
8.wifiMulti.run()
作用:与WiFi.status()类似,返回接入最强无线的状态
三.代码
//接入点模式
#include <ESP8266WiFi.h>
void setup(void)
{
const char *ssid="GCR";
const char *password="12345678";
Serial.begin(9600);
//创建名为GCR,密码为12345678的wifi信号
WiFi.softAP(ssid,password);
Serial.print("Access Point:");
Serial.println(ssid);
Serial.print("Address:");
//在接入点模式下打印IP地址
Serial.println(WiFi.softAPIP());
}
void loop(void)
{
}
//无线终端模式
#include <ESP8266WiFi.h>
void setup(void)
{
int i=0;
const char *ssid="HUAWEI Mate 30";
const char *password="1234567890";
Serial.begin(9600);
//接入名为HUAWEI Mate 30,密码为1234567890的wifi
WiFi.begin(ssid,password);
Serial.print("Connect to:");
Serial.println(ssid);
//判断WiFi是否接入,如果没接入就等待
while(WiFi.status()!=WL_CONNECTED)
{
delay(1000);
Serial.print(i++);
Serial.print(" ");
}
Serial.println(" ");
Serial.println("Connect OK");
//接入之后打印IP地址
Serial.println(WiFi.localIP());
}
void loop(void)
{
}
//自动连接最强wifi
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
//创建一个类,可以调用这个类的函数
ESP8266WiFiMulti wifiMulti;
void setup(void)
{
int i=0;
Serial.begin(9600);
//添加这两个WiFi,哪个信号强就连接哪个
wifiMulti.addAP("HUAWEI Mate 30","1234567890");
wifiMulti.addAP("HUAWEI-B91AN8","ghs13934488149");
Serial.println("Connecting...");
//判断信号最强的wifi是否接入,如果没接入就等待
while(wifiMulti.run()!=WL_CONNECTED)
{
delay(1000);
Serial.print(i++);
Serial.print(" ");
}
Serial.println(" ");
//接入成功,打印接入wifi的名称和IP地址
Serial.println(WiFi.SSID());
Serial.println(WiFi.localIP());
}
void loop(void)
{
}