最基本的联网方案
最基本的联网方案其实很简单,就是在代码里面写死需要连接的WiFi SSID和密码,ESP32在启动的时候,会自动使用该账号和密码连接WiFi,操作简单,但不实用,一个设备更换了网络,就需要同步更换代码。
ESP32网络模式
STA模式
STA模式就类似我们手机正常使用时,它是一个客户端,需要连接到家里的路由器上网。

AP模式
AP模式就类似我们手机的热点,它可以作为一个微型路由器,让其他可联网的设备连接到它。

简单配网
如下代码我们将使用最简单的方法实现如下功能:
ESP32启动时,板载LED灯熄灭,当连接网络成功后,点亮板载LED灯,代码如下:
#include <Arduino.h>
#include <WiFi.h>
#include <WiFiManager.h>
#define LED 2
void setup()
{
Serial.begin(115200);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
WiFi.mode(WIFI_STA); // 设置网络模式为STA模式,需要连接家里的路由器
WiFi.begin("Xiaomi_E15A", "19910226"); // 连接WiFi,第一个参数是WiFi SSID,第二个参数是密码(密码至少要8位)
while (!WiFi.isConnected()) // 循环检查是否联网成功
{
Serial.println("等待网络连接..."); // 不成功打印相关信息
delay(1000); // 延迟一秒钟
}
digitalWrite(LED, HIGH);
Serial.print("网络连接成功,IP: ");
Serial.println(WiFi.localIP());
}
void loop()
{
}
智能灵活配网方案
既然上面的方法配网不够灵活,那是否有更智能的配网方案呢,有!那就是使用WiFiManager库实现智能配网,这个库的配网逻辑如下:
ESP32启动时,首先查看单片机存储中是否有之前保存的账号密码,如果有,将使用该账号密码去连接WiFi,如果连接成功,则流程结束;如果连接不成功,将执行第二步骤。
使用指定的接入点名称(热点名称),启用ESP32的AP模式,然后手机就可以通过WiFi功能扫描到该热点名称并且连接,手机连接热点后,会自动打开ESP32配网的portal页面,在这个页面可以为ESP32配置网络,通过选择扫描到的网络信息,输入密码完成配网。如果连接网络成功,该WiFi SSID和密码将自动保存到ESP32存储中,下次再启动,就无需再次配网。
要用到的库
WiFiManager
github地址:https://github.com/tzapu/WiFiManager
离线下载地址:📎WiFiManager-master.zip (注意:如果提示下载链接失效,请登录语雀,然后刷新本页面,再次点击下载)
引入依赖
之前介绍了如何通过PIO Home添加第三方依赖,本节将介绍另一种添加本地依赖包的方法
解压下载下来的依赖zip包;
将解压后的文件夹拖动到项目的lib目录中即可
代码实现
#include <Arduino.h>
#include <WiFi.h>
#include <WiFiManager.h>
#define LED 2
void setup()
{
Serial.begin(115200);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
WiFiManager manager;
// manager.resetSettings(); // 清除之前保存的账号密码,在实际产品中一定要注释掉,不然每次启动都要配网
manager.autoConnect("auto-connect-esp32");
while (!WiFi.isConnected())
{
Serial.println("等待网络连接...");
delay(1000);
}
digitalWrite(LED, HIGH);
Serial.print("网络连接成功,IP: ");
Serial.println(WiFi.localIP());
}
void loop()
{
}
ESP32开发板支持两种蓝牙协议,分别是经典蓝牙4.2和低功耗蓝牙(BLE),本节课我们学习如何使用经典蓝牙的串口通信功能来实现手机APP控制板载小灯
1. 引入蓝牙串口头文件
#include <BluetoothSerial.h>这个头文件是esp32 Arduino库自带的,无需下载任何第三方包,直接引用即可
2. 使用蓝牙串口进行数据通信
#include <Arduino.h> // vscode
#include <BluetoothSerial.h>
// 引入头文件
// 基于Arduino框架
BluetoothSerial btSerial;
// 函数
void setup() // 设置 初始化
{
btSerial.begin("esp32");
pinMode(2, OUTPUT);
}
void loop() // 循环
{
if (btSerial.available())
{
String command = btSerial.readStringUntil('\n');
if (command == "on")
{
digitalWrite(2, HIGH);
btSerial.println("灯已打开");
}
else if (command == "off")
{
digitalWrite(2, LOW);
btSerial.println("灯已关闭");
}
}
}
上述代码中
第6行,创建一个蓝牙串口对象;
第10行,启动蓝牙串口,并且将蓝牙连接标识符设置为
esp32,手机APP可以搜索该蓝牙设备进行连接第18行,从蓝牙串口中读取手机发送的指令
第19行,判断收到的指令是不是on,如果是,则点亮板载LED灯,同时通过蓝牙串口返回处理结果;
第24行,判断收到的指令是不是off,如果是,则关闭板载LED灯,同时通过蓝牙串口返回处理结果;
3. 下载调试APP
上述代码上传到ESP32开发板之后,下载下方蓝牙串口调试助手
📎蓝牙串口助手.zip (网络下载地址:https://www.wandoujia.com/apps/8339930)
下载后先在电脑上解压,然后上传到手机上进行安装,这里仅支持安卓手机,苹果手机可以在市场搜索一下看看有没有类似的APP
4. 调试
打开手机APP,点击加号,搜索代码中指定的蓝牙设备,连接成功