宋洪儒, 王宜怀, 杨 凡,3
(1.苏州大学 计算机科学与技术学院,江苏 苏州 215006; 2.铜陵学院 电气工程学院,安徽 铜陵 244000;3.铜陵学院 数学与计算机学院,安徽 铜陵 244000)
随着物联网技术的快速发展和智慧城市建设的需求,智能燃气表已逐步应用到千家万户。目前常用智能燃气表有智能卡表和无线抄表,其中智能卡表在使用中自动扣除费用,方便公司管理收费,但也存在需要生产智能充值卡增加成本的问题。无线抄表主要采用无线射频或ZigBee进行数据传输,这种表存在传输距离短、覆盖范围小、需要基站多,增加了建设和维护成本[1,2]。窄带物联网(narrow-band Internet of things,NB-IoT)技术相比4G网络、ZigBee等短距离通信技术,具有大容量、广覆盖、低成本、低功耗等特点,能够带来更加丰富的应用场景,将会成为无线网络发展的主要趋势[3,4]。
本文采用NB-IoT技术的数据传输方式进行燃气表设计,其优点是通过个人电脑(personal computer,PC)进行控制管理,信号抗干扰能力强,能实现远距离的数据传输,还能在线实时监控燃气表的运行状况,出现发生故障或欠费时,在PC上发出报警提示,使用该智能燃气表能够节约人工资源和降低建设成本,便于燃气公司实现智能化的管理工作。
智能燃气表是基于NB-IoT技术实现,系统框架结构如图1所示。参考物联网分层模型,将系统分为感知层、网络层和应用层。感知层完成传感器数据采集、物理量回归、发送数据、接收数据等功能;网络层中的服务器将感知层发来的数据存储到数据库中,并检查数据库中数据的变化发送回去。应用层用于在电脑或手机上显示每个燃气表的实时数据和历史数据等信息。将感知层采集燃气表的各种数据,利用NB-IoT技术将数据传送到网络层的服务器,在应用层上借助手机、电脑访问存储在服务器上的数据。
图1 系统框架结构
硬件结构如图2所示。KL36微控制器为主控模块,通过KL36引脚与各个模块之间连接,实现其模块功能。BC95模块为无线通信模块,利用NB-IoT技术的通信功能,将KL36采集的各种数据发送到应用层,实现系统的控制功能。电源模块为KL36和BC95提供工作电源,保障模块的正常工作。LCD模块是显示设置的信息数据,如燃气量、时间、使用费用等,当人工查询时,触发触摸键工作,使LCD显示数据,并将查询数据发送出去。偷气/漏气检测模块是防止气体泄漏设置的安全检测,当发生天然气泄漏时,触发报警模块发出报警信号,提醒用户注意安全,并将信息上传到公司管理中心,以便维修和管理。燃气计量模块主要由KL36引脚PTA1和PTA4采集值之差控制磁开关,确定燃气量。
图2 硬件结构
微控制器选用MKL36Z64VLH4作为主控芯片,为保障KL36模块能正常工作,外部需要连接电源电路、晶振电路和复位电路组成最小工作系统[5]。根据KL36连接各模块的功能要求,对芯片I/O引脚进行分配,列出部分的功能管脚如表1所示。
表1 KL36 I/O分配
电源模块电路如图3所示,图中TPS709系列芯片为低压降线性稳压器,工作输入电压范围为2.7~30 V,输出电压范围为1.5~6.5 V。其中TPS70933芯片输出3.3 V电压,为KL36提供额定工作电压,TPS70939芯片输出3.9 V电压,为BC95模块提供工作电压,在进行发送或接收数据时,由单片机(micro controller unit,MCU)发出命令使TPS70939芯片的EN引脚为高电平,使芯片工作,输出3.9 V电压,否则,使EN引脚为低电平,TPS70939芯片停止工作,达到低功耗的目的,节约电池电能。C105功能是备用电源。
图3 电源电路
燃气表阀门开关由直流电机进行控制,电机正转时,打开阀门,电机反转时,关闭阀门,控制电机电路如图4所示。其中:R201~R206是偏置电阻器,功能是为三极管Q201~Q206导通提供偏置电压,C202起稳压作用,R207为C202的放电电阻器,P201为直流电机来控制燃气阀门。AD1,AD2为采样接口,给MCU提供AD采样值。阀门打开的情况根据AD1和AD2采样值之差进行判断。电路工作分为三种情况:1)当VDJZ为高电平、VDJF为低电平时,三极管Q201~Q203导通,Q204~Q206截止,电流流向为Q202→P201→Q203,此时电机正转,打开阀门;2)当VDJZ低电平,VDJF高电平时,三极管Q201~Q203截止,Q204~Q206导通,电流流向为Q205→P201→Q206,电机为反转,关闭阀门;3)当VDJF,VDJZ同时为低电平或高电平时,电机不能转动。
图4 控制电机电路
BC95是一种高性能、低功耗的NB-IoT无线通信模块,在设计上兼容全球移动通信系统/通用分组无线业务(GSM/GPRS)系列的M95模块,工作电压为VBAT=3.1~4.2V,典型值3.8 V,BC95芯片控制引脚NET_LIGHT为高电平时,网络正常工作,为低电平的时,网络不能工作。BC95模块工作电路包含:电源模块、通用异步收发器(UART)模块、模/数转换(analog to digital conversion,ADC)模块、射频(radio frequency,RF)模块、串行调试(serial wire debug,SWD)模块及复位模块组成[6]。具体的电路如图5所示。用户身份识别模块(subscriber identity module,SIM)用于存放SIM卡。
图5 BC95工作电路
软件设计采用嵌入式集成开发环境KDS—3.0软件作为开发平台,利用C语言编写程序。软件设计有KL36底层驱动程序和主程序。
KL36芯片底层驱动软件设计根据功能要求,分为通用输入/输出(general purpose input/output,GPIO)模块,定时器模块、通信(Uecom)模块、阀门开关模块、LCD模块和TSI模块等[6]。KL36底层驱动模块体系结构如图6所示。
图6 KL36底层驱动模块体系结构
G_var模块的功能是存储全局变量,将Main函数和中断函数需要使用的所有全局变量都存放在该模块内,以便于进行变量的修改。ComData模块功能为存储数据结构,进行网络通信数据帧转发和处理等操作。Uecom模块通过调用GPIO模块和定时器模块来实现对数据的发送和接收功能。中断服务处理(interrupt service routines,ISR)通过调用定时器模块和TSI模块实现中断函数功能。ADC模块将采集到的各种信号进行转换,传送到微控制器中处理。LCD模块功能是显示设置的各种信息,便于用户实时查询。
BC95通信模块软件流程如图7所示,芯片通电后,BC95模块首先初始化工作,利用AT指令对模块进行波特率、IMSI号、IP地址等信息设置,需要判断是否有SIM卡以及信号的强度能够达到通信的要求,再根据NB—IOT技术通信的要求数据组帧,由BC95完成发送和接收数据工作,最后芯片进入低功耗模式工作。为了保证数据模块通信成功,完成数据发送和接收任务,都设置了重复发送的次数,能够避免由于外界干扰引起的数据传输失败[7,8]。在通信中采用IP地址+IMSI号的方法分辨不同的设备,在每个设备通信的IMSI号是唯一的,在数据包中加入目的设备IP地址,以保证数据包能到达目的设备并进行响应。通信中一帧数据格式:数据总长为68B,其中:帧头占2B、IMSI号占15B、传输数据占32B、IP地址占15B、验证码占2B、帧尾占2B。
图7 BC95软件设计流程
主程序设计流程如图8所示,系统通电后完成初始化工作,先判断是否符合开阀门条件,如存在欠费、漏气等情况发生,不能打开阀门并进行报警。符合打开阀门条件,进入低功耗工作模式,当触摸键触摸次数达到设定值或者达到定时器设置的发送数据时间,调用中断函数进入BC95发送和接收数据程序,进行数据的传输,在人机界面上显示出发送的数据。
图8 主程序设计流程
测试界面开发环境为Visual studio 2013,采用C#语言[9]开发设计。测试界面如图9所示。
图9 测试界面
通过测试结果可以看出,采用NB—IoT技术设计的智能燃气表,很好地解决了数据传输距离远,覆盖范围广等问题,具有很强的实用性、可靠性和稳定性。该技术研发已经处于最后测试阶段,一旦实际产品投入到生活中,将会降低企业投资成本,提高管理水平,加强对用气安全的监管,具有很好的推广前景。