HID Relay, 有线键盘转蓝牙项目学习:记一次失败的尝试
开始学习嵌入式后,最难受的一个点在于电脑端口不够。我的电脑有两个USB口一个TypeC口,鼠标和键盘都要插USB口,stm32和51也都要插USB口。
那么烧录的时候,要么就把键盘拔了先烧录。代码错了就再插上键盘打字,然后拔下来烧录,再插上键盘打字,再拔下来。
后来入了一款秒控键盘,但是手感远不如我的alice。
我是不想购置新鼠标和键盘的(电脑更不行)。很巧的是,我找到了有同样想法的嵌入式前辈,他开发了一个有线键盘转蓝牙的设备。
使用的主开发板是arduino pro mini。如果完成了,这将是我第一次成功制作项目的经历。所以我觉得这个有趣的项目非常值得一试。
因此我从选购芯片、硬件、电烙铁开始,跑了无数次五金店,焊了好几排引脚,甚至左手大拇指为此受到了烫伤和被扎破的双重代价,终于——
我失败了。
为什么失败了还要拿出来说事,而不是把它改进的更好,或者重做到成功为止?
因为5月实在是太忙了。除了课程内作业要求,还有许多课外大大小小的活动,要写的代码要做的视频要考的试……我知道我真的没有时间花在修好他上了,至少现在来说是这样。
但是这是我第一次尝试的项目,哪怕是失败,对我来说,这个小东西也很有价值。而且我也从中学到了很多。
所以我决定,敲下这一篇“失败”的经验总结,来暂时为他画上分号。也许在将来的某一天,能力更强的我从纸箱中翻出这个小玩意,可以把他修好,补充完这篇文章。
原视频链接
选材
-
主开发板:arduino pro mini,3.3V。相比以前玩过的arduino板子,pro mini 体积小,功耗低,用它来设计有线键盘蓝牙转换器不仅小巧,而且省电。
-
USB Host Shield 2.0 拓展板,提供 usb 接口,可以让 arduino 等拥有 usb 主机功能,比如接鼠标,键盘,u盘。也有 spi 接口,可以利用其进行通信。
- FT232RL,FTDI公司生产的一款常用的USB接口转换IC。它能够将USB接口转换成标准的串口接口。
- 蓝牙模块。
- 面包板,面包板供电模块。
原理图
简要原理:
首先 mini 板子没法连电脑通信,我们要用 FT232RL 作为中介,转换电脑的 USB 接口为 arduino 可以接收的 IC 串口接口。这样通信烧录都可以进行了。
然后键盘的输入数据没法直接交给 arduino。我们可以通过 USB Host Shield 进行转换,也把数据转换为 USB 可以接收的串口接口类型。
焊接
图片来源:给模块添加 USB 支持的 USB Host Shield Mini - schaepher - 博客园 (cnblogs.com)
首先,把 USB Host Shield 的Vcc-2k2部分切断,一会连线到arduino上。
为什么这么做?我们的键盘需要5V供电的,但是 USB Host Shield 的Vcc连到3.3V,所以我们要把其断开,连到arduino上的5V引脚。
因此把Vcc上面的孔焊上,连上一根导线引出来,一会连arduino。
- arduino pro mini 就直接把引脚排针都焊上,并且正对着 USB Host Shield 插上就好。导线连到右下角 RAW 引脚。
- 用六根母对母杜邦线链接FT232RL和Arduino Pro mini。或者像图片一样焊一排排针。
- 把 Arduino Pro mini 下面的排针插到面包板上,连面包板3.3V供电。
RAW和GND引出来连到3.3V和GND。如果FT232和arduino都亮灯了,且arduino还有一个闪烁的灯,说明准备好烧录程序了。(把USB Host Shield 连上有线键盘)
烧录
代码下载:
https://github.com/felis/USB_Host_Shield_2.0
-
代码包解压到 arduino 文件夹下的 libraries 文件夹中。
-
打开arduino,打开示例中的项目:
- 链接电脑和FT232,下载程序。下载过程中FT232上的黄灯会狂闪,闪完就下载成功了。
打开串口:
哦~就到这里就失败了。如果运行正常,应该会显示start,且按下按键后实时输出按键信息。
反思
这里我的问题可能有很多。因为按下按键后也不输出按键信息,说明不只是串口监视器的乱码问题,可能是链接电路问题,使得数据传输时出错。
但是通过这次尝试和记录,至少是学习了电烙铁的使用方法,以及对这几个硬件都有了一定的了解。如果以后有机会,可以从单独模块学起,再研究项目上的代码逻辑,逐步排查出现问题的原因~
晚安,HID Relay。