物联网智能机房系统设计与实现
扫描二维码
随时随地手机看文章
摘要:简述了实现智能机房系统所用的主要技术、设计方法和功能实现,包括通信协议设计、硬件电路设计和软件设计。系统功能包括控制、检测和无线通信等,实现了机房电器的控制、环境物理量的检测、机房安全的防范及通信等功能。同时增加了可无线遥控的智能小车,其上添加各种传感器,实现传感器的移动检测,增加了检测的灵活性。通过互联网遥控机房,从而实现远程控制。经系统测试功能均实现。
关键词:物联网;智能机房;无线通信;智能小车
自2009年8月温家宝总理在无锡市提出“感知中国”以来,物联网被正式列为国家五大新兴战略性产业之一,写入了“政府工作报告”。物联网在中国受到了全社会极大的关注,其受关注程度是在美国、欧盟、以及其他各国不可比拟的。智能机房的发展与成熟,将会极大的提高机房管理的便捷性和可靠性。
文中简述了系统实现所需的主要技术、设计方法和功能实现。其中主要包括通信协议的设计、硬件电路设计和软件设计方法,最终实现智能机房的远程控制,例如远程监测室内的温湿度、远程接收人体入侵报警、远程控制电灯的开关,以及对无线遥控小车的控制等功能。
1 系统总体设计
1.1 系统概述
当今智能机房系统包含的功能十分丰富,但还没有形成统一的标准。智能机房按照功能,主要包含以下几方面:机房网络系统、总控制管理系统、照明控制系统、机房安防系统、及机房环境监测系统等。
该论文从具体功能实现的技术层面,讨论了以下几个系统:环境物理量检测系统,安防系统,照明控制系统。
1.2 设计要求
为了便于系统的扩展和改造,将以模块化的方式实现需要的功能,每个模块负责一个或者几个类似的功能实现。所有模块之间使用无线方式通信,每个模块都要有各自的主控MCU、电源和具体实现功能的部件。
由于网关没有无线功能,系统中设置了一个模块负责通信中继,通信中继包含两方面:与各个功能模块的通信;与网关的通信。该模块主要是通过网关接收上位机的控制命令,传送给相应执行模块;或者接收各个模块的信息,传送给上位机。
为了扩大环境物理量的检测范围,增加一个可自主移动的平台一无线遥控小车,在该平台上可安装传感器或者无线摄像头。同时为了增加系统的可操作性,体现以人为本的设计理念,该系统还需增加一个特别的模块一遥控终端,该模块负责显示该系统的所有信息,并且可以控制其他的功能模块。
1.3 系统功能划分
整个系统实现的功能有:环境物理量检测,选择常见的温度、湿度;安防,选择有代表性的人体入侵检测;照明控制,控制电灯的开关;移动平台,选择可无线遥控的小车。
为了节省资源,将温度、湿度和人体入侵检测3个功能放人1个模块中实现。电灯开关的控制由1个模块实现。综上所述,系统一共需要5个模块,分别是:通信中继模块、遥控终端模块、温湿度及人体入侵检测模块、电灯控制模块,以及无线遥控小车。系统的组织架构如图1所示。
2 硬件设计
2.1 基础模块
5大功能模块是建立在基础模块之上的,每个模块都是通过扩展基础模块来实现具体功能的。基础模块包括MCU最小系统、无线通信模块和电源模块。
1)MCU最小系统
MCU即单片机,是每个模块系统的核心,主要负责各种信息的处理和对各种外围设备的控制,所以选择一款合适的MCU是整个系统功能实现的关键所在。该设计以市面上最常见也最通用的51单片机做为主控MCU。为了让系统有更大的扩展空间,应选择一款外设功能多样的51单片机。经过实际调查和对比,选中型号为STC12C5A60S2单片机为本设计中所有模块的主控单片机。
STC12C5A60S2单片机外设比较丰富,包括2个全双工异步串行通信(UART)接口,2路脉冲宽度调制(PWM)输出,一个同步串行外围通信(SP I)接口,8路10位精度的A/D转换等,并且该单片机支持通过异步串行接口编程,这些功能都极大了简化了系统的开发和设计。
图2为STC12C5A60S2单片机的最小系统,该系统包含如下几个部分:
①外部晶振电路
因为要使用异步串行通信,所以选择11.0592MHZ的晶振作为外部的时钟源,这样能保证异步串行通信的正确性。
②复位电路
复位电路包括上电复位和按键复位两部分。其中,上电复位是系统刚开启时复位单片机的;按键复位是在系统运行出现异常时,用于手动复位单片机。
③电源滤波电路
电源滤波电路由两个滤波电容组成,是有效防止电源波纹对单片机干扰的手段。
2)无线通信模块
无线通信模块是所有功能模块之间互相通信的“桥梁”。如图3所示,单片机A将数据传输给无线通信模块B,无线通信模块B将数据以电磁波的形式传输给无线通信模块C,最后,无线通信模块C将数据传输给单片机D,这样,就完成了模块一到模块二之间的数据传输。
目前市面常见的无线通信模块按照传输模式分为两种:非透明传输和透明传输。结合本设计的实际情况,选择透明传输模块比较适合,这样便可以很自由的设置本设计的通信协议。经过实际调查和对比,选中LSD-RFMC-B401-A2型无线透传模块。该模块是一款高性能的射频收发器,工作在470 MHz频段,全透明传输,可根据实际应用配置各种串口数据格式,可实现无限数据长度发送。
3)电源模块
电源是整个系统维持正常运行的必要条件,所以一个可靠的电源是必要的。由于整个系统中的所有部件不都是工作在相同的电压下的,所以需要不同的稳压芯片来为各个部件供电。经过实际调查,得知电路中需要5 V和3.3 V两种电压,所选选择LM2596_5.0V和LM2596_3.3V这两款稳压芯片作为每个模块的供电芯片。
2.2 通信中继模块
通信中继模块通过网关与上位机实现信息交互,所以需要一种与网关通信的方式。设计上采用在基础模块之上,添加了与网关串行异步通信的功能。由于STC12C5A60S2的异步串行通信接口使用的是TTL电平,而网关平台外部接口使用的是RS232电平,所以需要专用的电平转换芯片MAX232。如图4所示,MAX232连接到STC12C5A60S2单片机的异步串行通信接口1上,另一端连接到标准的DB9插座上。
2.3 温湿度及人体入侵检测模块
温湿度及人体入侵检测模块是在基础模块之上添加温湿度检测传感器和人体热释电检测传感器而实现的。其中温湿度的检测采用DHT11温湿度传感器,人体入侵的检测则由专用的人体热释电感应模块来实现。
人体检测模块的工作方式是,当有人进入到检测范围的时候,该模块的状态引脚输出电平由高变低,当人走出该范围的时候,状态引脚的输出电平又由低恢复到高电平。利用这一特点,可将该状态引脚直接连接到STC12C5A60S2单片机的外中断0引脚上,当该模块检测到人体时,状态引脚产生下降沿电平,触发单片机外中断0。又考虑到当人体走出检测范围时,为了让系统及时得知,将模块的状态引脚接反相器后,连接到ST12C5A60S2单片机的外中断1引脚上。这样,当人体走出检测范围时,人体检测模块的状态引脚产生上升沿电平,经反相器取反后变为下降沿电平,触发ST12C5A60S2单片机的外中断1。人体检测模块电路原理图如图5所示。
2. 4 电灯控制模块
电灯控制模块主要负责打开和关闭室内的灯光。这其中涉及到了弱电压控制强电压的问题,本模块单片机的电压为5 V,而室内灯的电压是220 V,所以需要通过继电器来实现电灯的打开和关闭。本设计采用2个常见的5 V单刀单置继电器,控制两个灯的开关。
如图6所示,电灯控制模块是在基础模块之上添加了2个受STC12C5A60S2单片机的两个I/O口P2.1和P2.0控制的继电器。当P2.0输出为低电平时,继电器1上电,从而接通JI插座的两个引脚。当P2.1输出为低电平时,继电器2上电,从而接通J2插座的两个引脚。这样。就可以通过J1和J2两个插座控制电灯的打开和关闭了。
2.5 无线遥控小车
无线遥控小车是一个可移动的平台,在小车上边可以扩展各种传感器,从而通过小车的移动扩大传感器的检测范围。小车的动力为两个直流电机,采用常见的双H桥驱动芯片L298N来驱动。单片机可以通过控制L298N芯片,间接控制小车的运动方向和速度。无线遥控小车上装有一个无线摄像头,从而可以实现远程的遥控。在小车前方,增加一些小灯,在需要的时候打开,使摄像头可以拍摄到黑暗的地方。具体模块的实现是在基础模块上添加了电机控制电路、车灯控制电路和摄像头电源控制电路。
2.6 遥控终端模块
遥控终端主要负责显示系统的各种信息和控制其他的功能模块,并且在有人进入检测范围时,提供警报功能。针对显示部分,考虑到信息量较少,所以采用1602字符液晶屏显示,该字符型液晶屏可一次显示32个字符;针对遥控部分,考虑到需要控制的功能较多,且需要节省单片机的I/O口资源,所以采用4x4矩阵键盘,该键盘可以实现16个按键输入,但只用了单片机的8个I/O口。针对报警功能。可使用一个蜂鸣器实现。
3 软件设计
3.1 通信协议设计
通信协议主要包括两方面内容:1)通信中继模块与上位机通信的协议;2)各模块间的通信协议。无论哪方面的通信,都应该首先保证通信数据的正确性和可解析性。
3.1.1 通信中继与上位机通信协议
通信中继模块与上位机的通信包括:向上位机发送采集信息、接收上位机的命令。其中接收的命令应该尽量简短,这是由于单片机的资源有限,不适合处理长字符串。
1)上传信息协议
下位机以字符串的方式上传数据,每个数据的字符串必须同时满足以下2个条件:
①字符串长度为9个字符;
②以“(”开头,以“)”结尾。
如果不满足以上条件,上位机应放弃处理该数据,并且立刻请求下位机重新发送数据。字符串的形式为:(0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF),各字节含义如表1所示。
如果字节的数据为“0xEE”,表示上传的数据中没有对应字节的信息。
2)控制命令协议
控制命令也是以字符串形式传送。每个命令字符串必须同时满足以下2个条件:
①字符串长度为5个字符;
②以“(”开头,以“)”结尾。
如果不满足以上条件,中继模块应放弃处理该条命令。命令字符串的形式为:(acb)。其中“abc”是命令信息,是某条英文指令的缩写,例如打开灯1,英文为“open light 1”,缩写为“oll”,如果想关闭灯1,则发送字符串“(cl1)”。如果缩写后的命令不足3个字符,则用字符“0”补全。所有控制命令及含义如表2所示。
3.1.2 模块闻通信协议
由于使用的是透明传输模块,一个模块发送给另一个模块的信息是可以被其他所有模块接收到的,所以应该在信息中加入地址机制,每个模块都有自己的地址。在某个模块接收到数据时,应首先判断数据中接收地址是否与自己的地址一致,如果一致,则继续处理该数据,反之则放弃该数据。
考虑到模块间通信的多种情况,将模块间通信信息归纳为2种:命令和状态信息,则对应协议也为2种。
1)中继模块或遥控终端模块发送命令
以字符串的形式发送命令,该命令字符串应满足以下两个条件:
①字符串长度为7;
②字符串以“(”开头,以“)”结尾。
若其它模块接收到的命令字符串不满足以上两个条件,则放弃处理该命令。命令字符串的形式为:(xyabc),其中“x”表示接收模块的地址,“y”表示发送模块的地址,“abc"为要执行的命令缩写,同表2中“发送命令”项括号内字符串。模块地址的约定,见表3。表中通信中继模块和遥控终端模块的地址是一样的,这样就可以同时处理接收到其他模块发送的信息数据了。
2)中继模块和遥控终端模块接收状态信息
由于其它模块向中继模块和遥控终端模块发送状态信息的长度不一,所以以最长的状态信息为准,也就是以温湿度及人体检测模块的状态信息长度为准,其它模块状态信息位的长度不足的以字符“0”补全。该命令字符串应满足以下2个条件:
①字符串长度为9;
②字符串以“(”开头,以“)”结尾。
若通信中继模块和遥控终端模块接收到的命令字符串不满足以上两个条件,则放弃处理该信息。信息字符串的形式为:(xyabcde),其中“x”表示接收模块的地址,这里应该为“0x11”,“Y”表示发送模块的地址。“ahede”则表示发送模块的状态信息。
针对温湿度及人体检测模块,“ah”以ASCII码形式表示温度,“cd”以ASCII码形式表示湿度,“a”和“c”表示十位,“b”和“d”表示个位。“e”的前半字节表示人体检测是否开启,后半字节表示是否认有人进入检测范围。针对电灯控制模块,“a”的前半字节表示灯1的开关状态,后半字节表示灯2的开关状态。针对无线遥控小车,“a”的前半字节表示小车前灯的开关状态,后半字节表示摄像头的开关状态。
3.2 通信中继模块
通信中继模块主要处理两件事:1)接收上位机的命令,并根据命令的内容,按照协议发送给对应模块;2)接收每个模块的信息,按照协议发送给上位机。
3.3 温湿度及人体入侵检测模块
该模块主要实现两大功能:1)温湿度和人体入侵检测,并将检测信息传送给中继模块和遥控终端,以实现实时显示;2)处理中继模块转发的控制命令。程序中通过两个标志位区别是上传检测信息还是处理控制命令。当判断是控制命令时,再具体分析是何命令并执行该命令,执行完毕,将新的状态信息返回给中继模块和遥控终端模块,然后等待下一条命令。
3.4 电灯控制模块
电灯控制模块实现控制电灯1、2的开启和关闭操作。程序中通过一个标志位判断接收信息是否为控制命令,若是则判断具体命令并执行,执行完毕按照协议更新状态信息,并按照协议把状态信息返回给中继模块和遥控终端模块,然后等待下一条命令。
3.5 无线遥控小车
无线遥控小车模块实现两大功能:小车运动控制;小车前灯和摄像头的打开和关闭控制。程序中通过一个标志位判断接收信息是否为控制命令,若是则判断具体命令,如果是运动命令,则执行相应的运行命令,延时600 ms后,停止运动,然后等待下一条命令;如果不是运动命令,则执行该命令后,按照协议更新状态信息,并按照协议把状态信息返回给中继模块和遥控终端模块,然后等待下一条命令。
3.6 遥控终端模块
遥控终端模块实现三大功能:在字符液晶屏上显示系统状态信息;按键检测及发送命令;启动和关闭蜂鸣器。程序启动后一直判断是否有按键按下,如果有按键按下,则检测按键,并将按键对应的命令按照协议传输给其它模块,然后延时500 ms,等待下一次按键。若没有按键,则检测标志位Flag是否等于1。若Flag等于1,表示接收到了其它模块的状态信息,然后按照信息的内容更新液晶屏对应的内容,如果来自温湿度及人体检测模块的信息中有检测到人体进入检测区的信息,则打开蜂鸣器2 s。
4 系统测试
系统测试分3部分:1)以通信中继模块为主:从上位机下发送正常合法的命令,观察现象;之后再发送不合法的命令,观察现象。2)以遥控终端模块为主:依次按键,观察现象。3)以人体感应模块为主:测试人体检测功能。测试时为方便起见,将通信中继模块用串口线直接连到PC上,通过串口调试助手操作并观察。
4.1 通信中继模块测设
发送字符串“(g00)”:小车前进了一小段距离。
发送字符串“(ol1)”:电灯1打开。
发送字符串“(cl2)”:电灯2关闭。
发送字符串“(mmm)j”:系统不做任何动作。
4.2 遥控终端模块测设
按“前进”按键,小车前进一小段距离。一直按住“左转”按键,小车原地向左转圈。
按“开灯1”按键,电灯1打开,同时液晶屏上的对应信息也随之改变。
4.3 人体检测模块测设
用手在该模块上方划过,终端模块的蜂鸣器响起,同时液晶屏提示有人进入该范围。串口调试助手也收到“0x28 0Xf0 0x32 0x33 0x34 0x30 0x00 0xff 0x29”十六进制的字符串,根据协议可得知第8个字节表示人体检测的状态信息,前半字节表示该功能是否开启,后半字节表示是否有人进入检测范围,所以,“0xff”表示检测到了人体进入检测范围。
5 结束语
该系统以最常用也最可靠的电灯开关控制、温湿度检测和人体入侵检测为主要切入点,同时加入了可扩展的移动平台——无线遥控小车,考虑到系统的独立性与完美性,又加入了遥控终端模块,这样使得整个系统可以在不依赖上位机的情况下执行各种操作。
系统难点是各模块间通信协议的设计,经过反复的研究和查找资料,最终参考了以太网数据帧的形式,将每个模块指定一个地址,在传输数据的开头将目标模块地址和发送模块地址写入,这样接收的模块就能根据该地址去判断该如何处理该数据。经过反复的调试与修改,本系统最终实现了预期的所有功能。