pcwinner 发表于 2013-6-7 09:22:16

单片机做的USB键盘如何在开机时发数据给电脑??

想搞个一键还原功能,当想还原系统的时候,就发送一个按键信号到电脑/
就好像开机时按Delete进入BIOS一样`
现在的主板都支持USB键盘,应该是可以用的!!!
但就是不知通讯如何进行。是直接发送数据还是怎样???
见过PS/2是可以实现这个功能的,但USB会比较方便插。优先选用USB的方式!

fuyufu 发表于 2013-6-7 10:04:45

用USB模拟这个目前市场上还没有产品,所以没有办法给您做拆解.
基于V-USB的单片机解决方案是有的
例如
爱特梅尔半导体Atmel的单片机就有这个功能
采用一块单片机完成,最小封装的attiny系列
演示代码一会给您传过来。

----------------------【不知道可否给您一个这样的建议?】--------------------------------
硬件:基于BIOS的一键还原非常成熟,对BIOS改造一下也挺快速,我当时用的是5合一BIOS组件嵌入。
实在不想动用户机箱:用还原精灵硬件版这种原理
基于硬盘引导事件(软件):软件类的挺多。
以上几种都很成熟,改造BIOS的比较安全和有效,对批量的板子发行很不错

案例:当时学校的校园电脑室大都用这种方式,因为采购过程中都是统一型号。

fuyufu 发表于 2013-6-7 10:09:34

计算机开机启动的过程中有个问题您不知道推演过没有?
1假定您模拟的是键盘事件+还原软件是集成在U盘中,这样的话BIOS的识别率回是一个问题,
2主控方案就不能只是一个8位AVR这么简单了,
3这个物件的便利性好像和这些成熟度产品比较,有点??

usingavr 发表于 2013-6-7 10:33:01

我猜开机时应该会重新枚举USB设备吧

renpeng009 发表于 2013-6-7 09:22:17

look this
http://www.amobbs.com/thread-4789378-1-1.html

fuyufu 发表于 2013-6-7 11:22:22

由于我电脑上的演示代码有点问题,仅仅只是模拟识别,没有输出。见谅

给您一个爱好者的参考的设计链接:
http://codeandlife.com/topics/v-usb-electronics/

不好意思没能帮上您,论坛里有高手,他们可以。

pcwinner 发表于 2013-6-7 11:36:39

非常感谢楼上几位的解答,正在看5楼所指的网页。。。。。有结果第一时间发上来!

fuyufu 发表于 2013-6-7 12:26:53

本帖最后由 fuyufu 于 2013-6-7 12:48 编辑

上个别人的作品截图,但是这个功能很弱,可能达不到您需要的指标
他的设计偏向于USB-KEY
第一张是PCB样式

第二张是应用样式

第三张是裸板外观

第四张是原理图


参考的设计链接依然是:
http://codeandlife.com/topics/v-usb-electronics/

foxpro2005 发表于 2013-6-7 13:03:47

fuyufu 发表于 2013-6-7 12:26 static/image/common/back.gif
上个别人的作品截图,但是这个功能很弱,可能达不到您需要的指标
他的设计偏向于USB-KEY
第一张是PCB样式


不错,感谢分享,等有空,用LGT的芯片做一个来玩玩儿....

fuyufu 发表于 2013-6-7 13:12:43

foxpro2005 发表于 2013-6-7 13:03 static/image/common/back.gif
不错,感谢分享,等有空,用LGT的芯片做一个来玩玩儿....

支持你,这个绝对是个好的创意,产品市面上还没有,挺你

国外的Digispark项目希望给你触发更多灵感,
这样您的作品可以一物多用噢。
---------------------心得分享------------------------
【一物多用的时候,可以扩大用户群体】


fuyufu 发表于 2013-6-7 13:15:06

我向您推荐的几个方案,由于芯片有点偏向AVR分支,
希望不会误导你的思路,支持USB的微控制器很多选择。
支持你的思路!

foxpro2005 发表于 2013-6-7 13:25:26

嗯,再次感谢,AVR的还是比较熟悉...
1.使用V-USB的方式,比较占资源,其它能做的事相对会有所减少...
2.如果用硬件本身带USB功能的芯片,当然会比较好...(STM32不是错的选择, PIC18系列也不错...)

zhujinliang2124 发表于 2013-6-7 14:02:31

用VUSB做就可以了。
估算一下开机后键盘被识别到需要按键的时间。
HOOK设备枚举,开启定时器,到时间发送按键。
推荐参考这个:http://www.frank-zhao.com/cache/usbbusinesscard.php

fuyufu 发表于 2013-6-7 17:43:19

zhujinliang2124 发表于 2013-6-7 14:02 static/image/common/back.gif
用VUSB做就可以了。
估算一下开机后键盘被识别到需要按键的时间。
HOOK设备枚举,开启定时器,到时间发送按 ...

嗯,采取电子名片的思路挺不错的

-------------------------------------------------
我刚才模拟了一下流程,好像有点疑问

1每款不同牌子的计算机的BIOS不统一、加载内容可能不一样,
理论上很难时间偏差,如果偏差较大,
过早触发键盘事件,BIOS会判断为键盘故障,直接就禁用了这个键盘。
过晚触发,硬盘直接都引导进系统了。
2基于USB口的“还原精灵”业内还有成功过。
3普遍键盘的摆放位置都是人体工程学适合的地方,而使用这个USB再模拟是不是有点画蛇?
4USB口在开机过程中是有一次电源瞬间闪断的过程。是否会影响到单片机程序?
5......
不好意思,不敢再问了,我心里是支持这个项目,所以才多了点疑问

renpeng009 发表于 2013-6-10 10:56:11

楼主不悬赏了么?

pcwinner 发表于 2013-6-10 13:03:13

放假了。。。。。。还没解决呢!!放心,一定会给的!

canspider 发表于 2013-6-10 13:18:26

fuyufu 发表于 2013-6-7 17:43 static/image/common/back.gif
嗯,采取电子名片的思路挺不错的

-------------------------------------------------


其实只要按照USB标准来,这些都不是问题
1. BIOS差异的问题。当设备是boot型的键盘时,不会去读Report Descriptor。这个是USB标准定义的,可以放心用
2.发送时机问题。当设备支持boot时,会收到Set protocol请求。可以在收到这个请求之后发送键值。
3. 闪断会重新枚举,按照标准流程来就可以了。
---------------------
上面我说的都在USB标准文档中有说明

long609689209 发表于 2013-6-14 17:19:03

感觉不错,想法挺好的

mhlyjay 发表于 2013-6-17 15:01:11

USBD12,就可以了,三年前我做个,一个复合设备,插上去显示3个设备:鼠标+键盘+自定义设备。我们这是 用于 游戏的硬件外挂,

pcwinner 发表于 2013-6-17 16:22:46

唉,还是没解决。。。。。
那位能发个能用的程序过来 看看,莫元付上!!!!
主要是HID那部分!

Friendz 发表于 2013-6-18 21:43:39

买个最便宜的USB键盘,用单片机控制扫描矩阵,模拟按下DEL键就可以了,是最容易实现的办法。

另一个方法,用PIC18F4550 USB 单片机,官方例子有USB键盘的程序,模拟DEL就可以。
页: [1]
查看完整版本: 单片机做的USB键盘如何在开机时发数据给电脑??