文章目录

  • 前言
  • 一、TOUCHU 触摸传感器工作原理及硬件设计
    • 1.触摸传感器的原理
    • 2.多个触摸按键的识别方案
    • 3.硬件连接
  • 二、程序设计
    • 1.传感器IO选择
    • 2.驱动库的使用
    • 3. 关于按键枚举
    • 4. 使用演示
  • 三、常见问题
    • 1. 触摸误识别
    • 2. 是否可以通过串联电阻来提高识别率
  • 四、总结

前言

总所周知,ESP32内部集成了一些传感器,其中就包括触摸传感器,并提供了10个通道给开发者们使用。这个意思就是,总共就10个触摸用完就没了。
       今天呢,就给大家介绍一下用一个触摸传感器识别多个触摸按键的方法,全是骚操作。

一、TOUCHU 触摸传感器工作原理及硬件设计

1.触摸传感器的原理

ESP32芯片内部的TOUCH触摸传感器属于电容式触摸传感器,传感器其实就是一个RC振荡器,相信电子专业的同学应该对这个有点印象,它的公式是这样的:

       ESP32内部的传感器的输出就是频率。可以从公式中看到,电阻阻值固定,当电容增大时,频率 Fc就是降低。

2.多个触摸按键的识别方案

因此当我们人手去触摸按键时,电容会增大,传感器的频率输出就会减小。而一个IO识别多个触摸按键的操作就是通过不同的频率来操作,而我们现在要解决的就是如何让多个触摸按键输出不同的频率。根据上面那条公式,可以看出有两种方式:

  • 通过改变电阻,达到触摸时改变频率的目的
  • 通过改变电容,达到触摸时改变频率的目的

3.硬件连接

我们测的是电容的触摸按键,所以是采用改变电容的方式来改变传感器的输出频率,通过给各个触摸按键串联不同大小的电容,以达到区分按键的目的。

可以看到,四个触摸按键博主所串联的电容的大小相差都是很大的,就是想让触摸传感器的输出相差也大一点,方便我们软件作识别。

二、程序设计

1.传感器IO选择

ESP32的TOUCH传感器的IO是有固定映射的,这10个通道的对应关系如下:

TOUCH_PAD_NUM ESP32 GPIO
TOUCH_PAD_NUM0 GPIO4
TOUCH_PAD_NUM1 GPIO0
TOUCH_PAD_NUM2 GPIO2
TOUCH_PAD_NUM3 GPIO15
TOUCH_PAD_NUM4 GPIO13
TOUCH_PAD_NUM5 GPIO12
TOUCH_PAD_NUM6 GPIO14
TOUCH_PAD_NUM7 GPIO27
TOUCH_PAD_NUM8 GPIO33
TOUCH_PAD_NUM9 GPIO32

这次,我们选择的是TOUCH_PAD_NUM9也就是IO32引脚。

2.驱动库的使用

本次应用所用的程序,我们已经写成了函数:

  • app_touch_calibration(touch_pad_t touch_num)
    校准函数,会自动校准并储存不同触摸按键的输出频率,每次复位都会执行校准
  • app_touch_read_raw_data(touch_pad_t touch_num)
    按键识别函数,输出识别到的按键枚举。

3. 关于按键枚举

app_touch.h 文件中,有个touch_button_num_t 枚举,里面定义触摸按键的数量,如需添加,请在枚举里面添加相关枚举号即可:

//自己修改枚举号
typedef enum {TOUCH_BUTTON_ERROR = 0,/** 可以修改以下内容**/TOUCH_BUTTON_NUM1,TOUCH_BUTTON_NUM2,TOUCH_BUTTON_NUM3,TOUCH_BUTTON_NUM4,/***********************/TOUCH_BUTTON_NUM_MAX,
}touch_button_num_

4. 使用演示

三、常见问题

1. 触摸误识别

问题:明明触摸的这个按键,却识别到其他按键号。
答:按键之间输出的频率太近,导致误识别率提高,建议修改串联的电容。可以通过校准函数的输出来调节电容大小,知道每个按键输出的差距变大,越大越好

2. 是否可以通过串联电阻来提高识别率

答:可以,但是不能过多,当有两个触摸按键输出的频率无法进行电容调节时,其中一个可以改为电阻来增大两个触摸按键的频率差距

四、总结

总而言之,硬件上尽可能地把各个触摸按键的输出频率的差距变大,越大越好,越大越精准。

官方官网:https://www.ai-thinker.com
开发DOCS:https://docs.ai-thinker.com
官方论坛:http://bbs.ai-thinker.com
技术支持:support@aithinker.com

【工程师有空了】安信可ESP32之TOUCH触摸传感器的花式应用--一个IO识别多个触摸按键相关推荐

  1. 安信可ESP32 LVGL_V8 最快移植攻略

    安信可ESP32 LVGL_V8 最快移植攻略 文章目录: 安信可ESP32 LVGL_V8 最快移植攻略 软件环境 硬件环境 ESP-S3-12K开发板介绍 开发板的参数 ESP32S3的SPI L ...

  2. 【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯

    ---------- 本博客学习由 安信可开源团队 潜心编写,做ESP32-A1S离线语音初步入门技术交流分享.如有不完善之处,请留言,本团队及时更改. 文章目录 一.前言 二.离线语音框架 2.1 ...

  3. esp32录音功能开发_【安信可ESP32语音开发板专题①】ESP32-A1S音频开发板之离线语音识别控制LED灯...

    本博客学习由 一.前言 离线语音,顾名思义:在不连网络的状态下,产品能识别语音指令并执行相应的控制输出. 安信可基于乐鑫ESP32芯片开发的ESP32-A1S开发板智能语音助手,可支持唤醒词引擎(Wa ...

  4. 【安信可ESP32语音开发板专题②】ESP32-Audio-Kit 开发板适配百度dueros例程实现在线语音功能,与开发板对话聊天。

    文章目录 前言 一.准备工作 1.硬件准备 2.软件准备 二.验证ESP-ADF是否正常 1. 代码简单修改 2.播放MP3测试 三.dueros 例程适配 1.替换连接文件 2.内存卡准备 3. 代 ...

  5. 开源一个安信可A9g小项目微信小程序定位器项目②GPS模块如何定位经纬度并且上报到MQTT服务器,实现远程查看模块的经纬度;

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 如何在windows10上环境搭建,编译烧录代码固件,查看运行 ...

  6. 安信可博客导航一站式搜索(所有博客的汇总帖)

    安信可博客导航一站式搜索(所有博客的汇总帖) 文章目录 安信可博客导航一站式搜索(所有博客的汇总帖) 开源团队简介 安信可优势 Ai-WB2模组专题 ESP系列IDE开发环境搭建 ESP8266模组专 ...

  7. 走向网络开放 戴尔易安信未来的网络愿景

    近日,戴尔易安信举行了开放网络产品沟通会,主题分享未来的网络愿景和战略,并正式发布了全新的S4200-ON交换机,对外扩展了开放网络计划,以帮助用户管理数字化转型对网络所提出的越来越高的要求.S420 ...

  8. 乐鑫Esp32学习之旅 23 安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 " ...

  9. 乐鑫Esp32学习之旅 安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,拍照图片通过有线串口传到上位机PC端。(附带设备端+PC端源码)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 系列一:ESP32系列模组基础学习系列笔记 1. 爬坑学习新旅程,虚 ...

最新文章

  1. 大中型企业的天网:Apache Geode
  2. 李彦宏候选院士招致大批网民反对
  3. 判断手机浏览器还是微信浏览器(PHP)
  4. Ajax系统学习总结
  5. Spring Boot 实现登录拦截器,这才是正确的姿势!!
  6. android:layout_marginbottom=,Android: Retrieve layout_marginBottom programmatically?
  7. 使用阿里云Mysql集群做读写分离_以及使用阿里云服务器自己搭建MyCat集群_费用核算---Linux工作笔记046
  8. 罗永浩将举办「老人与海」发布会;微软疑似遭遇大范围全球宕机;Python 3.9 首个测试版发布 | 极客头条...
  9. 恒大继续押宝造车 9.3亿美元收购NEVS的51%股权
  10. 字节跳动代理商_横跨字节跳动海外抖音核心代理商爆发!(002803)
  11. 菜鸟java基础--1
  12. 【动画演示软件】Focusky教程 | 如何隐藏某帧的内容,使其在演示时才出现?
  13. python如何打开文件选择框_python文件选择对话框的操作方法
  14. 硬件工程师的面试问题
  15. 无法连接虚拟设备 ide1:0,因为主机上没有相应的设备。 您要在每次开启此虚拟机时都尝试连接此虚拟设备吗?
  16. html使用第三方标签,不使用第三方框架获取html页面某个标签的某个属性值
  17. kafka服务端版本号0.10.2,客户端版本号2.0 如何发送消息
  18. 联想拯救者y空间_锐龙H真给劲儿 联想拯救者R7000 2020首测
  19. 人工智能技术--四要素分析
  20. Vsftpd 详细配置

热门文章

  1. 开启暴风影音本地视频左眼功能 有图有真相
  2. 配置tomcat下载sis,sisx文件
  3. 限流常见方案,值得一看
  4. 炼丹系列2: Stochastic Weight Averaging (SWA) Exponential Moving Average(EMA)
  5. 最新日志审计系统——EventLog Analyzer
  6. 2021美赛总结及常用网站
  7. 简单使用taglib 自定义标签
  8. 前端网页兼容电脑笔记本分辨率放大125%、150%的办法
  9. 资源名称中英文特殊字符乱码处理
  10. 幻影粒子系统 particleIllusion3