当前位置:首页 > 教案设计 >

基于物联网的远程设备控制系统的设计

时间:2022-10-24 12:40:02 来源:网友投稿

摘要:为了实现设备远程的控制,本文介绍了以STM32为主控芯片,以NRF24l01芯片作为无线传感网络通讯芯片,ENC28J60作为以太网通信芯片,在使用SmallRTOS操作系统的情况下,利用STemWin图形库设计显示界面,基于LwIP协议栈的底层控制系统。服务器利用JSP开发作为在线用户管理,Android作为用户应用软件控制的操作系统平台。该方案不仅降低了开发成本,而且经过实际测验表明该方案性能可靠,使用方便,具有非常高的应用价值。

Abstract: In order to realize the remote control of equipment, this paper introduces STM32 as the main control chip, NRF24l01 as the wireless sensor network communication chip, ENC28J60 as the Ethernet communication chip, and uses the STemWin graphics library when using the SmallRTOS operating system. The design display interface is based on the underlying control system of the LwIP protocol stack. The server uses JSP development as an online user management and Android as an operating system platform controlled by user application software. The program not only reduces the development cost, but also shows that the program is reliable and easy to use, and has a very high application value.

关键词: STM32;ENC28J60;LwIP;Smallrtos;STemwin;JSP;服务器;Android;控制

Key words: STM32;ENC28J60;LwIP;Smallrtos STemwin;JSP;server;Android;control

中图分类号:TP393 文献标识码:A 文章编号:1006-4311(2018)21-0170-04

0 引言

近年来,随着电子与通信技术的发展以及物联网的普及,特别是嵌入式系统技术和移动智能终端的出现,为远程设备控制领域发展提供了一种全新的模式。现阶段我国远程设备控制的发展主要有一下3个问题:系统复杂、价格昂贵、通用性较低。嵌入式系统使用的linux的嵌入式操作系统开发难度较大;再次就是不同的厂家使用不同的协议规范,兼容性较差。

本文设计的物联网的远程设备控制系统选择了意法半导体公式基于Cortex-M4内核生产的STM32F407系列的嵌入式微处理器为主控制器,ST公司专门有提供了该单片机的SDK库,可以大大提高开发的周期与难度。无线节点采用芯片也是意法半导体公司生产的STM8s103f3的8位CPU,有提供的SDK库,开发周期短。操作系统选择了国内开源免费的SmallRTOS操作系统,它是完全免费、源代码公开的多任务实时操作系统。网络通信协议选择了lwip,lwip是瑞典计算机科学院(SICS)的Adam Dunkels开发的一个小型开源的TCP/IP协议栈,该协议在运行的过程中只占用很小的ram,非常适合在嵌入式系统上使用。网络接口采用了Microchip公司生产的ENC8J60,它是最高传输速度10m,带spi接口的独立以太网控制器。本系统通过无线组网,底层控制,服务器管理,从而实现用户在Android手机上通过开发的APP进行远程控制。

1 系统整体方案

无线节点与远程设备电性连接,以便无线节点根据接收到的系统控制命令对远程设备的工作状态进行控制。无线节点还用于获取所述遠程设备的状态信息,并将获得的远程设备的状态信息发送至所述远程设备网关,最终由远程设备网关发送给远程服务器。系统整体的结构框图如图1所示。

Android手机APP通过网络连接远程的服务器。手机客户端可实时查看远程设备数据,或下发控制指令,远程设备网关通过有线网络接入到互联网,处理来之Android端转发给服务器的各种控制命令。用户只要通过Android智能终端安装相应的APP就可以实现查看控制控制远程设备的各种数据,同时还还可以根据这些数据对于控制对象进行相应的控制操作。这种完善的控制系统,可以在任意有互联网的地方,通过Android智能终端就可以进行实时的控制。

2 系统硬件电路的设计

远程设备网关的部分硬件电路,即是微处理器最小系统电路,如图2所示,处理器为意法半导体公司生产的基于Cortex-M4内核的STM32F407ZET6,该单片机是一款具有高性能,低成本,低功耗的32位处理器,在180MHz的工作频率下通过闪存执行指令时可实现225 DMIPS/608 CoreMark的性能。随附增强外设和连接的输入/输出,它们包括 ADC、DAC、RTC、16 位计时器、32 位计时器。广泛应用于工业控制领域。

NRF24L01是由NORDIC生产的工作在2.4GHz~2.5GHz的ISM 频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型“SchockBurst”模式控制器、功率放大器、晶体振荡器、调制器和解调器。NRF24L01无线组网接口电路如图3所示。由于NRF24L01采用的SPI通讯,微处理器本身带有SPI接口,使用6根线就可以实现微处理器的连接。将管脚CE、CSN、IRQ、SCK、MISO和MOSI与STM32芯片进行通讯。

无线节点电路如图4所示,无线节点的芯片采用的意法半导体公司生产的STM8系列的处理器,该处理器具有3级流水线、扩展指令集、8k字节的Flash、1k字节的ram、640字节的EEPROM、32个中断嵌套中断控制器、32位,16位,8位定时器、usart、spi、adc、支持单线(SWIM)和调试模块(DM),可直接在线编程与调试。

ENC28J60网络通讯接口和主控制器通过SPI通讯接口相连,连接接口为:PB3→SCK,PB4→MISO,PB5→MOSI。

3 系统软件设计

3.1 SmallRtos操作系统的移植

嵌入式系统上采用的操作系统十分之多,本系统采用的SmallRtos专门为STM32系列处理器开发。首先将需要的文件添加到自己的工程目录下。然后配置头文件路径。然后在代码中调用OSStart()启动操作系统即可。

3.2 LwIP协议栈的移植

基于TCP协议的网路应用十分的常见,本系统利用STM32作为主控器,与服务器连接的部分交给了操作系统来处理,当接收到网络数据包后,以消息邮箱的方式提交给tcp/ip核心处理任务,核心任务在将数据提交给应用线程进行数据处理。Lwip的操作系统支持在lwip_arch文件下,完成以下关于操作系统移植的函数即可:

LwIP工作在使用操作系统的时候,可以直接调用协议栈内部关于socket的函数,这些函数与linux的socket相关的函数非常的相似。调用此类函数开发简单,维护简单,不需要关心底层数据传输的情况,效率较高。利用LwIP编写TCP类型的应用程序,在移植的时候主要实现的是网络接口层netif-output和netif-iput函数,移植完成后,就可以利用LwIP的应用层接口编写应用程序,而网络层和传输层则由LwIP协议栈内部完成。

在LwIP_Init()函数中,通过调用lwip_init()函数,完成网络接口体链表、内存池、pbuf接口提的初始化。在通过调用netif_add()函数,完成ENC28J60与LwIP的接口的初始化,并且对IP地址、子网掩码、网关、网卡信息指针、初始化函数和输入函数进行配置。

3.3 STemWin的移植

STemWin图形库由德国SEGGER公司开发,可为图形LCD设计提供高级支持,极大简化了LCD设计并缩短上市时间。为ST ARM微控制器用户免费提供的emWin图形库,以其免费提供商业图库、使用简单、提升MCU运行表现和色彩逼真。TemWin的移植需要将一下的文件加载工程中,如图5所示。

3.4 无线节点通信协议

无线通信包为固定的字长32bytes,该包被划分为6个部分,每个部分代表相应的含义,划分如表1所示。命令的控制在数据区再进行详细的划分。数据区根据发送类型划分为两种不同的格式,见表2。数据包协议包括包头,主机ID,包ID,接收者ID,发送类型和数据区。发送的数据区中,类型数据为0表示控制命令,并携带操作类型和参数;为1表示是返回数据命令,返回端口的各种参数,例如温度。

3.5 服务器的开发

服务器利用jsp语言进行开发,数据库采用开源的MySql,服务器的搭建由Tomcat实现。主控器与服务器交互通过HttpServlet进行,数据的请求通过HttpServletRequest记进行传递,当服务器收到数据,通过相应的数据解析后,转换为json格式在转发给相应的用户。

3.6 Android端应用程序开发

Androd端采用Android studio进行开发,与服务器的数据交互通过http协议进行交互,Android端支持登录、注册、添加好友。通过异步加载,实时获取被控制系统的节点信息,并且能够实时控制与获取传感器节点的状态。http的通讯移植了开源的AsyncHttp组件,该组件封装了与http有关的操作,用户不用太过于关心协议方面的东西即可着手开始开发。

3.7 系统程序运行流程

系统开始运行时,首先对各个模块进行初始化,建立网络连接,通过调用协议栈底层函数配置有关参数。通过定时器查询方式不断获取网卡获取到的数据,传送给应用层,然后进行解析数据后,转发给相应的无线节点进行控制。在主程序中完成对微处理器时钟的初始化、中断的初始化、NRF24L01的初始化、触摸屏的初始化、文件系统的初始化、STemWin的初始化、Lwip的初始化、查询定时器的初始化、SmallRTOS的初始化、Socket应用层程序和各个线程的初始化。主函数部分代码如下所示:

4 实际测试

在实验室的环境中,用路由器连接到外网,以便于主控器直接与外网进行连接以此验证该系统的可靠性。将服务器软件加载到远程服务器上并运行服务器,主控器通过网线接入到路由器中,路由器连接到外网。主控器会自动获取设备的IP地址等相关信息,上电运行系统,主控器自动连接到远程服务器,并不断发起链接,显示屏显示系统的控制界面。

Android端安装控制APP,登录用户,连接到开发板上登录的用户,刷新界面后就会看到已经连接到主控器的无線节点如图6所示。通过Android端就可以实时观测到室内的温度变化,并通过选择控制的端口来控制电灯、风扇。该种控制方便快捷,符合了移动智能终端控制的发展要求。

5 结束语

利用STM32F4、ENC28J60、STemWin和LwIP协议栈的物联网控制系统,与同类的嵌入式产品在成本上具有较大的优势,且大大降低了开发难度,各个模块内聚高,耦合低,易于维护,为物联网控制提供了一种可行的方案。特别是它是一种远程多用户的控制系统,对于多家庭,多用户管理没有丝毫的问题,在任何一台Android智能终端与任何家庭都可以进行实时的控制,符合物联网发展的趋势,有着非常广阔的应用空间。

参考文献:

[1]胡永利,孙艳丰,尹包才.物联网信息感知与交互技术[J].计算机学报,2012(635):1147-1163.

[2]龚成莹,邢敬宏,胡银保.基于JSON的Android移动终端与PHP及MySQL数据通信[J].工业仪表和自动化装置,2013(1):63-69.

[3]钱志鸿,王义君.面向物联网的无线传感器网络综述[J].电子与信息学报,2013,1(35):215-227.

[4]姜永增,董晶,宋广军,吴迪.物联网智能家居无线传感器网络节点设计[J].制造业自动化,2011(33)2:187-189.

[5]刘恒,马建仓,张小兵.基于nRF24E1的点到多点的无线测控系统的设计[J].微电子学与计算机,2006,23(11):78-80.

[6]魏振春,韩江洪,张建军,张利.智能家居远程控制系统的设计[J].合肥工业大学学报(自然科学版),2005,28(7):751-754.

[7]LJ Chen.. Design and Implementation of Remote Control Intelligent Home System Based on Internet of Things[J]. Journal of Shandong Agricultural University, 2016-01.

推荐访问:联网 控制系统 设备 设计