ESP32配网与经典蓝牙使用

lcysts
15
2025-08-03

最基本的联网方案

最基本的联网方案其实很简单,就是在代码里面写死需要连接的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库实现智能配网,这个库的配网逻辑如下:

  1. ESP32启动时,首先查看单片机存储中是否有之前保存的账号密码,如果有,将使用该账号密码去连接WiFi,如果连接成功,则流程结束;如果连接不成功,将执行第二步骤。

  1. 使用指定的接入点名称(热点名称),启用ESP32的AP模式,然后手机就可以通过WiFi功能扫描到该热点名称并且连接,手机连接热点后,会自动打开ESP32配网的portal页面,在这个页面可以为ESP32配置网络,通过选择扫描到的网络信息,输入密码完成配网。如果连接网络成功,该WiFi SSID和密码将自动保存到ESP32存储中,下次再启动,就无需再次配网。

要用到的库

WiFiManager

引入依赖

之前介绍了如何通过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,点击加号,搜索代码中指定的蓝牙设备,连接成功

动物装饰