ESP32 触摸功能开发套件

ESP32 触摸功能开发套件

1. 概述

ESP32-Sense 开发套件用于评估和开发 ESP32 触摸传感器功能。评估套件包含一个主板和若干子板,主板包含显示单元,主控单元,调试单元;子板的触摸电极的形状和排列方式多样,包括线性滑条、矩阵按键、弹簧按键、轮式滑条等,可以满足不同的使用场景。用户也可以自行设计子板以满足特殊的使用场景。
下图是 ESP32-Sense 开发套件:

touch_eb_overview

2. 相关资源

  • 开发环境

    • ESP-IDF 是 ESP32 平台的软件开发包。文档 Get Started 介绍编译环境的搭建和软件开发包的使用说明。
    • ESP-Prog 是 ESP32 调试工具,有下载和 Jtag 调试功能。
  • ESP32 IoT 应用方案

  • 硬件手册

    • ESP32-Sense 开发套件的硬件原理图,PCB 文件,BOM 等文件参考 乐鑫官网
    • ESP-Prog 的介绍请参考文档 ESP-Prog 介绍
  • 其他参考资料

  • 技术支持

    • 若在 ESP32-Sense 开发套件使用时遇到问题,请在 ESP32-Sense 工程中提交 issue
  • 购买方式

3. 开发板操作

  • 保护盖板安装
    塑料材质保护盖板厚度应小于 3 mm。空气间隙会导致手指的触摸感应变弱,所以保护盖板应紧贴子板安装。如果有空气间隙可以使用双面胶填充。弹簧子板上应使用 7 mm 螺柱安装保护盖板。
    overlay_mount

  • 子板安装
    子板与主板之间使用连接器连接,连接器既有连通作用,也可以固定住子板。子板安装孔可安装 4 个 7 mm 塑料镙柱,使子板水平支撑在主板上,如下图:
    board_setup

  • ESP-Prog 调试器设置
    ESP-Prog 起到下载程序和供电作用。调试器上有两组跳针,IO0 跳针和供电跳针,供电跳针上的供电电压选择为 5V。因为 IO0 既有启动模式(下载模式、运行模式)选择功能,同时也是触摸功能管脚,如果 IO0 作为触摸功能使用,则运行模式时,调试器上 IO0 跳针应断开。调试器设置如下图:
    board_pwr_seljpg

  • ESP-Prog 调试器连接主板
    调试器包含 Jtag 接口和 Program 接口。与主板连接使用 Program 下载接口。
    board_pgm_connection

  • 编译下载
    配置 ESP32-Sense 项目工程 的 config 参数,执行命令 make menuconfig 配置参数,如下图所示。执行命令 make flash,程序会自动下载到开发板中。
    menuconfig1
    menuconfig2

  • 更换子板
    ESP32 上电时会检测子板上的分压电阻的分压值,识别不同的子板。更换子板后需给开发板重新上电。

4. 硬件介绍

4.1 主板

  • 主板系统框图
    下图是主板的功能框图。
    touch_eb_block_diagram

  • 主板硬件资源
    显示单元包括数码管和 RGB 三色灯电路。调试单元包括 ESP-Prog 调试器接口。主控单元包含 ESP32 模组。Mini USB 供电作用。
    board_description

  • 电源管理系统
    ESP32-Sense 开发套件上 Mini USB 和 ESP-Prog 均可供电,两者之间有保护二极管隔离,供电不相互影响。USB 只具有供电功能。ESP-Prog 接口除了供电功能还具有自动烧写固件功能。下图是电源管理系统的硬件原理图:
    board_pwr_supply

  • 显示电路
    ESP32-Sense 开发套件的主板上有显示单元,可直观地反馈触摸动作。三个数码管分别显示被触摸按键的位置和触摸动作的持续时间。数码管驱动芯片为 CH455G,使用 I2C 接口控制。RGB 灯用于触摸时的颜色反馈。用户滑动滑条,RGB 灯的颜色会相应变化。
    下图是显示单元的硬件原理图:

board_7seg_display
board_rgb_module

4.2 子板

  • 子板分压电阻
    子板上的触摸电极有多种形状和排列方式。每个子板上有分压电阻,每个分压电阻的阻值不同,主板应用程序通过 ADC 读取分压值,识别不同类型的子板。分压电路如下图所示:
    board_adc
    主板上的分压电阻是 10 KΩ,下表是各子板上对应的分压电阻阻值:
子板 分压电阻 (Kohm) ADC 读数(Min) ADC 读数 (Max)
弹簧按键 0 0 120
线性滑条 4.7 935 1175
矩阵按键 10 1530 1770
双工滑条 33 2400 2620
轮式滑条 47 2630 2810

5. 应用程序介绍

ESP32 IoT Solution 工程下的 ESP32-Sense 项目 是 ESP32-Sense 开发套件对应的应用程序。目录结构如下图所示:

├── main
│   ├── evb_adc.c               //使用 ADC 功能识别不同子板,设置每个子板对应的 ADC 阈值
│   ├── evb.h                   //主板应用程序参数设置(触摸阈值,ADC I/O,I2C I/O)
│   ├── evb_led.cpp             //RGB LED 初始化程序
│   ├── evb_seg_led.c           //数码管驱动程序
│   ├── evb_touch_button.cpp    //子板驱动程序-触摸按键
│   ├── evb_touch_wheel.cpp     //子板驱动程序-轮式滑条
│   ├── evb_touch_matrix.cpp    //子板驱动程序-矩阵按键
│   ├── evb_touch_seq_slide.cpp //子板驱动程序-双工滑条
│   ├── evb_touch_slide.cpp     //子板驱动程序-线性滑条
│   ├── evb_touch_spring.cpp    //子板驱动程序-弹簧按键
│   ├── Kconfig.projbuild
│   └── main.cpp                //主程序入口
├── Makefile
└── sdkconfig.defaults

5.1. 参数配置

当使用不同厚度的盖板时,需要调节触摸触摸阈值。触摸阈值直接反映为触摸的灵敏度。触摸阈值越高,灵敏度越高,阈值过高会出现手指未接触按键时即发生触摸响应。触摸阈值越低,灵敏度越低,阈值过低会出现触摸无反馈或触摸延迟。
通过 ESP32-Sense 工程中的 evb.h 文件调节触摸阈值。
下面是触摸阈值设置的示例:

#define TOUCHPAD_THRES_PERCENT 980         //触摸阈值 980,识别 >2% 的触摸读数变化率
#define TOUCHPAD_SPRING_THRESH_PERCENT 970 //弹簧子板触摸阈值 970,识别 >3% 的触摸读数变化率

5.2. 效果展示

touch_spring touch_matrix
Spring Button Matrix Button
touch_slide touch_diplexed_slide
Linear Slider Duplex Slider
touch_wheel
Wheel Slider

猜你喜欢

转载自blog.csdn.net/espressif/article/details/79359817