肖晨阳
摘要:設计一种经过简单的硬件改造,通过树莓派硬件远程控制多台计算机的开关机的方案,从硬件设计、软件服务端设计、云服务器中转信息三个方面介绍了设计方案。方案实施表明,方案能够完成设计目标并具有很好的稳定性。
关键词:树莓派;软件服务端设计
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)29-0225-02
笔者在承担病毒三维重构的并行算法研究的过程,团队搭建了一个小型的计算机集群,通过计算机集群来进行病毒三维重构的运算。在实践过程中,遇到以下情况:有时候人员出差在外、外出会议、回家后,某台计算机出现了故障;另外有时候会出现某台计算机需要开机等情况,而人员恰恰不在实验室,导致程序运行中断,往往需要返回实验室,进行开机或者关机等处理,费时费力,影响工作。基于这种现状,我们设计一种远程计算机开关机的方法来解决此问题。
1 硬件设计
购置ARM硬件树莓派计算机,通过和RJ45网线和计算机集群在同一局域网,并使之保持互联网连接。
树莓派计算机,是一种基于ARM的嵌入式硬件平台,体积小,只有一个通用的信用卡大小,有4G的存储器,能够安装Linux操作系统。
树莓派计算机除了有以太网口和常见的USB接口外,额外提供了一组40针的GPIO接口。我们利用GPIO口的输出控制被控计算机的电源开关键。从而实现远程控制开关机的目的。
由于树莓派提供了多个GPIO口,如图1所示,我们可以用一台树莓派控制多台计算机的开关键。
1.1 树莓派GPIO介绍
在树莓派3上GPIO接口由40针引脚组成,有些针脚有特殊的用途,如2、4引脚固定输出5V电压,1、17引脚输出3.3V电压,6、9、20、39等为地线。其他引脚大多数是可以编程的引脚,一般用GIPX的编号来表示。每个针脚用杜邦线(导线)和外部相连。
1.2 树莓派的操作系统
树莓派的操作系统采用经过定制的Linux系统,具有丰富的网络功能,能够运行我们设计的远程控制软件。
2 软件设计
2.1 程序控制GPIO
树莓派Linux已经对GPIO进行了驱动级支持,并提供了应用层接口命令GPIO。
用gpio readall获取个GPIO接口的编号及其定义。
通过Linux内置的wiringPi库,可以用C语言编程控制GPIO接口。
使用wiringPi函数库中的digitaIWrite函数对指定引脚输出高电平或者电平,从而实现计算机开关键闭合和打开。
2.2 远程控制树莓派。
由于被控计算机在内网,无法通过公网进行直接访问,因此我们购买了一个云服务器作为控制信息的中转,实现间接访问。树莓派计算机通过客户端连接,并登记注册到公网云服务器,保持网络连接。
当我们需要对内网内的计算机进行关机或者开机时,外网客户端连接云服务器,向云服务器发送控制信息,服务器收到控制信息后,将控制信息转发给树莓派,树莓派客户端软件根据控制信息通过GPIO口对被控计算机进行开机或者关机操作。
2.3 软件流程设计
1)内网树莓派启动后,Client0启动程序和Server建立TCP连接。端口为8018。Client0发送register请求到Server。
2)每隔5秒,发送一个心跳(hearbeat)信息,保证TCP连接不中断。
3)当需要控制被控机器时,clientl启动程序和Server建立TCP连接。端口为8018,发送控制指令“boot XX”或者“shut-down XX”给Server。
4) Server收到信息后“boot XX”或者“shutdown XX”信息后将信息发送给client0。
5)Client0收到信息后,根据boot或者shutdown对应的计算机启动或者关机。
根据上述流程,我们用C语言编写了一个软件服务端和两个客户端程序。
3 方案实施
本文设计的远程控制计算机方案,应用于本实验室由8台计算机组成的小型集群,经过对计算机的简单改装,能够成功实现远程对指定计算机进行模拟计算机开关键进行开机和关机。经过近一年时间的运行,运行情况良好。
4 结论
本文采用廉价的树莓派硬件,通过控制所带的GPIO控制口,控制计算机的开关键,从而实现控制开机和关机功能,而远程控制的功能实现,则通过一个公网云服务器,作为控制信息的中转,实现通过互联网发送控制信息到树莓派硬件,从而解决了异常情况下,需要对特定计算机进行启动和关机的问题。在此基础上,充分利用树莓派提供的多个GPIO口,实现一台树莓派控制多台计算机的开关机的操作。本方案结构简单,对计算机改动极少,完全不影响原有功能,具有方便使用等特点。
参考文献:
[1]李文胜.基于树莓派的嵌入式Linux开发教学探索[J].电子技术与软件工程,2014(9):219-220.
[2]常英亮,基于嵌入式Linux的物联网网关研究与实王见[D].北京:北京交通大学,2014.
[3]程学斌,艾红.基于嵌入式Linux的土壤温湿度监测系统的设计[J].北京信息科技大学学报(自然科学版),2015,30(5):48-51.
[4]张彦春.面向通信行业的嵌入式软件开发平台设计与实现[D].合肥:合肥工业大学,2006.
【通联编辑:唐一东】