基于CC3200的物联网多功能测控终端设计与实现
2019-05-22杨乐丹余厚全陈光建程峰屈凡陈强陈肖宇
杨乐丹,余厚全,陈光建,程峰,屈凡,陈强,陈肖宇
(长江大学电子信息学院,湖北 荆州 434023)(中国石油测井集团有限公司,陕西 西安 710077)(华北理工大学建筑工程学院,河北 廊坊 063210)
物联网是在互联网的基础上拓展而形成的一个万物相连的网络,实现互联网与真实物理世界连接的设备就是物联网终端。该终端是连接传感网络层与传输网络层的关键设备,一方面实现物理世界数据采集并向网络层发送数据,另一方面接收网络发来的信息,对物理世界的对象进行管理和控制。因此,物联网终端是构建物联网的关键设备。
尽管实际物理世界的测控需求和被测控对象有较大的差异性,但本质上都是对实际信号的检测和物理对象的控制。因此,物联网终端应具有多种模拟和数字的输入输出通道、快速的传输速率、更高的硬件集成度与可靠性等特点,以便满足一般实际应用的需求。目前,国内已有大量的终端解决方案,这些方案一般都采用MCU控制芯片+WiFi通信模块的模式,控制芯片通过串行接口与WiFi模块相连实现网络数据通信。该模式虽然能够使终端设备具有接入网络的能力,但通过串行接口连接MCU模块和WiFi模块的工作方式会导致终端设备集成度不高、通信速度受限等。为此,针对物联网应用不断提高的需求和上述方案存在的问题,笔者提出了一种基于CC3200的物联网多功能测控终端解决方案。该方案采用业内第1个具有内置WiFi子处理器的单片微控制器单元CC3200,其具有多个模拟和数字输入输出通道和高速的WiFi网络接入功能,可以大大提高终端集成度,为各种不同需求场景提供了更好的解决方案。
1 CC3200简介
CC3200是TI公司专门针对物联网应用推出的单片无线MCU。该芯片内部采用双核心架构:一个为应用微控制器,是一个运行频率为80MHz的行业标准ARM Cortex-M4内核,负责对整个系统进行管理;另一个为WiFi网络子处理器,独立承担WiFi数据通信任务,完全解除应用微控制器的处理负担,使CC3200具有高达3MB/s的网络接入传输速率[1~3]。
CC3200芯片提供了多达27个独立可编程的、通用的输入输出引脚,方便用户根据应用需求,通过软件将这些引脚定义成不同的通信接口(如UART、SPI和I2C等),实现与外界的连接与通信。该芯片内部设置了一个12位AD转换器,通过片内复用,对外提供了4个模拟信号输入通道,以方便用户对采集的模拟信号数字化。此外,CC3200还提供了4个通用定时器输出,通过对16位脉宽定时器的设置,不仅可以用于外部定时,还可产生16位脉宽的PWM调制信号,用于对外部设备对象的调速控制。CC3200芯片提供了应用微控制器与网络子处理器的API接口,避免了开发人员查阅芯片手册的繁复工作,为基于芯片的二次开发带来了极大方便,完全满足终端设计的一般需求。相比于目前的解决方案,该芯片用于物联网终端的开发具有功能强、速率快和集成度高的优点。
2 测控终端总体方案设计
基于CC3200多功能测控终端应具有物理参量检测、设备对象控制和网络接入3个基本功能,其总体设计方案如图1所示。
图1 测控终端总体设计方案
设计方案由3部分组成,分别是CC3200核心控制处理模块,输入检测调理模块和输出控制驱动模块。CC3200通过片内的WiFi子处理器完成网络的接入,接收来自网络侧的命令,通过片内处理器对其进行解析,按设计的流程控制输入信号的采集,实现对外部设备对象的控制,同时将检测的数据通过WiFi子处理器接入网络,上传至网络服务器。输入检测调理模块通过传感器检测真实世界的物理量,如果传感器为模拟传感器,则对检测信号进行必要的信号调理(如放大、滤波等);如果传感器为数字传感器,则可以直接连接到CC3200相应的数字接口。
由于CC3200提供的模拟输入通道(≤4)和数字输入接口数量有限,当所要求的模拟输入通道数或数字输入通道数大于CC3200所能提供的输入接口最大值时,就需要通过模拟多路复用和数字多路复用的方法进行接口扩展。输出控制驱动模块根据被控对象的控制要求,对CC3200输出的开关信号和PWM信号进行相应的变换和功率放大。同理,如果采用开关量的被控对象过多,为节省CC3200的接口资源,采用串入并出的输出数字开关信号寄存器扩展接口。
3 终端硬件设计
终端检测的信号一般为二维的图像信号和一维的物理时变信号,而输出的控制一般为状态开关控制和对象速度控制[4]。考虑一般应用,设计的终端硬件能够挂接数字温湿度传感器、位置传感器、姿态传感器和图像传感器等,提供4路模拟信号检测通道,用于挂接模拟传感器,同时产生多路开关控制输出量和2路PWM控制输出。为此,通过软件编程,将CC3200的27个独立的I/O引脚定义为1个UART、1个I2C、8位并行摄像头数据接口及4通道12位ADC、3位编码的数字开关量接口以及2路PWM输出[5]。用户可根据实际情况选用,完成所需的测控任务。
图2是终端硬件电路原理图。首先,选用易于连接的DHT11温湿度数字传感器,对环境的温度与湿度进行检测。其次,选用S1216F8-BD-V23定位模块提供终端的位置信息,该模块采用GPS/北斗定位,通过UART直接输出终端的经度、纬度、高度信息。
为了获取监控图像,终端选用Micron公司生产的CMOS摄像头MT9D111进行二维图像信号采集。该摄像头模块具有200万像素,最高可达15帧/s速率的输出图像。CC3200通过内部I2C接口模拟SCCB时序完成对摄像头输出图像的质量与数据格式的配置,并在摄像头输出数据锁存时钟(pCLK)、行同步信号(HS)、帧同步(VS)信号控制下,通过8位并行数据线读取一帧图像数据。
图2 终端硬件电路原理图
由于CC3200内置ADC的4通道输入引脚与接收摄像头的3条输入数据引脚和一个使能引脚是复用的,因此采用ADG5434四路二选一多路复用器实现引脚复用。该器件内置4个独立的单刀双掷开关,CC3200通过GPIO_00输出电平控制选通,实现芯片的4个引脚分时采集一维模拟信号和接收数字图像数据。
此外,CC3200分配了4条GPIO引脚用于产生输出的开关控制变量,其中3条引脚直接输出开关控制信号到相应的控制对象,另一条引脚作为一个串行输出接口连接到8位串入并出移位寄存器,经输出开关量扩展到11位。
4 终端软件设计
CC3200的主核Cortex-M4内部没有内存管理单元,无法创建线程的方式安排多个任务并行执行,所开发的终端应用程序只能采用轮循机制安排多任务顺序执行[6,7]。程序流程如图3所示。终端上电工作后首先对自身控制芯片内部进行初始化,CC3200通过配置寄存器完成各类外设的初始化,其中包括GPIO功能复用及定时器参数与中断函数初始化。网络功能的配置与网络通信都是由主核调用API函数驱动WiFi子处理器来完成,若多次配置失败则建立网络故障标志通知用户。终端通过发送注册信息来向远程告知自身设备的网络位置并获得合法性认证,远程下发的消息都会被WiFi子处理器保存在自身缓存队列中供主核读取并解析。终端接收到控制命令则输出控制信号,若收到注册响应后立即更新注册状态,注册通过则将采集终端检测数据存入FLASH并向远程发送。若未通过注册,终端会向远程重复发送注册消息执行上述流程,在多次未通过注册的情况下,终端会建立注册失败标志告知用户。
5 试验测试与结果分析
为验证终端设计的可行性与稳定性,采用市场上开源、稳定、成熟的LAMP平台构建一个网络服务器,对终端设备进行测试。服务器向终端发送命令消息,接收并存储终端发回的数据,利用网页即时显示检测的数据,了解终端的动态,控制终端设备的运行。
测试中,选取了3个不同的位置作为被测点,部署安装了设计开发的网络测控终端。它们通过网络,与后台服务器建立通信连接。每个终端根据选定的时间间隔(如10s),定时采集本终端所有传感器节点数据,添加相应的数据帧头,然后将数据发送到后台服务器。后台服务器接收数据,并存入数据库。在终端正常工作时,Web实时调用数据库中终端的信息,定时刷新页面,将得到的最新信息即时在界面显示出来。
图3 主控程序流程
图4 终端状态信息
图4给出了3个观测点的地图位置,2个在线(红色),1个离线(灰色),根据各终端实际采集的最新定位信息确定,其检测的位置数据与实际位置的误差不超过0.5m。为了验证终端采集数据实时性与可靠性,采用温湿度调整设备对测控终端所处的环境温湿度进行改变,检测的温湿度数据即时地反映到网页上(变化曲线如图5所示),很好地反映了观测点温湿度的变化。
图5 测控终端检测信息显示结果
图6 测控终端输出PWM信号
终端能够接收来自服务器的不同命令进行响应,如输出控制信号或设备的启停等。图6为示波器显示终端输出的控制信号,它们是输出电压3.3V、占空比分别为50%与25%的PWM信号。
6 结语
笔者根据物联网测控终端的基本需求和一般功能,针对目前市场上网络测控终端存在的设备集成度低与通信速率慢等问题,设计了基于CC3200的物联网多功能测控终端方案,开发实现了相应的终端硬件与软件。测试结果表明,终端能按照需求挂接多种传感器工作,且设备集成度高,可以满足于一般性的需求,为物联网提供了更好的解决方案