最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

ESP32 入门学习——WIFI连接

业界 admin 4浏览 0评论

ESP32简介:

特点:时钟频率高,自带WIFI和蓝牙,最牛的是兼容Arduino IDE开发(图形编程会毁掉一个人但Arduino IDE不会),可以省去很多编写函数的步骤,从而专注于功能的实现。

1:实现WIFI(STA)连接

WIFI有两种模式,1.STA模式,让ESP32连接附近WIFI,可以上网访问数据。

#include <WiFi.h>
#include <Arduino.h>
//基础的WIFI函数学习 2024.3.10
//常量 WIFI名以及密码
const char* ssd="lyq";
const char* pasd="1234567890";
byte LED=2;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED,OUTPUT);
  digitalWrite(LED,LOW);
  Serial.begin(115200);
  Serial.print("开始连接WIFI:");
  Serial.print("SSD:");
  Serial.print(ssd);
  
  Serial.println();
  WiFi.begin(ssd,pasd);

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

  Serial.print("IP:\n");
  Serial.print(WiFi.localIP());
  
  digitalWrite(LED,HIGH);
}

可以看到导入WIFI库之后,配置WIFI的代码十分简单,一个WIFI.begin就连接上了WIFI,其他都是反馈功能的代码,在连入WIFI后会获得一个分配的地址,通过LocalIP打印出来,其他设备需要访问ESP32的时候就可以连接这个IP。

2:实现WIFI(AP)连接

2.AP模式,ESP32会自建一个WIFI热点,其他设备可以加入这个热点进行数据交换,类似局域网,不可联网。

//由于为AP模式 SSD就是自己的名称和密码 用于其他设备连接 
const char* SSD="ESP32AP"; 
const char* PSD="123456..";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);

  WiFi.softAP(SSD,PSD);

  Serial.println("热点创建成功!");
  Serial.print("SSD:");
  Serial.println(SSD);

  Serial.println("PASSWD:");
  Serial.println(PSD);

  Serial.println("Access point:");
  Serial.print(WiFi.softAPIP());
  //打印热点IP
}

这里的主要函数就是softAP用于创建热点,烧入后显示可用热点

3:扫描周围可用WIFI

  Serial.begin(115200);
  num=WiFi.scanNetworks();
  Serial.print("周围可用WIFI个数为:");
  Serial.print(num);
  Serial.println();

  Serial.print("WIFI信息如下:");
  for(int a=0;a<=num;a++)
  {
  Serial.print(WiFi.SSID(a));
  Serial.println();
  }

scan函数可以扫描出周围WIFI,并通过未知方式生产一个列表,SSID函数储存了列表信息,可以循环打出,由于周围信号差就扫描出两个WIFI。

4:利用串口函数连接指定WIFI

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  num=WiFi.scanNetworks();
  Serial.print("周围可用WIFI个数为:");
  Serial.print(num);
  Serial.println();

  Serial.print("WIFI信息如下:");
  for(int a=0;a<=num;a++)
  {
  Serial.print(WiFi.SSID(a));
  Serial.println();
  }
  Serial.println("请输入WIFI和密码:");
}

void loop() 
{
  // put your main code here, to run repeatedly:
  while(Serial.available()>0){
    String SD=Serial.readStringUntil(','); 
    ssd=SD.c_str();
    //这个函数是真的nb 
    //读取后缓存区的数据直接消失,可以避免去拆分字符串
    delay(100);

    String PSD=Serial.readStringUntil('\0');
    pasd=PSD.c_str();
    delay(1000);
    Serial.println("WIFI:");
    Serial.println(SD);
    Serial.println("PSD:");
    Serial.println(PSD);
    WiFi.begin(ssd,pasd);

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

  Serial.print("IP:\n");
  Serial.print(WiFi.localIP());
  }
}

通过串口输入需要连接的WIFI信息,读取后自动分割,但是不能直接作为参数使用begin连接,begin的参数类型为char *,但是接受的为String 这时就利用c_str()函数 将读取的String格式数据转为 const char *类型,再进行begin连接

至此连接WIFI的工作已完成

ESP32简介:

特点:时钟频率高,自带WIFI和蓝牙,最牛的是兼容Arduino IDE开发(图形编程会毁掉一个人但Arduino IDE不会),可以省去很多编写函数的步骤,从而专注于功能的实现。

1:实现WIFI(STA)连接

WIFI有两种模式,1.STA模式,让ESP32连接附近WIFI,可以上网访问数据。

#include <WiFi.h>
#include <Arduino.h>
//基础的WIFI函数学习 2024.3.10
//常量 WIFI名以及密码
const char* ssd="lyq";
const char* pasd="1234567890";
byte LED=2;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED,OUTPUT);
  digitalWrite(LED,LOW);
  Serial.begin(115200);
  Serial.print("开始连接WIFI:");
  Serial.print("SSD:");
  Serial.print(ssd);
  
  Serial.println();
  WiFi.begin(ssd,pasd);

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

  Serial.print("IP:\n");
  Serial.print(WiFi.localIP());
  
  digitalWrite(LED,HIGH);
}

可以看到导入WIFI库之后,配置WIFI的代码十分简单,一个WIFI.begin就连接上了WIFI,其他都是反馈功能的代码,在连入WIFI后会获得一个分配的地址,通过LocalIP打印出来,其他设备需要访问ESP32的时候就可以连接这个IP。

2:实现WIFI(AP)连接

2.AP模式,ESP32会自建一个WIFI热点,其他设备可以加入这个热点进行数据交换,类似局域网,不可联网。

//由于为AP模式 SSD就是自己的名称和密码 用于其他设备连接 
const char* SSD="ESP32AP"; 
const char* PSD="123456..";

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);

  WiFi.softAP(SSD,PSD);

  Serial.println("热点创建成功!");
  Serial.print("SSD:");
  Serial.println(SSD);

  Serial.println("PASSWD:");
  Serial.println(PSD);

  Serial.println("Access point:");
  Serial.print(WiFi.softAPIP());
  //打印热点IP
}

这里的主要函数就是softAP用于创建热点,烧入后显示可用热点

3:扫描周围可用WIFI

  Serial.begin(115200);
  num=WiFi.scanNetworks();
  Serial.print("周围可用WIFI个数为:");
  Serial.print(num);
  Serial.println();

  Serial.print("WIFI信息如下:");
  for(int a=0;a<=num;a++)
  {
  Serial.print(WiFi.SSID(a));
  Serial.println();
  }

scan函数可以扫描出周围WIFI,并通过未知方式生产一个列表,SSID函数储存了列表信息,可以循环打出,由于周围信号差就扫描出两个WIFI。

4:利用串口函数连接指定WIFI

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  num=WiFi.scanNetworks();
  Serial.print("周围可用WIFI个数为:");
  Serial.print(num);
  Serial.println();

  Serial.print("WIFI信息如下:");
  for(int a=0;a<=num;a++)
  {
  Serial.print(WiFi.SSID(a));
  Serial.println();
  }
  Serial.println("请输入WIFI和密码:");
}

void loop() 
{
  // put your main code here, to run repeatedly:
  while(Serial.available()>0){
    String SD=Serial.readStringUntil(','); 
    ssd=SD.c_str();
    //这个函数是真的nb 
    //读取后缓存区的数据直接消失,可以避免去拆分字符串
    delay(100);

    String PSD=Serial.readStringUntil('\0');
    pasd=PSD.c_str();
    delay(1000);
    Serial.println("WIFI:");
    Serial.println(SD);
    Serial.println("PSD:");
    Serial.println(PSD);
    WiFi.begin(ssd,pasd);

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

  Serial.print("IP:\n");
  Serial.print(WiFi.localIP());
  }
}

通过串口输入需要连接的WIFI信息,读取后自动分割,但是不能直接作为参数使用begin连接,begin的参数类型为char *,但是接受的为String 这时就利用c_str()函数 将读取的String格式数据转为 const char *类型,再进行begin连接

至此连接WIFI的工作已完成

发布评论

评论列表 (0)

  1. 暂无评论