可编程USB控制设备

本文最后更新于:2024年3月9日 晚上

首先感谢Zy143L大佬进行的PCB板的设计和制作。

特点

  1. 附带tf卡槽,可自选是否附带储存空间
  2. 使用CH552单片机,方便上手
  3. 通用G2版型,方便购买或定制外壳
  4. 带有USBHUB,可以同时作为U盘和可编程USB控制设备使用
  5. 带有霍尔开关,用于控制烧写,也可用于连接后的控制开关,即使加壳也不影响后续烧写
  6. 成本低廉,适合大批量使用

使用方法

1.准备环境

Windows系统,安装Arduino IDEWCHISPStudio,保证科学上网

2.配置Arduino IDE

打开Arduino IDE,依次点击File-Preferences…,在Settings中的Additional Boards Manager URL中输入 https://raw.githubusercontent.com/DeqingSun/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json,并点击OK。

点击Board-Boards Manager…,搜索并安装Ch55xduino

之后点击如图,选择CH552

并修改ram

img

下载示例https://github.com/DeqingSun/ch55xduino/tree/ch55xduino/ch55xduino/ch55x/libraries/Generic_Examples/examples/05.USB/HidMediaKeyboard文件夹至本地,使用Arduino IDE打开HidMediaKeyboard.ino文件,并修改为(此处示例为插入后弹出计算器)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/*
HID Keyboard example


created 2020
by Deqing Sun for use with CH55xduino

This example code is in the public domain.

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/userUsbHidMediaKeyboard/USBHIDMediaKeyboard.h"

#define BUTTON1_PIN 11

#define LED_BUILTIN 33

bool finish = false;


void setup() {
USBInit();
//pinMode(BUTTON1_PIN, INPUT_PULLUP);
//pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
delay(5000);
if (!finish) {
Consumer_press(CONSUMER_CALCULATOR);
Consumer_release(CONSUMER_CALCULATOR);
finish = true;
}

delay(5000); //naive debouncing
}

并如图点击即可导出编译结果,输出保存至.ino文件同目录的build目录下

img

3.烧写程序

如图中右下角黑色元件为霍尔开关,会根据磁通量确定通断,在USB设备插入前放置磁铁靠近此部分即可进入烧写模式

img

打开WCHISPStudio,在右侧选择E8051USB系列,并修改配置如图