ESP32 Arduino开发 网络连接
ESP32 Arduino开发 网络连接
1. 编写相关程序
1.1. 引入头文件
WiFi.h
并不是第三方的库,所以不需要先加载库
#include <WiFi.h>
1.2. 调用WiFi连接函数
WiFi连接函数需要2个参数:网络名称以及网络密码,在setup()
函数之外先对参数进行定义,然后直接调用WiFi.begin()
函数就可以进行STA模式配网。
1.3. 检测网络连接状态
通过WiFi.status()
函数获取当前设备的网络连接状态,如果网络未连接,则继续等待,如果网络连接成功,则打印相关信息。综合1.2、1.3,我们可以写出如下的代码。
#include <WiFi.h>
const char* ssid="要连接wifi名字"; //定义两个字符串指针常量
const char* pass="wifi密码";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
while(WiFi.status()!=WL_CONNECTED){
delay(500);
Serial.println("正在连接...");
}
Serial.println("连接成功!");
}
void loop() {
}
1.4. 连接超时处理
按照我们1.3中所编写的代码,如果我们输入的WiFi信息是错误的情况下,它依旧会一直尝试连接该网络。但是我们都知道,现实中的设备并不会这样处理,在一定时间内连接不上的情况下,会提示超时错误。
最简单的方法就是添加一个变量,每次判断网络是否连接时候使其计数+1,当达到阈值之后,串口打印连接超时。也可以直接用一个循环次数固定的for循环来实现。
#include <WiFi.h>
#define MAX_RETRIES 10
const char* ssid="要连接wifi名字"; //定义两个字符串指针常量
const char* pass="wifi密码";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
int counter = 0;
while(WiFi.status()!=WL_CONNECTED){
delay(500);
counter++;
if(counter > MAX_RETRIES){
Serial.println("连接超时");
break;
}
Serial.println("正在连接...");
}
if(counter <= MAX_RETRIES){
Serial.println("连接成功!");
}
}
void loop() {
}
#include <WiFi.h>
#define MAX_RETRIES 10
const char* ssid="要连接wifi名字"; //定义两个字符串指针常量
const char* pass="wifi密码";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
int counter = 0;
for(int i=0; i<MAX_RETRIES; i++)
{
delay(500);
if(WiFi.status()!=WL_CONNECTED){
Serial.println("正在连接...");
} else{
Serial.println("连接成功!");
break;
}
}
if(WiFi.status()!=WL_CONNECTED){
Serial.println("连接超时");
}
}
void loop() {
}
2. STA模式与AP模式
参考:CSDN博客
STA: station模式,wifi工作在无线终端模式,可通过连接热点连接到网络,基本上现实我们使用的设备都可以工作在此模式,像我们的电脑、手机,工作在这种模式称为从模式。
AP: access point,也就是无线接入点,wifi工作在热点模式,其他sta设备可以连接到此热点,AP工作在主模式,一般所使用的无限路由器就是一个AP。