ESP32超详细学习记录:wifi连接最基础方法

2022年05月09日

ESP32连接WiFi

关键函数(抄自官方库.h文件)

//WiFiSTA.h
wl_status_t begin(const char* wpa2_ssid, wpa2_auth_method_t method, const char* wpa2_identity=NULL, const char* wpa2_username=NULL, const char *wpa2_password=NULL, const char* ca_pem=NULL, const char* client_crt=NULL, const char* client_key=NULL, int32_t channel=0, const uint8_t* bssid=0, bool connect=true);
wl_status_t begin(const char* ssid, const char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true);
wl_status_t begin(char* ssid, char *passphrase = NULL, int32_t channel = 0, const uint8_t* bssid = NULL, bool connect = true);
wl_status_t begin();
//WiFiSTA.h
static wl_status_t status();

WiFi库的函数接口: Arduino-ESP32库接口:WiFi.h_喜暖知寒的博客-CSDN博客

简单讲:

连接wifi:

WiFi.begin(ssid,passworld,channel,bassid,connect)

ssid是必须要传入函数的,passworld、channel、bassid、connect如果不传入参数,自动按照默认值。

  • ssid:要连接的WiFi的名称。(类型 char*)
  • password:WiFi密码,默认NULL(类型 char*)
  • channel:WiFi接入点信道,默认为0。(类型 int32_t)
  • bassid:要链接WiFi接入点的mac地址,默认NULL。(类型const uint8_t*)
  • connect:连接状态参数。如果connect参数为true,ESP8266开发板会使用闪存中储存的信息尝试连接WiFi。如果connect参数为false,ESP8266开发板不会尝试连接WiFi,而只会将WiFi连接信息保存在闪存中。默认为true。(类型bool)

其实说ssid也不是必要的参数。如果直接调用:

WiFi.begin()

会根据以前保存在闪存中的参数连接。


获取ESP8266的网络连接状态

WiFi.status();

返回值问题:

  • WL_IDLE_STATUS:0,正在尝试连接
  • WL_NO_SSID_AVAIL:1,没有找到SSID网络
  • WL_SCAN_COMPLETED:2,网络扫描完毕
  • WL_CONNECTED:3,网络连接成功
  • WL_CONNECT_FAILED:4,连接失败
  • WL_CONNECTION_LOST:5,连接丢失
  • WL_DISCONNECTED:6,未连接

代码示例:

为WiFi功能创建了单独文件。目的方便日后移植。

工程目录下一共三个文件:main.ino、UserWiFi.cpp、UserWiFi.h

UserWiFi.h

要做比较大的项目还是要学习写库接口的方法。

#ifndef __USERWIFI__
#define __USERWIFI__

#include <WiFi.h>

class UserWiFi    //定义类
{
public:           //查看其他库就能看出,这里写的是外部可调用的函数

  /*
   * wifi连接函数
  */
  void WiFiConnect(const char * id,const char * psw);

private:          //私有函数
  
};

#endif

UserWiFi.cpp

#include "UserWiFi.h"

void UserWiFi::WiFiConnect(const char * id,const char * psw)
{

  Serial.println("WiFi:");
  Serial.println(id);
  Serial.println("PASSWORLD:");
  Serial.println(psw);
  
  WiFi.begin(id,psw);
  
  while(WiFi.status()!=WL_CONNECTED)
  {
    delay(500);
    Serial.println("正在连接...");
  }
  Serial.println("连接成功!");
}

main.ino

#include "UserWiFi.h"

const char * ID = "NATCAP_0E35";    //wifi名称
const char * PASSWORD = "88888888"; //wifi密码

UserWiFi userwifi;    //类的实例化

void setup() 
{

  Serial.begin(115200);    //串口定义,波特率115200
  
  userwifi.WiFiConnect(ID,PASSWORD);

}

void loop() 
{

  Serial.println("连接成功!");    //串口打印
  delay(5000);

}

简单方法:如果写成一个文件

(已验证,可直接复制编译)

#include <WiFi.h>
 
 
const char * ID = "NATCAP_0E35";
const char * PASSWORD = "88888888";
 
 
void setup() 
{
  Serial.begin(115200);
  
  Serial.println("WiFi:");
  Serial.println(ID);
  Serial.println("PASSWORLD:");
  Serial.println(PASSWORD);
  
  WiFi.begin(ID,PASSWORD);
  
  while(WiFi.status()!=WL_CONNECTED)
  {
    delay(500);
    Serial.println("正在连接...");
  }
 
  Serial.println("连接成功!");
 
}
 
void loop() 
{
  Serial.println("连接成功!");
  delay(5000);
}

最终串口输出:

串口监视器

OK,大致就是这样。只实现基本功能的话非常简单。

猜你喜欢

转载自blog.csdn.net/qq_41650023/article/details/124663892