ESP-Knob:用 ESP32-H2 打造多功能智能旋钮

简介

在这个科技飞速发展的时代,用户所追求的不再是层出不穷的智能平台,而是能够实现不同智能设备协同工作的智能生态系统,以及简化智能设备管理的工具。这不仅要求智能设备之间能够实现互联互通,还要求它们能够深入理解并响应用户的多样化需求,提供更加个性化和智能化的服务。因此,实现跨品牌和跨平台的通信已成为智能领域中日益凸显的挑战。

ESP-Knob 是一款基于 ESP32-H2 芯片自主开发的多功能智能旋钮控制器。它不仅能够接入 Home Assistant,还广泛支持 BLE-HIDThreadMatterESP-BLE-MESHZigbee 等无线通信协议。通过与苹果 Homepod亚马逊 Echo 等主流智能设备同时建立连接,它轻松打破了跨平台的壁垒,使得跨平台的设备间的协同工作变得十分简单、直观,为用户提供了一种全新的智能家居控制方式。

ESP-Knob 正面为一个铝合金外壳的按压旋钮,能够读取按压、旋转等事件;背部自带磁吸底座,可以稳固地吸附在金属表面,实现设备的便捷操控。

在这里插入图片描述

视频展示

ESP-Knob:用 ESP32-H2 打造多功能智能旋钮

供电方式

ESP-Knob 仅需一节纽扣电池,即可实现高效稳定的运行;同时支持低功耗管理,来延迟电池的使用寿命。

在硬件设计上,ESP-Knob 预留了 USB TYPE-C 接口 ,通过 USB 连接可以实现持续供电,也便于程序下载和调试,为用户提供了更多的使用场景,增强了便利性。
在这里插入图片描述

功能演示

1. BLE ADV 广播功能

ESP-Knob 通过 BTHome 协议 接入 Home Assistant 智能家居系统 ,通过发送符合 BTHome 格式的广播包,以轻松控制第三方智能设备,例如控制米家床头灯的灯光亮度颜色开、关灯
在这里插入图片描述

2. Matter 控制功能

ESP-Knob 还适配 Matter Over Thread 协议,能够轻松与苹果 HomePod、亚马逊 Echo 等智能设备同时建立连接,允许用户通过 Matter 协议无缝管理和控制家中的多种智能家居设备,轻松实现跨平台的智能家居控制系统,提升用户体验的连贯性和便捷性。
在这里插入图片描述

3. BLE-HID Device 控制功能

ESP-Knob 也支持 BLE-HID 协议,通过连接蓝牙即可作为 音量调节设备无线 PPT 翻页器

  • ESP-Knob 能够轻松与智能手机或其他蓝牙设备配对,即可作为一个直观的音量调节器。用户可以通过旋钮轻松调整音量大小,无论是在家中享受音乐,还是在办公室进行视频会议,都能提供便捷的音量控制。
    在这里插入图片描述
  • 在需要演示或演讲的场合,ESP-Knob 可作为一款便捷的无线 PPT 翻页器,借助其对 BLE-HID 协议的支持即可实现 PPT 远程翻页。
    在这里插入图片描述

4. BLE-Mesh & Zigbee 组网控制功能

对于多设备组网场景,ESP-Knob 同时支持 ESP-BLE-MESHZigbee 协议,可实现高效率和高可靠性的多设备群体控制。

  • 多设备灯光控制演示
    在这里插入图片描述

5. 远距离 & 穿墙控制功能

凭借 ESP32-H2 高达 20dBm 的发射功率和最高 -106.5 dBm 的接收灵敏度, ESP-Knob 不仅能够轻松实现穿墙通讯,还能在远距离条件下保持稳定连接。这意味着即使在障碍物众多、信号易受干扰的复杂环境中,ESP-Knob 依然能够提供可靠、连续的无线连接,确保智能家居设备的远程控制和数据传输的稳定性和响应速度。

  • 穿墙 & 远距离控制 演示
    在这里插入图片描述

硬件设计

ESP-Knob 的硬件设计比较简洁,除了基础的电池供电电路、旋钮电路和下载、调试电路外,只有一个简单的 LED 指示灯电路。ESP-Knob 的硬件系统组成如下:

在这里插入图片描述

  • 主控 MCU : ESP32-H2-MINI-1-H2 模组
  • EC11 (旋转编码器):用于用户输入,能够检测旋转和按压操作。通过 EC11 的按压信号控制 VCC_EN,用于电源开关或模式切换。
  • 5V —> 3.3V (电源模块):通过 XC6206P332MR-G 低压差线性稳压器,将 USB 供电(5V)降压为 ESP32-H2 所需的 3.3V 电压。
  • VBAT —> 3.3V (电源模块):通过 TPS61291 升压芯片适应宽输入电压范围,在 ESP32-H2 工作时为芯片提供 3.3V 电压;在 ESP32-H2 休眠时通过电池直接供电,从而支持低功耗的休眠唤醒功能。
  • USB-C 接口:使用 USB-C 接口,连接到 ESP32-H2 ,用于数据传输和供电。
  • LED (指示灯模块):使用 ESP32-H2GPIO2GPIO3 引脚控制双色 LED 的点亮与熄灭,用于指示 ESP-Knob 不同的工作状态。
  • BATTERY(电池管理模块):通过 BT1 连接外部锂电池(VBAT)并监测电池电压,将电压分压到 BAT_ADC ,引入 ESP32-H2 以监控电池电压。
  • DEBUG(下载 & 调试接口):为 ESP-Knob 设备预留下载接口和硬件复位接口的测试点。通过连接到 ESP32-H2 的 UART0 接口(TXD0 、RXD0)可用于固件烧录和调试;通过拉低 ESP_EN 管脚可用于 ESP-Knob 的硬件复位。

ESP-Knob 完整的硬件开源资料可在【嘉立创-乐鑫小铁匠】ESP32-H2-Knob 获取,更多 ESP 硬件设计说明请参考 《ESP 硬件设计指南》

软件设计

目前,ESP-Knob 设备提供了 BLE-HIDBTHOMEMatter Switch 三种固件,烧录对应固件后即可接入不同的智能家居系统,用户可直接在 ESP-LAUNCHPAD 下载 ESP-Knob 的三种固件。

1. BLE-HID 的固件功能

  • 默认开启 BLE 广播,设备广播名称为 ESP-HID-X(其中 X 代表第几个设备)
  • 通过旋转旋钮进行音量调节
  • 通过按压旋钮进行 PPT 翻页
  • 长按旋钮切换绑定设备
  • 断开 BLE 连接 30s 后自动进入DeepSleep 深度睡眠模式,通过旋转或者长按旋钮即可再次唤醒。

【技术解析】

  • BLE HID Device 应用例程可参考:esp-idf/examples/bluetooth/bluedroid/ble/ble_hid_device_demo,BLE HID 组件使用说明参见:BLE HCI 组件
  • 使用按压旋钮来切换工作模式,软件使用 espressif/button 组件实现不同类型的按键事件的注册。更多用户指南参见:按键
  • 借助 espressif/knob 组件实现 EC11 编码器的解码以实现多种旋钮功能,更多用户指南参见:Knob
  • 使用普通 GPIO 驱动 两个 LED 指示灯,通过不同类型的闪烁来指示 ESP-Knob 不同工作模式。对于 LED 指示灯应用,可以使用乐鑫提供的 espressif/led_indicator 组件,快速定义多组不同的 LED 闪烁类型。更多用户指南参见:LED 指示灯
  • 使用 EXT1 作为唤醒源,通过 RTC GPIO10、RTC GPIO11 以及 RTC GPIO12 触发中断唤醒 DeepSleep 深度睡眠模式。DeepSleep 应用例程参考:esp-idf/examples/system/deep_sleep

2. BT Home 的固件功能

  • 集成了一个 Button 和一个 Dimmer ,发送符合 BTHome 格式的广播包进行按压和旋转控制;
  • 可接入Home Assistant
  • 支持低功耗管理,发完 BTHome 广播包后自动进入 DeepSleep 深度睡眠状态。

【技术解析】

  • 通过 BLE HCI 组件 来创建满足 BTHome 协议 规范的广播包进行旋钮控制,相关控制代码可参考如下:

     uint8_t adv[31] = {0};
        uint8_t payload_len = 0;
        uint8_t payload[31];
    
        settings_read_parameter_from_nvs();
        sys_param_t *sys_param = settings_get_parameter();
        sys_param->counter = sys_param->counter + 100;
        bthome_set_counter(s_dimmer->bthome, sys_param->counter);
        settings_write_parameter_to_nvs();
        ESP_LOGI(TAG, "counter %lu", sys_param->counter);
        ble_hci_set_random_address(local_mac);
    
        ble_hci_adv_param_t adv_param = {
            .adv_int_min = 0x50,
            .adv_int_max = 0x50,
            .adv_type = ADV_TYPE_NONCONN_IND,
            .own_addr_type = BLE_ADDR_TYPE_RANDOM,
            .peer_addr_type = BLE_ADDR_TYPE_PUBLIC,
            .channel_map = ADV_CHNL_ALL,
            .adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY,
        };
        memcpy(adv_param.peer_addr, peer_mac, BLE_HCI_ADDR_LEN);
        ble_hci_set_adv_param(&adv_param);
    
  • 设置 Auto Light Sleep 模式来进行 BLE 保活,同时降低 BLE 广播功耗。Auto Light Sleep 模式代码参考如下:

    #if CONFIG_PM_ENABLE
        // Configure dynamic frequency scaling:
        // maximum and minimum frequencies are set in sdkconfig,
        // automatic light sleep is enabled if tickless idle support is enabled.
        esp_pm_config_t pm_config = {
            .max_freq_mhz = 96,
            .min_freq_mhz = 32,
    #if CONFIG_FREERTOS_USE_TICKLESS_IDLE
            .light_sleep_enable = true
    #endif
        };
        ESP_ERROR_CHECK(esp_pm_configure(&pm_config));
    #endif // CONFIG_PM_ENABLE
    

    【注意】

    由于 Auto Light Sleep 模式本质上是根据空闲任务,配置一个 Timer 唤醒源进行自动唤醒。如果在 Auto Light Sleep 模式下直接进入 DeepSleep 模式,则芯片会自动被 Timer 唤醒源进行唤醒。应在进入 DeepSleep 深度睡眠模式前,先通过 esp_pm_config_t pm_config 配置关闭 Light Sleep 模式,代码如下:

    esp_err_t bsp_enter_deep_sleep(void)
    {
    
        ESP_LOGI(TAG, "enter deep sleep");
    #if CONFIG_PM_ENABLE
        // Configure dynamic frequency scaling:
        // maximum and minimum frequencies are set in sdkconfig,
        // automatic light sleep is enabled if tickless idle support is enabled.
        esp_pm_config_t pm_config = {
                .max_freq_mhz = 96,
                .min_freq_mhz = 96,
    #if CONFIG_FREERTOS_USE_TICKLESS_IDLE
            .light_sleep_enable = false
    #endif
        };
        ESP_ERROR_CHECK(esp_pm_configure(&pm_config));
    #endif // CONFIG_PM_ENABLE
    
        bsp_power_ctrl_set(false);
        esp_deep_sleep_start();
    }
    
  • 使用按压旋钮来切换工作模式,软件使用 espressif/button 组件实现不同类型的按键事件的注册。更多用户指南参见:按键
  • 借助 espressif/knob 组件实现 EC11 编码器的解码以实现多种旋钮功能, 更多用户指南参见: Knob

3. Matter 通用开关的固件功能

  • 配网后成为一个 Matter 开关,能够提供旋钮按压事件对智能设备进行控制。

【技术解析】

对于 ESP-Knob 的 BLE-Mesh 组网应用可以参考乐鑫官方的 esp-idf/examples/bluetooth/esp_ble_mesh 应用例程,软件编程指南参见:ESP-BLE-MESH

ESP Zigbee Mesh 组网应用可参考:esp-zigbee-sdk ,软件编程指南参见:ESP Zigbee SDK Programming Guide

总结

基于 ESP32-H2 芯片自主研发的 ESP-Knob 智能旋钮,以其卓越的兼容性和灵活性,真正简化了多平台的智能设备管理,为用户提供无缝、流畅且高度个性化的智能家居控制体验。欢迎各位开发者 DIY 自己的专属智能旋钮,探索更多智能生活的可能性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值