PicoMK:为RP2040定制的机械键盘固件
项目介绍
PicoMK 是一款为 Raspberry Pi Foundation 的 RP2040 微控制器设计的高度可配置的机械键盘固件。RP2040 芯片具备两个 Cortex-M0 处理器,基于 FreeRTOS 的 smp 分支,PicoMK 支持在 RP2040 上进行多核执行。当前,它为以下键盘板提供动力:
项目技术分析
PicoMK 的核心是利用 RP2040 的双核特性,通过 FreeRTOS 的 smp 分支实现多核执行,从而优化机械键盘的性能。它具备以下技术特点:
- 支持配置多个层的可定制键位图,并在编译时进行验证。
- 支持全键无冲(NKRO)。
- 通过 C++ 注册实现自定义功能。
- 支持多种外设,如旋转编码器、SSD1306 OLED 显示屏、操纵杆、WS2812 LED 等。
- 自带运行时配置菜单,需要屏幕支持。可以实时通过按键或旋钮更改键盘配置。
项目技术应用场景
PicoMK 适用于多种场景,包括但不限于:
- 自定义机械键盘开发。
- 为 Raspberry Pi 或类似平台打造高性能输入设备。
- 在教育或原型设计项目中作为交互组件。
- 结合多种外设进行创意项目开发。
项目特点
PicoMK 的主要特点如下:
-
高度可配置性:用户可以根据自己的需求自定义键位图、外设配置等。
-
多核支持:利用 RP2040 的双核特性,提高固件的响应速度和性能。
-
丰富的外设支持:支持多种外设,使项目具有更高的灵活性和扩展性。
-
实时配置菜单:允许用户在不重启设备的情况下实时调整配置。
-
多板通信协议(IBP):支持不同板间通信,例如 Pico 与 Pi Zero。
-
优化性能:通过自定义键位图和外设配置,减少资源占用,提高效率。
快速上手
PicoMK 的安装和配置过程简单直观,以下是快速上手指南:
获取代码
首先,确保您的系统为 Linux(包括 Raspbian)、Windows WSL 或 MacOS。然后,安装 pico-sdk 的依赖:
-
对于 Arch Linux:
pacman -S git cmake arm-none-eabi-gcc
-
对于 Ubuntu:
sudo apt update sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential libstdc++-arm-none-eabi-newlib
-
对于 Raspbian:
sudo apt install wget wget https://raw.githubusercontent.com/raspberrypi/pico-setup/master/pico_setup.sh chmod +x pico_setup.sh ./pico_setup.sh
-
对于 Alpine:
apk add git cmake gcc-arm-none-eabi newlib-arm-none-eabi
-
对于 MacOS:
# 安装 Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" brew install cmake brew tap ArmMbed/homebrew-formulae brew install arm-none-eabi-gcc # 对于 M1 Mac 仅需:安装 Rosetta 2 /usr/sbin/softwareupdate --install-rosetta --agree-to-license
然后,克隆代码:
git clone https://github.com/zli117/PicoMK.git
cd PicoMK
git submodule update --init && git -C pico-sdk submodule update --init
构建固件
要创建自定义固件,可以复制 configs/
文件夹中的现有配置。本指南中,我们将复制 configs/default
中的默认配置。
mkdir -p configs/tutorial/my_new_config
cp configs/default/* configs/tutorial/my_new_config
每个配置包含两个文件:config.h
和 layout.cc
。请查看文件中的注释和文档以了解如何配置它们。
以下命令用于构建固件:
mkdir build
cd build
cmake -DBOARD_CONFIG=<board_config> ..
make -j 4
其中 <board_config>
是相对于 configs/
文件夹的配置文件夹的路径。例如,要构建 configs/tutorial/my_new_config
配置,可以使用以下命令:
cmake -DBOARD_CONFIG=tutorial/my_new_config ..
成功构建固件后,可以在当前 (build/
) 文件夹下找到 firmware.uf2
文件。将 RP2040 板(或其他 RP2040 板)放入引导模式(对于 Pico 板,只需按住 bootsel 按钮并重新插入 USB 线即可),将其作为 USB 存储设备挂载,如果尚未自动挂载。将 firmware.uf2
复制到存储设备文件夹中,然后即可使用。
更多关于如何自定义固件的不同部分的信息,请查阅文档。
未来路线图
PicoMK 的未来路线图包括以下功能:
- 支持 USB 存储模式,用于导入和导出 JSON 配置文件。
- 支持更多外设,如 SK6805、更大屏幕、LED 矩阵、触摸板等。
- 实现 USB 集线器功能。
- 将键盘作为 Wi-Fi 芯片使用(适用于 RPi2 及以下版本,但这是否过于疯狂?)
PicoMK 以其强大的功能和灵活性,为开发者提供了一种新的选择,以打造高性能的机械键盘和其他交互式设备。通过高度可配置的键位图、多核支持以及丰富的外设支持,PicoMK 无疑是机械键盘爱好者和开发者不容错过的项目。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考