资讯动态

ESP32-S3开发板自制蓝牙翻页器:BLE HID键盘DIY全流程

发布时间:2026/9/28 19:57:14 来源:尧图企业网站定制
0. 开场一次讲台上的翻页器罢工0.1 一次讲台事故带来的项目我到现在还记得那个下午。给一个培训班讲项目演示PPT翻到第三页手头的翻页器突然没反应电池灯早就红了但我没在意。全场四十多双眼睛盯着我我只能说麻烦前排同学帮我按一下下一页。课后我把那个塑料翻页器拆开发现内部结构简单得可怜一个主控、一个射频模块、两个微动开关、一颗纽扣电池。说白了它就是一个把按键翻译成上一页/下一页指令的无线键盘。那一刻我脑子里冒出一句话我抽屉里那块吃灰的AlphaPi开发板明明有蓝牙、有GPIO、有电池管理凭什么不能改成一个翻页器正好那阵子在用Workbuddy做日常项目规划。Workbuddy不是那种对话框式的问答玩具它更像一个能帮你拆解任务、生成文档、起草代码的工作台。我把用AlphaPi开发板改蓝牙翻页器这个需求丢给它它给我列了物料清单、接线方案、固件框架、调试步骤。我一顿操作下来还真从灵光一闪变成了一个能用的成品。这篇文章就是把整个过程记录下来。手头有ESP32-S3或其他带BLE的开发板、想入门BLE HID、又好奇AI辅助开发到底靠不靠谱的人这篇应该对你有用。我会把硬件选型逻辑、Workbuddy的实际用法、固件设计思路、烧录配对流程还有我踩过的坑全部摊开讲。0.2 本文你能拿走的东西先说清楚这篇不是单纯的下载一个库然后点上传教程也不是玄学式AI自动写代码展示。我会解释翻页器的本质是HID键盘会给出按键电路和固件状态机设计会完整走一遍编译烧录和蓝牙配对最后还会讲几个很现实的坑编译成功但烧录不进、设备搜得到但连接秒断、按键一次触发好几页。你不需要很深的嵌入式基础但只要自己动手焊过几根线、在Arduino里传过程序跟着做就没问题。如果完全没有硬件经验我建议先找一块ESP32-S3开发板把环境装好后直接照抄代码。1. 为什么我劝你别急着买翻页器1.1 翻页器的真身不是遥控器是个键盘很多人以为翻页器是个遥控器其实它的核心身份是蓝牙键盘。在电脑的蓝牙设置里绝大多数翻页器会被识别成键盘设备而不是遥控器。它发送的并不是红外信号也不是什么私有协议而是标准BLE HIDHuman Interface Device人机交互设备报文。所谓HID就是键盘、鼠标、触摸板这类设备与操作系统沟通的通用语言。翻页器按下下一页按钮时本质上是告诉系统我按下了PageDown键。操作系统不认识什么翻页器它只认识键盘上的按键于是当前打开的PPT、PDF、浏览器就会乖乖往下滚动。理解这一点很重要。因为这意味着你不需要写什么复杂的应用层协议只需要让开发板模拟成一个BLE键盘然后把两个物理按键映射到PageUp和PageDown就行。市面上的产品之所以卖几十上百块更多是外壳模具和品牌溢价技术含量并没有想象中高。1.2 这块板子凭什么能改我手里这块AlphaPi开发板主控是ESP32-S3。它自带完整的BLE 5.0协议栈这是做翻页器的前提条件。Arduino官方和乐鑫官方都对ESP32-S3的蓝牙支持得不错第三方还有现成的BleKeyboard库把开发板伪装成键盘只需要几行代码。除了蓝牙ESP32-S3还有一堆对翻页器来说很奢侈的配置十几个GPIO引脚可以用板载USB转串口芯片方便烧录支持锂电池直供和充电管理尺寸也控制在名片大小左右。实际上做翻页器用到的资源很少一个BLE、两个GPIO、一颗电池剩下的引脚全在睡觉。AlphaPi这个命名背后可能有一系列衍生产品不同批次用的主控不一样。我强调一下我用的这块是ESP32-S3型号。如果你手里的AlphaPi是其他主控先确认是否支持BLE HID再做避免买回来发现根本连不上蓝牙。1.3 自己改的真正收益自己动手改翻页器最大的收获不是省那几十块钱而是按键想怎么映射就怎么映射。市售翻页器绝大多数只有上翻、下翻和激光笔少数带全屏切换但很少允许你自定义一个播放/暂停键或者在不按任何按键的情况下保持蓝牙连接不睡死。用开发板做就不一样了。想要F5键进入全屏加一个按键就行想要Esc键退出全屏再写一行映射想在按空白处时触发多媒体播放暂停HID报告里带上消费类按键码就行。这些东西在成品翻页器上往往要买几百块的旗舰款才有。当然DIY也有代价。外壳需要自己折腾走线要做简单固定固件偶尔可能因为库的版本问题出bug。我的态度是这是一个非常适合练手的入门级蓝牙项目但要拿它当生产力工具还得经历一个从能用到好用的打磨阶段后面我会专门讲这部分。2. Workbuddy在这场DIY里到底是什么角色2.1 Workbuddy不是自动编程器是个工作台先说结论免得有人误会Workbuddy并没有在我完全不懂原理的情况下替我把所有活干完。它的角色更像一个思路清晰还愿意写文档的实习生。我在用的Workbuddy是一个桌面端的工作台应用有点像把AI模型、任务管理、文件生成拼在一起。你可以给它一个目标它会把目标拆成步骤先生成方案文档再按需求逐文件产出代码。它也可以调用本地工具链比如帮我检查目录、生成Markdown说明、整理接线清单。对于这个翻页器项目Workbuddy起的作用主要是三块把做个翻页器这个模糊想法转化成明确的技术方案生成一份可编译的Arduino草图框架包括按键扫描、HID发送、状态管理等基础逻辑当我需要调整按键映射、增加低功耗逻辑时它快速产出修改后的代码片段。换句话说Workbuddy负责把我要去哪翻译成这条路怎么走但方向盘还在我手上。2.2 我给Workbuddy下的第一个任务我用的是桌面端应用新建了一个项目文件夹然后在对话区给出了这么一段任务描述角色资深嵌入式工程师 项目基于ESP32-S3的BLE HID翻页器 任务请先输出一份技术方案再生成Arduino固件草案 要求 - 使用Arduino框架使用BleKeyboard库 - 两个按键上翻PageUp、下翻PageDown - 按键接内部上拉低电平触发 - 无操作5分钟后进入深度休眠 - 附上GPIO选型和供电建议 交付物README.md、main.cpp草案这段需求其实已经包含了关键决策用Arduino而不是ESP-IDF用BleKeyboard库而不是自己写GATT服务。我为什么这么定因为翻页器逻辑太简单Arduino生态里BleKeyboard这个库被无数人验证过上手最快。如果我用ESP-IDF从头写蓝牙HID服务工作量至少翻三倍而且对刚接触BLE的人极不友好。Workbuddy很快输出了一个方案内容包括推荐GPIO、电源方案、固件状态机、烧录步骤。它还生成了一个main.cpp草案。这个草案我打开一看整体框架是能用的但细节上有个问题它没有考虑按键抖动也没有做未连接时节省电量的处理。这恰好印证了一件事——AI生成的代码可以当起点但不能当终点。2.3 按它生成的方案动手我改了什么方案生成后我做了三处重要修改。第一处是GPIO选型。AI最初建议用GPIO0和GPIO1理由是任意GPIO都可以。但对ESP32-S3来说GPIO0往往是Boot模式选择引脚上电瞬间的按键状态可能影响启动行为做成翻页器按键容易在复位时产生奇奇怪怪的干扰。我改成了GPIO4和GPIO5这两个引脚比较干净也没有板载Flash等外设占用冲突。第二处是去抖逻辑。原方案里读取按键后直接发送HID报告没有延时判断。实际物理按键按下瞬间会产生几毫秒到几十毫秒的电平抖动如果不处理按一次翻页器可能连续翻两页甚至三页。我在读取逻辑里加了50毫秒的消抖窗口。第三处是休眠策略。AI给的草案只是循环检测没有休眠。翻页器是移动设备不能一直满功率跑着我把无操作休眠、按键唤醒写了进去。因为BLE键盘在深度休眠后必须重新建立连接所以我还特意加了一个休眠前断开蓝牙的流程避免唤醒后系统里还挂着一个僵尸设备。2.4 哪些环节必须人肉把关用Workbuddy写这种小项目最怕的是看着能编译就以为能跑。AI生成代码时不知道你手里的板子出厂设置、不知道你的电脑蓝牙协议栈行为、不知道你用的库版本是否引入了兼容性问题。这些只能靠实测。我个人的把关顺序是先看引脚是否冲突再看库依赖是否完整然后看电源设计和复位逻辑最后才考虑业务代码。像USB CDC on Boot要不要开、分区表够不够大这类板级细节AI是不可能替你决定的它没连你的板子。建议你把AI生成的方案当成一个很全的检查清单而不是可信的合同文本。Workbuddy的价值在于帮你覆盖了80%的常规工作剩下20%的现场问题才是DIY项目真正的乐趣。3. 改装前必须懂的BLE HID和按键电路3.1 HID键盘里到底发了什么BLE HID的完整细节很多但做翻页器只需要理解一条主线设备建立蓝牙连接后通过一个叫作HID Report的数据报文告诉主机自己按下了什么键。HID键盘的报文通常是8个字节结构大致是字节含义0修饰键比如Ctrl、Shift、Alt1保留位2-7同时按下的普通按键索引翻页器用到的PageUp和PageDown属于普通按键对应USB HID Usage ID分别是0x4B和0x4E。按下的时候把对应字节填成这个值发给主机松开时再发一份全0的报文主机就认为按键已经抬起。顺便提一句蓝牙协议栈里的配对和连接是两个概念。很多系统会把蓝牙键盘标记为输入设备首次连接时可能要求输入PIN码一般填0000就行。如果系统提示无法验证设备身份或者此设备需要PIN码别慌这不是硬件坏了只是蓝牙层的配对流程。3.2 按键电路与GPIO选择按键电路非常简单。我用的是内部上拉低电平触发方案按键一端接GPIO另一端接GNDGPIO配置为输入上拉模式。平时GPIO读到高电平按键按下时被拉低到GND主控检测到低电平就知道按键被按下了。不需要外接电阻因为ESP32-S3内部有上拉但要注意外部走线不要太长避免信号被干扰。按键本身我更推荐用贴片微动开关按起来有明显的段落感比面包板上的轻触按键手感好得多。翻页器要长期握在手里手感不能忽略。GPIO选型我有几条经验避开GPIO0、GPIO46这类与启动模式相关的引脚避开板载Flash、PSRAM占用的引脚优先选带RTC GPIO功能的引脚方便以后做低功耗唤醒。我最终选了GPIO4和GPIO5一个管上一页一个管下一页。如果你还想加一个播放/暂停键可以再接GPIO6软件里映射成多媒体播放暂停键就行。3.3 供电方案与电池管理翻页器最合理的供电方案是一节3.7V锂电池加一块TP4056充电模块。锂电池充满后4.2VTP4056负责充电和过充保护放电保护则尽量靠锂电池保护板完成。很多ESP32-S3开发板本身就带锂电池插座和充电电路我手里这块AlphaPi恰好有所以省了充电模块。如果你板子上没有我建议不要直接把电池焊在5V和GND上而是买个带保护板的锂电模块再接到板子的电池接口。电量显示这部分我没有做得很复杂。BleKeyboard库提供了一个setBatteryLevel方法可以让Windows和macOS直接显示设备电量。我在代码里用ADC读取电池电压换算成百分比后周期性上报。但这功能需要充放电曲线标定否则数值不准我后续又花了一些时间调参这部分放在后面好用阶段再细说。3.4 固件的状态机设计翻页器的固件虽然短但最好还是按状态机来写而不是简单地在loop里轮询。我整理了三个状态STATE_IDLE空闲态没有按键按下蓝牙保持连接但系统进入轻度睡眠STATE_PRESSED检测到按键按下发送HID报告维持几十毫秒后进入释放流程STATE_SLEEP超时无操作主动断开蓝牙进入深度休眠等待按键唤醒。为什么建议这么做因为状态机可以把去抖按键持续检测低功耗切换拆开处理不会挤在一个大循环里互相干扰。BleKeyboard库本身会维护连接状态但什么时候该休眠这件事必须靠你自己控制。4. 生成工程、搭环境、编译烧录的实操路线4.1 先选好路线Arduino还是ESP-IDF做BLE键盘有两条主流路线。一条是Arduino框架加BleKeyboard库。优点环境简单代码量少适合快速出活。缺点底层细节被封装掉了出了问题不好排查库的维护状态也依赖社区。另一条是ESP-IDF框架加NimBLE或Bluedroid协议栈。优点完全可控可以做多角色、自定义GATT、精细功耗管理。缺点学习曲线陡光配sdkconfig就能劝退新手。我的建议很直接如果这是你第一次做BLE HID选Arduino。先让自己跑通再考虑往底层钻。我自己也是先用Arduino把功能验证通过后面如果想做OTA固件升级或更复杂的电源管理再考虑迁移到ESP-IDF。4.2 搭建编译环境最容易翻车的地方我用的环境是VS Code加PlatformIO而不是Arduino IDE的图形界面。原因很简单PlatformIO对项目目录结构和库依赖管理更清晰生成、编译、烧录都在终端里能看到完整日志排错方便。搭环境时最容易翻车的是这三件事安装ESP32开发板支持包特别慢很多人在这一步就卡住了。建议先确认网络能正常访问下载服务器必要时配置代理但注意别把下载地址搞混选错板型。ESP32-S3在PlatformIO里对应的是esp32-s3-devkitc-1这个board ID如果默认选成ESP32编译能过但烧录后大概率会乱跑驱动没装。ESP32-S3有些板子使用板载USB转串口芯片比如CP2102或CH340Windows下需要装驱动否则设备管理器里根本看不到COM口。我自己就在驱动上栽过一次后面会专门讲排查链路。4.3 Workbuddy生成的代码骨架长什么样经过我修改后的main.cpp长这样核心结构可以当作最小可用版本#include Arduino.h #include BleKeyboard.h #define BTN_PAGE_UP 4 #define BTN_PAGE_DOWN 5 #define KEY_PAGE_UP 0x4B #define KEY_PAGE_DOWN 0x4E BleKeyboard bleKeyboard(AlphaPi Presenter, MakerDIY, 100); unsigned long lastPressTime 0; const unsigned long DEBOUNCE_MS 50; void sendKey(uint8_t key) { bleKeyboard.press(key); delay(30); bleKeyboard.release(); } void setup() { pinMode(BTN_PAGE_UP, INPUT_PULLUP); pinMode(BTN_PAGE_DOWN, INPUT_PULLUP); bleKeyboard.begin(); } void loop() { if (!bleKeyboard.isConnected()) { delay(50); return; } unsigned long now millis(); if (now - lastPressTime DEBOUNCE_MS) { return; } if (digitalRead(BTN_PAGE_UP) LOW) { sendKey(KEY_PAGE_UP); lastPressTime now; } else if (digitalRead(BTN_PAGE_DOWN) LOW) { sendKey(KEY_PAGE_DOWN); lastPressTime now; } delay(10); }这个代码里有几个细节值得注意。BLEKeyboard构造函数的第三个参数是电池电量我填的100意思是设备端主动上报满电。如果你上了ADC电量检测这里可以换成动态计算的百分比。press之后必须release否则主机认为按键一直没松开PPT会一直往下翻。有人为了图省事只press不release结果连上电脑之后整个键盘像被鬼按住了一样这个坑很典型。去抖逻辑用的是时间戳不是延时阻塞。如果你在loop里直接用delay(50)那么松开按键后的下一次检测会被拖慢整体响应会变钝。4.4 烧录和首连设备代码写完后在PlatformIO里执行编译等它下载依赖并生成固件。第一次编译会慢一些因为要把ESP32的完整编译工具链都跑一遍。烧录时我遇到了编译成功但怎么也烧录不进的问题这是另一个经典坑我放在第6章完整讲。这里先说正常流程板子通过USB线连接电脑设备管理器确认COM口出现PlatformIO的Upload and Monitor按钮点下去日志会显示连接ESP32-S3、擦除Flash、写入固件、重启。固件烧完后打开电脑的蓝牙设置搜索新设备。你会发现一个叫AlphaPi Presenter的设备点连接。系统会弹提示说正在设置键盘可能要求输入PIN码输0000即可。连接成功后打开任何能滚动的页面按GPIO4对应的按键就是上一页按GPIO5对应的按键就是下一页。5. 实测、外壳与从能用到好用的小改动5.1 上电实测原来真的可以第一版固件烧进去后我拿着开发板打开电脑蓝牙设置看到AlphaPi Presenter出现在列表里的那一刻说实话还挺兴奋的。连接成功后我直接拿PPT放映测了二十多页翻页响应基本没有延迟。又用浏览器长网页测了PageUp和PageDown效果和原生键盘完全一致。这时候我才确信开发板确实是键盘翻页器只是个身份。如果你手头有iPad也可以试试连接iPad的蓝牙键盘。BleKeyboard走的是标准HIDiPad同样识别成外接键盘翻页功能能用。5.2 给翻页器一个体面的外壳裸开发板过得了一时过不了一世。每次去讲课掏出一块绿色PCB总感觉差点意思。外壳方案我试过三个3D打印外壳最推荐但需要建模能力。如果你不会建模可以把开发板尺寸和按键位置数据丢给Workbuddy让它输出一个OpenSCAD脚本然后在本地渲染修改热缩管包裹应急方案把板子塞进大号热缩管吹风机一烤就成型但按键手感要靠熔接的凸起实现亚克力板夹层适合外观强迫症用透明亚克力上下夹住中间用铜柱固定侧面露出USB口和按键。我最后采用的是简易3D打印方案。打印之前把按键帽的位置对齐到微动开关正上方装进去之后手感基本接近成品翻页器。这个过程属于纯外观工程不影响电路逻辑可以慢慢折腾。5.3 从能用到好用的几处小改第一处改动是加LED状态指示。我在GPIO48上接了一颗小LED蓝牙未连接时慢闪连接成功后常亮休眠时熄灭。这样站在讲台上不用掏出手机看蓝牙设置瞄一眼LED就知道设备状态。第二处改动是电池电量上报。BleKeyboard的setBatteryLevel可以让Windows和macOS显示电量百分比。我用电池电压做了个分段换算电压高于3.9V报1003.7V报603.5V报20低于3.4V报0并进入低电量闪烁。这个方案不算精确但讲课前判断够不够用足够了。第三处改动是按键映射扩展。我多加了一个GPIO6按键映射成F5键按下后直接进入PPT全屏放映。同时加了一个长按逻辑GPIO4长按2秒发送Esc键退出全屏。长按和短按区分用millis计时实现代码也不复杂。5.4 从翻页器到万能遥控器当你有一个标准BLE HID设备后它的用途就远远不止翻页了。GPIO6映射成多媒体播放暂停键后我可以拿这个翻页器控制电脑上的音乐播放器如果把按键映射成音量加减它又变成了一个会议室的遥控器。HID消费类按键码其实很多比如0xCD是播放/暂停0xE9是音量加0xEA是音量减。Workbuddy生成代码时不一定知道你想做这些扩展但你在需求描述里提一句增加一个多媒体播放暂停键它给出的代码会直接带上这些按键码。这种扩展性是几十块钱的市售翻页器给不了你的。6. 踩坑清单烧录失败、秒断、连发、休眠唤不醒6.1 编译成功但怎么都烧录不进先说最让我抓狂的问题PlatformIO编译一切正常但烧录时卡在Connecting.....或者直接报A fatal error occurred: Failed to connect to ESP32-S3。我排查了三步第一步换USB线。很多USB线只有充电功能没有数据引脚。我一开始随手拿了一根充电线导致电脑根本没识别到串口。换一根明确标注带数据传输的线问题立刻消除。建议做嵌入式开发时在桌上专门放一根只用它来烧录的数据线。第二步检查驱动。ESP32-S3两种常见串口芯片是CP2102和CH340设备管理器里可以看到COM口。如果没看到或者看到黄色的感叹号就去装对应的USB驱动。第三步进入下载模式。ESP32-S3有些板子在烧录时需要按住BOOT键再上电或者按住BOOT键再点烧录。如果日志一直显示连接失败按住BOOT试试。我还遇到过一次很隐蔽的情况VS Code里编译成功后上一次的PlatformIO Monitor进程没有关掉串口被Monitor占用烧录程序拿不到端口一直报错。关掉Monitor进程再烧立刻好了。这个坑和VS Code相关遇到烧录失败时先想想是不是终端里还挂着Monitor。6.2 搜得到设备连接秒断固件烧好后电脑能搜到AlphaPi Presenter但点连接后过几秒就显示设备已断开反复尝试都一样。排查链路是这样走的先看是不是设备名冲突。如果电脑之前配对过一个同名的旧设备系统会把新设备和旧绑定信息搞混。解决办法到蓝牙设置里把旧设备删掉重新搜索连接。我改过设备名后也要删掉旧记录再连。再看是不是供电不稳。如果是用USB线连着开发板调试USB口的供电一般没问题。但如果你已经改成锂电池供电锂电池电压偏低或者保护板限流也可能导致蓝牙模块在射频发射瞬间供电波动连接后马上断。检查方法很简单接USB线时连接正常换电池时秒断基本就是供电问题。最后看代码里有没有主动断连。我早期写了一个未连接时快速广播、连接后广播间隔调大的优化逻辑结果配置参数写反了导致连接建立后广播参数异常主机认为链路质量差就主动断开。把所有广播参数先恢复默认再逐步调整很快就定位到了。6.3 按键一次触发多次这个坑用PPT测试的时候非常明显按一下下一页结果跳了两三页。原因是机械开关的抖动。按键按下和松开的过程中物理触点不会瞬间闭合或断开而是在几毫秒到几十毫秒内反复跳动。如果用最简单的电平直接检测主控会把这些抖动误认为多次按键。解决办法是加去抖。我用的方案是时间窗口法记录上一次有效按键的时间如果两次按键间隔小于50毫秒后一次直接忽略。代码里就是一句if (now - lastPressTime DEBOUNCE_MS) return;效果非常明显加入之后再也没有出现过连翻两页的问题。如果你按键用的还是长导线或者面包板抖动会更严重建议把窗口从50毫秒加大到80毫秒。6.4 休眠后唤不醒加了深度休眠功能之后我发现设备会在无操作一段时间后直接消失但按键唤醒后不一定能自动重连经常需要重新插USB线才能恢复。这个问题的根因是ESP32-S3的深度休眠会关闭大部分外设和蓝牙射频唤醒后蓝牙需要重新初始化。BleKeyboard库的begin()已经在setup里执行过但深度休眠后协议栈整个被关了单纯从loop继续跑是不够的。我当时的修复思路是把休眠唤醒设计成一个完整的设备重启流程。按键唤醒后不是从休眠状态恢复而是通过esp_restart()执行一次软重启启动后自动重新初始化蓝牙、重新广播。实际效果是按一下按键开发板重启蓝牙重连整个过程大约2秒。对翻页器场景来说完全够用毕竟你不会在PPT放映过程中频繁休眠。要注意的是重启后电脑蓝牙会短暂显示设备断开然后重新连上这是正常现象。6.5 换电脑配对不上的处理在家里配对好的设备换到公司电脑上经常连不上。原因是蓝牙配对信息是绑定在主机端的新电脑没有这个设备的配对记录设备端可能还保留着上一台主机的绑定。处理办法在代码里调用bleKeyboard.end()并清空绑定信息或者更直接的做法——给设备加一个长按按键触发清除配对信息并重启的功能。我用的是后者长按GPIO6三秒执行esp_ble_gap_clear_all_bonded_devices()然后重启这样在任何新电脑上都能重新配对。这个细节在开发板DIY项目中很容易被忽略但实际使用中特别重要。今天讲课用一台新电脑明天开会用另一台如果没有这个功能每次都要重新烧录固件才能换设备太痛苦了。6.6 关于VS Code里编译成功的完整排查小结把上面几个问题串起来看我自己总结了一条排查习惯任何编译成功的烧录问题先排除环境再排除硬件最后才怀疑代码。编译成功的上一层是能生成固件这只能证明语法没错。烧录不进优先怀疑通信链路线的数据引脚、驱动、端口占用、Boot模式。连接秒断优先怀疑供电和配对缓存。按键乱跳优先怀疑机械抖动。休眠唤不醒优先怀疑蓝牙协议栈是否被关闭了。这套排查顺序我后来用在所有ESP32-S3项目里都管用。7. 后续能玩出什么花样7.1 从翻页器到OTA升级翻页器本身不需要在线升级但如果你把它当成一个学习平台OTA升级是一个很有意思的进阶方向。做法是给ESP32-S3划分出一个OTA分区一个APP分区通过Wi-Fi接收新固件。翻页器平时不连Wi-Fi可以设计成长按某个按键进入OTA模式这时打开Wi-Fi连接手机热点从局域网服务器下载固件包并写入备用分区然后切换启动。我给另一块板子做过类似功能但翻页器场景最后还是放弃了。原因是BLE HID设备对延迟敏感OTA升级期间无法翻页而翻页器一年也升级不了几次插上USB线重刷反而更省事。7.2 让Workbuddy继续参与后续迭代固件稳定之后我让Workbuddy把整个项目的README、接线图、使用说明、故障排查清单都整理了一遍。它生成的内容虽然不能直接发布到论坛但用于个人存档和备忘足够。需求的迭代也可以继续丢给它。比如帮我把这个翻页器改成演示笔模式加入激光笔控制逻辑帮我生成USB HID模式这样插线时也能当翻页器帮我优化电池曲线增加一个精确的库仑计方案最让我满意的是生成接线图文字稿这个功能。我虽然手头有原理图但每次给别人介绍还要翻文件。Workbuddy能把接线关系整理成一步步的文字说明配上一段Markdown表格转发给朋友特别方便。7.3 一些个人体会做这个小项目我最大的感受是买现成的翻页器很快但自己做的过程会把很多概念打扎实。你会在调试中真正理解什么是HID Report、为什么按键要上拉、蓝牙重连和配对之间有什么区别、低功耗和连接保活之间如何取舍。这些知识不是看几篇文档能得到的必须要亲手动一动。AI辅助开发这件事我的态度是用足但不盲信。Workbuddy解决了我从空白页面开始写作的效率问题也帮我整理了很多边缘细节但它终究不会替你按实体按键不会替你看蓝牙抓包日志不会替你在那个下午站在讲台上尴尬地等人帮忙翻页。如果你也想做这个项目我建议从最简单的两键版本开始跑通后再考虑外壳、电量显示、多媒体键。千万别一上来就想着把按键映射、OLED电量屏、OTA升级全做进去那样调试难度会直线上升。最后分享一个小技巧烧录完成后在电脑蓝牙设置里把设备名改成PPT Clicker - 你的名字这样在会议室抢不到翻页器时别人一眼就能认出你可以借。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑