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的工作已完成