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

news/2024/10/30 23:17:57/

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.ppmy.cn/news/60353.html

相关文章

华为OD机试 - 匿名信(Python)

题目描述 电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。 现在又一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。 但为了增加文章的混淆度,只需满足每个单词中字母数量一致即可,不关注每个…

vue生命周期代码示范--Vue基本介绍--MVVM-示意图--数据渲染--事件绑定--修饰符--组件化--和全部代码示范

目录 Vue 基本介绍 官网 git 地址: MVVM-示意图 解读 MVVM 思想(上图) 下载官网 简单的代码示例方便理解 Vue 数据绑定机制分析! 注意事项和使用细节 数据单向渲染 基本说明 应用实例 注意事项和使用细节 数据双向绑定 应用实例 ​编辑代码实现 代码综合-单…

辨析 关键路径、关键链、缩短工期方法

关键路径、关键链辨析、缩短工期方法 关键路径法 关键路径是从起点到终点的最长路径 关键路径上活动的总浮动时间和自由浮动时间为0 关键链法 根据有限的资源对项目进度进行调整,结合了确定性和随机性办法 添加了持续时间缓冲(非计划工作活动&#xff0…

Spark学习笔记【shuffle】

本文基本上是大数据处理框架Apache Spark设计与实现的Shuffle部分的学习。以及Spark基础知识Bambrow Shuffle解决啥问题 上游和下游,不同stage,不同的task之间是如何传递数据的。ShuffleManager管理ShuffleWrite和ShuffleRead 分为两个阶段&#xff1…

互联网陪诊系统功能方案

互联网陪诊系统是一款为用户提供陪同患者到医院就医全程陪同,排队约号,排队检查,排队缴费,取送结果,代办买药,代办问诊等。 业务线上预约平台,让客户享受到最为专业的医院助医服务. 功能介绍 专…

mysql设置用户权限

更改mysql密码 -- 查询用户权限 show grants for root%; update mysql.user set authentication_stringpassword(密码) where userroot and Host localhost; flush privileges; -- 或者下面方式 alter user test1localhost identified by 新密码; flush privileges;创建用户 …

基于PyQt5的图形化界面开发——模拟医院管理系统

基于PyQt5的图形化界面开发——模拟医院管理系统 0. 前言1. 需求分析2. 挂号界面的思路、UI界面代码及相应触发函数2.1 思路分析2.2 ui_guahao.py2.3 相应的触发函数代码 3. 就诊界面的思路、UI界面代码及相应触发函数3.1 思路分析3.2 ui_jiuzhen.py3.3 相关触发函数&#xff1…

redis和memcache区别

1redis做存储,可以持久化,memcache做缓存,数据易丢失。 2 redis支持多数据类型,memcache存放字符串。 3 redis服务端仅支持单进程、单线程访问,也就是先来后到的串行模式,避免线程上下文切换,…