基于STM32的物联网系统的设计
2015-05-15赖树明杨卓鑫张丽娟韩清涛
赖树明,杨卓鑫,张丽娟,韩清涛,任 斌
(1、东莞理工学院 电子工程学院,广东东莞,523808; 2、东莞理工学院 计算机学院,广东东莞,523808)
0 引言
现在很多物联网的设计比较简单,接口比较单一,没有多样化,这样在很多复杂的工业场合,比如很多工业场合会用不同的接口连接,但由于物联网的一些设计比较单一,所以需要更换或者再另外买进或者研发一些适合的通信技术,因此大大地增加了不便和投资成本。为了适应不同的工业现场和降低投资的成本,我们研究了一款基于STM32设计的物联网开发应用系统,该系统中聚集了RFID、传感技术和多样化接口的无线和有线通信技术,根据不同的工业现场环境选择性的接入相应的通信接口,这样在不同的工业环境不需要重新研发相对应的通信技术。这样集成化的方式减少了大量的财力和物力,使物联网技术得到更好的发展和应用。
1 系统的总体设计
该物联网系统采用STM32作为控制芯片,综合应用了Zigbee、WIfi、GSM、蓝牙、以太网、CAN总线、RS485、RS232、USB等有线和无线通信技术及RFID身份识别技术。系统的整体
通过各类传感器和RFID对工业现场数据进行采集,再根据实际环境通过按键中断选择如上图所示左边的zigbee、wifi、以太网等传送方式传送到STM32处理,不同的通信模式数据将划区域的存放到falsh中,再通过按键中断选择wifi、以太网、框架图如下图1所示:USB模式将有效的flash区域的数据传送至PC机处理和控制;整个过程的通信模式都会通过液晶屏显示出来。
图1 系统的整体框架图
2 系统硬件设计
2.1 总体硬件框图
在上图2中控制单元采用STM32F103XX基本型系列。它使用高性能的ARM CortexM3 32bit的RISC内核,内置高速存储器,工作频率为72MHZ,CPU能以零等待周期访问,丰富的增强型外设和I/O口连接到两条APB外设。所有型号器件都包含1个12bit的ADC和3个通用的16bit定时器,还包含标准的通讯接口;2个IIC,2个SPI和3个USART。在上述硬件框图中STM32是通过IO口模拟时序来控制CAN总线收发器和RFID存储模块;通过内部的SPI通信接口与以太网模块和flash存储模块通信;通过内部的USART通信接口与RS485、GPRS、zigbee等模块通信。可以看出stm32的内部通信接口是不够用的,因此通过74HC573锁存器将其分时段的应用。
3 软件的设计
软件采用C语言编写,在keil环境下开发,应用STM32将各个通信模块方式汇集起来。
3.1 总体的软件流程图
如图3所示,开始工作时,MCU的时钟自动设置并设置外部中断,然后检测外部中断,若有外部中断,则根据外部中断设定进行总线选择性的初始化,然后根据初始化将采集进来的数据存放到对应的Flash数据区域,然后再将Flash中的数据读出传输到PC机上,传送完毕接着等待下一次外部中断的发生。若没有中断发生,则根据初始化将采集进来的数据存放到对应的FLASH数据区域,并根据初始化将数据从FLASH中读出传输到PC机中,然后回到判断是否有外部中断,并进行循环。
图3 总体的软件流程图
图2 总体硬件框图
3.1.1 zigbee协调器的软件流程图
如图4所示,zigbee协调器工作时,先上点激活,然后开始信道主动扫描,检查是否收到信标帧,若收到,则监听信标帧,并选择父节点入网,选择之后发送入网请求,若收到入网回复,则建立新子节点,意味着入网成功,若没有收到入网回复,则判断是否有没申请的父节点,如果有则重新监听信标帧,若没有则入网失败,所申请父节点作为冗余节点进入休眠模式;若之前没有收到信标帧,则信道扫描变为被动模式,然后建立网络,如果收到入网请求,自动判断地址空间是否满了,如果满了,则没有地址空间,加入新子节点失败,若地址空间没有满,则分配地址,并回复入网请求,回复成功后允许子节点入网。
3.1.2 zigbee节点软件流程图
如图5所示,开始工作时,设备自动初始化,之后通过zigbee协调器的工作申请加入zigbee网络,若加入之后与协调器绑定,就可以周期性发送数据。
3.1.3 以太网模块的软件流程图
如图6所示,工作时,ENC28J60的硬件自动初始化,Uip协议网络也开始初始化,初始化完毕,根据外部中断判断是否需要切换监听端口,如果需要,则改变监听端口,若不需要,则轮询处理数据。处理数据结束,在判断是否需要切换监听端口,继续循环。
图4 zigbee协调器的软件流程图
3.1.4 RFID的软件流程图
如图7所示,开始工作时,MCU对时钟开始配置,并对外设进行初始化。初始化完毕,查询串口是否有收到数据,如果有,则扫描从PC接收数据缓冲区,并根据收到的数据执行命令,然后设置IOSI4443A协议,并执行防冲突算法用来识别标签,接着传输标签数据:如果没有收到数据,直接设置协议,接着执行防冲突算法,最后传输数据,传输数据完毕,再循环判断查询串口是否有收到数据。
3.1.5 USB软件流程图
如图8所示,工作时,MCU对时钟和外设接口开始配置,并配置usb中断,然后对usb初始化。初始化结束,判断发送缓冲区是否有数据,如果有数据,则发送数据,并对数据进行处理;如果没有,则判断接受缓冲区是否有数据,如果有,则接收数据,并对数据进行处理,如果没有,则循环回到判断发送缓冲区是否有数据。
图5 zigbee节点软件流程图
图6 以太网模块的软件流程图
图7 RFID的软件流程图
图8 USB软件流程图
3.1.6 CAN总线的软件流程图
如图9所示,开始工作时,首先MCP2515初始化,并等待中断,如果有中断发生,则先关闭中断,并读取MCP2515的中断标志,用以判断中断类型,假如是发送中断,则转发送中断处理子程序;假如是接受中断,则转接受中断处理子程序:假如是错误中断,则转错误中断处理子程序。之后进行过滤匹配判断,若不是,则进行无效报文,如果是,则进行处理请求,然后打开中断允许,最后回到对MCP2515初始化循环。
3.1.7 GSM模块的软件流程图
如图10所示,工作时,对MCU串口和GSM模块进行初始化,并测试TCP/IP,如果测试不成功,则再进行测试,如果成功,进行TCP连接,并判断是否连接成功,如果没有,则不断进行连接,直到成功。成功后等待中断,如果有中断发生,则先关中断,并读取中断标志,然后判断中断类型,如果是发中断,则发送数据;如果是接受中断,则接受处理子程序,完毕之后,则打开中断,并回到判断中断部分,进行循环。
3.1.8 wifi的软件流程图
如图11所示,开始工作时,对WIFI进行初始化成为服务器工作状态,然后检查WIFI的网络状态并开始连接,接着CPU开始监听WIFI的数据情况,并判断有没有数据进来。如果有数据进来,则获取数据到缓存器中,然后读取WIFI在FLASH中的存储地址并把数据存储到FLASH中;如果没有数据进来,首先判断是否发送数据,如果不是,则再次判断有没有数据进来,如果是要发送数据,则先读取FLASH的地址,然后获取要发送的数据,然后通过串口把数据发送出去,最后回到判断有没有数据进来,并进行循环。
4 结束语
设计的一款基于STM32设计的物联网系统,该系统融合了RFID、多种无线有线通信、传感器、互联网等技术。相比目前的一些物联网技术在各方面都有了一定的提高,特别是通信接口方面涵盖了多达10种有线无线通信接口,对于复杂的工作现场总线有了多种选择。如何进一步提高系统的抗干扰性,以满足要求更高的场合是我们下一步的工作重点。
图9 CAN总线的软件流程图
图10 GSM模块的软件流程图
图11 wifi的软件流程图
参考文献
[1] 朱弘.物联网技术的发展和在安防领域的应用研究[J].技术与应用,2010, 7(7): 31-33.
[2] 景熙.物联网概论[M].南京:东南大学出版社,2010.
[3] Kramer G. Ethernet passive optical networks[M]. New York, USA:McGraw-Hill, 2005.
[4] 刘尧,黄玉辉,潘华明.配电网电缆屏蔽层宽带载波通信技术[J].华东电力,2007, 35(12): 60-62.
[5] 卢新波,侯思祖.基于 GPRS的配网自动化系统性能分析[J].电力系统通信,2006, 27(1): 25-27.
[6] 杜祥岭,刘加宁.高校物联网专业与实训中心探析[J].辽宁工业大学学报(社会科学版),2011,13 (04) :119-122.
[7] 柯强.物联网专业课程建设探讨[J].物联网技术,2012,4(01):280- 283.
[8] 马荣飞.融CEC一CDIO理念的物联网专业高技能人才培养研究与实践[J].软件工程师,2014,6:11- 12.