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 和开发者账号了。
流程是这样的:
- ESP32 开自己的 Wi-Fi 热点,当 AirPlay 接收端,收 iPhone 的屏幕镜像。
- 板子不解码,把 H.264 通过蓝牙原样转给手机上的 App ,App 把截图交给视觉模型(任意兼容 OpenAI 接口的都行)。
- 模型给出动作,App 经蓝牙发回板子,板子扮成 USB 鼠标键盘,配合辅助触控去点。
做的过程里有几个有意思的坑:
- 蓝牙只有几百 kbps ,视频和点击命令还共用同一条链路。所以点击和回复优先插队,视频让路;链路慢的时候只发关键帧,不让延迟越攒越多。画面也压到了 480×1040 、最多 5 帧。
- 鼠标是相对移动,手机不告诉你指针在哪,位置只能自己记。所以每隔几次操作就把指针推到屏幕角落归零,跟 3D 打印机回原点一个思路。
- 不同机型的鼠标移动距离和屏幕的比例不一样,所以做了自动校准,思路也像 3D 打印机的自动调平:先归零,再移动固定的鼠标距离去点一排点,App 记下每次实际点到了屏幕哪里,拟合出 X 、Y 两个方向的比例。点击没反应的话,就退回去在镜像画面里找指针。
目前竖屏,输入以 ASCII 为主,每一步几秒。第一次刷固件和编译 App 需要一台 Mac ,之后日常使用不需要电脑。
来源:V2EX · v2ex.com