
【便携摇杆滚轮】你的文档翻页小助手
简介
基于 CH552E 芯片的创新滚轮,利用 USB 接口实现便捷连接与数据传输。采用 Xbox 蘑菇头式摇杆控制,为交互操控带来全新体验。开源程序、PCB、外壳3D装配文件。
简介:基于 CH552E 芯片的创新滚轮,利用 USB 接口实现便捷连接与数据传输。采用 Xbox 蘑菇头式摇杆控制,为交互操控带来全新体验。开源程序、PCB、外壳3D装配文件。开源协议
:CC BY-NC 3.0
描述
视频链接:
项目简介
基于 CH552E 芯片的创新滚轮,利用 USB 接口实现便捷连接与数据传输。采用 Xbox 蘑菇头式摇杆控制,操作精准灵活,适用于多种场景,为交互操控带来全新体验。
项目功能
本项目是基于 CH552E 芯片设计的便携摇杆滚轮,主要用于代替鼠标滚轮在不便使用的情况。通过 Xbox 蘑菇头式摇杆控制,可实现精准灵活的滚动操作,适用于浏览长文档、网页浏览等场景。
项目参数
- 采用 CH552E 芯片作为主控芯片,通过 USB 接口与电脑连接;
- 使用 Xbox 蘑菇头式摇杆,具有一定的灵敏度和精准度;
- 体积小巧,便于携带。
原理解析(硬件说明)
本项目由 CH552E 芯片、Xbox 蘑菇头式摇杆(KY-023)、USB 接口、等部分组成。CH552E 芯片负责接收摇杆信号并将其转换为 USB 信号,通过 USB 接口传输给电脑。摇杆的移动被转化为电信号,经芯片处理后实现对应的滚动操作。
软件代码
c复制
/*
cli board options: usb_settings=user148
*/
// For windows user, if you ever played with other HID device with the same PID C55D
// You may need to uninstall the previous driver completely
#ifndef USER_USB_RAM
#error "This example needs to be compiled with a USER USB setting"
#endif
#include "src/userUsbHidKeyboardMouse/USBHIDKeyboardMouse.h"
// 宏定义引脚配置及传感器参数
#define BUTTON2_PIN 16 // 按钮2的引脚
#define ADC_PIN 15 // 模拟电位器的引脚
#define ADC_THRESHOLD 3 // 矫形判断临界值
// 按钮类型定义(可拓展功能)
typedef enum {
MOUSE_MIDDLE = MOUSE_MIDDLE // 中键点击
} MouseEventType;
// 全局变量
bool button2PressedPrev = false; // 按钮前一次状态
int16_t sensorValue = 0; // 模拟电位器的读值
int8_t scrollSpeed = 0; // 鼠标滚轮速度
float mappedValue = 0; // 映射后的模拟值
float absMappedValue = 0; // 映射后绝对值
float scrollValue = 0; // 滚轮速度
// 更新按钮状态
void updateButtonState() {
bool buttonPressed = !digitalRead(BUTTON2_PIN); // 读取按钮状态为低电平触发
// 检测按钮状态变化
if (buttonPressed != button2PressedPrev) {
button2PressedPrev = buttonPressed; // 更新按钮前一次状态
// 如果按钮按下,模拟中间鼠标点击
if (buttonPressed) {
Mouse_click(MOUSE_MIDDLE);
}
}
}
// 更新鼠标滚轮速度
void updateScrollSpeed() {
// 读取电位器模拟值并映射
sensorValue = analogRead(ADC_PIN);
mappedValue = map(sensorValue, 0, 255, -128, 128);
// 计算映射后的绝对值
absMappedValue = abs(mappedValue);
// 根据电位器值设置滚轮速度分段
if (absMappedValue < ADC_THRESHOLD) {
scrollValue = 0; // 第一段:值很小,滚轮不滚动
} else if (absMappedValue < 110) {
scrollValue = (mappedValue > 0) ? 1 : -1; // 第二段:小幅滚动
} else {
scrollValue = (mappedValue > 0) ? 2 : -2; // 第三段:大幅滚动
}
}
// 控制鼠标动作
void controlMouseActions() {
// 如果滚轮速度不为0且非零,则控制鼠标滚轮滚动
if (scrollValue != 0) {
Mouse_scroll(scrollValue);
scrollValue = 0; // 重置滚轮速度,防止重复触发
}
}
void setup() {
// 初始化USB通信
USBInit();
// 硬件初始化
pinMode(BUTTON2_PIN, INPUT_PULLUP); // 设置按钮为输入并上拉
pinMode(ADC_PIN, INPUT); // 设置模拟电位器为输入
}
void loop() {
// 按钮和电位器状态的更新和处理
updateButtonState(); // 更新按钮状态
updateScrollSpeed(); // 更新滚轮速度
controlMouseActions(); // 控制鼠标动作
delay(50); // 延迟以防止抖动
}
注意事项
- 摇杆安装时需注意方向和位置,确保操作灵活;
- 调试时需注意 USB 接口的兼容性,确保设备正常识别。
- 摇杆模块的排针需要修剪后再焊接
- 2812灯珠不需要贴
- 所用的隔离柱目前采用打印件
组装流程
- 焊接PCB板与改装蘑菇头模块(改排针向下,注意在单面板底面焊接)
- 安装 Xbox 蘑菇头式摇杆(KY-023)
- 安装隔离柱与底板。
使用圆隔离柱或方隔离柱都可以,主要是为了固定两块板。
条件允许的话建议先给隔离柱攻丝
外壳底板使用4颗M2x5的螺钉或自攻螺钉,穿过PCB固定至隔离柱螺孔。
-
检查电路,确保PCB焊接没问题,无短路等现象。
-
使用官方下载软件下载程序后重新上电即可
(程序烧录见下)
- 外壳安装,在底部外围采用4颗M2x5的螺钉或自攻螺钉固定
程序下载
程序采用的arduino开发,源码在附件
下载程序前请自行前往沁恒官网下载安装WCHISPTool
烧录步骤
打开WCHISPTool烧录软件,
选择CH55x系列进入,
按图示选择芯片及配置,
下载文件勾选到通过Arduino生成的HEX文件。
最后勾选设备链接后自动下载,
使用镊子短接板子侧边的3V3和P3.6引脚,
将USB插上电脑,此时迅速移开镊子,即可完成程序自动烧录。
烧录完成后,重新上电即可使用。
实物图
其他
附件提供的装配体3D文件格式有stl、stp、x_t;
提供程序源码及其引用库文件。
设计图

BOM


评论