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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/884432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hadoop生态圈框架部署(四)- Hadoop完全分布式部署

文章目录 前言一、Hadoop完全分布式部署(手动部署)1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 hdfs-site…

数据建模圣经|数据模型资源手册卷3,数据建模最佳实践

简介 本书采用了类设计模式的方式对数据模型进行高度抽象总结,展现了常见的数据模型构建模型等模型的作用、层次、分类、地位、沟通方式,和业务规则。使用一个强大的数据模型模式的数据建模,评估特定与广义模型的优缺点,有助于你改…

【力扣】Go语言回溯算法详细实现与方法论提炼

文章目录 一、引言二、回溯算法的核心概念三、组合问题1. LeetCode 77. 组合2. LeetCode 216. 组合总和III3. LeetCode 17. 电话号码的字母组合4. LeetCode 39. 组合总和5. LeetCode 40. 组合总和 II小结 四、分割问题6. LeetCode 131. 分割回文串7. LeetCode 93. 复原IP地址小…

#渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶之Mongodb未授权访问

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

Golang--流程控制

1、分支结构 1.1 if分支 单分支 语法:if 条件表达式 { 逻辑代码 } 当条件表达式为true时,就会执行代码块的代码。条件表达式左右的()可以不写,也建议不写 if和表达式中间,一定要有空格在Golang中,{}是必须有的,就算你…

【补补漏洞吧 | 02】等保测评ZooKeeperElasticsearch未授权访问漏洞补漏方法

一、项目背景 客户新系统上线,因为行业网络安全要求,需要做等保测评, 通过第三方漏扫工具扫描系统,漏扫报告显示ZooKeeper和 Elasticsearch 服务各拥有一个漏洞,具体结果如下: 1、ZooKeeper 未授权访问【…

Serverless + AI 让应用开发更简单

本文整理自 2024 云栖大会,阿里云智能高级技术专家,史明伟演讲议题《Serverless AI 让应用开发更简单》 随着云计算和人工智能(AI)技术的飞速发展,企业对于高效、灵活且成本效益高的解决方案的需求日益增长。本文旨在…

从0开始学PHP面向对象内容之(类,对象,构造/析构函数)

上期我们讲了面向对象的一些基本信息&#xff0c;这期让我们详细的了解一下 一、面向对象—类 1、PHP类的定义语法&#xff1a; <?php class className {var $var1;var $var2 "constant string";function classfunc ($arg1, $arg2) {[..]}[..] } ?>2、解…

(八)JavaWeb后端开发——Tomcat

目录 1.Web服务器概念 2.tomcat 1.Web服务器概念 服务器&#xff1a;安装了服务器软件的计算机服务器软件&#xff1a;接收用户的请求&#xff0c;处理请求&#xff0c;做出响应web服务器软件&#xff1a;在web服务器软件中&#xff0c;可以部署web项目&#xff0c;让用户通…

【Linux系列】Linux 和 Unix 系统中的`set`命令与错误处理

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Nuxt.js 应用中的 nitro:config 事件钩子详解

title: Nuxt.js 应用中的 nitro:config 事件钩子详解 date: 2024/11/2 updated: 2024/11/2 author: cmdragon excerpt: nitro:config 是 Nuxt 3 中的一个生命周期钩子,允许开发者在初始化 Nitro 之前自定义 Nitro 的配置。Nitro 是 Nuxt 3 的服务器引擎,负责处理请求、渲…

[论文阅读]LOGAN: Membership Inference Attacks Against Generative Models

LOGAN: Membership Inference Attacks Against Generative Models https://arxiv.org/abs/1705.07663v4 Proceedings on Privacy Enhancing Technologies &#xff08;PoPETs&#xff09;&#xff0c;第 2019 卷&#xff0c;第 1 期。 这篇文章是17年的一篇文章&#xff0c;…

使用Vite构建现代化前端应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Vite构建现代化前端应用 引言 Vite 简介 安装 Vite 创建项目 启动开发服务器 项目结构 配置 Vite 开发模式 生产构建 使用插…

Node.js:模块 包

Node.js&#xff1a;模块 & 包 模块module对象 包npm安装包配置文件镜像源 分类 模块 模块化是指解决一个复杂问题时&#xff0c;自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说&#xff0c;模块是可组合、分解和更换的单元。 简单来说&#xff0c;就是把一个…

【Arduino】一分钟快速在vs code 编译开发Arduino

下载Arduino 对于一些开发者来说&#xff0c;Arduino开发较为不方便&#xff0c;不管从代码的阅读性、开发效率等等方面&#xff0c;vs code都要优于Arduino IDE开发&#xff0c;而且vs code开发可以使用插件&#xff0c;比如一些AI代码插件&#xff0c;可以加快开发速率&#…

WPF+MVVM案例实战(十九)- 自定义字体图标按钮的封装与实现(EF类)

文章目录 1、案例效果1、按钮分类2、E类按钮功能实现与封装1.文件创建与代码实现2、样式引用与封装 3、F类按钮功能实现与封装1、文件创建与代码实现2、样式引用与封装 3、按钮案例演示1、页面实现与文件创建2、运行效果如下 4、源代码获取 1、案例效果 1、按钮分类 在WPF开发…

Java基本语法和基础数据类型——针对实习面试

目录 Java基本语法和基础数据类型标识符和关键字有什么区别&#xff1f;Java关键字有哪些&#xff1f;Java基本数据类型有哪些&#xff1f;什么是自动装箱和拆箱&#xff1f;自动装箱&#xff08;Autoboxing&#xff09;自动拆箱&#xff08;Unboxing&#xff09; 自动装箱和拆…

c# 值类型

目录 1、c#类型2、值类型2.1 结构体2.2 枚举 1、c#类型 类型&#xff08;Type&#xff09;又叫数据类型&#xff08;Data Type&#xff09;。 A data type is a homogeneous collection of values,effectively prensented,equipped with a set of operations which manipulate…

【压力测试】如何确定系统最大并发用户数?

一、明确测试目的与了解需求 明确测试目的&#xff1a;首先需要明确测试的目的&#xff0c;即为什么要确定系统的最大并发用户数。这通常与业务需求、系统预期的最大用户负载以及系统的稳定性要求相关。 了解业务需求&#xff1a;深入了解系统的业务特性&#xff0c;包括用户行…

【玉米叶部病害识别】Python+深度学习+人工智能+图像识别+CNN卷积神经网络算法+TensorFlow

一、介绍 玉米病害识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;通过收集了8种常见的玉米叶部病害图片数据集&#xff08;‘矮花叶病’, ‘健康’, ‘灰斑病一般’, ‘灰斑病严重’, ‘锈病一般’, ‘锈病严重’, ‘叶斑病一般’, ‘叶斑病严重’&#x…