基于SAMD21的USB HID控制器,用于spotify播放,暂停,跳过和调整触摸和旋转输入的音量
扫描二维码
随时随地手机看文章
TouchNav是一个极简的USB HID触摸控制器,使用定制的SAMD21板。它可以让你控制Spotify播放-播放/暂停,下一个/上一个轨道,和音量使用电容触摸板和旋转编码器。
目标是建立一个时尚的、基于触摸的界面,感觉未来感又实用,允许直接从你的桌子上直观地控制Spotify,而不需要触摸键盘或鼠标。
特性
•电容触摸板播放/暂停,下一步,上一步
•旋转编码器音量控制
•基于hid的媒体键仿真(PC上不需要软件)
•通过键盘快捷键自动打开/关闭Spotify
•作为一个即插即用的USB设备
•建立在一个定制的SAMD21板
硬件概述
TouchNav的核心是围绕为Fab学院设计的定制SAMD21板构建的。SAMD21E17A芯片提供全速USB功能,使其能够充当类似键盘或鼠标的HID(人机界面设备)。
爱特梅尔公司SAMD21E17A
Atmel SAMD21E17A是一款功能强大但紧凑的基于ARM Cortex-M0+的微控制器,运行频率高达48 MHz。它是Arduino Zero和许多现代开发板中使用的同一系列芯片,使其成为usb连接,低功耗和交互式项目(如TouchNav)的理想选择。
•处理器:32位ARM Cortex-M0+核心,最高可达48mhz
•内存:128 KB闪存和16 KB SRAM(用于程序和数据存储)
•USB支持:全速USB 2.0接口,允许本地USB HID,键盘和串行功能
外围设备:
•多达6个可配置串行接口(SERCOM) -可作为UART, SPI或i2c
•用于读取传感器和触摸输入的12位ADC(模数转换器)
•10位DAC用于模拟输出
•定时器/计数器(TC/TCC)用于PWM,事件定时或信号生成
•外围触摸控制器(PTC)的电容触摸感应
•电源管理:低功耗模式,梦游外设,和停电检测。
•调试:用于编程和调试的双针SWD(串行线调试)
•工作电压:3.3 V逻辑
•I/O引脚:多达32个可用的GPIO引脚(取决于封装)
为什么它对TouchNav很好
SAMD21E17A的原生USB功能使其非常适合模拟键盘,鼠标或多媒体控制器的项目-无需额外的硬件。它的触摸感应支持和多个串行接口也使其非常适合集成传感器,led和旋转编码器。
主要输入组件包括:
•电容式触控板:三个金属或铜触控板作为触控传感器。每个垫被分配一个功能-播放/暂停,下一个轨道,和上一个轨道。
•旋转编码器:用来增加或减少系统音量的小旋钮。它还包括一个可选的按钮。
•Micro USB接口:用于电源和数据,允许电路板作为USB HID设备。
•电容触摸板连接到SAMD21上的模拟能力引脚。旋转编码器连接到两个数字引脚,该引脚配置为检测顺时针和逆时针旋转的状态转换。
PCB设计- KiCAD
整个电路板是在开源PCB设计工具KiCad中定制设计的。原理图、布局和引脚映射经过定制,以适应SAMD21E17A的功能,该功能将触摸板、旋转编码器、WS2812B led和USB连接集成在紧凑的最小设计中。
这允许完全控制硬件设计,从组件放置到路由USB差分对,使TouchNav成为专用的专业级HID控制器,而不是通用的开发板hack。
引脚如下:
•Led - 7
•Ws2812b - 11
•旋转编码器- A - 9, B - 8,开关- 10
•电容式触摸滑块- GPIO 2、3、4、5、6
单板编程
TouchNav板的核心是SAMD21 E17,因此要对SAMD21进行编程,我们需要将引导加载程序添加到板中。为了初始化引导加载程序,我们需要串行调试引脚。只有在那之后,我们才能使用USB编程板。
串行调试接口用于将引导加载程序刻录到板上。我正在使用由我的Fab学院讲师Saheen开发的SAMD DAP程序员板
将FAB SAMD板添加到Arduino
为了使用Arduino IDE编程SAMD21板,我们需要将FAB SAMD板添加到板管理器中
通过单板管理器安装单板
在燃烧引导加载程序后,我可以使用C型USB接口对我的板进行编程。
Blink
在燃烧引导加载程序后,第一步是测试内置示例“Blink”。最初,我通过使用一些示例代码测试了所有输入和输出功能。
SAMD21串行演示
下一个测试是串行通信。经过研究,我实现了arduino常用的串口命令。print不适用于SAMD21,因此我们必须使用SerialUSB.print。下面的代码取自我的Fab学院嵌入式编程课。SAMD21回声码
电容式触摸
囚禁式触摸可以通过使用Neil教授在Fab学院输入设备课上提供的测试代码进行测试。为此所需的库是Adafruit FreeTouch库。
HID
我使用了默认情况下在Arduino的库管理器中可用的HID项目和HID设置库。我们只需要安装它来使用库管理器提供的库。我使用的主要功能是消费者功能,它允许控制媒体播放和一些功能。主要有两件事:在Windows设备上控制媒体播放和打开和关闭Spotify。
为了控制媒体播放,消费者函数提供如下功能:
面临的问题
在编程SAMD21时,我遇到了USB C连接的问题。电脑没有检测到板子。经过一些调试,我意识到USB C线是一个问题,我不得不使用另一个USB线和一个额外的USB集线器。我想可能是动力问题。以及PCB设计缺陷
旋转编码器不是很准确,因为当我转动旋钮更快时,它没有读取值。我想我需要在旋转编码器引脚上添加电容器。
本文编译自hackster.io





