模拟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 摄像头连接并接收信号-ZOL问答摄像是单片机的运算速度是达不到的用嵌入式吧嵌入式有自己的USB接口可直接与之相连并能移植操作系统下的驱动程序使用摄像头非也电脑本身就有辐射像显示...
51 单片机 怎么与电脑键盘相接, USB 的-ZOL问答如果是USB接口的话,问题就复杂多了。51单片机本身并不支持USB协议,如果需要使用USB设备,则需要用软件模拟出USB协议,或者借助其它USB接口芯片才可以实现。与P...
单片机 怎样通过 usb 与电脑通讯?有,你可以看下ST系列单片机因为现在有一部分特殊的51芯片就支持USB通讯.带USB的51单片机有Cygnal公司的C8051F320芯片可以查下看看~还有Microchip公司的带USB...
单片机 开发板 usb 接口电路?如果开发板没有5V,当然可以给开发板供电,但地必须共上,一般而言是足够驱动了,一个USB大概可以提供500毫安的电流,单片机本身需要80毫安左右就够了。如果开发...
usbstc下载器如何连接到 单片机 ?stc是采用串口下载,一般是之需要电源、地、RXd、TXd。你说的5根线,可能还有复位吧,具体的连接当时要看你的下载线的接口的制作了。stc是采用串口下载,一般是...
可以让android手机与 单片机 通过 usb 线连接获取数据吗?手机没有usbhub,也就是只能作为usb的从机设备而不能作为主机。方案1、如果用usb的话,那么你的stm32就要做成usb主机了方案2、通过蓝牙,买一个串口通信的蓝牙...
我用充电宝给51 单片机 供电, usb 转串口给 单片机 下载程序,这样行不行?为什么?可以的,只要共地就可以。把充电宝的地跟USB转串口的线的地相连,两边都是5V电压。我常这样分开供电,有时候比较方便。可以的,只要共地就可以。把充电宝的地...
stc下载器如何接线到 单片机 ?STC下载器与单片机使用3线连接,其中:下载器的TXD接单片机P3.0(串口1的RXD端),下载器的RXD接单片机P3.1(串口1的TXD端),下载器与单片机共地,即短接二者GN...ST...
usb 接口作为 单片机 电源问题?如果你的单片机系统满足以下两个条件,可以直接用USB供电:1单片机及你用的所有器件电源是5V的2你的整个单片机及所有外器件组成的系统总的功耗不超过2W第一条...
32 单片机 可以用 usb 下载程序吗?32单片机是指使用ARMCortex-M3核心的32位微控制器。通常情况下,32单片机可以通过USB接口进行程序下载和调试。在32单片机中,常见的下载和调试接口是JTAG(Joi...