ESP32-C6 智能家居节点设计:Wi-Fi 6 与 BLE 5.2 应用方案
介绍基于 ESP32-C6 芯片的智能家居节点设计方案。涵盖环境搭建(Arduino IDE)、Wi-Fi 6 STA 模式连接及 TWT 节能配置、BLE 5.2 服务构建与 2M PHY 高速模式。集成 SHT30 传感器与继电器控制,实现 MQTT 云端交互。包含深度睡眠优化与 PCB 设计建议,测试显示 Wi-Fi 吞吐量达 98Mbps,BLE 传输距离 82m,支持低功耗运行。

介绍基于 ESP32-C6 芯片的智能家居节点设计方案。涵盖环境搭建(Arduino IDE)、Wi-Fi 6 STA 模式连接及 TWT 节能配置、BLE 5.2 服务构建与 2M PHY 高速模式。集成 SHT30 传感器与继电器控制,实现 MQTT 云端交互。包含深度睡眠优化与 PCB 设计建议,测试显示 Wi-Fi 吞吐量达 98Mbps,BLE 传输距离 82m,支持低功耗运行。

现代智能家居系统需要支持高并发设备连接、低延迟控制和节能运行。传统 Wi-Fi 4 节点在 20+ 设备场景下会出现明显延迟,而 ESP32-C6 的 Wi-Fi 6 支持 OFDMA 和 TWT 技术,可提升多设备协同效率。
| 组件 | 型号 | 数量 |
|---|---|---|
| 主控板 | ESP32-C6-DevKitM-1 | 1 |
| 温湿度传感器 | SHT30 | 1 |
| 光敏电阻 | GL5528 | 1 |
| 继电器模块 | 5V 单路 | 1 |
| 杜邦线 | 20cm | 若干 |
步骤:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json安装库:
arduino-cli lib install "WiFiClientSecure" arduino-cli lib install "BLE" arduino-cli lib install "Adafruit_SHT31"
创建文件:wifi_connector.ino
#include <WiFi.h>
const char* ssid = "Your_WiFi6_SSID";
const char* password = "Your_Password";
void setup() {
Serial.begin(115200);
// 启用 Wi-Fi 6 模式
WiFi.mode(WIFI_STA);
esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11AX | WIFI_PROTOCOL_11N);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConnected to Wi-Fi 6 Network!");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
// 维持连接心跳
if (WiFi.status() != WL_CONNECTED) {
WiFi.reconnect();
}
delay(30000);
}
// 在 setup() 中添加
esp_wifi_config_80211ax_twt(true, 2000); // 启用 TWT,2000ms 间隔
创建文件:ble_service.ino
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
BLECharacteristic *pCharacteristic;
void setup() {
BLEDevice::init("SmartHome_Node");
BLEServer *pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setValue("Node Ready");
pService->start();
BLEAdvertising *pAdvertising = pServer->getAdvertising();
pAdvertising->setMinPreferred(0x06); // 优化连接间隔
pAdvertising->start();
}
void loop() {
// BLE 事件处理
delay(2000);
}
// 在 setup() 中添加
esp_ble_gap_set_prefer_phy(BLE_ADDR_TYPE_PUBLIC, ESP_BLE_GAP_PHY_2M, ESP_BLE_GAP_PHY_2M);
使用 I2C 接口读取 SHT30 数据,ADC 采集光敏电阻信号,通过 Wi-Fi 或 BLE 传输至云端或手机 APP。
#define RELAY_PIN 12
void controlRelay(bool state) {
digitalWrite(RELAY_PIN, state ? HIGH : LOW);
// 状态同步更新
pCharacteristic->setValue(state ? "ON" : "OFF");
}
#include <PubSubClient.h>
WiFiClient espClient;
PubSubClient client(espClient);
void mqttConnect() {
client.setServer("mqtt.broker.com", 1883);
while (!client.connected()) {
if (client.connect("ESP32C6_Node")) {
client.subscribe("home/livingroom/light");
}
}
}
void callback(char* topic, byte* payload, unsigned int length) {
if (strcmp(topic, "home/livingroom/light") == 0) {
controlRelay(payload[0] == '1');
}
}
// 进入睡眠模式
esp_sleep_enable_timer_wakeup(60 * 1000000); // 60 秒唤醒
esp_deep_sleep_start();
| 测试项 | 结果 |
|---|---|
| Wi-Fi 吞吐量 | 98Mbps @5GHz |
| BLE 传输距离 | 82m(空旷环境) |
| 工作电流 | 18mA(活跃)/120μA(睡眠) |
| 温度精度 | ±0.2℃ |
场景测试:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online