APP下载

利用W5500实现继电器远程控制

2016-05-31罗萍

物联网技术 2016年5期
关键词:远程控制继电器单片机

摘 要:文中提出了采用单片机STC15F2K60S2和以太网控制芯片W5500的继电器远程控制方案,并给出了各模块的详细电路图以及单片机主程序流程图。该方案工作可靠、网络安全性高、性价比高,在智能楼宇、智能家居等领域有着良好的应用前景。

关键词:远程控制;W5500;单片机;继电器

中图分类号:TP39 文献标识码:A 文章编号:2095-1302(2016)05-00-04

0 引 言

继电器远程控制的实现不仅方便了操作并且提高了效率。只要有网络的地方就可以对继电器进行控制,再由继电器控制其他设备,从而实现设备的远程控制。通过使用以太网控制芯片W5500,利用TCP协议,便可实现继电器的远程控制。

1 系统总体结构

系统总体结构如图1所示。计算机作为客户端,W5500作为服务器,利用TCP协议实现客户端到服务器的连接。计算机端使用广州致远电子有限公司开发的免费软件“TCP&UDP测试工具”发送继电器控制命令;控制命令经网络传送到W5500;单片机通过读取W5500的接收数据存储器接收控制命令,并根据命令对继电器进行开关控制。系统所需的主要工作包括W5500网络控制模块电路的设计、单片机及继电器控制模块电路的设计和单片机控制程序的设计。

图1 系统总体结构

2 硬件设计

2.1 W5500网络控制模块

系统以W5500芯片为核心组成网络控制模块,采用TCP协议与计算机端进行通信,接收计算机端发送来的继电器控制命令。

2.1.1 W5500简介

由于OSI(Open System Interconnection,开放式系统互联)七层协议的网络体系结构模型与TCP/IP四层协议的网络体系结构模型都有各自的优缺点,因此在分析、研究计算机网络时往往采用Andrew S.Tanenbaum教授建议的综合以上两种模型优点的五层协议的网络体系结构模型,它包括物理层、数据链路层、网络层、传输层以及应用层。

W5500是韩国WIZnet公司于2013年推出的一款以太网控制芯片,它整合了五层计算机网络体系结构中的前四层,即物理层、数据链路层、网络层和传输层,并在内部利用硬件实现了TCP/IP协议栈。全硬件TCP/IP协议栈完全独立于主控芯片,可降低主芯片负载且无需移植繁琐的TCP/IP协议栈;可有效应对网络攻击和病毒,安全性高[1]。W5500为用户提供了一个简易的互联网连接方案。W5500功能框图如图2所示。

图2 W5500的功能框图

W5500集成了硬件TCP/IP协议,包括TCP,UDP,IPv4,ICMP,ARP,IGMP以及PPPoE协议和以太网的PHY和MAC层。W5500内嵌32 K字节收发缓存以供以太网包处理。用户使用W5500,只需要一些简单的Socket编程就能实现以太网应用。这将会比采用软件实现TCP/IP协议栈的传统以太网方案更加快捷、简便。用户可以同时使用8个硬件Socket独立通讯。W5500提供了串行外设接口(Serial Peripheral Interface,SPI),从而能够更加容易地与外设MCU整合。而且W5500使用了新的高效SPI协议支持80 MHz速率,从而能够更好地实现高速网络通讯。为了减少系统能耗,W5500提供了网络唤醒模式(Wake on LAN,WoL)及掉电模式供用户选择使用[2]。

2.1.2 W5500网络控制模块电路设计

W5500网络控制模块电路如图3所示。其中,P1为带网络变压器的RJ45插座,通过网线与网络连接;P2插针用于模块供电以及和单片机连接。W5500正常工作时,需提供3.3 V数字电源,VDD(28脚)对GND(29脚);3.3 V模拟电源,AVDD(4/8/11/15/17/21脚)对AGND(3/9/14/16/19/48脚)。为方便与外部不同工作电压的单片机控制系统配合工作,本模块可通过P2插针输入+5 V或3.3 V电压供电。当外部输入电压为+5 V时,+5 V电源经低压差电压调节器U1 LM1117-3.3转换为+3.3 V电压输出,对整个模块供电,并可通过P2插针的+3 V 3D引脚给其它模块提供3.3 V电源。

W5500的XI(30脚)、XO(31脚)为时钟引脚,共外接25 MHz石英晶体振荡电路;RSTn(37脚)为复位引脚,低电平有效,和单片机I/O引脚连接,由单片机控制W5500进行复位;PMODE2(43脚)、PMODE1(44脚)、PMOD0(45脚)为网络工作模式选择引脚,设置为“所有功能,启动自动协商”;EXRES1(10脚)为外部参考电阻引脚,外接一个精度为1%的12.4 kΩ外部参考电阻,为内部模拟电路提供偏压;TOCAP(20脚)为外部参考电容引脚,外接一个4.7 μF电容,而且到该电容的走线要尽量短一些,以保证内部信号的稳定;1V2O为内部稳压器1.2 V电压输出引脚,外接一个10 nF电容;TXN(1脚)、TXP(2脚)为差分信号发送引脚;RXN(5脚)、RXP(6脚)为差分信号接收引脚;SCSn(32脚)为W5500的SPI接口片选引脚,低电平有效;SCLK(33脚)为SPI时钟输入引脚;MISO(34脚)为SPI主机输入从机(W5500)输出引脚;MOSI(35脚)为SPI主机输出从机(W5500)输入引脚;INTn(36脚)为W5500中断输出引脚,低电平有效。

2.2 单片机及继电器控制模块

W5500利用硬件实现了TCP/IP协议栈,大大降低了主控芯片负载,使得应用广泛的8位单片机也能顺利完成以太网接入。本方案采用我国宏晶科技公司最新推出的内置高速SPI接口的增强型8051单片机STC15F2K60S2作为主控芯片。

2.2.1 STC15F2K60S2简介

STC15F2K60S2 单片机采用1T(1时钟周期/机器周期)增强型8051内核,速度比传统8051单片机快7~12倍,也比STC早期的1T系列单片机(如STC12/11/10系列)快20%;内置大容量2 KB的RAM数据存储器,1 KB的Flash数据存储器,60 KB的Flash程序存储器;具有3个16位可自动重装的定时/计数器(T0/T1/T2),1个高速SPI,8通道10位ADC等资源。并且,它内部集成高精度R/C时钟(±0.3%),频率从5 MHz~35 MHz可选(相当于传统8051:60 MHz~420 MHz),可彻底省掉外部昂贵的晶振;内部集成高可靠复位电路,ISP编程时8级复位门槛电压可选,可彻底省掉外部复位电路;具有在系统编程(In System Programming,ISP)功能,无需专用编程器[3]。

2.2.2 单片机及继电器控制模块电路设计

单片机及继电器控制模块电路如图4所示。STC15F2K60S2单片机控制电路省略了传统8051单片机最小应用系统中所必需的外部晶振、外部复位电路,提供+5 V电源单片机即可工作,外围电路非常简洁。在电源+5 V和GND之间就近加上电源去耦电容C21(10μF)、C22(0.1μF),可去除电源线噪声,提高抗干扰能力。P3为单片机ISP接口,便于采用USB转TTL电平的串口下载线进行系统软件的升级;P4为单片机SPI接口,用于和W5500芯片通信。

系统中设计了两路继电器控制电路,可用于控制外部开关量。继电器的驱动电路由三极管Q1、Q2组成,Q1、Q2起功率放大作用。继电器K1、K2分别由单片机的P2.7、P2.6引脚控制。继电器K1、K2的常开、常闭触点分别经接线端子P5、P6引出。

3 软件设计

通过W5500利用TCP协议实现继电器远程控制的单片机程序采用C语言编写,主程序流程图如图5所示。

在主程序中,首先进行单片机的SPI接口和W5500模块的初始化,然后检查W5500是否接收到数据。若接收到数据,则单片机读取W5500的数据接收存储器,并根据读取到的命令对继电器进行控制。在计算机端发送命令“open+RLY_K1”或者“open+RLY_K2”打开继电器K1和K2,发送命令“close+RLY_K1”或者“close+RLY_K2”则关闭继电器K1和K2。各程序模块主要工作包括以下几项内容。

3.1 SPI接口初始化

STC15F2K60S2单片机通过SPI接口与W5500进行通信,对W5500所有的操作都需要通过SPI接口进行数据传输。在对W5500进行数据传输之前,要先对STC15F2K60S2的SPI接口的相关寄存器进行设置,即SPI接口的初始化。STC15F2K60S2单片机SPI接口的初始化包括以下几点:

通过SPI控制寄存器SPCTL设置:忽略引脚,SPI使能,数据字的最低位(LSB)最先传送,设置为主机,SPI空闲时SCK=1,数据在SCK的前时钟沿驱动到SPI口线,SPI模块在后时钟沿采样。

清0寄存器SPSTAT中的标志位SPIF和WCOL(向这两个标志位写1即可清0)。

开放SPI中断(IE2中的ESPI=1,IE2寄存器不能位寻址,可使用“或”指令进行设置)。

开放总中断(IE中的EA=1)。

3.2 W5500初始化

在使用W5500之前,首先应对其进行初始化,正确设置以下寄存器:模式寄存器(MR)、中断屏蔽寄存器(IMR)、重发时间寄存器(RTR)、重发次数寄存器(RCR)、本机硬件地址寄存器(SHAR)、网关地址寄存器(GAR)、子网掩码寄存器(SUBR)、本机IP地址寄存器(SIPR)以及设置Socket存储器信息。初始化过程结束后,W5500可以以TCP、UDP、IPRAW和MACRAW的模式打开Socket,以进行数据的发送和接收。

3.3 接收数据

接收数据时,需要检查寄存器Sn_RX_RSR,检查数据是否已经被接收到:如果Sn_RX_RSR的值大于0,则说明接收到的数据在接收存储器(RX buffer)中,然后通过读取RX读指针寄存器(Sn_RX_RD0)获取数据地址,然后将数据从W5500接收存储器中读出,并存放到单片机端的接收缓冲区RX_BUF数组中。

图5 单片机主程序流程图

3.4 读取命令,控制继电器

通过查找RX_BUF数组中是否包含有“open+RLY_K1”、“open+RLY_K2”、“close+RLY_K1”或者“close+RLY_K2”命令,并根据读取到的命令,通过控制单片机P2.7、P2.6引脚电平的高低对继电器K1、K2进行开关控制。

3.5 清空接收缓冲区

清空单片机端的接收缓冲区RX_BUF数组,为接收下一个控制命令做好准备。

4 实验结果

在计算机端打开 “TCP&UDP测试工具”,点击“创建连接”,选择类型为“TCP”,目标IP为W5500的本机IP地址,端口为W5500的Socket0的端口号,本机端口设置为“随机选择端口”,完成客户端的创建;连接好网线,给单片机控制模块、W5500网络控制模块上电,点击“TCP&UDP测试工具”上的“连接”,客户端(计算机端)与服务端(W5500模块)连接成功;通过“TCP&UDP测试工具”分别发送“open+RLY_K1”、“open+RLY_K2”、“close+RLY_K1”、“close+RLY_K2”等命令,能正确控制对应的继电器接通断。

5 结 语

本文提出了基于STC15F2K60S2+W5500的继电器远程控制方案,并给出了各电路模块详细的电路图和单片机主程序流程图。通过网络,对继电器进行远程控制,再由继电器控制其他设备,便可实现设备的远程控制。在需要远程控制的设备数量较多的应用场合中,还可以根据以上设计方案增加继电器的路数来实现。该方案工作可靠、网络安全性高、性价比高,在智能楼宇、智能家居等领域有着良好的应用前景。

参考文献

[1] 陈桂友,陈海峰,贺红.物联网智能网关设计与应用[M].北京:北京航空航天大学出版社,2013:222-224.

[2] WIZnet.W5500 Datasheet Version 1.0.6[EB/OL].(2014-12-30)[2015-12-18]. http://wizwiki.net/wiki/lib/exe/fetch.php?media=products:w5500:w5500_ds_v106e_141230.pdf

[3] 吴永德,罗萍.基于STC15F2K60S2单片机的LED光立方设计[J].电脑编程技巧与维护,2015(11):81-84.

猜你喜欢

远程控制继电器单片机
便携式继电器测试台的研制和应用
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
电气工程及其自动化控制系统中继电器的应用
水冷发射机冷却系统故障分析及解决方案
基于GSM的远程控制系统
继电器在电气工程及其自动化低压电器中的作用
Microchip推出两个全新PIC单片机系列
泓格科技继电器输出模块-87061PW