最近业余时间把自己多年前买了之后一直吃灰的 野火指南者开发板拿出来把 qmk 跑上去了. 一点点地熟悉了 qmk chibios 和 stm32, 完全没搞过微电子类的开发, 算是分享一下学习笔记.
说实话 stm32f103 不是新手入门 qmk 的好选择, 不过我自己一点点把问题搞清楚并解决, 也算是提前学习了更多基础知识了.
文章一, 给这块老板子刷上了 dfu bootloader, 解决刷 qmk 固件麻烦的问题.
https://io.bhe.ink/2024/04/16/YEHUO-ZNZ-Part-1-build-dfu-bootloader-for-znz-board/
其实, 这块板子的 usb 的 disc pin 困扰了我好久, 这也让我学习了要看原理图, 相关引脚的原理图上都要看一遍, 该初始化对的一个都不能少.
文章二, 开始一步一步调试把 qmk 跑了起来.
https://io.bhe.ink/2024/04/29/YEHUO-ZNZ-Part-2-make-a-qmk-prototype-base-on-znz-board/
这块没啥困难, 需要了解一下 layout 和引脚的映射关系, 用的 direct pin. 用更实用的行列式配置也简单的.
文章三, 搞定了 qmk 的基本部分, 接下来就是让板载的 eeprom 存储发挥作用, 和 w2812 RGB 灯珠.
oled 还没写. 由于 chibios 很挫的只支持了 i2c1 , 我实际上又把 eeprom 切回了实用 mcu 内部的 flash 模拟(更简单), 把 i2c1 让给了 ssd1306 这块屏幕
1
CEBBCAT 233 天前
很好👍 收藏了 /doge
学校学的都是软件方向,虽然自己也尝试过加入电子社团,但是就像我那学了一半的编译器,始终没有很好的进展。晚点时候看看,希望能有大结果 |
2
tywtyw2002 233 天前 via iPhone
f103 弄 qmk 的确有点跟自己作对。除非是老板子是带 f103 mcu 的,否则新设计都不会去选 f103 ,毕竟那个 mcu 性能有点堪忧。
现在 diy 键盘,有线 mcu 选 rp2040 ,蓝牙选 nrf52840 。 自己 diy 键盘还是要选社区支持性好的 mcu ,否则折腾底层太浪费时间了。 |
3
hitsmaxft OP @tywtyw2002 实际操作下来难度倒也不大,毕竟键盘固件基础功功能开销很小。我也就是学习了下 dma 和时钟是咋工作的。
蓝牙我打算下一步用外挂 nrf52810 来实现。参考一下 annepro2 的代码实现 我用 stm32f1 用出于学习目的,基础知识完备工作量也挺小的。 |
4
tywtyw2002 233 天前 1
@hitsmaxft #3
是啊键盘 8bit AVR 都能跑。mcu 性能好了,编程就容易多了,不用去考虑 flash ram 够不够。 如果我没记错的化,qmk 蓝牙是目前是走得 AT 协议,的确可以说是外挂了。不过需要蓝牙模块有支持 HID 的 AT 协议程序。 qmk 挂蓝牙,功耗在那里摆着呢,太费电了。根本没法到 uA 级别,远不如原生 nrf52480+zmk 了。 说起代码,QMK 真的跟一坨 X 一样。远远不如 ZMK 简洁。 ( QMK 的主逻辑跟功能支持是用一堆 define 写的,ZMK 的主逻辑是消息队列。) |
5
hitsmaxft OP @tywtyw2002 作为一个开源项目,还是做得不错了,社区和文档都还行,就是蓝牙这个协议上限制死了很让人头疼
|
6
hitsmaxft OP @tywtyw2002 qmk 目前在用外挂蓝牙的方案挺普遍, anne pro 2 和 keychron 都是, 还有大量个人做的定制键盘 pcb
zmk 在计划任务里. nrf52480 开发板还没买. qmk 定制的改起来难度也不大,该有的回调函数也都提供了, 可能我没怎么接触 c 代码项目. 看上去都一个样, 宏满天飞.. 就是底下那个 chibios 感觉不是太流行, 也不支持 nrf52 或者 esp32 |
7
tywtyw2002 233 天前 1
@hitsmaxft #6
历史遗留问题啊,201X 年那时候机械键盘刚流行,很多 60%定制 PCB 都是 GH60 开源的改版,mcu 是 AVR8bit ,出货量最大的是 Satan 的板子。 后来一些开源项目把 MCU 升级成了 STM32 了,然后各个作坊就开始量产定制键盘了。 画画 pcb + qmk 就敢说是定制。 chibios 就是当年 STM32 刚出来的产物,要移植 QMK 到 STM32 平台,最简单就是找个支持 USB HID 的底层,然后不知道为什么就选了 chibios 。 VIA 什么的应该是为了方便改 QMK 键盘层搞出来的东西,对普通人意义重大,但是对程序员没啥用,改键位什么的直接改 C 代码然后编译,也就是几分钟的事情。 EPS32 没有任何支持的固件,各种 RTOS 对 ESP32 USB 的支持很差,想搞键盘固件,要不你把 QMK 的 keymatrix scan 和 action 移植到 IDF 上,要不等 zephyrproject 支持了 ESP32 USB 和低功耗跑 ZMK 。 ZMK 算是现在键盘固件,直接找了个 RTOS 然后重写整个键盘的逻辑层,只要 zephyrproject 支持的 MCU ,简单移植下,ZMK 就能跑。 现在社区键盘高玩们都在画板子玩 Split 了,类似 Corne 3*6 之类的了。layout 搞 tap dance/macro 等等。 ZMK nrf52 蓝牙无灯,能做到 500mha 电池半年一冲。 nrf52480 搜 nicenano ,30+吧。RP2040 10+左右。 |
8
hitsmaxft OP @tywtyw2002 我自己现在用着 61 键和 lily58 的分体,说实话我实在是没觉得分体和直列有多大优势,误操作太多了,还不如固定的😂
|
9
tywtyw2002 232 天前 via iPhone
@hitsmaxft 分体优势还是 36 42keys 这样的,不过需要练习,熟悉了就觉得很舒服。键盘定义一堆 combo ,然后大部分操作都可以 2 个键解决。
这东西跟 vim 一样,有学习曲线。 |
10
hitsmaxft OP @tywtyw2002 我就是长时间使用了直列分体之后的感想
直列只不过简化了制作,但是使用体感确实不如交错布局😵💫。 |
11
tywtyw2002 231 天前 via iPhone
@hitsmaxft 斜列也不复杂啊。
画 pcb 的时候 switch 和 diode 都是用脚本排位置啊,什么布局都没差别。。。。 边框用 cad 画或者 build123d 直接脚本出 dfx 了。 corne 我搞了个专门玩游戏的键位,玩起来特别爽。 |