esp8266设置WIFI常用方法有两种方式,一种是接入点模式,此种方式esp8266将作为一个热点,其他设备可以连接这个热点,这种方式的英文名称为Access Point, 也称 AP。
另外一种为终端模式,英文名称为Station,简写为STA,此种方式将esp8266作为一台设备连接到局域网路由,从而其他在同一局域网的设备可以访问web服务器,从而实现通讯。
操作wifi需要用到esp8266的一个WiFi库,名字叫做:ESP8266WiFi,我们看一下分别用接入点和终端模式如何连接wifi。
先看接入点的代码:
#include <ESP8266WiFi.h>
const char *ssid = "wificount";
const char *password = "12345678";
void setup() {
Serial.begin(9600);
WiFi.softAP(ssid, password);
Serial.println(WiFi.softAPIP());
}
void loop() {
}
阅读源码,发现有如下几个步骤:
1、引入ESP8266WIFI库
2、自定义wifi账号和密码。
3、直接使用调用WIFI.softAP函数启动wifi,这个函数需要传递两个参数,分别是wifi账号和密码。
4、用WIFI.softAPIP打印出接入点也就是esp8266的ip地址。
步骤很简单,没有什么难点,接下来看一下esp8266作为终端如何连接wifi。
#include <ESP8266WiFi.h> // 本程序使用ESP8266WiFi库
const char* ssid = "wificount";
const char* password = "12345678";
void setup() {
Serial.begin(9600);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
}
Serial.println(WiFi.localIP());
}
void loop() {
}
阅读源码,步骤如下:
1、引入WIFI库。
2、定义wifi账号和密码,这里的账号和密码是附近已知的wifi的账号和密码。
3、调用WFI.begin函数连接wifi,这个参数需要传递两个参数,wifi的账号和密码。
4、通过while循环持续检测连接wifi的情况,如果没有连接则一直检测,连接成功跳出检测,这是一段阻塞代码,这里需要主要需要使用WIFI.status()函数来获取wifi连接状况,如果这个函数返回的值为:WL_CONNECTED,那么说明wifi连接成功。
5、通过WIFI.localIP()函数获取esp8266的ip地址,并打印。
关于终端模式,这里还要补充一点,假设我们所处的环境wifi环境比较多,我们想让esp8266链接信号最强的wifi,该如何操作呢?这里需要用到另一个wifi库。
代码如下:
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
ESP8266WiFiMulti wifiMulti;
void setup(void){
Serial.begin(9600);
wifiMulti.addAP("wifi1", "12345678");
wifiMulti.addAP("wifi2", "87654321");
wifiMulti.addAP("wifi3", "13572468");
while (wifiMulti.run() != WL_CONNECTED) {
delay(100);
}
Serial.println(WiFi.localIP());
}
void loop() {
}
步骤如下:
1、导入ESP8266WIFI库和ESP8266WIFIMulti库。
2、使用ESP8266WIFIMulti实例化一个wifiMulti实例。
3、调用wifiMulti.addAP方法将wifi账号密码添加进内存进行存储。
4、利用while循环和wifiMulti.run方法链接wifi,wifiMulti.run方法成功后返回WL_CONNECTED字符串,wifiMulti.run会自动查找wifi信号最强的wifi。
5、带引esp8266的IP地址。
关于终端模式还有最后需要补充的一点,我们可以固定esp8266的ip地址,而不是每次连接路由,被随机分配IP地址,具体怎么设置呢?看代码:
#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>
ESP8266WiFiMulti wifiMulti;
IPAddress local_IP(192, 168, 0, 123); // 设置ESP8266-NodeMCU联网后的IP
IPAddress gateway(192, 168, 0, 1); // 设置网关IP(通常网关IP是WiFI路由IP)
IPAddress subnet(255, 255, 255, 0); // 设置子网掩码
IPAddress dns(192,168,0,1); // 设置局域网DNS的IP(通常局域网DNS的IP是WiFI路由IP)
void setup(void){
Serial.begin(9600);
// 设置开发板网络环境
if (!WiFi.config(local_IP, gateway, subnet)) {
Serial.println("Failed to Config ESP8266 IP");
}
wifiMulti.addAP("wifi1", "12345678");
wifiMulti.addAP("wifi2", "87654321");
wifiMulti.addAP("wifi3", "13572468");
while (wifiMulti.run() != WL_CONNECTED) {
delay(100);
}
Serial.println(WiFi.localIP());
}
void loop() {
}
阅读追加的代码,调用IPAddress定义了四个变量,local_AP,gateway,subnet,dns,分别为本地ip,网关ip,子网掩码,dns的ip。
然后调用WIFI.config函数,一次传入上面得到的参数,并且用函数的返回结果做判断,如果设置成功返回ture,设置失败,返回false。
以上便是esp8266设置wifi的一些具体操作,希望对你有所帮助。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。