【N32G457】 基于RT-Thread和N32G457的迷你键盘

news/2024/9/23 4:35:15/

此文为参加RT-Thread与国民技术联手推出N32G457 RT-Thread设计大赛期间作品。
由于疫情影响加上其他各种原因,本应在3月25日结束的比赛在今日终于完成了一个比较完整的作品,无论是否可以参赛,还是希望对大家有所帮助。

先放个图。

fc7fffd52263768bfa21ed4d4958c61.jpg

应用背景

机械键盘在最近几年发展迅猛,功能也逐渐丰富,在开源环境中也存在几个发展迅猛的开源项目,比如QMK。这些项目对STM32之类的芯片虽然有所支持,但是相关资料也会少很多,所以项目之初我是希望可以将QMK作为一个软件包接入RT-Thread,但是由于对其了解不够深入,最后项目变成了完成键盘为主(主要PCB已经画回来了)。
本次作品,是希望借实现一个小键盘接触QMK之类的开源项目,并将其接入RT-Thread,这样对于机械键盘这个行业而言,主控芯片的选择会丰富很多。

实现功能

本项目主要为一个通过USB HID协议对电脑进行通信的机械键盘(30左右键+3个编码器),添加WS2812的灯珠,添加1.14寸OLED显示屏,均完成基础功能编写测试(存在部分不稳定的bug)。通过RT-Thread为每一个设备建立线程,实现了互相通讯,实现了部分互动特效。

开发板和RT-Thread使用情况概述

本次设计对键盘部分设计了PCB以及顶部定位板的PCB,使用40P的FPC排线将所有所需引脚引出,通过杜邦线连接到主控板,使用的主控板为国民技术提供的N32G457开发板,将所有IO引出,考虑之下,作为前期项目,采取了杜邦线的形式。
在设计PCB的时候,考虑到整体键盘一体性,有做额外设计,将主控部分放置于顶层定位板处,床层PCB通过FPC排线进行连接。当然由于时间与资源关系并没有完成该部分,定位板只做定位板使用,是便于调试的选择。
在软件层面该程序使用RT-Thread 4.1.0为主控系统,部分内容通过对软件包的修改完成。

硬件框架

如图:
4ad378ef9f666fb5672f7f17489b61d.png
实装了OLED,WS2812b,和键盘本体,通过FPC排线接到转接板,通过杜邦线连接到开发板。
对于机械键盘部分,原理图如下。
Schematic_Keyboard_ver1_Blues_2022-03-27.png

软件框架说明

5e4fea2437017b8aebec6c6fcf91e64.png
针对每一个外设都有做线程,USB接收的信息有CapsLock和NumsLock,这类事件通过Event公告。
keyboard线程是10ms扫描一次,先扫描矩阵键盘,再扫描旋转编码器。
当发现有按键需要发送出去,在线程内先打包好,然后通过消息队列发送出去。

软件模块说明
由于N32G45X的BSP并不支持USB设备,在移植尝试进行了一些时间后,由于本身并未研究过USB设备,在仍然希望最终结果相对完整的前提下,选择了另一种方法。根据国民技术提供的N32G457的库函数,内部包含了部分使用USB向电脑发送数据的例程,本次项目将该部分例程魔改,并未初始化USB的device,但对USB设备分配了一个线程,使用RT-Thread的方法进行桥接,发送所需数据到例程中设备向USB主机发送设备的位置,最终实现了成功枚举HID设备并正常进行打字输入。
现阶段软件在打字部分已经比较完善,ws2812b部分存在bug,会出现颜色偏差。
对SPI部分驱动后续有进行小修复,验证通过,后续会提交PR。

作品完整图片

33f3c905315a2b9dcbb5299e305cbcc.jpg

d95c46a7b512e2379f89f70e3823809.jpg

dc2ff49b8089155551b0322a089035e.jpg

视频演示

演示内容放在了Bilibili:一个不迷你的迷你机械键盘雏形的演示视频

代码地址

Gitee_Mini-Keyboard-Blues


http://www.ppmy.cn/news/307030.html

相关文章

【ADB】设置adb输入法

1、安装输入法apk adb -s <设备id> install keyboard.apk 2、检查是否安装成功 adb -s <设备id> shell ime set com.android.adbkeyboard/.AdbIME 当未安装adbkeyboard输入法时&#xff0c;会出现如下信息&#xff1a; Error: Unknown id: com.android.adbkeyb…

并行计算及GPU简介

并行计算&#xff08;Parallel Computing&#xff09;指同时使用多种计算资源解决计算问题的过程&#xff0c;它的基本思想是将待求解问题分解成多个子问题&#xff0c;在相同的时间用不同的处理器计算各个子问题&#xff0c;从而有效地节约计算的时间。早期的并行计算只能由专…

什么是GPU计算?阿里云国际版有没有GPU计算?-Unirech

GPU计算是指使用GPU&#xff08;图形处理单元&#xff09;作为协处理器来加速CPU&#xff0c;以加速科学、分析、工程、消费者和企业应用程序的运行。GPU加速器由NVIDIA于2007年首次推出&#xff0c;现在已经支持了世界各地的政府实验室、大学、公司和中小企业的节能数据中心。…

在数据科学领域,为什么GPU计算速度比CPU快许多的一个最简单解释

为了回答这个问题&#xff0c;我们需要知道几个知识&#xff1a; 1、一个CPU通常只有 几个核 2、一个GPU通常有 几千个核 (为了容易理解&#xff0c;暂且可以把CPU的核和GPU的核看成是同一个东西) 3、通常&#xff0c;CPU的核 性能比GPU的核 性能要强得多 4、标题说到是在数…

Pytorch入门(5)—— 使用 GPU 进行计算

参考&#xff1a;动手学深度学习注意&#xff1a;由于本文是jupyter文档转换来的&#xff0c;代码不一定可以直接运行&#xff0c;有些注释是jupyter给出的交互结果&#xff0c;而非运行结果!! 文章目录 1. 计算设备2. Tensor 的 GPU 计算3. Module 的 GPU 计算 1. 计算设备 打…

腾讯云GPU云服务器产品概述和产品优势,GPU计算型应用场景

本文分享 腾讯云GPU云服务器产品概述和产品优势&#xff0c;GPU计算型应用场景 更多更多参阅腾讯云GPU云服务器产品概述和产品优势&#xff0c;GPU计算型应用场景文档 腾讯云GPU云服务器产品概述 GPU 云服务器&#xff08;GPU Cloud Computing&#xff09;是基于 GPU 的快速…

matlab gpu cpu 快,(Matlab)GPU计算简介,及其与CPU计算性能的比较

1、GPU与CPU结构上的对比 原文: Multicore machines and hyper-threading technology have enabled scientists, engineers, and financial analysts to speed up computationally intensive applications in a variety of disciplines. Today, another type of hardware prom…

GPU并行计算

GPU并行计算包括同步模式和异步模式&#xff1a; 异步模式&#xff1a; 同步模式&#xff1a; 异步模式的特点是速度快&#xff0c;不用等待其他GPU计算完毕再更新&#xff0c;但是更新的不确定性可能导致到达不了全局最优。 同步模式需要等到所有GPU计算完毕&#xff0c;…