ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板

news2024/11/6 17:38:39

项目简介

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

在这里插入图片描述

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.coloradmin.cn/o/2229934.html

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

相关文章

西北工业大学Journal of Applied Ecology最新研究进展:野生食草动物破坏了干旱自然保护区的土壤种子库及植被恢复潜力

本文首发于“生态学者”微信公众号! 自然保护区(protected areas)是全球生物保护的重要支柱。其中,植物是生物多样性和生态系统的核心组成部分,是实现生物保护目标的前提和基础。土壤种子库(soil seed ban…

Kotlin协程-async分析

概述 本章讲解协程中async,await的原理。前提条件是知道父子协程是如何关联的,可以看这篇协程之间父子关系1-Job如何关联的了解。 这里简单讲一下原理:使用await方法,这是一个挂载方法,协程执行到这里就会挂载&#…

推荐一款功能强大的AI实时变声器:FliFlik Voice Changer

FliFlik VoiCE Changer是一款专注于声音变换与音频处理的创新软件,旨在满足从日常娱乐、游戏直播到播客制作、专业音频编辑的多种应用场景需求。无论是想在游戏中变换声音逗乐队友,还是在播客中塑造个性化的音效,这款软件都能提供灵活而强大的…

LeetCode总结-链表

一、遍历链表 1290.二进制链表转整数 2058.找出临界点之间的最小和最大距离 2181.合并零之间的节点 二、删除节点 问:为什么没有修改 dummy,但 dummy.next 却是新链表的头节点?如果删除了 head,那么最后返回的是不是原链表的头…

Apache Dubbo (RPC框架)

本文参考官方文档:Apache Dubbo 1. Dubbo 简介与核心功能 Apache Dubbo 是一个高性能、轻量级的开源Java RPC框架,用于快速开发高性能的服务。它提供了服务的注册、发现、调用、监控等核心功能,以及负载均衡、流量控制、服务降级等高级功能。…

【Flask】二、Flask 路由机制

目录 什么是路由? Flask中的路由 基本路由 动态路由 路由中的HTTP方法 路由函数返回 在Web开发中,路由是将URL映射到相应的处理函数的过程。Flask是一个轻量级的Web应用框架,提供了简单而强大的路由机制,使得开发者能够轻松…

强势改进!TCN-Transformer时间序列预测

强势改进!TCN-Transformer时间序列预测 目录 强势改进!TCN-Transformer时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现TCN-Transformer时间序列预测; 2.运行环境为Matlab2023b; 3.单个变量时间序…

六西格玛项目助力,手术机器人零部件国产化稳中求胜——张驰咨询

项目背景 XR-1000型腔镜手术机器人是某头部手术机器人企业推出的高端手术设备,专注于微创手术领域,具有高度的精确性和稳定性。而XR-1000型机器人使用的部分核心零部件长期依赖进口,特别是高精度电机、关节执行机构和视觉系统等,…

C++ 优先算法——复写零(双指针)

目录 题目:复写零 1. 题目解析 2. 算法原理 一. 先找到最后一个“复写”数 处理边界情况 二. 复写操作 3. 代码实现 题目:复写零 1. 题目解析 题目截图: 该题目要求的与移动零相似,都要在一个数组上进行操作,…

掌握DFMEA,让潜在设计缺陷无处遁形!

一个微小的设计缺陷,就可能让一款产品从市场宠儿变成过客。那么,如何在设计初期就精准识别并扼杀这些潜在威胁呢?答案就是——巧妙运用DFMEA(设计失效模式与效应分析)。本文,天行健企业管理咨询公司将详细阐…

时间序列预测(十)——长短期记忆网络(LSTM)

目录 一、LSTM结构 二、LSTM 核心思想 三、LSTM分步演练 (一)初始化 1、权重和偏置初始化 2、初始细胞状态和隐藏状态初始化 (二)前向传播 1、遗忘门计算(决定从上一时刻隐状态中丢弃多少信息) 2、…

FlaskFastAPIgunicornunicorn并发调用

Flask VS. FastAPI Flask和FastAPI是Python中两种流行的Web框架,它们各自具有不同的特点和适用场景。以下是它们之间的一些主要区别: 1. 框架类型 Flask:Flask是一个轻量级的微框架,适合构建小型到中型的Web应用。它灵活且易于扩展…

安装scrcpy-client模块av模块异常,环境问题解决方案

背景 使用 pip install scrcpy-client命令出现以下报错 performance hint: av\logging.pyx:232:5: Exception check on log_callback will always require the GIL to be acquired. Possible solutions: 1. Declare log_callback as noexcept if you control the definition …

Linux——常见指令及其权限理解(正在更新中)

1.指令 1.1 快速了解指令 pwd 首次登录,默认所处的路径 whoami 当前所用的用户的名称 ls 显示当前路径下,文件名称 mkdir 在当前目录下,创建一个文件夹/目录 cd 进入一个目录 touch 新建一个文…

胡壮麟《语言学教程》第五版PDF英文版+中文版翻译

胡壮麟《语言学教程》中文版:https://pan.quark.cn/s/9491130ec572 《语言学教程》(英文版)是一部经典的语言学教材,自 1988 年面世以来,被众多高校广泛采用,长销不衰。该教材自出版以来不断修订&#xff…

项目模块十二:TcpServer模块

一、模块设计思路 1、目的 对所有模块整合,实现一个服务器模块供外部快速搭建服务器。 2、管理 监听套接字 主 Reactor,创建 EventLoop _baseloop 对象,进行对监听套接字的管理 哈希表管理所有新连接的 Channel 创建线程池进行连接的事…

【Spring源码核心篇-01】精通Spring的bean的生命周期

Spring源码核心篇整体栏目 内容链接地址【一】Spring的bean的生命周期https://zhenghuisheng.blog.csdn.net/article/details/143441012 spring的bean的生命周期 一,spring中bean的生命周期1,生成BeanDefinition1.1,初始化context和BeanFacto…

IAR出现,Error [e12].Unable to open file "xxxx:_app.xcl"怎么办?

编译时出现,一般是拷贝过来出现这个问题。解决方法: 1,点击到最左边“code -Debug”上 2,点Project>>>options for node "code" 3,选项卡“linker”>>"linker configuration fil…

C#与C++交互开发系列(十一):委托和函数指针传递

前言 在C#与C的互操作中,委托(delegate)和函数指针的传递是一个复杂但非常强大的功能。这可以实现从C回调C#方法,或者在C#中调用C函数指针的能力。无论是跨语言调用回调函数,还是在多线程、异步任务中使用委托&#x…

SpringBoot国际化:创建多语言支持的Web应用

SpringBoot国际化:创建多语言支持的Web应用 介绍 SpringBoot作为一个强大的框架,提供了便捷的国际化支持,使开发者能够轻松创建多语言支持的Web应用。通过使用SpringBoot的MessageSource,开发者可以在应用中实现动态的语言切换。…