设计与开发

单片机模拟usb 模拟USB鼠标

小编 2024-10-20 设计与开发 23 0

模拟USB鼠标

一、前言

  今天看到B站视频中,别的UP主 展示了 STM32制作鼠标的过程,在一些实验中,我也需要能够自动控制鼠标和键盘。下面,就对这个功能进行测试。也为今后的应用提供经验。

二、制作电路

  电路图非常简单,因为仅仅测试它的鼠标基本功能。所以在这里只是增加了一个USB端口。通过单面布线,使用一分钟制版方法得到了测试电路板。实验电路制作的还算可以,只是有一根USB线好像要断了。使用一分钟制版方法,重新再制作一块实验板。这次所有的引线都正常。一分钟制板方法使得电路板的制作就像打印纸张一样方便。

▲ 图1.2.1 测试电路原理图

▲ 图1.2.2 测试电路PCB

三、焊接调试

  电路比较简单,焊接也相对容易。单片机使用热风枪焊锡,可以看到单片机管脚可以自动对齐焊盘。在电路中,最细的线的宽度为 7 mil。可以在两个焊盘之间过两根引线。

四、软件测试

  使用 CubeMX 配置单片机的 HID 功能。首先,选择USB 设备的功能。然后,在下面的软件配置中,设置 USB 的功能为 HID。这样,单片机便可以模拟鼠标和键盘了。接下来,在需要控制的软件中,引入头文件。主要是 USB_DEVICE,以及 USB_HID两个头文件。在下面,声明外部变量 USB Device FS。通过发送四个字节的数据,来声明鼠标的按键动作,以及移动的参数。将这四个字节通过 Send Report 函数发送,计算机变可以进行 鼠标的相应动作。这部分的简单说明可以参考网络文章。其中关于四个自己的定义,这里给出了简要的说明。

  发送鼠标移动指令,鼠标立即执行。发送鼠标按键,则需要在发送按键之后,等待大约 15毫秒之后,再发送一个空的数据包。这样便可以模拟一个鼠标按键的过程。下面让我们来测试一下。

  这里通过串口发送一个指令,单片机接收到指令之后,便通过USB 产生一个鼠标左键按动的过程。这验证了刚才简单的发送协议的效果。通过串口控制 单片机发送鼠标移动的指令,效果也非常好。由此验证了单片机控制鼠标的功能。

※总  结 ※

  本文测试了基于F103的USB端口,产生鼠标动作的功能。在后面,再检验一下F103制作USB键盘的功能。

参考资料

[1]

? ? ? ? ? ? , , ? : https://www.bilibili.com/video/BV17p42127LD/?buvid=Z34E643DFE868DE14873B2DA10EDEFE34C8F&from_spmid=united.player-video-detail.relatedvideo.0&is_story_h5=false&mid=RlFskWsC899Y%2F8ZFWQKwsQ%3D%3D&p=1&plat_id=114&share_from=ugc&share_medium=iphone&share_plat=ios&share_session_id=17461416-B0CE-4E80-BEF4-7785E39404F2&share_source=WEIXIN&share_tag=s_i&spmid=united.player-video-detail.0.0×tamp=1711409205&unique_k=cO4xRP8&up_id=2044983862&vd_source=018fb56143bdd99e9082b03b2d65a531

[2]

教你STM32做USB鼠标、键盘 : https://zhuanlan.zhihu.com/p/583964588

「自制」USB测试仪(100w以上)基于单片机

注意事项

第一次使用STM32G0芯片要谨防变砖!!

因为G0的启动方式默认不是由boot0引脚决定 的,而是由内部nboot0 bit寄存器决定的。

其默认值是1,如果到手直接往里烧一段程序就没法从System memory启动 了。

要先使用STM32CubeProgrammer将Option bytes-User Configuration中nBOOT_SEL的勾去掉

这有点类似AVR单片机的配置熔丝。

除功率检测和快充诱骗,还提供了 屏幕亮度调整和简单的电压、电流曲线记录的功能。

项目介绍(毕设题目介绍)

USB功率测试器,可测试目前几乎所有协议的快充 ,短时最高功率160W,长时间最大功率120W。

使用单片机设计一款功率测试仪,可显示电压、电流、功率 ,且输入最大功率100W 以上。

项目分析

题目要求设计一款功率测试仪,我选择设计一款使用USB接口的可测试手机快充的功率计,具有一定便携性。

设计方案

原理图设计说明

降压电路

降压部分为MCU、INA220、OLED屏等提供3.3V电源,由于整个系统消耗的电流最大不会超过 60mA,低负载下普通的DC-DC变换器效率较低,所以最好选择带burst、skip、pfm等轻载节能 功能的芯片。

这里用的是立创商城买的RY9320AT6,上/下管内阻100/50mΩ,频率500k,正常工作是PSM模式,轻载进入PFM模式。

实测5V供电时只需要从VUBS获取9mA电流,而在大部分快充的9-12V区间只需要4mA左右电流,大大降低了测量误差

电压电流采样

INA220电源添加一颗去耦电容。A0、A1接地设置地址

接口部分

A口使用5PIN定制接口,用于测试小米、OPPO的快充以及QC等使用普通A口的快充,Type-C接口主要用于测试PD快充。

这种A口实际上是把USB3.0的GND脚复用成了私有协议的识别脚,并且VBUS和GND加宽。

理论上直接用USB3.0接口也能识别,但USB3.0接口过不了太大电流有风险。

Type-C直接立创商城找个大电流的就行,注意不要用只有6PIN的那种“大电流”,因为少一对VBUS和GND。

快充诱骗

本设计带有简单的QC快充诱骗功能,可以当简易调压电源用。

QC2.0、QC3.0协议需要0、0.6V、3.3V三个电压 ,可以直接使用IO口模拟实现。

QC2.0支持5V、9V、12V、20V四个档位,其中20V档位只有极少数支持QC2.0 ClassB的充电头才支持,这也是后面演示视频中无法诱骗QC2.0 20V的原因。

QC3.0支持以200mV为步长进行连续调压,可输出4.4-20V。

大部分30W以上的小米的快充头QC3.0都能支持到20V,这是为了给自家无线充电器供电。

串口下载

串口下载使用CH340K,使用RTS与DTR实现一键下载

其实CH340K不要也行,调试的时候从板子上飞三根线下来接到CH340模块上,调试完再把飞线移除

主控

主控使用stm32g030f6p6,体积小,性能较高

OLED屏

屏幕的原理图直接按照驱动芯片ssd1315的datasheet推荐设计来画。

eeprom

用于存储记录到的电压电流、曲线,用不到这个功能可以不加

PCB设计说明

PCB使用四层板,四层板拥有更强的抗干扰能力,而且可以降低布线难度 。VBUS开窗挂锡以增大载流 。采样电阻布线使用开尔文接法。OLED屏放在另一块板上,与主板通过FFC排线连接。

3D外壳已经打印,奈何疫情原因,快递无法派送,导致后续实物展示里没有外壳。

软件说明

IDE使用STM32CubeIDE,固件库使用HAL库,初始化代码使用STM32CubeMX生成。

全部代码在附件里,这里仅展示局部。

多级菜单

实物展示说明

如果您认为对您有用,欢迎点赞转发或评论哦~

或者您有其他的建议,也欢迎在评论区指出!

更多精彩:

焊接工具 | DIY点锡膏机

相关问答

单片机 usb 怎么连接?

单片机与电脑连接一般有以下几种:1、RS232串口连接,这是最普遍的连接方式。2、RS232-usb,这种方式越来越受欢迎。3、JTAG--JLINK--USB(RS232),主要用于...

单片机 读取 USB 鼠标 - 懂得

需要实现USBHOST控制器。常用的是CH375芯片。网上资料有的是!

51 单片机 怎么与电脑键盘相接, USB 的-ZOL问答

如果是USB接口的话,问题就复杂多了。51单片机本身并不支持USB协议,如果需要使用USB设备,则需要用软件模拟出USB协议,或者借助其它USB接口芯片才可以实现。与P...

单片机 怎样通过 usb 与电脑通讯?

有,你可以看下ST系列单片机因为现在有一部分特殊的51芯片就支持USB通讯.带USB的51单片机有Cygnal公司的C8051F320芯片可以查下看看~还有Microchip公司的带USB...

51 单片机 USB 通讯端口是哪两个?

首先需要确定开发者选择的51单片机是否有USB通讯模块,如果没有,那肯定就没有标准对外接口,需要用IO口来模拟,IO口模拟的话,只要支持输入输出并有输入上拉功...

单片机usb 电源检测管脚怎么用?

单片机usb电源检测管脚用的方法:可以通过USB转232(TTL电平),单片机的串口RXD(P3.0)接232的TXD,单片机的串口TXD(P3.1)接232的RXD。USB转232(TTL电平)....

不借助电脑,stm32f103RB 单片机 能利用 USB 通信控制一款 usb 从机么?

STM32F103xx系列的USB只支持Device模式。因此只能作为USB通讯的从机,只能连接PC或其它类型的USBHost。STM32F103xx系列的USB只支持Device模式。因此只能...

单片机 开发板 usb 接口电路?

如果开发板没有5V,当然可以给开发板供电,但地必须共上,一般而言是足够驱动了,一个USB大概可以提供500毫安的电流,单片机本身需要80毫安左右就够了。如果开发...

无法识别 usb 设备怎么处理 stm32 模拟 ps2-ZOL问答

7条回答:【推荐答案】如果是USB接口的话,问题就复杂多了。51单片机本身并不支持USB协议,如果需要使用USB设备,则需要用软件模拟出USB协议,或者借助其它USB接口芯...

我有一个 单片机 USB 的数据,怎么实现无线传输,传到电脑上的数据与有线的一样?

无线传输;首先你必须要了解单片机通过USB传输的数据的协议,数据是怎样发到电脑的USB,然后根据协议在自己设计无线传输方式。可以是红外,这个比较简单,传输...

猜你喜欢