简介:"lets_split_5x7_oled" 是 "lets_split" 机械键盘的增强版,它在一个5x7像素的OLED显示屏上显示当前按键信息、配置状态或自定义界面。这个可编程键盘采用分体设计,基于QMK固件,提供高级定制功能。OLED屏幕采用SSD1306驱动芯片,并且支持通过QMK Firmware编程自定义显示内容。用户需组装电路板、安装开关、连接OLED屏幕,并通过QMK社区资源进行固件编程。此项目不仅提升了打字体验,也扩展了DIY键盘的功能性和个性化。 
1. Lets Split键盘原理和特点
1.1 Lets Split键盘的工作机制
Let's Split键盘是机械键盘爱好者的宠儿,以其独特的分体式设计、灵活的自定义功能和出色的用户体验而著称。它的工作原理基于微控制器进行通信,每个部分可以单独使用,也可以合并成一个完整的键盘。这种机制赋予了它高度的可定制性和便携性。
1.2 分体设计与人体工学
分体式的设计不仅减少了桌面占用,还符合人体工程学,为用户提供更自然的打字姿势。这种设计大大降低了长时间打字可能引起的疲劳和不适。
1.3 功能特点
Let's Split键盘的一大特点是高度的可编程性。用户可以通过安装QMK等开源固件,来调整按键映射、创建宏、调整RGB背光等。这种可编程性为满足特定的需求提供了无限可能。
1.4 开源精神与社区支持
作为一个开源项目,Let's Split从设计到实现都透露着开源精神,它拥有活跃的社区支持和丰富的资源库。新手可以在此找到安装指南,而有经验的用户则可以参与固件的开发和优化。
以上是第一章的概览,接下来将逐步深入探讨OLED显示屏的功能和集成。
2. OLED显示屏的功能和集成
2.1 OLED显示屏技术概述
2.1.1 OLED显示技术原理
OLED(有机发光二极管)技术是一种显示技术,它利用了有机化合物在电流的作用下能自发发出可见光的特性。与传统的液晶显示器(LCD)技术相比,OLED显示器不需要背光,因为每个像素都是自发光的。这种自发光的特性使得OLED显示屏能够提供更高的对比度,更宽的视角,更快的响应时间,并且能在更薄的尺寸中实现。
OLED显示屏由多个像素组成,每个像素由红、绿、蓝(RGB)三种子像素构成。这些子像素可以独立控制亮度,从而混合产生不同的颜色。当电流通过有机材料时,电子和空穴结合释放出能量,以光的形式发射出来,形成图像。
2.1.2 OLED与传统显示技术的比较
与LCD相比,OLED的优点包括:
- 更高的对比度和色彩表现力,由于每个像素可以完全关闭,实现真正的黑色和更高的颜色深度。
- 更快的响应时间,这使得OLED屏幕更适合显示快速移动的图像,如播放高速视频或游戏。
- 更低的功耗,在显示黑色或较暗图像时尤其明显。
- 更薄的尺寸和轻巧的重量,因不需要额外的背光组件。
- 宽广的视角,观看角度对色彩和亮度的影响较小。
尽管OLED屏幕有诸多优势,但也存在一些缺点:
- 价格通常高于LCD屏幕,尤其是在大尺寸应用中。
- 寿命可能比LCD短,尤其是在显示静态图像时,由于像素的老化问题。
- 可能出现烧屏现象,即长时间显示同一图像后留下残影。
2.2 OLED显示屏在键盘中的应用
2.2.1 显示内容类型和定制需求
在键盘设计中,OLED显示屏主要用作显示层,提供用户界面(UI)和信息反馈。常见的显示内容包括:
- 当前键盘布局和模式状态(例如,层状态、大小写锁定状态)
- 模板标签(用于显示各种功能键的自定义标签)
- 系统信息(例如,电量、蓝牙连接状态)
- 自定义动画或图案
- 文本信息(如时间、日期或短消息)
定制需求通常涉及到UI设计、动画效果以及显示内容的实时更新。用户可以根据自己的喜好来更改显示内容,以达到个性化的效果。此外,可编程的OLED屏幕允许用户在编程层面上自定义显示内容,提供了更高级的定制选项。
2.2.2 OLED显示屏的集成方法
OLED显示屏的集成通常涉及硬件连接和软件编程两个方面:
硬件连接 : - 首先,需要确定OLED模块与微控制器(MCU)之间的连接方式,常见的连接接口包括I2C和SPI。 - 将OLED模块的相应引脚连接到MCU的I2C或SPI接口上,这通常包括SCL(时钟线)、SDA(数据线)、VCC(电源)和GND(地)。 - 如果键盘支持热插拔,则必须确保所有的连接都是可插拔的,以避免插拔键帽时影响到OLED模块。
软件编程 : - 为OLED屏幕编写程序代码,使用适当的库函数进行初始化、图像和文本的显示。 - 设计显示内容的更新逻辑,包括动态更新状态、响应按键事件和定时刷新。 - 对于高级用户,可以编写脚本来实现更复杂的显示效果和用户交互。
例如,使用Arduino平台编程OLED屏幕的代码示例:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// 定义OLED显示参数
#define SCREEN_WIDTH 128 // OLED显示宽度,以像素为单位
#define SCREEN_HEIGHT 64 // OLED显示高度,以像素为单位
#define OLED_RESET -1 // 重置引脚,如果不需要可以设置为-1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
// 初始化串口通信,用于调试输出
Serial.begin(9600);
// 初始化OLED显示屏
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 替换为正确的I2C地址
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000); // 显示启动画面2秒
// 清除显示
display.clearDisplay();
}
void loop() {
// 显示字符串
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println(F("Hello, OLED!"));
display.display(); // 更新显示
delay(2000); // 等待2秒
}
在这个代码示例中,首先包含了所需的库文件,初始化了OLED屏幕,并在屏幕上显示了"Hello, OLED!"的字符串。每次循环时都会清除屏幕并重新显示新的字符串。这是最基础的示例,实际应用中可以根据需要来定制更复杂的显示逻辑。
通过集成OLED显示屏,用户能够获得一个更直观、功能丰富的机械键盘体验。它不仅提升了键盘的美观度,同时也为用户提供了更多的交互可能性和定制选项。
3. SSD1306驱动芯片介绍
SSD1306是一款广泛应用于OLED显示模块的驱动芯片,它支持多种通信协议,并能驱动不同尺寸的显示屏。在本章节中,我们将深入了解SSD1306芯片的基本特性和编程方法,以及如何进行驱动开发。
3.1 SSD1306芯片的基本特性
3.1.1 SSD1306的技术参数
SSD1306是一种单片CMOS OLED/PLED驱动控制器,其技术参数如下:
- 支持128x64个像素的显示分辨率
- 支持SPI和I2C通信接口
- 内置了DC-DC转换器来提供显示所需的电压
- 具有低功耗睡眠模式
- 支持显示亮度调节
- 可以通过软件进行显示方向的设置
3.1.2 与其他驱动芯片的对比分析
SSD1306在同类驱动芯片中具有较强的竞争力,主要体现在以下几个方面:
- 易用性 :SSD1306的初始化和编程相对简单,对于硬件爱好者来说更加友好。
- 低功耗 :在不显示图像时,SSD1306可以进入睡眠模式以降低功耗。
- 成本效益 :相对而言,SSD1306的价格更加亲民,适合在成本敏感的项目中使用。
- 适用性 :多样的封装形式使得SSD1306能够适应各种不同的应用场景。
3.2 SSD1306驱动芯片的编程
3.2.1 编程接口和通信协议
要对SSD1306进行编程,首先要了解其支持的通信协议。SSD1306支持SPI和I2C两种通信协议,I2C协议因其简单和仅需两条线(SCL和SDA)即可通信的特性,常被用在大多数小型OLED显示应用中。
在编程接口方面,SSD1306通常使用一些特定的寄存器来控制显示内容。这些寄存器包括控制显示启动和停止的命令,以及调节亮度、对比度的命令等。
3.2.2 芯片驱动开发环境和工具
开发环境通常依赖于Arduino IDE、Raspberry Pi或其他微控制器编程平台。为了简化开发过程,有许多库和示例代码可用,这些库通常封装了底层的通信协议细节,让开发者能够直接控制显示内容。
一个典型的SSD1306驱动库会提供以下功能:
- 初始化屏幕并设置显示参数
- 控制显示的开关
- 发送像素数据到显示缓冲区
- 提供字体渲染和图形绘制的API
- 处理键盘扫描和显示更新的集成
下面是一个简单的Arduino代码示例,演示了如何使用SSD1306库初始化显示并显示一行文本:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
Serial.begin(9600);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
}
display.display();
delay(2000); // Pause for 2 seconds
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0,0);
display.println(F("Hello, world!"));
display.display();
}
void loop() {
// nothing happens after init.
}
在上述代码中,我们首先包含了必要的库文件,然后定义了OLED显示的宽度和高度。在 setup 函数中,我们通过 display.begin 初始化了SSD1306,并指定了其I2C地址(通常情况下,128x64像素的SSD1306 I2C地址为0x3C)。之后,我们清空显示内容并写入"Hello, world!"这行文本。 loop 函数留空,因为在我们的示例中不需要周期性更新显示。
通过使用这样的库,开发者可以更快速地将SSD1306集成到他们的项目中,并利用库提供的高级函数简化开发过程。当然,对于追求更深层次理解和定制的开发者来说,直接使用SSD1306的通信协议和寄存器进行编程始终是一种选择。这需要深入了解SSD1306的技术手册,以完全控制显示的各种细节。
在下一节,我们将深入探讨OLED显示屏在键盘中的应用,并具体介绍如何将其集成到Let's Split键盘中。
4. Lets Split 5x7 OLED的组装过程
4.1 组装前的准备工作
4.1.1 所需材料和工具清单
在开始组装之前,您需要确保以下材料和工具已经准备齐全:
- Lets Split PCB板
- 5x7 OLED显示屏模块
- 键帽(如需要预装配)
- 微型焊接工具(焊铁、焊锡丝等)
- 螺丝刀套装
- 电烙铁清洁海绵或铜丝球
- 焊接助剂(可选)
- 防静电手环(为了安全和避免静电损害电子组件)
- 清洁剂(如无水酒精,用于清洁PCB板)
- 多功能电子测试仪或万用表
4.1.2 组件检查和功能测试
一旦材料和工具准备就绪,先进行组件检查。检查PCB板上所有焊点是否存在焊接缺陷,例如冷焊(焊点未充分熔化)、桥接(焊点之间相连)或短路。检查OLED显示屏是否存在缺像素或显示异常情况。
接着使用万用表进行电路连通性测试,确保所有焊点和焊道均未短路或断路。测试完毕,若一切正常,可以进行下一步组装。
4.2 组装步骤详解
4.2.1 PCB板的焊接技巧
焊接PCB板时,需要以下步骤和注意事项:
- 焊接前,仔细阅读PCB板的设计图和组件布局图。
- 使用合适的焊铁温度和焊锡丝直径,避免过多热量导致PCB板损坏。
- 首先焊接较小的组件(如电阻、电容),再焊接较大的芯片和接插件。
- 焊接芯片时,可以使用焊台上的夹具固定芯片,并将PCB板固定在焊接平台上。
- 采用“点焊”技术,即在芯片脚与焊盘的连接处焊接一点,检查位置正确后再补焊其他位置。
- 焊接完成后,使用清洁剂和无纺布清洁PCB板,去除焊锡渣和助焊剂残留。
graph LR
A[检查材料和工具] --> B[组件检查]
B --> C[功能测试]
C --> D[PCB板焊接准备]
D --> E[焊接小组件]
E --> F[焊接芯片和接插件]
F --> G[点焊技术]
G --> H[完成焊接]
H --> I[清洁PCB板]
4.2.2 OLED显示屏的安装与连接
安装和连接OLED显示屏时,步骤如下:
- 请确保OLED模块的排线方向与PCB板上的指示相匹配。
- 将OLED模块的排线插入PCB板上的对应插座,轻轻按下直到固定。
- 如有必要,可使用少量胶水固定显示屏的底座,确保稳定。
- 确认所有连接正确无误后,使用万用表测试显示屏与PCB板的连通性。
- 若有提前编译好的固件,可以通过USB线连接PC进行测试。
sequenceDiagram
PC ->> OLED: 连接USB线
OLED ->> PC: 固件传输
PC ->> PC: 固件编译与配置
PC ->> OLED: 固件更新
OLED ->> PC: 显示测试结果
PC ->> PCB: 测试OLED连通性
PCB ->> OLED: 确认显示功能正常
此处代码块中的流程图解释了OLED显示屏在组装过程中的连接步骤及测试过程,使用了Mermaid的序列图语法。通过与PC的交互,可以测试OLED模块是否正确安装并正常工作。
请注意,以上所有步骤都应在确保安全和静电防护的条件下进行。正确的组装流程对于确保键盘最终功能和美观至关重要。
5. QMK固件的应用和定制
在当今的键盘爱好者和专业IT人士中,自定义键盘固件,尤其是QMK固件,已经成为一种流行趋势。QMK(Quantum Mechanical Keyboard Firmware)是一个高度可定制的开源键盘固件项目,它为键盘爱好者提供了几乎无限的自定义可能性。本章将深入探讨QMK固件的基础知识、配置、编译过程以及如何进行高级定制。
5.1 QMK固件基础
5.1.1 QMK固件简介及其优势
QMK固件支持多种键盘布局和编程功能,允许用户定义自己的键盘映射、键码和功能。这包括但不限于键盘快捷键、媒体控制、宏命令和LED控制。其最大的优势在于其强大的社区支持和易于使用的配置界面,使得即使是编程新手也能轻松上手进行自定义。
5.1.2 QMK固件的配置和编译
QMK固件的配置和编译可以通过QMK Toolbox或者命令行工具进行。配置过程主要涉及修改 config.h 文件和 keymap.c 文件,以设定键盘的物理布局和功能映射。对于初学者,QMK Configurator提供了一个基于Web的图形化界面,可以更直观地进行配置。
// 示例:keymap.c中的一个映射
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_4x12( /* Base */
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, KC_RGUI, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT
),
// 其他键盘映射配置...
};
5.2 QMK固件的高级定制
5.2.1 键盘映射的自定义方法
自定义键盘映射是QMK固件强大功能之一。用户可以根据个人习惯和需求,调整每个键的功能。例如,可以设置组合键、单键多功能操作,甚至将一个键映射为一个宏序列。用户可以通过修改 keymaps 数组中的内容来实现。
5.2.2 功能层和宏编程技巧
QMK固件还允许用户创建多个功能层,每个功能层可以激活一组特定的键映射。例如,通过切换层可以快速切换工作模式。此外,宏编程提供了一种便捷的方式来执行复杂的按键操作,可以用于游戏或者特定软件中的自动化任务。
// 示例:创建一个宏用于模拟文本输入
const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
switch(id) {
case 0:
if (record->event.pressed) {
return MACRODOWN(T(KC_F), T(KC_E), T(KC_L), T(KC_L), T(KC_O), T(KC_W), T(KC_S), END);
}
break;
}
return MACRO_NONE;
}
在本章中,我们详细介绍了QMK固件的基础知识以及如何进行基础和高级的定制。通过这些信息,即使是键盘定制的新手也能快速上手,并充分利用QMK固件的全部功能。在下一章中,我们将转向用户体验优化和技能提升,探讨如何进一步改进和增强自定义键盘项目。
简介:"lets_split_5x7_oled" 是 "lets_split" 机械键盘的增强版,它在一个5x7像素的OLED显示屏上显示当前按键信息、配置状态或自定义界面。这个可编程键盘采用分体设计,基于QMK固件,提供高级定制功能。OLED屏幕采用SSD1306驱动芯片,并且支持通过QMK Firmware编程自定义显示内容。用户需组装电路板、安装开关、连接OLED屏幕,并通过QMK社区资源进行固件编程。此项目不仅提升了打字体验,也扩展了DIY键盘的功能性和个性化。

1137




被折叠的 条评论
为什么被折叠?



