HID Relay, 有线键盘转蓝牙项目学习:记一次失败的尝试

news2024/9/22 11:24:37

HID Relay, 有线键盘转蓝牙项目学习:记一次失败的尝试

开始学习嵌入式后,最难受的一个点在于电脑端口不够。我的电脑有两个USB口一个TypeC口,鼠标和键盘都要插USB口,stm32和51也都要插USB口。

那么烧录的时候,要么就把键盘拔了先烧录。代码错了就再插上键盘打字,然后拔下来烧录,再插上键盘打字,再拔下来。

后来入了一款秒控键盘,但是手感远不如我的alice。

你怎么知道我的键盘是ACR Pro Alice Plus?

我是不想购置新鼠标和键盘的(电脑更不行)。很巧的是,我找到了有同样想法的嵌入式前辈,他开发了一个有线键盘转蓝牙的设备。

image-20230506042504272

使用的主开发板是arduino pro mini。如果完成了,这将是我第一次成功制作项目的经历。所以我觉得这个有趣的项目非常值得一试。

因此我从选购芯片、硬件、电烙铁开始,跑了无数次五金店,焊了好几排引脚,甚至左手大拇指为此受到了烫伤和被扎破的双重代价,终于——

我失败了。

半成品展示

为什么失败了还要拿出来说事,而不是把它改进的更好,或者重做到成功为止?

因为5月实在是太忙了。除了课程内作业要求,还有许多课外大大小小的活动,要写的代码要做的视频要考的试……我知道我真的没有时间花在修好他上了,至少现在来说是这样。

但是这是我第一次尝试的项目,哪怕是失败,对我来说,这个小东西也很有价值。而且我也从中学到了很多。

所以我决定,敲下这一篇“失败”的经验总结,来暂时为他画上分号。也许在将来的某一天,能力更强的我从纸箱中翻出这个小玩意,可以把他修好,补充完这篇文章。

原视频链接

选材

  1. 主开发板:arduino pro mini,3.3V。相比以前玩过的arduino板子,pro mini 体积小,功耗低,用它来设计有线键盘蓝牙转换器不仅小巧,而且省电。

    The Arduino Pro Mini board

  2. USB Host Shield 2.0 拓展板,提供 usb 接口,可以让 arduino 等拥有 usb 主机功能,比如接鼠标,键盘,u盘。也有 spi 接口,可以利用其进行通信。

image-20230506043809303

  1. FT232RL,FTDI公司生产的一款常用的USB接口转换IC。它能够将USB接口转换成标准的串口接口。

image-20230506044149507

  1. 蓝牙模块。

image-20230506044233998

  1. 面包板,面包板供电模块。

原理图

简要原理:

image-20230506044916586

首先 mini 板子没法连电脑通信,我们要用 FT232RL 作为中介,转换电脑的 USB 接口为 arduino 可以接收的 IC 串口接口。这样通信烧录都可以进行了。

然后键盘的输入数据没法直接交给 arduino。我们可以通过 USB Host Shield 进行转换,也把数据转换为 USB 可以接收的串口接口类型。

焊接

图片来源:给模块添加 USB 支持的 USB Host Shield Mini - schaepher - 博客园 (cnblogs.com)

img

首先,把 USB Host Shield 的Vcc-2k2部分切断,一会连线到arduino上。

image-20230506045308088

为什么这么做?我们的键盘需要5V供电的,但是 USB Host Shield 的Vcc连到3.3V,所以我们要把其断开,连到arduino上的5V引脚。

因此把Vcc上面的孔焊上,连上一根导线引出来,一会连arduino。

image-20230506045521692

  1. arduino pro mini 就直接把引脚排针都焊上,并且正对着 USB Host Shield 插上就好。导线连到右下角 RAW 引脚。

image-20230506045654918

  1. 用六根母对母杜邦线链接FT232RL和Arduino Pro mini。或者像图片一样焊一排排针。

image-20230506045806972

  1. 把 Arduino Pro mini 下面的排针插到面包板上,连面包板3.3V供电。

image-20230506050012950

RAW和GND引出来连到3.3V和GND。如果FT232和arduino都亮灯了,且arduino还有一个闪烁的灯,说明准备好烧录程序了。(把USB Host Shield 连上有线键盘)

烧录

代码下载:

https://github.com/felis/USB_Host_Shield_2.0

  1. 代码包解压到 arduino 文件夹下的 libraries 文件夹中。

    image-20230506050236487

  2. 打开arduino,打开示例中的项目:

image-20230506050413479

image-20230506050431597

  1. 链接电脑和FT232,下载程序。下载过程中FT232上的黄灯会狂闪,闪完就下载成功了。

image-20230506050656593

打开串口:

image-20230506050742302

哦~就到这里就失败了。如果运行正常,应该会显示start,且按下按键后实时输出按键信息。

image-20230506050905781

反思

这里我的问题可能有很多。因为按下按键后也不输出按键信息,说明不只是串口监视器的乱码问题,可能是链接电路问题,使得数据传输时出错。

但是通过这次尝试和记录,至少是学习了电烙铁的使用方法,以及对这几个硬件都有了一定的了解。如果以后有机会,可以从单独模块学起,再研究项目上的代码逻辑,逐步排查出现问题的原因~

晚安,HID Relay。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/494381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SwiftUI 如何让文本自动支持查找和替换功能?

概览 有些情况下,我们需要为文本编辑器实现文本的查找和替换功能(find & replace),如果完全靠自已撸码还是比较棘手的。 所幸的是,从 SwiftUI 4.0 (iOS 16)开始,Apple 已经将查…

JavaWeb ( 六 ) JSP

2.4.JSP JSP (Java Server Pages) : 一种在服务器端生成动态页面的技术,本质上就是Servlet。将HTML代码嵌入到Java代码中, 通过Java逻辑控制HTML代码的结构从而生成页面。在MVC中通常担任视图层(view),负责信息的展示与收集。 2…

浅谈MySQL索引以及执行计划

MySQL索引及执行计划 🐪索引的作用🐫索引的分类(算法)🦙BTREE索引算法演变🦒Btree索引功能上的分类4.1 辅助索引4.2 聚集索引4.3 辅助索引和聚集索引的区别 🐘辅助索引分类🦏索引树高…

了解MSIL汇编和IL汇编评估堆栈

.assembly extern mscorlib {}.assembly Test{.ver 1:0:1:0}.module test.exe.method static void main() cil managed{.maxstack 1.entrypointldstr "I am from the IL Assembly Language..."call void [mscorlib]System.Console::WriteLine (string)ret} 这是MSIL…

spring-transaction源码分析(2)EnableTransactionManagement注解

概述(Java doc) 该注解开启spring的注解驱动事务管理功能,通常标注在Configuration类上面用于开启命令式事务管理或响应式事务管理。 Configuration EnableTransactionManagement public class AppConfig {Beanpublic FooRepository fooRepository() {// configur…

【Matter】esp-matter环境下的应用实践(程序烧录及串口监视)

文章目录 esp-matter环境下的应用实践前提准备设置环境变量1.ESP-IDF2.ESP-Matter Matter Example编译下载1.激活esp-matter环境2.选择esp设备3.编译工程4.SDK烧写 esp-matter环境下的应用实践 前提准备 请确保你本地已经配置好 esp-idf 及esp-matter环境,可参考此…

经典文献阅读之--PCAccumulation(动态三维场景构建)

0. 简介 多波束激光雷达传感器,常用于自动驾驶汽车和移动机器人,获取三维范围扫描序列(“帧”)。由于角度扫描分辨率有限和遮挡,每帧只稀疏地覆盖场景。稀疏性限制了下游过程的性能,如语义分割或表面重建。…

北京地铁:充分发挥数据价值,全面提升业财融合能力

4月19日-4月21日,一年一度的用友BIP技术大会圆满召开。来自行业领先企业的CIO/CDO、生态伙伴、开发者、分析师、媒体等共聚北京用友产业园,了解最新技术发展趋势、探讨行业热点话题。会上,北京地铁运营有限公司(以下简称“北京地铁…

shared_ptr 的线程安全性

多线程环境下,调用不同的 shared_ptr 实例的成员函数是不需要额外的同步手段的,即使这些 shared_ptr 管理的是相同的对象。 多线程对于同一个 shared_ptr 实例的读操作(访问)可以保证线程安全;但对于同一个 shared_ptr…

对标世界一流|从Just in time到Just in case ——汽车行业供应链管理经验借鉴

01 丰田汽车精益生产 作为最复杂和最成熟的供应链之一,汽车行业供应链无疑是供应链领域集大成者,而提起汽车行业供应链,就不得不提到丰田汽车;提到丰田汽车,就肯定离不开大名鼎鼎的精益生产以及JIT模式。 JIT模式由丰…

【UE】高级载具插件-05-扫描材质

效果 步骤 1. 首先创建一个材质 再创建一个材质参数集 创建材质实例 2. 将后期处理体积放入场景,并缩放至合适的大小使其全方位覆盖 在后期处理材质中添加一个数组 选择资产引用 将材质实例拖入 3. 打开参数集,添加一个数组元素 设置默认值和参数名 4. …

2023年湖北省中级职称评审申报条件是什么呢?学历不够可以申报吗?

2023年湖北省中级职称评审申报条件是什么呢?学历不够可以申报吗? 1.大专毕业从事本专业技术工作7年以上;助理满足4年。 2.本科毕业从事本专业技术工作5年以上,助理满足4年。 一般来说中专或者高中学历是无法申请中级职称的&…

mobile代码打APK包

1、安装Android SDK Android SDK 下载地址: http://www.androiddevtools.cn/ 下载位置 下载后解压 打开解压文件,点击 SDK Manager.exe 进行安装 安装组件,这要选 Android 8.0.0 或者以上版本 再次安装,发现没什么可以安装了 2…

【Linux】Shell编程之条件语句

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、条件测试操作作1.文件测试2.整数值比较3.逻辑测试 二、if语句的结构1.单分支结构2.双分支结构3.多分支结构 三、case多分支结构 一、条件测试操作作 test命令 …

Win10蓝屏错误0x0000007b怎么U盘重装系统?

Win10蓝屏错误0x0000007b怎么U盘重装系统?有用户安装好的电脑系统最近总是会出现蓝屏错误0x0000007b的情况,遇到这样的情况很多用户不懂怎么去进行处理。今天分享一个U盘重装系统的方法,教会你快速解决此问题的方法。 准备工作: 1…

体验 nanoGPT

体验 nanoGPT 1. 使用预训练模型2. 训练自己的模型2-1. 准备训练数据2-2. 模型训练2-3. 模型验证 1. 使用预训练模型 在我们尝试训练自己的模型之前,我们先使用其他人训练好的模型,看看如何在自己的环境中运行聊天机器人。 今天我们使用 GPT4ALL 并从 …

正则匹配x.x.x

\d(\.\d){2} 正则规则 \d 表示一个十进制的数字 [0-9] 匹配加号之前的一次或多次 正则中[]、()、{}的区别 [] 匹配组内任意字符 eg:[1,2,3,a-z]能匹配1、2、3、a到z的任意字符 () 相应的匹配字符串,匹配组,子表达式 eg:(abc|cbd)能匹配…

既然有Map了,为什么还要有Redis?

以下内容转自掘金 作者:哪吒编程 同样是缓存,用map不行吗? Redis可以存储几十个G的数据,Map行吗?Redis的缓存可以进行本地持久化,Map行吗?Redis可以作为分布式缓存,Map只能在同一个JVM中进行缓…

2022 Jiangsu Collegiate Programming Contest I. Cutting Suffix

题目链接 Examples input aa Output 1 input ab Output 0 题目大意: 后缀i是字符串从第i个字符开始到最后的字符字串 定义Wi,j是字符串 后缀i和后缀j的公共前缀(LCP)的长度 现在给你一个全集为1-n的互补集T1,T2 要求题目中求和公式的最小值。 题目要点:…

学习笔记(1 - 01)项目初始化的方案和对比

目录 1,创建项目的方式1.1,两种方式创建的项目比对HbuilderX创建的项目:cli创建的项目 1,创建项目的方式 uniapp提供两种方式创建项目: 通过HbuilderX编辑器创建: 通过vue-cli创建 第一方式只能通过Hbuild…