物联网之ESP32配网方式、蓝牙、WiFi

ESP32作为物联网领域中的明星产品,其强大的WiFi和蓝牙功能使其在设备配网方面有着独特的优势。本文将详细介绍ESP32的配网方式,包括WiFi和蓝牙,并提供相应的代码示例。

一、ESP32配网方式

ESP32支持多种配网方式,主要包括SoftAP配网、Smartconfig配网、BLE配网和WEB配网。

1. SoftAP配网

在SoftAP模式下,ESP32会创建一个WiFi热点,用户将手机连接到这个热点后,将要连接的WiFi信息发送给ESP32。这种方式简单可靠,但需要用户手动切换手机WiFi连接的网络。

2. Smartconfig配网

Smartconfig配网方式不需要建立任何通信链路,手机端通过发送不同长度的UDP广播包来表示WiFi信息,ESP32在混杂模式监听信号覆盖范围内的所有数据帧,通过一定算法得到WiFi信息。这种方式简洁,但配网成功率受环境影响较大 。

3. BLE配网

BLE配网使用蓝牙方式进行配网,ESP32会进行BLE广播,附近的手机收到该广播后会询问用户是否进行BLE连接,如选择连接,则手机即可将信息发送给ESP32。这种方式用户体验好,但需要在设备端加入蓝牙相关代码 。

4. WEB配网

WEB配网方式允许在电脑端完成配网。ESP32会建立一个WiFi热点,手机或者PC端在浏览器打开配置网页,在网页中完成配网。这种方式和SoftAP配网一样可靠,但需要在设备端占用空间来嵌入网页 。

二、ESP32蓝牙功能

ESP32的蓝牙功能支持经典蓝牙BT和低功耗蓝牙BLE两种模式。

1. 经典蓝牙BT

经典蓝牙的使用非常简单,通过BluetoothSerial库,可以轻松实现设备之间的通信。以下是一个简单的示例代码:

#include <BluetoothSerial.h>
BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32_BT"); // 设置蓝牙名称
  Serial.println("BT initial ok and ready to pair.");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
  delay(1);
}

2. 低功耗蓝牙BLE

低功耗蓝牙BLE的使用稍微复杂一些,需要创建BLE设备、服务、特征和描述符。以下是一个简单的BLE服务器示例代码:

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>

BLEServer *pServer = NULL;
BLECharacteristic *pTxCharacteristic;
bool deviceConnected = false;

class MyServerCallbacks: public BLEServerCallbacks {
  void onConnect(BLEServer* pServer) {
    deviceConnected = true;
  };

  void onDisconnect(BLEServer* pServer) {
    deviceConnected = false;
  }
};

void setup() {
  Serial.begin(115200);
  BLEDevice::init("ESP32_BLE");
  pServer = BLEDevice::createServer();

  pServer->setCallbacks(new MyServerCallbacks());

  BLEService *pService = pServer->createService(SERVICE_UUID);
  pTxCharacteristic = pService->createCharacteristic(
                         CHARACTERISTIC_UUID_TX,
                         BLECharacteristic::PROPERTY_NOTIFY
                       );
  pService->start();
  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x06);  // functions that help with iPhone performance in background
  pAdvertising->setMinPreferred(0x12);
  BLEDevice::startAdvertising();
  Serial.println("Waiting for a client connection to notify...");
}

void loop() {
  if (deviceConnected) {
    pTxCharacteristic->setValue("Hello World");
    pTxCharacteristic->notify();
    delay(2000);
  }
}

三、ESP32 WiFi功能

ESP32的WiFi功能支持STA模式和AP模式,可以通过以下代码示例连接到WiFi网络:

#include <WiFi.h>

const char* ssid     = "your_ssid";     // 替换为你的WiFi名称
const char* password = "your_password"; // 替换为你的WiFi密码

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);

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

  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
}

void loop() {
}

四、总结

ESP32的配网方式多样,可以根据不同的应用场景选择合适的配网方法。其蓝牙和WiFi功能强大,可以满足物联网设备的各种通信需求。通过掌握这些配网方式和通信协议,可以为物联网项目提供稳定可靠的网络连接。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇

点击领取更多详细资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI_Guru人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值