基于Arduino的无线传感器网络岛屿参数监测系统的制作方法
【专利摘要】本发明公开了一种基于Arduino的无线传感器网络岛屿参数监测系统,包括多个终端节点、多个路由节点、路由网关和数据服务器;终端节点测量岛屿参数,发送数据给负责转发的路由节点;路由节点监测和终端节点同样的参数,接收其管理的多个终端节点的数据,把自身数据和终端节点的数据转发到路由网关;路由网关收集所有终端节点和路由节点的数据,通过网络把数据上传至数据服务器;数据服务器接收数据后写入数据库,根据用户的需求对数据进行处理,提供网页访问服务;本发明系统成本低,硬件的裁剪性好,根据测量参数需要灵活地修改硬件支持不同的传感器。系统实时监测的数据可用于灾害的提前预警,降低经济损失和人员伤亡。
【专利说明】基于Arduino的无线传感器网络岛屿参数监测系统
【技术领域】
[0001]本发明涉及无线传感器技术,尤其涉及一种基于Arduino的无线传感器网络岛屿参数监测系统。
【背景技术】
[0002]我国有着数目众多的岛屿,岛屿因其独特的地理位置常遭遇频繁的自然灾害,如台风、暴雨、雷电等,同时岛上常常覆盖着茂密的森林植被,一旦出现火灾,将危及岛上人员和设备财产的安全,带来巨大的经济损失。
[0003]目前,岛屿参数监测系统不能无人值守长期运行在环境恶劣的户外,使用电池供电的节点需要定期派人员更换电池,有线供电的节点工作的范围大大受限。系统中节点数目少,冗余度、可靠性低,一旦节点出现故障,将无法获知岛屿的参数信息。同时,节点不能快速地根据现场需要更换传感器以测量不同参数,程序升级困难。国外相应的岛屿参数监测系统价格高昂,无法进行大规模的部署。
【发明内容】
[0004]本发明的目的在于针对现有技术的不足,提供一种基于Arduino的无线传感器网络岛屿参数监测系统。
[0005]本发明的目的是通过这样的技术方案实现的:一种基于Arduino的无线传感器网络岛屿参数监测系统,该系统包括多个终端节点、多个路由节点、一个路由网关和一台数据服务器;终端节点部署在需要监测的岛屿区域,测量温湿度、大气压力、风速风向雨量、危险气体和PMlO等参数,并发送给负责转发的路由节点;路由节点监测和终端节点同样的参数,同时接收其管理的多个终端节点的数据,把自身数据和终端节点的数据转发到路由网关;路由网关收集所有终端节点和路由节点的数据,通过2G、3G蜂窝网、有线网络或W1-Fi的方式把数据上传至数据服务器;数据服务器接收数据后写入数据库,根据用户的需求对数据进行处理、统计和显示,并提供网页访问服务;终端节点和路由节点使用太阳能充电。所述的终端节点和路由节点均由微控制器、太阳能板、太阳能充电模块、可充电锂电池、稳压模块、实时时钟模块、射频模块、GPS定位模块、若干传感器探头、能量管理模块、射频模块LED指示灯、微控制器LED指示灯、防水盒和天线构成;其中稳压模块、实时时钟模块、射频模块、GPS定位模块、能量管理模块、微控制器LED指示灯与微控制器相连;天线、射频模块LED指示灯与射频模块相连;稳压模块、太阳能板、可充电锂电池与太阳能充电模块相连;每个传感器探头连接一种传感器,所述传感器选自温湿度传感器、大气压力传感器、风速风向雨量传感器、危险气体传感器或PMlO传感器;微控制器、太阳能充电模块、可充电锂电池、稳压模块、实时时钟模块、射频模块、GPS定位模块、能量管理模块、射频模块LED指示灯和微控制器LED指示灯置于防水盒内,天线、太阳能板和传感器探头置于防水盒外。
[0006]进一步地,所述微控制器基于Arduino Uno,芯片型号为Atmega328p,使用14.7456MHz晶振,工作电压3.3V ;微控制器上电后,先完成初始化工作,然后进入休眠操作,微控制器进入低功耗模式,直到实时时钟模块发送中断信号,进入唤醒操作,微控制器进入正常模式,控制能量管理模块打开GPS定位模块和传感器的电源,进入传感器数据采样操作,微控制器读取GPS和传感器的数据后,生成数据包,再控制能量管理模块切断GPS定位模块和传感器的电源,进入发送数据操作,射频模块发送数据,发送结束后微控制器进入休眠操作,完成微控制器一次数据发送流程;射频模块选自XBee S2或XBee PRO S2B,其串口通信速率为115200波特率;太阳能充电模块给可充电锂电池充电的同时给稳压模块供电,稳压模块给实时时钟模块、射频模块、GPS定位模块、能量管理模块、射频模块LED指示灯、微控制器LED指示灯、微控制器和传感器供电;实时时钟模块内含有纽扣电池,用来记录传感器测量数据的时刻和发送中断信号唤醒微控制器;射频模块负责传感器数据包的发送和接收;GPS定位模块给出节点的工作位置;能量管理模块控制射频模块、GPS定位模块、传感器电源的开断,同时配有升压电路给工作在5V的传感器供电,能量管理模块控制升压电路的开断;射频模块LED指示灯显示射频模块的工作状态;微控制器LED指示灯显示微控制器的工作状态;所述防水盒的面板上配有7个接口,分别是天线接口,电池开关,程序下载接口,两个传感器接口,太阳能板和USB复用充电口,通气阀;天线接口用于将天线与射频模块相连;程序下载接口与微控制器的串口相连;电池开关控制太阳能充电模块和稳压模块的开断;程序下载接口仅在电池开关断开的时候实现程序下载功能;传感器接口用于将传感器探头与微控制器相连,传感器探头插到传感器接口上;太阳能板和USB复用充电口将太阳能板或USB充电器和太阳能充电模块相连,支持输出5.5V飞V电压的太阳能板和USB充电器充电;通气阀保证防水盒内外气压平衡,同时水汽不会进入盒内。
[0007]进一步地,所述路由网关由射频模块、天线和Linux主机构成;天线和Linux主机和射频模块相连;路由网关为有线供电,部署在室内;所述射频模块接收所有终端节点和路由节点的数据,发送给Linux主机内的串口模块;Linux主机的串口模块接收到数据后,Linux主机内的Python程序完成数据解析并生成Http数据包,通过2G、3G蜂窝网、有线网络或W1-Fi的方式上传到数据服务器。
[0008]本发明的有益效果是:本发明系统可大规模地部署在环境恶劣的岛屿户外,网络节点使用可充电锂电池供电,充分利用太阳能能量,无需更换电池。系统使用成熟可靠的无线组网协议,节点出故障后网络能自动恢复,支持限时入网、入网加密、数据加密等高级安全策略。系统的成本低,硬件的裁剪性好,根据测量参数需要灵活地修改硬件支持不同的传感器,基于Arduino的无线传感器网络节点提供多种传感器和射频模块的第三方库文件,修改库文件即可快速完成二次开发,大大降低了无线传感器网络节点开发、设计的周期。系统实时监测的数据可用于灾害的提前预警,降低经济损失和人员伤亡。
【专利附图】
【附图说明】
[0009]图1是本发明的整体结构框图;
图2是终端节点和路由节点硬件框图;
图3是路由网关的结构图;
图4是服务器的结构图。
【具体实施方式】
[0010]下面结合附图和实施例对本发明作进一步说明。
[0011]如图1所示,本发明一种基于无线传感器网络的岛屿参数监测系统,包括多个终端节点、多个路由节点、一个路由网关和一台数据服务器。终端节点部署在需要监测的岛屿区域,测量温湿度、大气压力、风速风向雨量、危险气体、PM1等参数,并发送给负责转发的路由节点;路由节点监测和终端节点同样的参数,同时接收其管理的多个终端节点的数据,把自身数据和终端节点的数据转发到路由网关;路由网关收集所有终端节点和路由节点的数据,通过2G、3G蜂窝网、有线网络或W1-Fi的方式把数据上传至数据服务器;终端节点、路由节点和路由网关之间的无线通讯使用ZigBee协议,当终端接点或路由节点出现故障,网络拓扑会做动态调整,以使得网络快速地从故障中恢复。数据服务器接收数据后写入数据库,根据用户的需求对数据进行处理、统计和显示,并提供网页访问服务;用户可通过Internet访问网页,获得岛屿实时参数数据,分析岛屿的气象状况,并预警可能存在的火灾、气象灾害;终端节点和路由节点使用太阳能充电,无需更换电池,在岛屿户外环境中无人值守长期运行。
[0012]如图2所示,所述的终端节点和路由节点均由微控制器、太阳能板、太阳能充电模块、可充电锂电池、稳压模块、实时时钟模块、射频模块、GPS定位模块、若干传感器探头、能量管理模块、射频模块LED指示灯、微控制器LED指示灯、防水盒和天线构成。其中稳压模块、实时时钟模块、射频模块、GPS定位模块、能量管理模块、微控制器LED指示灯与微控制器相连;天线、射频模块LED指示灯与射频模块相连;稳压模块、太阳能板、可充电锂电池与太阳能充电模块相连;每个传感器探头连接一种传感器,所述传感器选自温湿度传感器、大气压力传感器、风速风向雨量传感器、危险气体传感器或PMlO传感器;微控制器、太阳能充电模块、可充电锂电池、稳压模块、实时时钟模块、射频模块、GPS定位模块、能量管理模块、射频模块LED指示灯和微控制器LED指示灯置于防水盒内,天线、太阳能板和传感器探头置于防水盒外。传感器探头安装在防水盒面板上的传感器接口上,充分和大气接触,以准确地测量外界参数,每种传感器对应一种传感器扩展板和传感器探头。
[0013]温湿度传感器测量传感器所在位置的温湿度;大气压力传感器测量传感器所在位置的绝对大气压力;风速风向雨量传感器测量所在位置的风速、风向和雨量大小;危险气体传感器测量空气中对人体有害气体的浓度,如臭氧、一氧化碳、氨气、空气污染物等;PM10传感器测量空气中可吸入颗粒物PMlO的浓度。
[0014]微控制器基于Arduino Uno,芯片型号为Atmega328p,使用14.7456MHz晶振,工作电压3.3V。所述的温湿度传感器、大气压力传感器、风速风向雨量传感器、射频模块工作在
3.3V,Arduino Uno工作在5V,Arduino Uno使用所述传感器和射频模块要进行电压转换,会增加系统能耗和成本,而本发明无需进行电压转换,稳压模块输出3.3V直接给微控制器、所述传感器和射频模块供电。如果把Arduino Uno的工作电压从5V降低到3.3V, ArduinoUno的16MHz晶振超出了 3.3V工作电压支持的范围,必须要降低晶振的频率。本发明选用了 14.7456MHz晶振,这样微控制器在3.3V工作电压下串口通信速率能达到115200波特率。基于Arduino的微控制器提供多种传感器和射频模块的第三方库文件,修改库文件即可快速完成二次开发。同时,基于Arduino的微控制器下载固件无需使用专用烧写器,把新的固件发送给微控制器的串口即可更新固件。
[0015]射频模块选自XBee S2或XBee PRO S2B,其串口通信速率为115200波特率,负责传感器数据包的发送和接收;太阳能充电模块给可充电锂电池充电的同时给稳压模块供电,太阳能充电模块支持的太阳能输入电压范围为5.5V飞V,同时支持USB 口充电,支持的芯片的型号包括但不限于MCP73871或CN3065,可充电锂电池电压为4.2V,容量为6000mAh ;稳压模块输出3.3V直流电压给实时时钟模块、射频模块、GPS定位模块、能量管理模块、射频模块LED指示灯、微控制器LED指示灯、微控制器和传感器供电,支持的芯片的型号包括但不限于MCP1703CB ;实时时钟模块内含有纽扣电池,用来记录传感器测量数据的时刻和发送中断信号唤醒微控制器,支持的芯片的型号包括但不限于DS3231 ;GPS定位模块给出节点的工作位置;能量管理模块包括N沟道和P沟道MOS管,控制射频模块、GPS定位模块和传感器电源的开断,支持的芯片型号包括但不限于SI2302、SI2303和SI2305,同时配有升压电路给工作在5V的传感器供电,能量管理模块控制升压电路的开断,升压电路支持的芯片型号包括但不限于ISL97516 ;射频模块LED指示灯显示射频模块的工作状态;微控制器LED指示灯显示微控制器的工作状态。
[0016]防水盒的面板上配有7个接口,分别是天线接口,电池开关,程序下载接口,两个传感器接口,太阳能板和USB复用充电口,通气阀;天线接口用于将天线与射频模块相连;程序下载接口与微控制器的串口相连;电池开关控制太阳能充电模块和稳压模块的开断;程序下载接口仅在电池开关断开的时候实现程序下载功能;传感器接口用于将传感器探头与微控制器相连,传感器探头插到传感器接口上;太阳能板和USB复用充电口将太阳能板或USB充电器和太阳能充电模块相连,支持输出5.5V飞V电压的太阳能板和USB充电器充电;通气阀保证防水盒内外气压平衡,同时水汽不会进入盒内。
[0017]终端节点工作过程如下:
(I)节点初始化操作:设置数据包的格式和报头信息,初始化传感器接口和射频模块,设定实时时钟模块的中断间隔,也就是休眠时间。
[0018](2)休眠操作:射频模块进入休眠模式,微控制器进入低功耗模式,此时射频模块不会发送任何数据,微控制器不会读取传感器数据。
[0019](3)唤醒操作:实时时钟模块发出信号触发微控制器的中断响应程序,微控制器从低功耗模式切换到普通模式。
[0020](4)传感器数据采样操作:微控制器控制能量管理模块打开GPS定位模块和传感器电源开关,读取GPS和传感器的数据。读完数据后,微控制器控制能量管理模块切断GPS定位模块和传感器的电源。
[0021](5)发送数据操作:微控制器唤醒射频通信模块,射频模块把数据包发送给负责该节点的路由节点。完成数据发送后,终端节点进入休眠操作。
[0022]路由节点工作过程如下:
(I)节点初始化操作:设置数据包的格式和报头信息,初始化传感器接口和射频模块,设定实时时钟模块的中断间隔,也就是休眠时间。
[0023](2)休眠操作:微控制器进入低功耗模式,微控制器不会读取传感器数据。射频模块继续工作。
[0024](3)唤醒操作:实时时钟模块发出信号触发微控制器的中断响应程序,微控制器从低功耗模式切换到普通模式。
[0025](4)传感器数据采样操作:微控制器控制能量管理模块打开GPS定位模块和传感器电源开关,读取GPS和传感器的数据。读完数据后,微控制器控制能量管理模块切断GPS定位模块和传感器的电源。
[0026](5)发送数据操作:射频模块找到到达目标节点的最佳路径。微控制器把自身传感器数据包发送给射频模块,射频模块按照最佳路径把数据通过其他路由节点转发到目标节点。完成数据发送后,微控制器进入休眠操作。对于路由节点负责的多个终端节点,路由节点的射频模块同样按照最佳路径把接收到的终端节点数据转发给其他路由节点,这些数据最终到达目标节点。
[0027]为了能让终端节点和路由节点长期运行在户外并不需要更换电池,设计了多种能量管理策略。在发送数据包的间隙,终端节点和路由节点的微控制器进入低功耗模式,终端节点的射频模块进入休眠模式,传感器和GPS模块电源被切断。太阳能充电模块不停地利用太阳能的能量给可充电锂电池充电,以保证节点在夜晚也有能量继续工作。
[0028]另一方面,射频模块选用了 ZigBee的通讯协议以降低能耗。ZigBee的通讯协议的特点是低功耗、短距离、架构简单、低成本、低速率,适合对能耗要求高、数据量不大的岛屿监测场合。选用的ZigBee的通讯协议另一个优点是支持最多65000个节点,节点的冗余度高,一旦某个节点出现故障,无线传感器网络可自行恢复。
[0029]如图3所示,所述路由网关由射频模块、天线和Linux主机构成;天线和Linux主机和射频模块相连;路由网关为有线供电,部署在室内;所述路由网关的具体工作过程如下:
(I)接收数据:射频模块接收所有终端节点和路由节点的数据,发送给Linux主机内的串口模块。
[0030](2)解析并发送数据:Linux主机的串口模块接收到数据后,Linux主机内的Python程序完成数据解析并生成Http数据包,通过2G、3G蜂窝网、有线网络或W1-Fi的方式上传到数据服务器。
[0031]如图4所示,所述数据服务器工作过程如下:
(I)服务器端口监听:服务器上的Apache Server监听服务器的80端口,当端口收到Http数据包后,交给数据解析PHP程序。
[0032](2)数据包解析:数据解析PHP程序按照数据包的格式对数据进行解析,并剔除异常数据。
[0033](3)数据写入:解析后的数据被写入到MySQL数据库。
[0034](4)数据查询:当用户访问由Html和JavaScript编写网页时,JavaScript调用数据查询PHP程序,从数据库中获取最新传感器数据并以图表的方式显示出来。
[0035](5)灾害预警:当某个节点的传感器实时数据超过设定的阈值,网页上会给出相应报警信息,数据包中的GPS信息可定位节点的具体位置;网页根据传感器的类型判断是哪种灾害,如过高的PMlO数据可能因为火灾,某种危险气体传感器测量值偏高可能因为危险气体泄漏,风速风向雨量传感器过高的数值可能因为台风或暴雨等。
[0036](6)数据分析:数据写入数据库后,用户可使用数据统计分析功能,指定时间段和间隔,JavaScript调用数据查询PHP程序从数据库中查询传感器历史数据,并把该时间段内岛屿参数的变化趋势以统计图表的方式显示出来。
【权利要求】
1.一种基于Arduino的无线传感器网络岛屿参数监测系统,其特征在于:该系统包括多个终端节点、多个路由节点、一个路由网关和一台数据服务器;终端节点部署在需要监测的岛屿区域,测量温湿度、大气压力、风速风向雨量、危险气体和PMlO等参数,并发送给负责转发的路由节点;路由节点监测和终端节点同样的参数,同时接收其管理的多个终端节点的数据,把自身数据和终端节点的数据转发到路由网关;路由网关收集所有终端节点和路由节点的数据,通过2G、3G蜂窝网、有线网络或W1-Fi的方式把数据上传至数据服务器;数据服务器接收数据后写入数据库,根据用户的需求对数据进行处理、统计和显示,并提供网页访问服务;终端节点和路由节点使用太阳能充电;所述的终端节点和路由节点均由微控制器、太阳能板、太阳能充电模块、可充电锂电池、稳压模块、实时时钟模块、射频模块、GPS定位模块、若干传感器探头、能量管理模块、射频模块LED指示灯、微控制器LED指示灯、防水盒和天线构成;其中稳压模块、实时时钟模块、射频模块、GPS定位模块、能量管理模块、微控制器LED指示灯与微控制器相连;天线、射频模块LED指示灯与射频模块相连;稳压模块、太阳能板、可充电锂电池与太阳能充电模块相连;每个传感器探头连接一种传感器,所述传感器选自温湿度传感器、大气压力传感器、风速风向雨量传感器、危险气体传感器或PMlO传感器;微控制器、太阳能充电模块、可充电锂电池、稳压模块、实时时钟模块、射频模块、GPS定位模块、能量管理模块、射频模块LED指示灯和微控制器LED指示灯置于防水盒内,天线、太阳能板和传感器探头置于防水盒外。
2.根据权利要求1所述的一种基于Arduino的无线传感器网络岛屿参数监测系统,其特征在于,所述微控制器基于Arduino Uno,芯片型号为Atmega328p,使用14.7456MHz晶振,工作电压3.3V ;微控制器上电后,先完成初始化工作,然后进入休眠操作,微控制器进入低功耗模式,直到实时时钟模块发送中断信号,进入唤醒操作,微控制器进入正常模式,控制能量管理模块打开GPS定位模块和传感器的电源,进入传感器数据采样操作,微控制器读取GPS和传感器的数据后,生成数据包,再控制能量管理模块切断GPS定位模块和传感器的电源,进入发送数据操作,射频模块发送数据,发送结束后微控制器进入休眠操作,完成微控制器一次数据发送流程;射频模块选自XBee S2或XBee PRO S2B,其串口通信速率为115200波特率;太阳能充电模块给可充电锂电池充电的同时给稳压模块供电,稳压模块给实时时钟模块、射频模块、GPS定位模块、能量管理模块、射频模块LED指示灯、微控制器LED指示灯、微控制器和传感器供电;实时时钟模块内含有纽扣电池,用来记录传感器测量数据的时刻和发送中断信号唤醒微控制器;射频模块负责传感器数据包的发送和接收;GPS定位模块给出节点的工作位置;能量管理模块控制射频模块、GPS定位模块、传感器电源的开断,同时配有升压电路给工作在5V的传感器供电,能量管理模块控制升压电路的开断;射频模块LED指示灯显示射频模块的工作状态;微控制器LED指示灯显示微控制器的工作状态;所述防水盒的面板上配有7个接口,分别是天线接口,电池开关,程序下载接口,两个传感器接口,太阳能板和USB复用充电口,通气阀;天线接口用于将天线与射频模块相连;程序下载接口与微控制器的串口相连;电池开关控制太阳能充电模块和稳压模块的开断;程序下载接口仅在电池开关断开的时候实现程序下载功能;传感器接口用于将传感器探头与微控制器相连,传感器探头插到传感器接口上;太阳能板和USB复用充电口将太阳能板或USB充电器和太阳能充电模块相连,支持输出5.5V飞V电压的太阳能板和USB充电器充电;通气阀保证防水盒内外气压平衡,同时水汽不会进入盒内。
3.根据权利要求1所述的一种基于Arduino的无线传感器网络岛屿参数监测系统,其特征在于,所述路由网关由射频模块、天线和Linux主机构成;天线和Linux主机和射频模块相连;路由网关为有线供电,部署在室内;所述射频模块接收所有终端节点和路由节点的数据,发送给Linux主机内的串口模块;Linux主机的串口模块接收到数据后,Linux主机内的Python程序完成数据解析并生成Http数据包,通过2G、3G蜂窝网、有线网络或W1-Fi的方式上传到数据服务器。
【文档编号】H04W84/18GK104332042SQ201410599278
【公开日】2015年2月4日 申请日期:2014年10月30日 优先权日:2014年10月30日
【发明者】陈积明, 张茜, 程鹏, 杨梓东, 郑东旭 申请人:浙江大学