Skip to main content

Esp32-HID外设 Android

芯片选购、固件下载、烧录教程

请前往 HID 外设 页面查看完整的芯片选购、固件下载、烧录教程和视频教程。

蓝牙与USB如何选择?

  • 蓝牙固件: 通过蓝牙连接,适合设备量少的场景.单个场景超过25个左右,会有干扰. 但芯片价便宜
  • USB固件: 通过usb连接,设备之间无干扰. 适合设备量多的场景. 但芯片价格略高

蓝牙HID

蓝牙配对

打开android手机 > 设置 > 蓝牙 > 刷新蓝牙列表 > 点击AS开头的蓝牙设备进行配对.

配对成功后会自动连接.

蓝牙HID指令

与蓝牙芯片通信部分,已经集成在AS插件中.

from ascript.android import plug
plug.load("esp32")
from esp32 import BleDevice
# 自动扫描AS设备并连接
ble = BleDevice()
print("名称",ble.get_name())
print("MAC地址",ble.get_mac_address())
# 判断是否连接
if ble.is_conncted():
print("已连接")

# 模拟点击坐标
ble.click(394,2116)

# 其他方法
# ble.re_connect()
# ble.slide(151,1668,989,1755,dur=500)
# ble.input("123")
# ble.home()
# ble.back()
# ble.recent()
# ble.copy()
# ble.paste()
# ble.clear()
# ble.enter()

# 设置芯片蓝牙名称
# ble.set_name("Logic Mouse")
# 重置芯片蓝牙名称
# ble.set_name()

# 模拟鼠标按下,不抬起
# ble.touch_down(0,0,20)
# # 模拟鼠标移动
# ble.touch_move(100,100)
# # 模拟鼠标抬起
# ble.touch_up(100,100)

# 是否连接
if ble.is_conncted():
print("已连接")
# 尝试重新连接
if not ble.is_conncted() and ble.re_connect() :
print("已连接")
# 获取名称
name = ble.get_name()
print(name)
# 获取MAC地址
mac_address = ble.get_mac_address()
print(mac_address)
# 模拟点击: 参数1-2:坐标x,y, dur:点击时长
ble.click(x,y,dur=30)
# 模拟滑动: 参数1-4: 滑动坐标
# dur:滑动时长,down_dur:按下时长,up_dur:抬起时长,
# easing_mode = 0 缓动模式: 0= 匀速滑动, 1 = 逐渐加速滑动, 2 = 逐渐减速滑动, 3 = 逐加逐减
# easing_power = 1 缓动力度: 1的整数倍,力度越强,加减速越明显
# report_interval 报文发送间隔, 越小滑动越流畅,但有的机型会导致卡机,所以适中就可以了
ble.slide(x1, y1, x2, y2, dur=500,down_dur = 0,up_dur = 0,easing_mode = 0,easing_power = 1,report_interval = 30)
# 触摸,按下,移动,抬起 ,参数1-2 均为x,y坐标, 参数dur:耗费时长,默认20ms
# 模拟鼠标按下
ble.touch_down(x,y,dur=20)
# 模拟鼠标移动
ble.touch_move(x,y,dur=20)
# 模拟鼠标抬起
ble.touch_up(x,y,dur=20)
# 模拟输入: 模拟输入按键,只能数字与英文,如要输入汉字(可用系统剪贴版存入数据,再用hid粘贴动作)
ble.input(keys)
# 按下home按键
ble.home()
# 按下回退按键
ble.back()
# 呼出任务栏
ble.recent()
# 复制输入框中的数据
ble.copy()
# 粘贴
ble.paste()
# 清空输入框
ble.clear()
# 点下回车
ble.enter()
# 设置芯片蓝牙名称,传空参数,恢复名称
ble.set_name(name:str=None)

USB-HID

连接授权

打开android手机 > 手机usb连接芯片 > 打开AS > 弹出设备授权 > 点击同意即可.

USB-HID指令

# 完整案例
from ascript.android import plug
plug.load("esp32")
from esp32 import UsbDevice
# 自动扫描AS设备并连接
usb = UsbDevice()
# 模拟点击坐标394,2116, 点击时间50毫秒
usb.click(394,2116,50)

# usb.slide(151,1668,989,1755,dur=500)
# usb.input("123")
# usb.home()
# usb.back()
# usb.recent()
# usb.copy()
# usb.paste()
# usb.clear()
# usb.enter()

# 模拟点击: 参数1-2:坐标x,y, dur:点击时长
usb.click(x,y,dur=30)
# 模拟滑动: 参数1-4: 滑动坐标, dur:滑动时长,down_dur:按下时长,up_dur:抬起时长,step_duration:每一步耗时
usb.slide(x,y,x1,y1,dur=500,down_dur = 10 , up_dur = 10, step_duration=3)
# 模拟输入: 模拟输入按键,只能数字与英文,如要输入汉字(可用系统剪贴版存入数据,再用hid粘贴动作)
usb.input(keys)
# 按下home按键
usb.home()
# 按下回退按键
usb.back()
# 呼出任务栏
usb.recent()
# 复制输入框中的数据
usb.copy()
# 粘贴
usb.paste()
# 清空输入框
usb.clear()
# 点下回车
usb.enter()