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.xdnf.cn/news/7835.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能:重塑未来的力量

华为OD机试 2024E卷题库疯狂收录中,刷题 点这里。 实战项目访问:http://javapub.net.cn/ 人工智能技术的未来:变革与适应 引言 随着人工智能技术的不断发展,我们已经看到了它在各行业带来的巨大变革。从医疗行业的病例诊断到企业…

3D看车如何实现?有哪些功能特点和优势?

3D看车是一种创新的汽车展示方式,它基于网络世界,融合了三维建模与虚拟现实技术,为消费者带来前所未有的真实、立体观车体验。以下是对3D看车的详细解释: 一、3D看车的实现方式 高精度三维建模: 通过高精度三维建模…

消息队列的测试点

消息队列的测试点 一、常用的消息队列产品1、挑战性问题 二、kafka简介三、消息的生产四、消息的存储五、Kafka的特性六、kafka测试要点 一、常用的消息队列产品 基于内存的消息队列 RabbitMQ:适用于处理高并发场景,广泛用于即时消息传递RabbitMQ&…

web实操1——只使用tomcat发布网站

安装tomcat 下载 肯定是去官网: http://tomcat.apache.org/ 下载之后,解压: !!解压后: logs日志:就是一些输出,输到文本里。 temp:一些临时文件(不用管) webapps:放网站的 work&…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十七集:制作第二个BOSS燥郁的毛里克

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作游戏第二个BOSS燥郁的毛里克 1.导入素材和制作相关动画1.5处理玩家受到战吼相关行为逻辑处理2.制作相应的行为控制和生命系统管理3.制作战斗场景和战斗…

HarmonyOS开发 - 餐饮APP中多门店多窗口打开实例补充

specified启动模式为指定实例模式,有一些特殊场景,例如多门店应用中每次打开一个门店都希望能新建一个门店实例,而重复打开同一个门店都是同一门店实例。 此篇为餐饮APP中多门店实例的补充内容,以解决同一门店多次点击重复创建新窗…

FreeRTOS 13:FreeRTOS队列的读原理

队列读取消息 FreeRTOS 中用于从队列中读取消息的 API 函数如下表所示: xQueueReceive BaseType_t xQueueReceive( QueueHandle_t xQueue,void * const pvBuffer,TickType_t xTicksToWait ) {BaseType_t xEntryTimeSet pdFALSE;TimeOut_t xTimeOut;Queue_t * con…

山东路远生态科技有限公司竣工投产仪式暨产品发布会圆满举行

第二十届三中全会于2024年7月15日至18日在北京举行。全会审议通过了《关于进一步全面深化改革、推进中国式现代化的决定》。其中提到,“要健全因地制宜发展新质生产力体制机制”。 新质生产力是由技术革命性突破、生产要素创新性配置、产业深度转型升级而催生的当代先进生产力…

Vue + Vant Picker实现省市区三级联动

一、picker选择器的数据由columns属性控制,columns中有几个元素就代表该选择器有多少级,通过change方法来给对应列赋值 this.columns [{values: citys,className: "column1",defaultIndex: 0,flex: 1, //控制每列的宽度},{values: citys[0].…

[java][高级]FilterListenerAjax

Filter&Listener&Ajax 目标: 能够使用 Filter 完成登陆状态校验功能 能够使用 axios 发送 ajax 请求 熟悉 json 格式,并能使用 Fastjson 完成 java 对象和 json 串的相互转换 1,Filter 1.1 Filter概述 Filter 表示过滤器&#…

如何使用RabbitMQ和Python实现广播消息

使用 RabbitMQ 和 Python 实现广播消息的过程涉及设置一个消息队列和多个消费者,以便接收相同的消息。RabbitMQ 的 “fanout” 交换机允许你将消息广播到所有绑定的队列。以下是如何实现这一过程的详细步骤。 1、问题背景 在将系统从Morbid迁移到RabbitMQ时&#x…

java.lang.IllegalArgumentException: argument type mismatch问题排查汇总

java.lang.IllegalArgumentException: argument type mismatch 错误通常发生在方法调用时,传入的参数类型与方法签名中声明的参数类型不匹配,错误发生在堆栈跟踪中,MyBatis 反射调用方法设置 Bean 属性时。 以下是一些可能的原因和解决方法…

沉浸式学习新体验:3D虚拟展厅如何重塑教育格局!

3D虚拟展厅对于教育行业产生了深远的影响,主要体现在以下几个方面: 一、创新教学方式 3D虚拟展厅利用三维技术构建的虚拟展示空间,为教育行业带来了一种全新的教学方式。传统的教学方式往往局限于书本和课堂,而3D虚拟展厅则能够…

第107篇:国*攻防比赛中一个多层嵌套的java内存马的反混淆解密分析过程

Part1 前言 大家好,我是ABC_123。一年一度的“大型攻防比赛”已经过去2、3个月了,在此期间陆续收到了多名网友发来的内存马样本,ABC_123一直在抽时间进行分析解密工作。现在很多的内存马都进行了加密混淆,而且一个比一个复杂&…

火山引擎云服务docker 安装

安装 Docker 登录云服务器。 执行以下命令,添加 yum 源。 yum update -y yum install epel-release -y yum clean all yum list依次执行以下命令,添加Docker CE镜像源。更多操作请参考Docker CE镜像。 # 安装必要的一些系统工具 sudo yum install -y yu…

基于SpringBoot的“会员制医疗预约服务管理信息系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“会员制医疗预约服务管理信息系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统首页界面图 医院信息界面图…

从0开始linux(21)——文件(2)文件重定向

欢迎来到博主的专栏:从0开始linux 博主ID:代码小豪 文章目录 设备文件文件缓冲区重新认识文件描述符重定向 设备文件 在前一篇文章博主提到,当一个c/c进程运行时,会默认打开三个文件流,分别是stdin,stdout…

Claude 3.5 新功能 支持对 100 页的PDF 图像、图表和图形进行可视化分析

Claude 3.5 Sonnet发布PDF图像预览新功能,允许用户分析长度不超过100页的PDF中的视觉内容。 此功能使用户能够轻松上传文档并提取信息,特别适用于包含图表、图形和其他视觉元素的研究论文和技术文档。 视觉PDF分析:用户现在可以从包含各种视觉…

【SQL server】数据库远程连接配置

SQL server远程连接配置 1、数据库远程配置1.身份验证2. 建立入站规则3. SQLServer服务的启动 1、数据库远程配置 1.身份验证 所以在安装过程中需要注意涉及到的的身份验证中,要使用混合模式,并设置密码。2. 建立入站规则 在控制面板中的防火墙管理中…

【Vue 全家桶】5、Vuex(更新中)

目录 概念何时使用搭建vuex环境基本使用getter的使用四个map方法的使用vuex模块化命名空间 概念 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。使用 Vuex 可…