ESP32-Sense-kit

[English]

概述

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

下图是 ESP32-Sense-Kit:

ESP32-Sense

ESP32-Sense-Kit

开发板操作

  • 保护盖板安装

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

ESP32-Sense

保护盖板安装

  • 子板安装

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

ESP32-Sense

子板安装

  • ESP-Prog 调试器设置

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

ESP32-Sense

调试器设置

  • ESP-Prog 调试器连接主板

    调试器包含 Jtag 接口和 Program 接口。与主板连接使用 Program 下载接口。

ESP32-Sense

调试器连接主板

  • 编译下载

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

ESP32-Sense
ESP32-Sense

编译下载

  • 更换子板

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

硬件参考

主板

  • 主板系统框图

    下图是主板的功能框图。

ESP32-Sense

主板功能框图

  • 主板硬件资源

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

ESP32-Sense

主板硬件资源

  • 电源管理系统

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

ESP32-Sense

电源管理系统

  • 显示电路

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

    下图是显示单元的硬件原理图:

ESP32-Sense
ESP32-Sense

显示电路

子板

  • 子板分压电阻

    子板上的触摸电极有多种形状和排列方式。每个子板上有分压电阻,每个分压电阻的阻值不同,主板应用程序通过 ADC 读取分压值,识别不同类型的子板。分压电路如下图所示:

ESP32-Sense

分压电路

主板上的分压电阻是 10 KΩ,下表是各子板上对应的分压电阻阻值:

子板

分压电阻 (Kohm)

ADC 读数(Min)

ADC 读数 (Max)

弹簧按键

0

0

250

线性滑条

4.7

805

1305

矩阵按键

10

1400

1900

双工滑条

19.1

1916

2416

轮式滑条

47

2471

2971

应用程序介绍

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

参数配置

当使用不同厚度或不同材质的盖板时,需要重新设置各通道触摸变化率参数,即灵敏度。各通道触摸变化率是由脉冲计数值计算得到。计算公式为:(Non-touch value - Touch value) / Non-touch value。“Non-touch value” 是指不触摸时通道的脉冲计数值。“Touch value” 是指正常触摸时通道的脉冲计数值。这两个参数需要用户测量得出。系统初始化时,由触摸变化率自动计算出触摸阈值,触摸阈值与触摸变化率成正比关系。

触摸变化率确定后,填写到 ESP32-Sense 工程中的 evb.h 文件。

效果展示

Spring Button

Matrix Button

Spring Button

Matrix Button

Linear Slider

Duplex Slider

Linear Slider

Duplex Slider

Wheel Slider

Wheel Slider

相关资源