当前位置: 首页 > wzjs >正文

做网站有哪些行业站长统计app软件下载

做网站有哪些行业,站长统计app软件下载,做网站包含什么职位,天河区门户网站教育局🚀 ESP32-S3 BLE 与 WiFi 一体化通信示例 本项目展示了如何使用 ESP32-S3 实现 BLE 通信接收 WiFi 配置信息,并尝试连接 WiFi,同时通过 BLE 向客户端发送心率数据和 WiFi 连接状态。 📌 一、功能概述 使用 BLE 广播设备提供 BLE…

🚀 ESP32-S3 BLE 与 WiFi 一体化通信示例

本项目展示了如何使用 ESP32-S3 实现 BLE 通信接收 WiFi 配置信息,并尝试连接 WiFi,同时通过 BLE 向客户端发送心率数据和 WiFi 连接状态。


📌 一、功能概述

  • 使用 BLE 广播设备
  • 提供 BLE 特性用于接收 WiFi SSID 和密码
  • 自动尝试连接 WiFi,并通过 BLE 返回连接状态
  • 周期性发送模拟心率数据(用于调试展示)

⚙️ 二、核心技术与库

  • BLEDevice, BLEUtils, BLEServer: ESP32 BLE API
  • WiFi.h: 管理 WiFi 连接
  • 使用 BLE 特性传输配置参数(如 WiFi)
  • 使用 BLE notify 功能主动推送状态

🧠 三、UUID 设置

功能描述UUID说明
传感器服务180D心率服务
心率数据特性2A37notify 心率
WiFi服务180F自定义为 WiFi 服务
WiFi配置接收特性2A38write,接收SSID+密码
WiFi连接状态特性2A39notify,返回连接结果

🔧 四、代码结构概述

1. 初始化 BLE 服务器与服务

pServer = BLEDevice::createServer();
pService = pServer->createService(SENSOR_SERVICE_UUID);

2. 添加 BLE 特性(心率、WiFi配置、连接状态)

pHeartRateCharacteristic = pService->createCharacteristic(...);
pWiFiConfigReceiveCharacteristic = pService->createCharacteristic(...);
pWiFiConnectionStatusCharacteristic = pService->createCharacteristic(...);

3. 特性回调处理 WiFi 数据

void onWrite(BLECharacteristic *pCharacteristic) {receivedData = pCharacteristic->getValue().c_str();// 提取 SSID 和密码并连接connectToWiFi();
}

4. WiFi 连接尝试与状态反馈

WiFi.begin(wifiSSID.c_str(), wifiPassword.c_str());
if (WiFi.status() == WL_CONNECTED) {pWiFiConnectionStatusCharacteristic->setValue("连接成功");
} else {pWiFiConnectionStatusCharacteristic->setValue("连接失败");
}
pWiFiConnectionStatusCharacteristic->notify();

5. 循环中周期性发送心率数据

if (deviceConnected) {heartRate = (heartRate + 1) % 100;pHeartRateCharacteristic->setValue(...);pHeartRateCharacteristic->notify();
}

🔍 五、BLE 客户端格式(发送 WiFi)

客户端通过如下格式写入数据至 2A38 特性:

SSID;PASSWORD

例如:

MyHomeWiFi;my_password123

📝 六、调试输出参考

BLE广播已启动
设备已连接
接收到的数据:MyWiFi;MyPass
WiFi已连接
IP地址: 192.168.1.88

🧩 七、应用场景

  • 终端设备初始配置
  • 无需物理界面完成联网
  • BLE App 快速调试嵌入式设备

📁 八、完整代码与资源

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLE2902.h>
#include <WiFi.h>// 传感器服务UUID
#define SENSOR_SERVICE_UUID        "180D"  // 传感器服务的UUID// 心率测量特性UUID
#define HEART_RATE_CHARACTERISTIC_UUID  "2A37"  // 其他传感器特性UUID(此处可以扩展,如添加温湿度传感器等)
// #define TEMPERATURE_CHARACTERISTIC_UUID "XXXX"  
// #define HUMIDITY_CHARACTERISTIC_UUID    "YYYY"// WiFi服务UUID
#define WIFI_SERVICE_UUID           "180F"  // WiFi服务UUID,假设为此值// WiFi配置接收UUID(接收WiFi信息)
#define WIFI_CREDENTIAL_RECEIVE_UUID "2A38"  // WiFi连接状态UUID(发送WiFi连接状态)
#define WIFI_CONNECTION_STATUS_UUID "2A39"  BLECharacteristic *pHeartRateCharacteristic;
BLECharacteristic *pWiFiConfigReceiveCharacteristic;
BLECharacteristic *pWiFiConnectionStatusCharacteristic;
BLEServer *pServer;
bool deviceConnected = false;
String receivedData = "";  // 存储接收到的数据// WiFi账号和密码
String wifiSSID = "";
String wifiPassword = "";// 提前声明connectToWiFi函数
void connectToWiFi();// 设备连接/断开回调
class MyServerCallbacks : public BLEServerCallbacks {void onConnect(BLEServer* pServer) {deviceConnected = true;Serial.println("设备已连接");}void onDisconnect(BLEServer* pServer) {deviceConnected = false;Serial.println("设备已断开连接");BLEAdvertising *pAdvertising = pServer->getAdvertising();pAdvertising->start();Serial.println("BLE广播重新启动");}
};// 接收数据的特性回调
class MyCharacteristicCallbacks : public BLECharacteristicCallbacks {void onWrite(BLECharacteristic *pCharacteristic) {receivedData = pCharacteristic->getValue().c_str();Serial.print("接收到的数据:");Serial.println(receivedData);// 分离SSID和密码int separatorIndex = receivedData.indexOf(';');if (separatorIndex != -1) {wifiSSID = receivedData.substring(0, separatorIndex);wifiPassword = receivedData.substring(separatorIndex + 1);Serial.print("WiFi SSID: ");Serial.println(wifiSSID);Serial.print("WiFi Password: ");Serial.println(wifiPassword);// 尝试连接WiFiconnectToWiFi();}}
};void connectToWiFi() {Serial.println("尝试连接到WiFi...");WiFi.begin(wifiSSID.c_str(), wifiPassword.c_str());int retryCount = 0;while (WiFi.status() != WL_CONNECTED && retryCount < 20) {delay(500);Serial.print(".");retryCount++;}if (WiFi.status() == WL_CONNECTED) {Serial.println("\nWiFi已连接");Serial.print("IP地址: ");Serial.println(WiFi.localIP());// 连接成功,发送状态给APPpWiFiConnectionStatusCharacteristic->setValue("连接成功");pWiFiConnectionStatusCharacteristic->notify();} else {Serial.println("\nWiFi连接失败,请检查SSID和密码");// 连接失败,发送状态给APPpWiFiConnectionStatusCharacteristic->setValue("连接失败");pWiFiConnectionStatusCharacteristic->notify();}
}void setup() {Serial.begin(115200);BLEDevice::init("智能跑步机BLE调试");// 创建BLE服务器pServer = BLEDevice::createServer();pServer->setCallbacks(new MyServerCallbacks());// 创建传感器服务BLEService *pService = pServer->createService(SENSOR_SERVICE_UUID);// 创建心率测量特性pHeartRateCharacteristic = pService->createCharacteristic(HEART_RATE_CHARACTERISTIC_UUID,BLECharacteristic::PROPERTY_READ |BLECharacteristic::PROPERTY_NOTIFY);pHeartRateCharacteristic->setValue("HeartRate: 75 bpm");pHeartRateCharacteristic->addDescriptor(new BLE2902());// 创建WiFi配置接收特性pWiFiConfigReceiveCharacteristic = pService->createCharacteristic(WIFI_CREDENTIAL_RECEIVE_UUID,BLECharacteristic::PROPERTY_WRITE);pWiFiConfigReceiveCharacteristic->setCallbacks(new MyCharacteristicCallbacks());// 创建WiFi连接状态通知特性pWiFiConnectionStatusCharacteristic = pService->createCharacteristic(WIFI_CONNECTION_STATUS_UUID,BLECharacteristic::PROPERTY_NOTIFY);// 启动服务pService->start();// 启动广播BLEAdvertising *pAdvertising = pServer->getAdvertising();//pAdvertising->addServiceUUID(SENSOR_SERVICE_UUID);  // 只广播自定义的服务UUID——设置广播信息,确保只广播自定义的服务UUIDpAdvertising->setScanResponse(true);pAdvertising->start();Serial.println("BLE广播已启动");
}void loop() {static int heartRate = 75;if (deviceConnected) {heartRate = (heartRate + 1) % 100;String heartRateStr = "HeartRate: " + String(heartRate) + " bpm";pHeartRateCharacteristic->setValue(heartRateStr.c_str());pHeartRateCharacteristic->notify();Serial.println(heartRateStr);}delay(1000);
}

http://www.dtcms.com/wzjs/120066.html

相关文章:

  • 摄影化妆艺术学校网站源码百度站长工具平台登录
  • cs5怎么做网站微信scrm
  • 做电脑租赁网站知名网站
  • 建设工程消防验收网站学开网店哪个培训机构好正规
  • 广西建设安全员证查询网站站长统计工具
  • 怎样弄网站的导航栏windows优化大师最新版本
  • 正能量网站免费进入无需下载搜索推广出价多少合适
  • 网站建设和网站网站权重
  • 企业网站管理系统免费产品推广方案怎么做
  • 网站快速排名技巧武汉整站优化
  • 网站怎么做反向代理百度网盘破解版
  • 武汉网站建设武汉网络公司建站之星网站
  • 网站循环滚动图片z怎么做裤子seo标题优化关键词
  • html网站的直播怎么做汕头seo优化培训
  • 宝鸡网站建设公司电话seo整站优化系统
  • 政府网站栏目建设反馈意见小红书seo是什么意思
  • 郑州快速排名优化网站东莞推广公司
  • 怎么用vps建网站百度秒收录软件
  • 深圳做电商平台网站建设中国seo谁最厉害
  • 网站开发语言数据库有几种关键词优化营销
  • wordpress为什么用循环seo网络推广是干嘛的
  • wordpress好用的编辑器插件知乎推广优化
  • wordpress学校站模板全媒体广告策划营销
  • 做企业网站报价百度移动版
  • 闵行网站建设公司纸网络营销五种方法
  • vi企业形象设计公司seo优化培训
  • 30个成功的电子商务网站设计百度推广seo
  • 网站的网络推广策略有哪些免费网站制作
  • 做景观的网站完整的社群营销方案
  • 深圳科技网站建设广州软文推广公司