hid设备
Human Interface Device的缩写,由其名称可以了解HID设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。
dfu模式
DFU的全称是Development FirmwareUpgrade,实际意思就是设备固件的强制升降级模式。arduino uno进入dfu模式的方法,就是短接图片中红框框选的两个引脚,短接一下即可,进入DFU后,在设备管理器中uno就变成了未知设备。进入到Flip的安装目录:C:Program Files (x86)ATMELFlip 3.4.7usb 让它自动搜索驱动。早期的flip版本可能没有对应的驱动,所以需要选择较新的(3.4.7)才能顺利安装。
需要的文件
- JRE-Flip-Installer-3.4.7.112
- Arduino-keyboard-0.3.hex
- Arduino-usbserial-uno.hex
- USBKeyboard.zip
Flip是用于arduino进入dfu模式后的刷机软件,需要java运行环境,所以最后下载包含jre运行环境的版本;
Arduino-keyboard-0.3.hex将arduino变为hid键盘的文件,刷入后arduino会无法再正常读写;
Arduino-usbserial-uno.hex用于恢复arduino的正常读写状态;
USBKeyboard.zip是arduino模拟键盘用到的库,具体用法可以在导入库之后查看示例。
实现步骤
首先为arduino输入程序,例如下面这个文件会在每停顿3秒后发送“123456”这几个按键指令;
#include <USBKeyboard.h>
void setup()
{
Keyboard.init();
}
void loop()
{
delay(3000);
Keyboard.sendKeyStroke(KEY_1);
Keyboard.sendKeyStroke(KEY_2);
Keyboard.sendKeyStroke(KEY_3);
Keyboard.sendKeyStroke(KEY_4);
Keyboard.sendKeyStroke(KEY_5);
Keyboard.sendKeyStroke(KEY_6);
}
进入arduino的dfu模式,确保已经安装好了dfu模式的驱动,打开flip软件,导入hex文件(Arduino-keyboard-0.3.hex ),将erase, blank check, program, verify全部勾选上按顺序点一遍。点击下方的“run”运行,只要不报错,就说明刷入成功了。
需要重新修改程序的情况,需要将键盘模式改回uno模式,此时flip的操作步骤同上,只不过需要把hex文件替换成Arduino-usbserial-uno.hex。重新连接后uno又恢复了,恢复后重新将arduino uno连接电脑,就可以正确被识别了。
使用方式
变为键盘模式后,uno并不需要外部电源,在手机上打开任意一个可编辑的文件,进入输入模式,此时将uno通过otg线连接到手机,可以看到uno板会每隔3秒自动输入“123456”这一排数字。