跳到正文
V2EX·· 5 小时前AI 评分42

通过 ESP32-S3 让 iPhone 设备可被 AI 控制

AI 导读

作者用 ESP32-S3 模拟 USB 鼠标键盘,并将其作为 AirPlay 接收端,把 iPhone 屏幕镜像经蓝牙传给 App,再由视觉模型生成操作指令,实现 AI 控制 iPhone。画面压至 480×1040、最多 5 帧,点击与回复优先传输;首次刷固件和编译 App 需要 Mac,日常使用无需电脑。

正文

前几天在搞别的硬件项目,手边正好有块 ESP32-S3 ,突然冒出个想法:它能模拟 USB 鼠标,iPhone 又有辅助触控,那能不能让它当鼠标直接去点手机?

试了一下真行。然后越做越上头:眼睛怎么办?干脆让它同时当 AirPlay 接收端,iPhone 把屏幕镜像直接推给它。这样整套就只剩一块 40 来块的板子( XIAO ESP32S3 )加手机上的一个 App ,没有 Mac 在中间,也不用 Xcode 和开发者账号了。

流程是这样的:

  1. ESP32 开自己的 Wi-Fi 热点,当 AirPlay 接收端,收 iPhone 的屏幕镜像。
  2. 板子不解码,把 H.264 通过蓝牙原样转给手机上的 App ,App 把截图交给视觉模型(任意兼容 OpenAI 接口的都行)。
  3. 模型给出动作,App 经蓝牙发回板子,板子扮成 USB 鼠标键盘,配合辅助触控去点。

做的过程里有几个有意思的坑:

  • 蓝牙只有几百 kbps ,视频和点击命令还共用同一条链路。所以点击和回复优先插队,视频让路;链路慢的时候只发关键帧,不让延迟越攒越多。画面也压到了 480×1040 、最多 5 帧。
  • 鼠标是相对移动,手机不告诉你指针在哪,位置只能自己记。所以每隔几次操作就把指针推到屏幕角落归零,跟 3D 打印机回原点一个思路。
  • 不同机型的鼠标移动距离和屏幕的比例不一样,所以做了自动校准,思路也像 3D 打印机的自动调平:先归零,再移动固定的鼠标距离去点一排点,App 记下每次实际点到了屏幕哪里,拟合出 X 、Y 两个方向的比例。点击没反应的话,就退回去在镜像画面里找指针。

目前竖屏,输入以 ASCII 为主,每一步几秒。第一次刷固件和编译 App 需要一台 Mac ,之后日常使用不需要电脑。

GitHub: https://github.com/onehumanbeing/esp32-iphone-agent

演示视频: https://x.com/iamhenryyuan/status/2110553019763097769

来源:V2EX · v2ex.com