ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板
项目简介
在生活品质日益提升的今天,智能家居系统已经走进了千家万户,并逐渐成为现代生活的一部份。与此同时,一款设计精致、体积轻盈、操作简便的全屋智能家居控制面板,已经成为众多家庭的新宠。这种高效、直观的智能化的解决方案,以一种前所未有的便捷方式,极大地提升了居住的舒适度,让智能生活变得更加轻松。

ESP-HaloPanel 是一款基于 ESP32-C2 系列模组(ESP8684-WROOM-02C-N4)开发的超低成本智能家居面板,面板中央配备一个圆形屏幕用于显示信息,屏幕周围均匀分布了 6 个触摸按键,用于控制操作。它通过 Wi-Fi 接入 Home Assistant 智能家居系统来实现对多设备的快捷控制。同时具备三个功能界面,分别用于洗衣机控制、灯光控制和温度控制。

视频展示
ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板
供电方式
ESP-HaloPanel 支持磁吸底座 、锂电池和 USB 三种供电方式。它既可以长时间吸附在墙壁上,作为智能家居的控制中心;也可以取下随身携带,当作遥控器使用。此外,通过 USB 线连接,ESP-HaloPanel 可以实现持续供电。这种多样化的供电选项不仅增强了产品的实用性,也为用户提供了更多的使用场景和便利性。

功能演示
ESP-HaloPanel 通过其触摸按键技术,为用户提供了一种直观且便捷的智能家居设备控制方式,确保了快速响应,使得智能生活体验更加流畅和高效。
- 控灯演示
相较于传统开关,ESP-HaloPanel 提供了更为灵活的灯光控制功能,用户可以轻松调节灯光的亮度和色温,以适应不同的环境和个性化需求,从而实现更加个性化和舒适的照明环境。

- UI 交互
乐鑫的先进屏幕优化方案,利用分段解码和内存映射技术,在低成本的 ESP32-C2 上实现了流畅的 UI 动画效果,同时保持了帧率的稳定性。用户可以根据个人需求,自定义 UI 界面和交互逻辑,从而为产品带来更加个性化的用户体验,这一方案在提升设备性能的同时,也为用户的创造力提供了广阔的空间。

- 模式切换
通过长按静音键,用户可以关闭按键提示音,实现在不同环境下的模式切换,享受更为宁静的操作体验。再次长按该键即可恢复提示音,操作简单,随时满足用户不同的需求。

- 睡眠唤醒
ESP32-C2 在节能方面表现卓越,支持高节能的低功耗模式。在轻睡眠 (Light-Sleep) 模式下,设备能够保持Wi-Fi连接;而在深度睡眠 (Deep-Sleep) 模式下,设备的平均电流消耗可降至仅 5 μA,有效延长电池寿命。
此外,ESP32-C2 通过检测 RTC GPIO 的电平实现快速唤醒。并结合 Wi-Fi 快连功能,支持从深度睡眠(Deep-Sleep)模式唤醒并成功建立 Wi-Fi 连接仅需 300 毫秒,为用户提供了高效且流畅的功耗管理体验。

硬件设计
ESP-HaloPanel 完整的硬件开源资料可在【嘉立创-乐鑫小铁匠】ESP-HaloPanel 获取。ESP 硬件设计指南请参考 《ESP 硬件设计指南》,

ESP-HaloPanel 的硬件系统由以下部分组成:
-
主 MCU : ESP8684-WROOM-02C-N4
-
USB & Auto Download(自动下载电路):通过 USB 连接器的 D+ 和 D- 引脚连接到 USB-to-UART (CP2101) 芯片的 USB 管脚,然后转接到 ESP8684-WROOM-02C-N4 模组的 UART0 管脚上。通过 UART0 的 DTR 和 RST 信号管脚来控制 EN 和 GPIO9 的电平状态为 ESP-HaloPanel 产品提供自动控制电路以进入下载模式,可用于固件下载,同时支持为 ESP-HaloPanel 产品进行常供电,并支持通过 USB 接口实现充电功能。如果是量产产品,自动下载电路可以省去。用户可直接使用外部的 USB-to-TTL 串口工具连接至 ESP8684-WROOM-02C-N4 模组的 UART0 (GPIO19 和 GPIO20) 管脚进行固件下载。另外,乐鑫也提供了 ESP-Module-Prog-SUB-02 烧录底板,可直接为 ESP8684-WROOM-02C-N4 模组烧录固件。
-
LDO:HE9073A33M5R 是一颗低压差稳压器 (LDO) 芯片,具有宽压输入的特性,支持的输入电压范围为 3.3V~7V, 然后将输入电压稳定在 3.3V 输出,为 ESP-HaloPanel 产品提供稳定的供电环境。
-
Power Manage(电源管理):电源管理电路支持磁吸底座的 5V 输入和 3.7V 锂电池(满电状态下为 4.2V)输入的完美切换。当使用 ESP-HaloPanel 磁吸底座时,ESP-HaloPanel 由 5V 磁吸底座供电,此时锂电池不参与供电工作,并且锂电池将由底座的 5V 经过充电 IC 进行充电。当 ESP-HaloPanel 从磁吸底座离开后,ESP-HaloPanel 将由锂电池继续供电。
-
Lithium Battery Charging(锂电池充电模块):使用专用的充电管理芯片 (TP4056),支持控制充电电流和充电状态。与电源管理电路配合工作,确保 ESP-HaloPanel 产品可以使用锂电池供电并安全充电。
-
LCD 模块:使用 ESP8684-WROOM-02C-N4 模组的 GPIO0~GPIO4 作为 SPI 接口,为 LCD 屏幕提供信号控制,用于显示文本、图形等信息,同时支持背光控制,通过一个 S8050 和 AO3401A 进行组合,然后使用 GPIO8(高电平亮;低电平灭)进行屏幕背光控制。
-
Touch Button(触摸按键):使用 BS8112A-3 电容式触摸按键控制芯片(最多支持 12 个 Touch Pad),通过 ESP8684-WROOM-02C-N4 模组的 I2C 外设管脚读取多个触摸按键的电极(KEY1 到 KEY6,其他 Touch 管脚接 GND)感应来实现按键控制开关机、菜单选择、音量加减和静音的功能。 BS8112A-3 芯片的 IRQ 管脚可用于检测 Touch Pad 的触摸状态。当任意一个按键被触摸时,IRQ 管脚为低电平;当所有触摸按键无触摸时,IRQ 管脚为高电平。在这里我们将 BS8112A-3 芯片的 IRQ 管脚与 ESP32-C2 芯片的 GPIO5 进行连接,用于将 ESP32-C2 芯片从 Deep-Sleep 模式唤醒,以实现低功耗。
-
WS2812B 模块(按键背光模块):使用 6 颗智能 WS2812B-2020 串接组成 ,通过 ESP32-C2 的 GPIO18 (RGB_CTRL) 轻松控制每个 RGB LED 的颜色和亮度,可实现炫酷的按键背光效果。考虑到低功耗需求,所有的 WS2812B 供电都可控制掉电和上电,和 LCD 的背光控制部分一样,由一个三级管和一个 PMOS 管组合控制,和 LCD 背光控制共同使用 ESP32-C2 的 GPIO8 (POWER_CTRL) 管脚控制。
-
Button(按钮):使用一个简单的物理按钮电路,连接到 ESP32-C2 芯片的 GPIO9 和 EN 管脚,用于ESP-HaloPanel 产品硬件复位和手动切换 ESP32-C2 的启动模式 (SPI Flash Boot 或 Download Boot)。如果是量产产品,按钮可以省去。
-
Buzzer(蜂鸣器模块):通过 ESP32-C2 芯片的 GPIO10 引脚控制电路中的三极管导通或截止,从而驱动蜂鸣器发声,用于播放提示音。
-
GPIO Mapping(GPIO 映射):列出了 ESP32-C2 芯片各个外设(如 LCD、 RGB LED、按键等)管脚的 GPIO 映射关系,便于开发者了解不同管脚的功能。
软件实现
基于 ESP-HaloPanel 的硬件系统构成,需要配套的软件开发以激活产品丰富的功能。 ESP-HaloPanel 的软件设计以深度集成的 ESP-IDF SDK 库为基础,并借助简洁高效的单任务组件为核心,全面实现了产品多功能展示,为用户带来了高效且可靠的软件开发体验。

- Deep-Sleep 唤醒 : ESP-HaloPanel 的省电模式通过进入 Deep-Sleep 模式来实现,同时使用 RTC GPIO5 作为唤醒源,以触发 ESP32-C2 芯片的唤醒。用户可以参考 esp-idf/examples/system/deep_sleep 例程来实现 Deep-Sleep 睡眠、唤醒的功能。此例程集成多种唤醒源方式来唤醒芯片,但 ESP32-C2 在 Deep-Sleep 模式下仅支持 RTC GPIO 和 RTC Timer 两种唤醒源。ESP32-C2 芯片支持的唤醒源方式可以参见《ESP8684 技术参考手册》中的 “唤醒源” 章节说明。如下:

-
Wi-Fi 快连: ESP-HaloPanel 通过 Wi-Fi 连接路由器,使用 MQTT 上层协议连接 HomeAssistant 云以实现对智能家居设备的远程控制。MQTT 连云的应用例程可以参考:esp-idf/examples/protocols/mqtt , 对应软件编程指南参见:ESP-MQTT
-
声音提示:ESP-HaloPanel 使用 ESP32-C2 的 GPIO10 作为 LEDC PWM 接口,通过调节 GPIO10 输出的 LED PWM 占空比来驱动蜂鸣器以实现声音控制功能。乐鑫提供的 LEDC 示例 演示了如何使用 LED PWM 接口,软件使用说明参见:LEDC 编程指南
-
触摸按键:ESP-HaloPanel 上的触摸按键通过 I2C 总线驱动 BS8112A 芯片(需参考 BS8112A 的芯片规格书 来配置触摸通道的灵敏度等参数),并借助 espressif /i2c_bus 组件轻松读取每个 BS8112A 触摸通道的触摸状态。同时使用 espressif/button 组件实现按键事件的注册。
-
UI 显示: ESP-HaloPanel 使用 ESP32-C2 的 SPI 接口来驱动 LCD 模块,通过 LVGL 图形化工具创建优美的 UI 界面。并通过移植 esp-bsp/ BSP/ esp32_c3_lcdkit 代码来实现 UI 界面显示。在 ESP32-C2 有限的内存上,为了达到更流畅的 UI 显示效果,ESP-HaloPanel 使用 espressif/esp_mmap_assets 组件来减少 ESP32-C2 芯片内存的使用,使用此组件可以在编译时自动实现图片的分割功能。把图片、字体等这些资源自动打包成二进制的 .bin 文件,然后生成头文件,并自动集成到项目,组件使用说明参见:esp_mmap_assets
使用 espressif/esp_mmap_assets 组件的优势有:
- 使用源文件进行文件管理,便于维护;
- 实现 APP bin 与资源文件的解耦,减少升级包的体积;
- 支持映射多个分区,可将资源文件按需分开管理,如音频、图片、字库等;
- Freetype、thorvg 等库提供便捷的 memory load 接口,简化调用过程;
- 针对 Flash XIP , 优化 .rodata 占用,减少对 PSRAM 的内存消耗。
-
背光控制:
由于 ESP32-C2 不支持 RMT 外设,同时可供用户使用的唯一的一组 SPI 接口也用于了 LCD 屏幕显示。在 WS2812 灯光控制应用上, ESP-HaloPanel 使用了一个 GPIO18 来模拟 WS2812 通信时序,以实现灯光调控的功能。软件实现可参考 esp-iot-solution/components/led/led_indicator 组件,文档说明参见:LED 指示灯
物料清单
- ESP8684-WROOM-02C-N4 * 1
- 1.28 寸圆形 LCD * 1
- BS8112A-3 触摸 IC * 1
- WS2812B-2020 * 6
- 蜂鸣器 * 1
- HE9073A33M5R LDO * 1
- 锂电池充电 IC TP4056 * 1
- 亚克力面板 * 1
- 其他物料(电阻、电容、MOS 管、三极管等)
3D 展示

PCB

相关文章:
ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板
项目简介 在生活品质日益提升的今天,智能家居系统已经走进了千家万户,并逐渐成为现代生活的一部份。与此同时,一款设计精致、体积轻盈、操作简便的全屋智能家居控制面板,已经成为众多家庭的新宠。这种高效、直观的智能化的解决方…...
CSS3新增盒子属性(三)
1、CSS3新增盒子属性 1.1 box-sizing 设置盒子的大小。 content-box:设置内容区的大小;border-box:设置盒子的总大小。 <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><t…...
Manus在虚拟现实仿真模拟中的应用案例分享
Manus虚拟现实手套作为一种高精度的人机交互设备,在仿真模拟领域展现出了巨大的应用潜力。通过提供实时、准确的手指动作捕捉数据,Manus手套为多个行业带来了前所未有的仿真体验,推动了技术发展和应用创新。 技术特点 1. 高精度手指跟踪 Ma…...
大数据-201 数据挖掘 机器学习理论 - 决策树 局部最优 剪枝 分裂 二叉分裂
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...
Scala 的trait
在Scala中,trait是一种特殊概念。trait可以作为接口,同时也可以定义抽象方法。类使用extends继承trait,在Scala中,无论继承类还是继承trait都用extends关键字。在Scala中, 类继承trait后必须实现其中的抽象方法&#x…...
vue3官方示例-简单的 markdown 编辑器。
官方示例不能直接粘贴使用,故自己补了些代码。方便初学者学习,节省时间,提高学习效率。 1、html代码: <!doctype html> <html lang"en"> <head><meta charset"UTF-8"><meta nam…...
Linux标准I/O库汇总整理
Linux标准I/O库(Standard I/O Library)是C标准库的一部分,提供了一系列用于文件输入输出的高级接口。这些接口通常比低级别的系统调用更易于使用,但也可能带来额外的性能开销。下面是Linux标准I/O库的汇总整理,包括常见…...
BGP路由优选+EVPN
BGP 的路由优选规则是一套多步决策链,用来确定在多个可行路由中选择最优的路由。BGP 是一种路径向量协议,通过这些优选规则,网络管理员可以控制数据流量的流向,确保网络的稳定性和效率。下面以一个实例来详细说明 BGP 的优选规则及…...
牛客练习赛131(未补)
A-小H学语文 题意:木板数量为m,想让mmh(min)最大,找出这几块木板 分析:让木板从大到小排序,找到最大的体积,将之前的木板按序列输出 代码: #include<bits/stdc.h> using n…...
功能更新丨AI黑科技助燃VR全景新势能
随着VR全景市场需求不断扩大, 为更好地赋能合作商业务发展, 酷雷曼积极推进产品技术迭代, 融合VR虚拟现实和AI人工智能, 重磅推出6大AI黑科技, 让VR全景内容更丰富、创作更加高效! 新功能怎么用&#…...
JavaCV学习第一课
1、 JavaCV [1] 是一款基于JavaCPP [2]调用方式(JNI的一层封装),由多种开源计算机视觉库组成的包装库,封装了包含FFmpeg、OpenCV、tensorflow、caffe、tesseract、libdc1394、OpenKinect、videoInput和ARToolKitPlus等在内的计算…...
Java第二阶段---16字符串---第一节 String
1.特性介绍 String 类位于 java.lang 包中,无需引入,直接使用即可。 String 类是由 final 修饰的,表示String 类是一个最终类,不能够被继承。 String 类构建的对象不可再被更改 示例 package com.cyx.string;public class Ex…...
<十六>Ceph mon 运维
Ceph 集群有故障了,你执行的第一个运维命令是什么? 我猜测是ceph -s 。无论执行的第一个命令是什么,都肯定是先检查Mon。 在开始之前我们有必要介绍下Paxos协议,毕竟Mon就是靠它来实现数据唯一性。 一: Paxos 协议 1…...
【网络安全初识】——互联网发展史
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络安全】 本专栏旨在分享学习网络安全的一些学习笔记,欢迎大家在评论区交流讨论💌 ipconfig:显示当…...
Windows和Linux内存共享机制
Windows和Linux内存共享机制 引言1.Windows写操作读操作 2.Linux写操作读操作 3.Shell使用 tmux 运行 write 和 read说明 引言 在嵌入式开发领域,内存共享机制作为不同操作系统间实现高效数据交换的重要手段,尤其在对实时性和可靠性要求极高的环境中更为…...
windows@命令行中获取环境变量取值不展开取值(原值)
文章目录 命令行中获取环境变量取值获取不展开的值具体实现注解 封装为函数版本1版本2 命令行中获取环境变量取值 这里主要讨论获取未展开的值本来获取未展开的值应该作为默认选项,至少有合适的api方便直接调用,但是不知道微软怎么想的,让这个任务变得不直接 获取不展开的值 …...
如何找到多平台内容爆款进行批量复刻?
为了进一步扩大品牌社媒影响力,在消费者做决策的时候,能够第一时间出现在首选位置。持续在抖音、小红书、b站、公众号等各大社媒平台,产生连续的、正向的高质量品牌曝光,是非常重要的。如何进行这种多平台品牌影响力的提升呢&…...
【UML】- 用例图(结合银行案例解释其中的奥义)
目录 一、相关介绍 作用: 组成: 关系 二、使用具体银行案例解释各组成部分的含义 1、系统 2、参与者 3、用例 4、关联关系 5、扩展关系 6、泛化(继承)关系 三、成品 一、相关介绍 作用: 用例图可以描述一个…...
浅谈UI自动化
⭐️前言⭐️ 本篇文章围绕UI自动化来展开,主要内容包括什么是UI自动化,常用的UI自动化框架,UI自动化原理等。 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题…...
三、k8s快速入门之Kubectl 命令基础操作
⭐️创建Pod [rootmaster ~]# kubectl run nginx --imageharbor.tanc.com/library/ngix:latest kubectl run --generatordeployment/apps.v1 is DEPRECATED and will be rmoved in a future version. Use kubectl run --generatorrun-pod/v1 or kbectl create instead. deplo…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
